Monday, July 28, 2008

Latest Thoughts

  • A new hosting site, Mosso, seems to want to brag about having affordable rates for a scalable website. They're really for mid-sized sites that have grown out of shared hosting plans and need something more robust. Yeah, but the trouble is they don't even use Apache. They use IIS7. Ha, yeah, like that's scalable and secure. No wonder they're still too pricey for me to even think of them.
  • I thought I was the first to come out with the news about W2K8S having a free 240 day trial license from Microsoft. But now I'm seeing that others are repeating what I'm saying.
  • Saw a neat logo on this site. It's interesting what a little light effect, some font uniqueness (using all uppercase or all lowercase), and good color choices can do for your site with relative ease.
  • The newer browsers -- FF3, Opera, and Safari -- now have a new feature where if you use non-styled HTML form controls, they will automatically style them with fairly visually appealing 3D glass-like effects with curved borders on some of the controls as well as a highlight color during a mouseover. Microsoft, however, has not gotten the memo on this. Let's hope they do because it would be great to not have to worry about styling these components ever again.

Sunday, July 27, 2008

Contract Bit The Dust



Every site has two parts to it. One is the EUE (End User Experience), sometimes referred to as the UI. The other is the Admin part of the site where administrators go into adjust things.

On one client I had, which paid pretty good for awhile, I at least completed the EUE, but not the Admin part. I only had one week left in the project timeline to complete the admin piece, and one week for testing. But I had some things going against me even with the tight timeframe.
  1. The client didn't even know how a critical piece of the site was going to be worked out. They assigned a senior dev to figure that out and get back to me.
  2. The client was frustrated already on time but by their own fault. Early on in the project, they had no XHTML templates for me to hang things on, no serious functional spec exept a two-pager requirements list, no time for me to rework their existing functional spec, no clear direction on how some key aspects of the work were going to be ironed out, and they had me first start with Zend Framework and then abandon that in favor of my own design.
  3. They had a senior dev who was pesky. He kept out of the design for the most part, but he'd have some biting questions for me here or there as I went forward through the thing. And when I tried to get more information from him, it was like pulling teeth -- he would delay frequently unless I called him on his phone.
  4. The top guys didn't know a thing about programming or building projects of this size. The existing site they had was built over time by several developers over a series of months. Their knowledge was immature of this industry.
My lessons learned here are:
  • to really get a grasp of my client early on.
  • to see if they have a pesky senior dev who's going to get in my way.
  • to never again join a project where they do work in MVC format.
  • if locked into a corner, know when to get out.
  • if told to stop work, don't fight it -- just get out and move on.
Well, anyway, this might seem like a dose of bad news, but actually it is not. I don't have to do that pesky project anymore. I can work with two other really good clients right now. One is flexible and sort of pays semi-okay. The other is flexible/inflexible (fair is what I'm trying to say) but pays better and understands my worth.

One thing I did on the end of the project, however, was a trick. I had already been paid several paychecks on this project already. But in the end here, I asked for $1500 which is half of two weeks worth of work. By doing that, I knew they would not pay that sum. What this does is get me off the hook for a lawsuit. Imagine if I had not done that and had just said I want out -- they might come back to me and ask me for some of their cash back, or hit me with a lawsuit. The next thing I did was act professionally through the whole closure. I explained my predicament and then left the facts as the facts without pointing fingers. I fudged things a little and said that I'd like to work with them in the future. Of course I know that the client wanted to return with a nastygram, and they did. But I did not return one back to them. This makes the client seem victorious and me as the failure, which is exactly where I wanted to leave things. This keeps them out of the mood of suing me.

So anyway, here's a toast to the future on my next contracts!

Monday, July 21, 2008

Get A Free Copy of Windows Server 2008 for Browser Testing



I hate Microsoft with a passion. That's why the logo on this post is upside down. They don't deserve the advertisement. I mean, I'm a developer, and I don't like being forced with dirty market tactics to pay for products I don't need or want, and I don't like a company that lied under oath and got away with it while you or I would be facing several years in federal prison doing hard labor for grand perjury.

Microsoft Vista is complete garbage. I have to use it because I have to do browser testing, and that's the only reason why I use it. Everything else I run comes through Ubuntu, even if I have spend an entire weekend fighting with my xorg.conf file on Linux just to get my attached monitor to be the most optimal resolution next to my laptop. I don't like any version of Windows, but of all of them, I could tolerate W2K the most because it didn't periodically call home like XP has been proven to do, and it didn't have an NSA backdoor like XP and Vista have.

