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.