Category: development

  • There’s an excellent article on

    There’s an excellent article on Mozilla over at Salon. As a fanatical Mozilla user since the earliest preview releases (I didn’t start using is as my default browser until it got stable enough around .9.2), I have to say that I wouldn’t suggest using anything else. I love the e-mail client, the bookmarking system (although there were still some annoying little bugs as of .9.8), and the standards support. .9.9 is out now, and I’d suggest trying it out. Mozilla is a lot faster than it was six months ago and a lot more stable than it was just two months ago. Try it, you’ll like it.

  • Killer Apps

    There are things I have today that I don’t remember living without. I remember the days before e-mail, but do I think I could live without it now? Nope, not for a single day. I’d go crazy. My favorite application, that I don’t think I could live with if it disappeared has got to be Mapquest. Every time I drive somewhere new, I go right there. Every time we take a roadtrip – it’s the first place I go. Like this morning, after I got out of my meeting, I went to Mapquest to plan our trip to Ohio. Mapquest told me it will take six hours and forty-three minute to drive from Sterling, VA to Elyria, OH. I know it’s 376.37 miles between my front door and the hotel where we’re staying, and I even have a nice little map of the route. Thank you, internet!

  • Save Time Now, Waste Money Later

    I’ve been working on a theory for a few weeks that you all probably know already. I want to share it just in case you don’t. There seem to be many people where I work who just don’t get it even when I use small words and exaggerated hand gestures. I even drew a diagram with stick people and arrows. I think I even used multicolored white board markers. Yes, it was pageantry and sophistication all rolled together in the round mound of me.

    Equipment: The boxes and software that will run your site, tool, database, whatever.

    Backend Programming: Writing stored procedures for the database, setting up data sources, creating daemons, etc.

    Webserver Integration: Hooking up the backend systems to the webserver and writing procedures and/or functions to surface them to the webserver.

    Frontend Integration: Using the stuff written by the previous step to build the actual pages returned to the user.

    Users: Ummm, they use it. The “intended audience”, if you will.

    I bet you’re wonder what this theory is now, huh? I’m getting there, just hold on. I work on some very large projects involving many different groups. The flow is in a lovely table to the right. The problem is that if the system involves daily interaction with employers, or worse, the general public, any steps you’ve taken to cut corners that make the product less usable will ultimately cost you more more in time and money than if you had just done it right the first time. Every hack that the person after you has to create in order to get code to work is a waste of time and money. Every useless step a user has to do to accomplish the purpose is wasted time that gets compounded by the fact that there are probably many more users than there are programmers. It’s even worse if this is a consumer site. If it doesn’t work, or is difficult to use, they won’t use it at all, and it will really be a waste.

    Cost-cutting measures during development made in the sake of saving time or money save neither. Every mistake made that isn’t fixed wastes the time of the next person to work on the project. If the next step involves multiple people, you’ve multiplied that waste by the number of people who have to compensate. No matter how much your backend developers make, it’s not enough to justify wasting the time and talent of the people who take over. The same goes for everyone else involved. When building something, do your part right. Talk to the people who will be using what you produce. Let’s say you’re in the webserver integration group and you’re writing something that will be used by 20 people. Talk to them and make sure you’re not doing something that will make them have to work around your product instead of using it as intended.

    This all boils down to usability. The principles of usability don’t go out the door just because it’s software and not a webpage. Writing crappy code because it takes you less time is no excuse. It’s the poorest of excuses because you’ve just inflicted a giant time and money waster on the people who then have to use it. So, think before you code, please? Say it with me: I will not write crappy code. I will do things the right way, deadlines be damned!

  • How to get your geek to love you

    I’ve done some of these before. I did my week of GeekTraining tidbits (1, 2, 3). Today, it’s some stuff for project managers. The title is different depending on the company (or even within the same company). Here, they used to be called project managers, and now they’re producers. The name’s been changed about ten times without the job function moving at all. Being a project manager is a pretty crappy job, as far as I can tell. You end up as everyone’s dumping point for bad news, demands, requests, problems, gripes, requirements, schedules, conflicts and slips. You don’t get the thrill of building something, much credit if it’s successfull, but a lot of blame if it fails or comes in late.

    I won’t deal with project management as it relates to dealing with business folks, because I don’t know much about it. I do know how to deal with geeks, because I am one, and have to deal with project managers of varying talent levels all day, every day. Here are some of my observations, gathered from my three years in my current position:

    Good Project Managers:

    Bad Project Managers:

    understand, at least at a high level, the technology involved in a project. They understand acronyms, implementation timelines and relative complexity.

    constantly remind the geeks how stupid they are by asking the same question several times in the same meeting, constantly answer questions with blank stares and decide certain tasks are easy because “it didn’t sound hard to me”.

    provide a buffer between business folks and geeks, translating businessSpeak into real requirements and providing effective communication between the two groups.

    forget to tell the geeks about requirements until the last minute and refuse to stand up to business folks when the business folks give unreasonable timelines or demands.

    keep track of each step of the project. A good project manager knows that person A from design is going to be late, and therefore, geek B needs to know that work won’t be coming until later, and then communicates the slip to the business so they can readjust their schedule.

    do their best to avoid being the bearer of bad news, and conveniently ignore slips by other groups while still expecting the geeks to make up for everyone else by completing their work in less time than they agreed to.

    are friendly and develop good working relationships with each party. This goes a long way to making everyone do their best work. When a requirement becomes a request instead of a demand, everyone is more likely to accomodate it.

    are antagonistic and think the best way to get people to do their job is to constantly nag them, stand over their shoulder, speak for them in meetings and set schedules without consultation. They’re my favorites.

    There are more, I’m sure, but this is all I can come up with at the moment.

  • Insider Info

    Yesterday, people on AOL searched for “yo mama jokes” as many times as they searched for “notre dame” and “cysts“.

  • Into the fray

    I have a big meeting in fifteen minutes where I have to defend a whole platform against a roomful of people. I doubt the folks who write AOLserver will even show up, which will leave me all alone to defend it. I have papers and figures and drawings, and it probably won’t matter. They’ll make the switch and then they’ll realize that they can’t do everything they used to, and feel bad for not listening to me. I would much rather they listen to me now than realize their mistake later when it’s too late to turn back.

    If I have time today, I’m going to write an essay about national cultures, but don’t hold your breath for it. I’m still sick, and work is really busy. I went to bed at 9:30 last night and barely woke up when the alarm went off.

  • It’s crack, but it could be so much more addictive

    I’m addicted to Civ3. I was addicted to Civ2 and still played it regularly until Civ3 came out. The game is addictive, and since I’ve been sick and alone in the house, I’ve played a lot. Civ3 is a great update of the previous game, but it’s missing a lot of the stuff that made playing more convenient in Civ2. I’ve come up with a little list of things I’d love to see them add back to the new game.

    • The Go to city command for units. It’s a pain in the butt to have to drag each little unit individually to a city.

    • The “Upgrade All Units” that Leonardo’s Workshop used to give you. If you’ve got cash in the game, there’s no real reason to build it.

    • Build Railroad doesn’t work with the R key like it’s supposed to.

    • I haven’t played enough to have tried putting the barbarians past the second level, but they never show up. I have yet to see one.

    • Ou est le cheat menu?

    There are also some things that other strategy games do that would make the game a lot better and more than a facelift.

    • In Command and Conquer and Age of Empires, granted they’re both real-time strategy instead of turned based, you can group units and move them together. Why oh why can’t we do that in Civ3? Towards the end of a militaristic game when you’ve got hundreds of units, moving them all individually is a waste of time that doesn’t improve the game experience.

    • Better special units. I’ve only played the Americans and Zulu’s so far, but the Impi is a horrible unit. Once you’ve got Spearmen, he’s useless, other than looking kind of cool.

    • Swordsman should be upgradable to Musketmen, or at least Infantry. I never build them now because you can’t upgrade them at all until Mechanized Infantry (which only take 1200 years)

    • I’m not sure anyone else does this, but how about a different leader over the years? No one’s emperor lives for three thousand years, although I guess in the game, the player is the leader. It would be interesting though to see Abe get older, and then be replaced by Kennedy, then maybe Reagan.

    I was thinking about this yesterday on the way home from work, through my swollen face, that the diplomacy in the game is just a little more complex than in Civ2. Trading and making deals through the diplomatic screen is great. But, I’d love to see more nuance. I know it would be incredibly complex, and be a game within itself, but wouldn’t it be cool if you could nurture your advisors, make them act like real people, put them in charge of trade altogether, military operations, etc. That way, you could concentrate on the parts of the game that interest you without completely dropping the others. Also, it would be great if there were a system of back channels. Clandestine meetings with other countries’ advisors instead of going to the leader, with each nationality getting a different set of unique advisors (for example, the Greeks would have a killer Cultural advisor, the Americans would have great military and trade, the Romans, a great military advisor). Also, it would be cool if you could recruit away the Greek’s cultural advisor to improve your civilization’s culture. Yeah, that’s complex, but would add a new dimension to the game that I think it’s missing. Now, it’s “Hey, want some stuff?”, “Want a map?”, “Die, scum!” and that’s about it. There’s no real way to intimate sabre-rattling without sitting a bunch of naval units inside their borders until they declare war on you (cuz I don’t like to throw the first punch).

    I’m not saying Civ3 isn’t a great game. It’s an excellent turn-based strategy game. It’s held up well over the years, and this installment adds some nice wrinkles. I just think it would be nice if they didn’t remove some of the nice utility features of Civ2, and added some more complexities.

  • It’s a strange day. I’ve

    It’s a strange day. I’ve been reading about the demise of a company I once respected, and a love story I’ve watched from afar (so far that I’ve only exchanged e-mails, but wow, it’s been a hell of a story – one I hope they never make into a movie because I don’t think anyone could get it right but the participants).