So now I have a new laptop, and the very latest Ubuntu on it, and I installed Virtualbox on it. I then needed a Windows OS on it to run IE7 because IES4Linux doesn't quite run IE7 perfectly yet. I looked around in my office and the last Windows license I had was for W2K Server and W2K Pro workstation, and no XP licenses, and the Vista license I had was on my other laptop. So I then had to make a decision, and that was to purchase a copy of Windows Vista or Server 2008. I didn't like either of those decisions, so I went looking for a free route.

And that's when I discovered that M$ has a 240 day version of Windows Server 2008 for you to try. Just visit their site, search on Windows Server 2008, click Trial, and download your ISO file.

I downloaded mine and it works great inside Ubuntu with VirtualBox. This comes with IE7. Then, to test IE6 I use IES4Linux because that works well and the engine, after some testing I did, runs just fine. I then installed Opera in my VirtualBox instance and Safari as well. They say if you test your stuff on Safari for Windows, it will work 100% in Safari for Mac. So that eliminates me having to get a Mac.

Thursday, July 17, 2008

MyGlowKeys.com



One problem with non-Mac and non-Lenovo/IBM laptops is that they don't have keyboard lights. At night when trying to work in complete darkness on your great little laptop, it's aggravating to not be able to see the keys. Some say, "Yeah, well, I'm a touch-typist," but the reality is that if you use different keyboards in a day (I do), then you're left guessing where the special keys are like page up, down, volume, etc. So, by using glow-in-the-dark key labels, you can get around this.

I just ordered a pack for $14.95 USD. I recommend if you use a non-Mac or non-Lenovo/IBM laptop in the dark -- that you get one of these.

http://myglowkeys.com/

[EDIT: Unfortunately, I don't recommend these anymore. I thought these keys would glow in the dark, but evidently they do not. They're really only suited if you already have some dim lighting near you -- at that, they are fantastic. But if you're sitting in a completely dark room with only your laptop screen, you won't really see these keys very well. Instead, consider LatKey.com. I contacted them and asked about getting a set of glow-in-the-dark stickers that are geared more for laptops -- giving me a Fn key as well as a Euro symbol. I told them I was in the USA, and they oddly told me to get the Spanish version because it also included all the F1-F12 keys as well. Oh, well, whatever works is good with me.]

Wednesday, July 16, 2008

The New Batman Movie



The new Batman movie comes out at IMAX on July 18. Any web developer worth his own weight just HAS to go see this movie with his family or girlfriend. The reviews are epic. They say it's like Oscar-nominating time with this thing.

Monday, July 14, 2008

Saving The Contract



Contracts definitely have their ups and downs. And their downs can be pretty low sometimes. When you find a cash cow client (and I'm talking a project that pays like $3200 every two weeks, several paychecks in a row), so does the expectation level. And the longer you wait before delivering results in phases, the more frustrated the client can become. My frustration on this go around was because I didn't have any page templates to hang stuff on because the client didn't have them ready yet, and the site was supposed to be a very beautiful site. I had bitmaps to go on, but son of a gun those things were hard to pull off in my browser and make them look great on IE6, IE7, FF2, FF3, Opera, and Safari, looking exactly the same. Meanwhile, the client shifted gears on framework, shifted gears on requirements, and seemed to want to forget the project delays were largely because of them.

So I was told to stop all work! Holy cow, that's not what you want to hear, especially after doing two weeks of work and needing to invoice on the next day.

Well, my wife and I went into damage control mode. We saved the contract. We not only saved the contract, we renewed my client's faith in me, got ourselves back on target with the project schedule, and got the client to agree to let me invoice him for the past few weeks and the next 3 weeks ahead, which is a major windfall.

My wife sat next to me, took notes, managed my time, got me drinks and things I needed, and did everything she could to encourage me and keep me going for two 12 hour runs to try and save this contract. And we pulled it off.

You see, I was worried that if I default on this contract, then the client might come back and ask for all or much of his money back. Well, normally it's a good idea to not spend that money right away. Unfortunately, however, I've had such a need to pay some bills and get my home office infrastructure going here that I had no choice but to use these funds.

So, anyway, the lessons learned here are:
  • Don't be fooled by wealthy clients -- they expect more from you than lesser-paying ones.
  • Time your deliverables two business days before invoicing time and make them substantial with something they can click on.
  • If the client says stop doing something a certain way, stop doing it that way, even if you think you know better. For me, I was focused too long on implementing my own page templates, thinking, well, it will look so much better and I thought I could knock them out fast. Well, fast turned into way too slow.
  • On larger projects, don't begin until all the page templates are drawn out. This helps you visualize the functional spec a lot more, and it's far easier to build the app. I sat down and realized the other day that I was spending enormous amounts of time simply thinking how the fields will go on a page, and then fighting with CSS to make it work right with all browsers. Instead, let that be a project for your client and his designer.
  • Sometimes you have to drop the distractions and get a friend, girlfriend, or wife to help you focus, sitting next to you or checking in on you if need be. It was tough giving up a bit of blogging, forum interaction, live chats, and lots of email interaction, or doing my typical routine, but I got a lot accomplished and caught up again.
  • Get your workstation, desk, and home office exactly as you like it. It will make a HUGE difference. Clutter around you also tends to lead to clutter inside your applications too, for some reason. It also leads to distractions.
  • Every project has key deliverables and quick-hit deliverables. You need to tackle both. It's hard sometimes to focus purely on one -- it drains you. So, flip between the two by knocking out a couple quick-hit deliverables that don't take too much time, and then flip back to two key deliverables. This produces more results in faster time and gives your client the impression that you've worked much of the application out in very little time.
  • When the client wants to put you on the defensive, you can guarantee that he knows you're the wrong developer when you sound overly defensive, go on a tirade, write something extremely wordy back to him, get short with him, or make a big deal out of something he says. You'll find that keeping your cool, not reacting to what he said for an hour, and trying to stay positive -- these things help. In my case, the client turned around and apologized for his harsher tone, explained himself, and we worked it out. Now, had I been a much younger developer and not learned this lesson, I would have failed to not sound defensive and would have more than likely lost the client.

Saturday, July 12, 2008

New Desk -- So Much Easier To Think!

When I started my freelancing, it was a rush to make money and pay bills that I was behind on. I was also somewhat depressed about losing the comfort of my previous job, and still trying to absorb what freelancing was like and the faith that I could make it work. Well, now I'm completely over that lull and work is good, but I was stuck behind a desk I couldn't stand, using an old desktop PC with cables everywhere on it, and every time my wife said, take your stuff and let's go, it would take me an hour to get everything copied over. Desktop PCs also have a lot of cable clutter. Now, many people think that desktop PCs are better than laptops for programming, but what they're thinking of is the fact that many people probably don't backup their laptops, and others don't think the keyboard can handle all the constant pounding. However, if you backup your laptop, and if most of the time you use an attached keyboard and monitor with your laptop, it tends to work out just fine.

So, my wife and I came up with a plan to move me into a larger room in the house, pull everything out of it, and to stick some brand new office furniture inside and with a brand new laptop.

Our first stop was Office Max. There, you end up spending $1000 for a big desk and a file cabinet to go behind you. Plus, it's made from particle board and has like a resell value after a couple years of perhaps just $200, if you're lucky. So, my wife said that wasn't a good deal.

We then traveled to every kind of major name brand furniture store in the USA, and not a single one had anything but tiny hutches or traditional-style desks for a home office. If you were wanting something more modern and European, you can pretty much give up on most stores. Eventually, however, we landed at Room Store. Now this place finally had what we wanted. We decided we could get a low, thinnish, European-styled dining room table and a dining room server, and turn them into a large desk and file cabinet. And at Room Store, it was just the ticket because we paid a mere $1000 for it. We then ended up with something that has a far higher resale value -- we could probably resell it for the same cost because we purchased it at a bargain. The wood is a much better construction -- it's black walnut veneer on paulownia wood (which grows fast in China and is about as hard as oak but lighter than pine). And it's a matte finish because a shine is extremely distracting (and cheesy). This came with a dining room server that made an outstanding file cabinet.

In particular we went with the Kathy Ireland Bay Heights Home Dining set, but only with the dining room table and the server, not the chairs or anything else. It makes a fantastic desk set.

When you combine this with the new Acer Extensia laptop for $500, a separate keyboard and flat-panel LCD, you end up with something that has less cords and looks elegant.

Next, I eliminated all paper. I refuse to use sticky notes or let anyone put any paper on my desk. Everything either goes into a simple manila folder on my desk, or on the pad of paper, or in a drawer in my new file cabinet.

The room I put all this in is a room with a humongous dormer in the front of my house over the foyer. It looks out at a forest and my good-looking front yard. If the sun gets too bad, I can always close the shades.

So in a sense, this is fantastic justice. I have no commute, have a modern-looking office fit for a wealthy lawyer, complete with elegant furniture and a window, have a very large desk all to myself, have a powerful laptop, and no one can tell me what software I can or cannot put on my laptop or make bad business decisions that I completely disagree with. I am the man in charge now.

Anyway, with this out of the way, it's helping me focus on my work and not about moving junk around on my desk.

Friday, July 11, 2008

Cubicle Rage, New Thing in American Businesses

It's interesting that this article was posted today on Reuters. I've known this for quite some time. As USA businesses shrink their budgets in all departments, fail to see the importance of paying IT workers properly and shrinking their budgets while shrinking their IT server room budgets (more servers, but cheaper servers, blade servers, and lots of virtualization), skimp on raises, and fail to see the effect of increased fuel and grocery costs -- it's lining up American businesses for disaster.

I was fallout from that disaster, and I got out before it became a crisis in America. Thank God I'm a freelancer and I have the freedom and the Internet to do what I do best.

We also see the typical Human Resources Department response, which is to pacify the worker into complete obedience like a trained pet. If the job of the American CEO is to pretend to care about others through United Way enrollment and then rape natural resources, customers, and employees on the side, then it is the job of the Human Resources job to spin things such that American workers almost think they're getting a great deal and work for the most wonderful leader the world has ever known. In other words, most Human Resource Departments in the USA are like Baghdad Bob in the start of one of the worst times in American history about to happen on us.

What the stupid American CEO fails to realize is that eventually you can't push people too far. They will quit. They will freelance. They will become business owners and inventors. And the ease and cash potential of the Internet, mixed with the high cost of fuel, are helping steer that phenomenon.

Draw Your UIs Completely Up Front

I've come to realize now that one of the fastest things I can do on a project is to draw up the XHTML/CSS stuff first, drawing out every page and admin page, before I even start work. Of course, if the client has a designer in mind, or can use who I recommend, that's great. But if they're cheap and cannot, then it's best if I start on every page.

I had this all wrong, really. I used to draw each part of the site as I went along, and then have these painful discoveries with the client where, once they visualized something, they would either have feature creep or explain that they messed up in the functional spec or were not clear enough or that I interpreted thing completely wrong. By drawing a UI all the way through and presenting it to the client, it makes the functional spec that much more clear.

At that point, building the site moves along much faster because it's just a matter of plugging in items into the backend database.

Wednesday, July 9, 2008

Ha Ha



I love getting the last laugh. At my cubicle day job I had last year, where they gave me an idiot manager that caused me to get up and walk off the job to start my new career as a freelancer, my manager had a Ford Expedition. She had to be at the office by 8:30am, which included fueling that huge fuel tank, fixing anything necessary, feeding her 4 babies (she was Catholic), and dropping them off at school or daycare. At lunch time, she drove out again for a lunch she would bring back and eat for 30 minutes. She then had to leave at 3:30pm to pick up a baby from daycare, pick up her kids, drive them to her mother-in-laws, and make it back by 4:15pm and continue working until her total 8 hours were completed. Her husband, who ran his own construction business, did nothing for her in this regard. Meanwhile, her job required that she be just like us grunts -- woken up at all times of the night and weekend for emergencies where systems were down or some other major crisis was about to happen.

Now enter the fuel crisis due to the falling dollar. Her grocery and gas bills have doubled. Her daycare rates will likely have to go up as well. Meanwhile, morale is even lower in the office since I'm gone and all that boatload of work I accomplished is being handled by low-paid idiot sloths who probably don't even know the difference between uppercase and lowercase in Linux command lines. So, the only thing that can go up for that office are costs, and if they go up enough, then that company will close the whole operation down and move everything to India. Last, the security and business continuity audits there were very aggravating, and I was the only one there who knew enough to ensure that they passed these audits. Now that they have to do this on their own, I can guarantee you the place is falling apart at the seams. It's only a matter of time before there's a major shakeup in that department, where people get fired, and then eventually the whole darn place falls apart and needs to get outsourced to India.

In other words, I was like the little-known glue that held the place together, heavily overworked, passionately disregarded, severely underpaid, aggravated at every promotion turndown. I had no office with a window, no time with my wife and kids for 6 years, had to drive an hour into the office there and back, was called at all times of the day and night and on weekends, vacations, and holidays, and a whole laundry list of craziness that was long ignored.

So now, I have the last laugh. While my former manager is working long hours and paying $150 to $200 a week in fuel costs, which is $10,400 a year, living with all that aggravation and risk of her getting fired by her management, I'm having the last laugh. My salary is now double hers as a freelancer, my gas bill is near $0, I get an office with a big desk, a window, and any comfort I want, and the list goes on and on.

She bitterly wanted me out because I was smarter than her, knew that she was stupid and making stupid decisions, and didn't like that I didn't fit into a little mold of suck-ups like the other brown-nosers that worked under her. She failed to see the value in me, but I'm sure she sees it crystal clear now.

So Lisa, ha ha. I told you so. My commute is 5 seconds, I make twice your salary with far less aggravation, I'm having the time of my life, and I see my kids far more than you ever will in your pathetic life. Makes you stop and think, doesn't it?

Latest Development Style

I've revised my development style after a lot of thought. Now, don't get me wrong, I make exceptions to this when I have a client with certain tastes, but this is the style I will use when the client leaves it up to me.

First, if I can use small packages to achieve what I need, I'll definitely consider them. I'm not a big fan of big elaborate systems except things that are well established and which fit a need very well. For example, WordPress and phpBB are great fits on some projects -- no need to rewrite those unless something special comes up.

Now, if I need to build something custom, then I don't like spaghetti code, so I need a framework. I don't like the learning curve of other frameworks, and I have learned a few, but they are either too cumbersome, too slow, too inflexible, or just generally are a plain in the rear to use.

Therefore, we have to separate out the PHP from the MySQL from the XHTML, so here's how I do it.

First, I used to use Smarty, and will still use it if a client wants it. However, now that I know Smarty, I've realized that it's actually slower, as well as redundant to, just using XHTML files saved as PHP pages with inside. I stick these in a subfolder called templates and load them with require_once instead of $smarty->display.

Second, to handle the MySQL, I use either Outlet ORM with PDO or Propel ORM with PDO, depending on client need. And if I have something special, some special SQL besides this, I do a straight PDO call by using parameterized SQL stored in a central conf file. (BTW, my conf files are actually PHP class files with public variables.) Parameterized SQL means I have SQL statements with ^ caret symbols inside where variables would go, and I use a Pack() function that I created to insert the variables inside those places.

Third, to handle the PHP page logic, I don't use MVC. Instead, I use PHP pages for each individual need, and each PHP page is started with a commented template where I insert my PHP logic. I call these "PHP Logic Templates".

Fourth, instead of a "Model" from MVC, I use a classes subfolder with my object classes inside.

Fifth, I use Blueprint CSS on difficult CSS projects, but now I often may go straight CSS based on things I learned from Blueprint. It makes for cleaner code to go without Blueprint, but it's not always possible.

Sixth, I still use everything else such as ProperCase() function naming, $sAdaptedHungarian for my variable naming, initial curly braces { on the same line as the statement where they are used (not on a new line), and everything else you see in previous posts besides the stuff about the database logic, which has changed a great deal now.

Tuesday, July 8, 2008

I Recommend the eCheque




I had a UK client recently find a low-cost option on PayPal called the eCheque. Now, I have never used this before for payment, but this was a trusted client, so I gave it a shot. He said it takes a little longer than a normal PayPal payment, but costs far less for both him and me. So, it took 10 days, and to my surprise, the total in fees for both of us on $250 was a mere $8. Therefore, if you have a customer who can pay on PayPal with an eCheque option, and if you can handle waiting 10 days, then I suggest you go with that and avoid some fees.

Friday, July 4, 2008

A Good Way To Blow Two Hours




http://flickrvision.com/

Basically, as people take pictures and upload them to Flickr, it randomly selects them and their location and moves the map around to show you where the pictures are coming from.

If that's not the neatest thing!

Thursday, July 3, 2008

Never Again on Big Gambles




I spent 5 long years on a big gamble website project. Naturally we web developers think we can make that big killer tracking system app and could collect millions of dollars. I did that, wasting 5 long years, and it didn't really get me far except to have it as a portfolio item and use it to lure my first client on a completely separate project.

Please hear my warning -- it's quite a gamble to do something like that, whether hosting it yourself or selling it. And it's a son of a gun to maintain and grow. Never again will I do that, and I highly recommend you think of the same thing.

While I was doing this, I would read news reports of guys spending far less effort, thinking up smaller ideas, growing the sites, and then selling the sites for $2M a piece. Makes you step back and kinda wonder, doesn't it?

Heck, if I think about it, I would be happy if all I did was spend 2 weeks building something, growing it organically over another 30 days in a 6 month period, here or there, and then selling the site for like $30K. Do enough of those and you've just made $100K. Do a little more and you've just paid off your house.

Really, the goal for any freelancer should be to be debt-free, first, and then work on the great ideas after that. And if you're a young guy who hasn't started a family yet, please oh please go start one because they are infinitely more worth it than wasting 5 years coding something. I recommend you acquire a house, a car, a boat, a cabin on the lake along the way as well. And pay those debts off, and raise enough income for you kids to be set for college, and when you've done all that, then go invest in those larger gambles.

Not Bad

How's this sound? It's at the half year point, it's within my first year of freelancing, and I've made $30K in PHP freelance revenue and owe the IRS $0. How? Well, I visited a CPA, she figured up all my expenses and deductions, and she got it down to $0. That's why. Now, going forward, sure, she said I should keep 20% of my business income in savings and then file business taxes twice a year, but that I won't have to worry much about this.

Now, I've been advised not to sell anything except services. The moment you sell something tangible in the USA, you trigger having to pay quarterly sales taxes. Therefore, you should try to find a way out of this, such as installing the software for someone and bundle it as a consulting deal.

Anyway, if I had known about this a couple years ago, I would have quit my job a lot sooner.

As well, I made this income even with a couple dry months. Also, I had vacations where I worked like 3-4 hours a day doing freelancing and earned an income even on vacation.

The Days of IE6 May Soon Be Behind Us

Check this news article out from 37Signals.

The days of IE6 and prior browsers may soon be behind us. Sure, IE7 blows chunks as far as end user friendliness, what, with a locked toolbar you can't customize for starters, and it still has some major bugs compared to Firefox, but hey, it's better than nothing.

So, I would expect that by next year we'll be testing stuff for FF2, FF3, IE7, and then the latest versions of Safari and Opera. Got an old version of Safari or Opera? You probably don't.

Living My New Life




So here's me with my new freelancer life:
  • I get up when I feel like it. It's results over punctuality, usually.
  • My clients have crazy hours, so I often keep crazy hours too. It's all good.
  • I no longer have stupid managers managing me. If I don't like a client and I think they're making stupid decisions or arguing with me too much, I dump them.
  • There are days when I literally get paid a great sum of cash from guys younger than 25, even someone as young as 19.
  • There are wealthy clients I have who stop playing video games long enough to answer my question on a project, then go back to playing the games, all while their affiliate marketing projects make cash in the background. Talk about an inspiration. Talk about a fun guy to speak with.
  • I can grade the homework of my children in a 30 minute break from work.
  • I don't have to listen to annoying laughter or jokes all day.
  • I get an office with a door and a window, any temperature I prefer, any music or lack thereof that I prefer, and I can change the scenery completely by working wirelessly from the beach or while on vacation if I want.
  • I can save cash by making my own lunches, and not without embarrassment compared to other people's lunches.
  • I don't have a boss lording over me or babysitting me.
  • Although not often, some days I'm paid to fix someone's Wordpress blog or to draw logos or designs.
  • If I work 3x as hard, I get to keep 3x as much cash instead of the main boss skimming all that cash off.
  • It's easier to negotiate with clients for unpaid time off than you can with a manager and a cubicle job.
  • At my cubicle job, if I was stuck in a no-win situation, or had a client I didn't like, I had to put up with it. In my freelancer job, I can ditch this client and move on.
  • I can make video blogs with sock puppets and collect money on ad revenue.
  • I can take a swim 2-3 times a day for a couple minutes, then hop back to work.
  • I can take a 15 minute break to goof with a guitar or play with my dog.
  • My wife always knows where I am and can ask me to do an errand for her.
  • I save a TON on gas bills. Most people with cubicle jobs are now driving 1 to 2 hours to work each day, burning through at least $80 to $120 a week in fuel. That comes to about 6% of one's average salary in the USA!! That means that you spend like 2 hours of your week working just to pay the gas bill.
  • I can take my work with me easily on vacation to any place in the entire world where I can pick up a wireless connection.
  • I can go with my own framework and design decisions on most projects, doing what I think is logical and the best idea, not the idea of some moron.

Wednesday, July 2, 2008

Why I Freelance



Here is why I freelance. Growing up, my grandmother thought I was very talented at whatever I put my attention on, and my mother and stepdad gave me a tremendous amount of independence to do come and go as I please, do what I want. In the 1970's, I would walk or ride my bike about 10 miles on a regular basis, while today I couldn't even think of my kids doing that. At the age of 9, I wanted my stepdad to take me to the library downtown, about 25 miles away, and he was mowing the lawn. So he said, here, take this $15, and head down to the bus stop at the end of the road and get there yourself. And sure enough, I did it. It wasn't easy and I had to learn a lot in that process, but I pulled it off. Reading was my passion and I learned so much by looking at old newspapers and grabbing books on any topic in practically every section there. As I went to that library, I discovered secret underground passages around that town that led to other buildings, found a closed off WWI and WWII museum that no one hardly knew about, met and spoke to Ronald Reagan in an empty hallway before he even thought about running for president, and learned how to feed myself on very little money during these low-funded library bus trips.

In school many years ago, I was the first one in my county to use a computer at my age. A math department chair had like the 10th Apple II computer ever made and he shared it with me in junior high. Programming came naturally to me, and then eventually web development. I knew Bill Gates from articles I read -- back when he was selling the Altair MITS computer and all it could do was simple math with lights. That's how far back I went. In college, I remember doing some programs even with a teletype data entry system that would communicate with the mainframe and send a response back on rolls of paper -- and I was programming in very simple Assembler. So, computers became my life. I achieved an inner peace with my computer. It was like my second life.

When asked in high school what I wanted to do with my life, I told others that I wanted to start my own business selling computer software. Well, reality hit, and bills needed paying, and so that dream kind of went away for awhile. But then I learned web development and was inspired by the dot com boom, and I quit my job then to become my own software company.

That first software company was a dumb idea, but at least I made $40K off of it in very short time before bailing on the concept.

But once you get your first taste of mild success, it's in your blood and you can't shake it. So for 10 long years that seemed like an eternity, I did the daily commute cubicle office job thing again, constantly admonishing myself that I didn't get right back into the race again with my own business.

However, let me share with you how crazy things have been over the years in those cubicle jobs:
  • All company emails were read by security teams.
  • All online chatting was curtailed and had to go through a new chat system that was read by security teams.
  • All our desks were opened and I was told to take a pocket knife home. I used that pocket knife for opening shipping boxes, but okay, home it went.
  • All our phone conversations were randomly intercepted and heard by security teams.
  • All our computer screens were randomly intercepted and viewed by security teams, recording video and keystrokes.
  • All our web browsing was intercepted as well as sent through a proxy that would keep percentages on how bad we were or how much time we wasted on the web.
  • I used to use Linux to VPN from home, but they were going to force me to use Windows to VPN and then fire up a VM if I wanted to do Linux tasks.
  • We were told not to use our own home PCs to connect on VPN and switch to using company-issued laptops that, of course, were intercepted and checked out.
  • Our smart managers were replaced with dumb ones.
  • Lunch time was pure hell if you were on a diet. Everyone came in with expensive, delicious lunches. This blew my diet all to hell and caused me to practically fall asleep around 3pm every day from a diabetic coma or something.
  • We had to work near a smelly, noisy copier that was an OSHA experiment on wheels with that toxic paper and toner powder dust floating around, just waiting for someone to get cancer. We also had to enter a server room so loud that even when you shouted you still couldn't understand what people were saying.
  • Our smart ideas in our backend systems were replaced with ridiculously stupid new ones that lacked all kind of proper planning, speed, efficiency, intuitiveness, and innovation.
  • The office was one hour away. When I first worked there, it was 30 minutes away, but then they moved it completely on the other side of town through heavy traffic, adding another 30 minutes to my commute.
  • They kept moving my desk further and further into a noisier area, without window view, without a door, and then switched all our desks into half-wall cubicles because they thought we weren't communicating enough. (Programmers don't need half-wall cubicles to communicate more -- it's a distraction.)
  • We kept being told to do a bunch of paperwork online that our supervisors or HR should have been doing for us. They should have gotten off their fat asses to do that.
  • We kept having to go to required workshops on leadership and other pep talks, and if you didn't play along, you would get a bad performance review, and then if that kept up, you'd be fired.
  • My new stupid supervisor misheard the instructions from HR regarding performance reviews. (I know, because before I switched from supervision into a senior tech position, I used to have those same training sessions with HR.) Anyway, what they misheard was that we had to be given something negative on every performance review or it wouldn't be accepted. And that was entirely not the case at all. So I kept getting dinged on like the stupidest shit. When upper management read that and curtailed a bonus I was expecting, I hit the roof in anger.
  • The people in HR were complete morons. They were even worse than sales people.
  • We were judged more on punctuality than quality, attention to detail, or really clever hack fixes or fast repairs of things. It was all about what time you made it into the office and whether you put in those extra free hours for them each week.
  • I was told a 40 hour week when I signed on, but in order to get all the impossible shit accomplished each week, we had to work 75 hour weeks. At one point on a Sunday morning, I had worked all Friday night and weekend long, sleeping over in a hotel room on Friday and Saturday before having to work another 8 hours on Sunday. I then had to drive home an hour away on Sunday and I found myself driving while sleeping. I almost wrecked before I found myself in the opposite lane while driving, swerved over safely before anyone came up, and got my act together before arriving at home safely.
  • We kept being given demeaning jobs that were not even in our job category.
  • Our new managers no longer defended our technical reasons to upper management, making us look like idiots.
  • I was given sloths to work with who only got smarter by the things I taught them. I had one coworker who could barely spell or type an English sentence, making him useless for doing any kind of reliable paperwork or emails with me. Another one, no matter how many times you asked him to pay attention to detail, would forget Linux commands or try TO TYPE EVERYTHING IN UPPERCASE, not understanding the case-sensitive nature of Linux commands.
  • We were asked to do 3x as much work with the same pay. As a freelancer, I would later find out that I could work 3x as hard and make 3x as much cash.
  • I was tired of feeling like I arrived at work to be lorded over and babysat every day, that my opinions no longer mattered, that common sense went out the window, and that, by the way, there was no way I was going to see a window ever because all the window offices went to the upper upper managers.
  • And sadly, this sort of company was the norm these days, if you wanted to make a decent salary.
So that's why I quit. I quit to save my life, to help me see more of my children again before they grew up and moved out on me, leaving me to weep in how stupid I was to let this happen to me. I quit to keep me from falling asleep at the wheel. I quit to get my hours under control. I quit to stop being babysat and to manage myself. I quit to give me an office with a window and a door, to have a 5 second commute from bed to desk, and to wear the kind of office attire I want.

In the end, it was a lot of hard work, but I would never go back. Never in a million years. I am my own destiny. And now that gas is inching up to $5 a gallon and gas stations are looking like ghost towns, with perhaps $6 or $7 a gallon right after that, well -- all the old cubicle jobs out there can rot in hell for all I'm concerned.

Get Rich Edit Controls On Your Website in 5 Seconds




Check this out. Create a folder on your desktop called test. Drop a text file in called editor.html and make it look like this:

<html>
<head>
<title>TinyMCE Test</title>
<script language="javascript" type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "advanced",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_buttons1 : "formatselect,fontselect,fontsizeselect,bold,italic,|,forecolor,backcolor,|,
justifyleft,justifycenter,justifyright,|,bullist,numlist,|,outdent,indent,
blockquote,|,link,image,hr,|,code,removeformat",
theme_advanced_buttons2: "",
theme_advanced_buttons3: ""
});
</script>
</head>
<body>
<!-- form sends content to moxiecode's demo page -->
<form method="post" action="http://tinymce.moxiecode.com/dump.php?example=true">
<textarea id="content" name="content" cols="50" rows="15">This is some content that will be editable with TinyMCE.</textarea>
<input type="submit" value="Save" />
</form>
</body>
</html>

Now download TinyMCE from http:///moxiecode.com. Unzip it such that you find the jscripts folder inside. Open that up and it contains "tiny_mce". Copy that "tiny_mce" folder into your "test" folder on your desktop. Now view editor.html in your web browser. Click Save. Watch it post to the moxiecode.com website. You could just as easily have posted that to your own PHP pages. Now open editor.html in any text editor. Note how few lines of code were used. The way I've got it set up is that it takes any textarea on the given page and converts it into a rich editor control.

Cool factor is high, right?

P.S. If you don't like the default font size, just edit the file in the path:

tiny_mce/themes/advanced/skins/default/content.css

Change the first line where it says 10px into 11 or 12px, or any font size you want.

Tuesday, July 1, 2008

Gedit Makes A Fine Text Editor Now -- Here's How

If you have Ubuntu like I do, you might not know that Gedit makes a superbly fine text editor now. But you need some plugins and some options turned on that make it even better than Bluefish:
  • Disable Text Wrapping
  • Display Line Numbers
  • Highlight Current Line
  • Display Right Margin (80)
  • Highlight Matching Bracket
  • Tab Width (4)
  • Disable Insert Spaces Instead of Tabs
  • Enable Automatic Indentation
  • Disable Backup Copies
  • Disable Autosave
  • Find the plugin packs on the web for File Browser Pane and Project Manager
  • Enable File Browser Pane Plugin
  • Enable Indent Lines Plugin
  • Enable Modelines Plugin
  • Enable Project Manager Plugin
Now create a launcher for gksudo 'gedit --new-window --new-document' and it will be a better PHP IDE than most ones out there.

Arctic -- The PHP Alternative To Trac



If you're looking for a simplistic, PHP-based issue tracker that's a quick and dirty alternative to Trac, minus the Subversion integration, and which runs faster and looks better than Trac, then go check out Arctic. You'll love it. They have a free, single project, 1000 ticket version, but you can download and hack it to get around that problem.

Trac blows because it's interface is clumsy, the Python is a bear to get going on a server, and it runs very slow for what it needs to do.

Back on Top Again



After a couple weeks of complete panic and working 16 hour days, my main cash cow client comes back to me today and says he's changed his mind and the requirements will be cut in half, making this a far easier project to pull off within 30 days, if not sooner. You see, I don't mind working for this client, but only on realistic terms. I'm also starting to hate working on very long projects because (a) the clients on those projects bitch about hours too much and (b) it eats up my flexibility to work on projects I actually enjoy.

Another client told me, as well, that he has a lucrative project for me and can even front me some money as soon as I'm ready to take it. Thank goodness for the falling dollar -- it's making all this possible.

I've also had a lot of success lately with an HHO Generator, which is a device you put in your vehicle to increase your gas mileage. We're hoping to get about 15 to 30mpg more with this thing very soon. We've already achieved 8mpg. Don't you just love it when you can stick it to the oil companies and keep more of your hard-earned cash in your pocket? I do.

Another direction I'm taking is to write a CMS for one of my existing clients. This is great because to me a CMS really needs to be a plugin to an existing site, not something that becomes the entire lousy framework of a site.