Skip to main content


Showing posts from 2004

Packaging is insane

I like drinking V8 Splash. I like watching DVDs. I like using my shaver. I like listening to music on CDs. I like using Windows XP. What do these things all have in common? They come in the world's most insanely difficult-to-open packaging. It is like some sadistical package designer decided to make everyone's life more difficult just to thwart a few thieves by closing off all access to opening the item. The end result is that this Christmas season resulted in a lot of personal human damage because people pulled a muscle or sliced a finger when using a knife on the extremely dense plastic trying to get at what was inside. I'm beginning to wonder if the average person can't open the packaging, the product inside might not be worth it. The same goes for software development. While Microsoft can get away with insane plastic protectors around a single disk, the rest of the development world can't. Don't know what I'm talking about? Walk into Bes

Merry Christmas

Apparently my mom (erm, "Santa Claus") has determined that I should get black socks. Unfortunately, my choice in socks is a little bizarre. See, I am your traditional "geek" and therefore wear equivalently odd clothing. Okay, so the black socks are to look all professional and what-not and that is fine, but let's step outside in these black socks for about two seconds. ... Brr. That was cold (sub-zero temperatures here). And guess what? My feet froze. Now I've got to thaw out. And in the meantime, I had to endure the uncomfortable nature of these socks. So, what is my definition of a good pair of black socks? First off, they have to be comfortable. I can't find a single pair of black socks on eBay that sound comfortable. I like 100% cotton in my socks. I see pairs with spandex and nylon and rayon and all sorts of other uncomfortable materials. Comfort is also defined by how warm I stay with them on. Since I have almost no body fat, I chill easil

Unhappy penguin

There is a poll going on at This poll is completely unnecessary. Andre Lamothe wrote a book eons ago on how to write a game. Apparently people don't pay attention to the people who have made successful games to learn how successful games are created. That said, you need marketing and a publisher. Not just a good game. About half the work involved is marketing and distribution of the product. The other half is the development of the actual game: Storyline, graphics, genre, the little extras (or, in the case of a game like FF7, NeverWinter Nights, other RPG goes here, little side quests - although in FF7, Emerald Weapon was insanely difficult to beat), the look-and-feel of the default controls, music, audible and ambient sounds, enemies, proper collision detection, the menu system (never underestimate the importance of a good menu system), etc. all work together to make a unified game. Then, once the game is made, beta tested, and ready for gold, i

Time, money, people...

For those in development, there is the pervading sense that you have to perform really well to get ahead and to do that requires very little sleep and lots of time in the office. Traditionally, the game industry has been this way, but more and more software development firms are doing their detriment. It is a well-known fact that very few developers last more than 5 years in the game development industry. The single most common cause for a developer to leave a game development firm is that they are spent, worn out, burned out (whichever term you are familiar with). The problem is NOT tight schedules. The problem is that developers everywhere seem to think they have no control over the schedule. However, some developers have it figured out: Break the schedule into three categories and allow the person who wants the job done to define two of them. The categories are time, money, and people. Every project is measurable in the amount of time it will take, how much mo

Stay on task

A good way to stay on task is to set a task list. For instance, if you are working on two simultaneous projects (generally a bad idea unless one is a brand new project), splitting your day into two parts is the best way to go. The first half of the day (before lunch) is spent on the priority project and the second half of the day is spent on the lower priority project. There is a two-fold reason for this: 1) People are better able to think in the morning regardless if they think they don't. Well, more real work tends to get done in the morning. After lunch, the food settles and drowsiness settles in for the rest of the day. I know people who take a late lunch for this very reason. 2) You want to look professional by doing higher priority items first. It makes you seem like you have it together. Most people really have no clue what they are doing. I tend to do the odds-and-ends tasks that build up to the main high-priority item. When people review my work they wond

Dishonest business...

You know the "Yellow Pages"? I am sorely tempted to report them to the Better Business Bureau (the BBB) for having dishonest business practices. I just got a call from their obviously Indian outsourced division and got some of the slickest advertising thrown at me. If I had not been paying attention to what I was doing and it had been at 8 a.m. instead of 10 a.m., I would have likely stepped into some very difficult to opt-out of program. As it was, I was deeply in thought about how to optimize cubic bezier curves when the phone rang. Basically, the conversation went like this: Me (groggily - I don't do mornings): Hello? Woman: Hello, I am......and I am verifying your current Yellow Pages listing. Me: Okay. Woman: You are..., your business is..., your business location is... Me: Yes, yes, yes. Woman: Your free listing in the Yellow Pages has been updated with the latest information and you are getting a free 14 day advertisement on our website. Pleas

Setting a goal

One of the first things to do in software development is to set a goal. Simply saying, "I want to learn C/C++/VB/whatever" is not good enough. You will learn the syntax and the language, sure, but you will feel like you have learned nothing. Instead, what you want to say is, "I want to advance my skills to build an application that I can use from my computer to blog with without having to go to Blogger to do so." Assuming you have knowledge of how to go about writing such a program, even if you do not fully understand the syntax of the language you use, you will succeed in making the program and learn new things along the way. Now, however, let us say that you have completed said application and want to sell it. In order to sell the application, you need to simply say more than, "I want to sell this really amazing application." You are likely to enter into what I call "overhype mode" where you overhype the product beyond what it can r


I have traditionally avoided floating point arithmetic because it is a royal pain to work with. Those who have know what I am talking about. What is much more frustrating is if users see floating-point rounding as some sort of fatal error. Take, for instance, 6.934376572E-150. Programmers and people who understand the limitations of floating-point know that a number like that is simply 0. To an accountant or banker or a regular PC user, that number has an E in it, so it must be an error. What could I possibly have done wrong this time? Making sure your users do not see floating point errors is a huge issue and difficult to solve. One user will want two digits of precision all the time, others won't care if zeroes are chopped off, and still others want to have the option to see the floating-point errors. Given that most users (80/20 rule of thumb) will want zeroes chopped off, a simple bit of code in C/C++ to convert a floating-point number to a truncated floating-point n


On one of the mass mailing lists that I moderate (people subscribe to them - not SPAM), I constantly see people asking about whether something like memset() is faster than assigning variables the values directly. These are trivial optimizations and usually someone says so. Given that today's computers are averaging around 2GHz in the user realm, does is not seem odd that such discussions are still going on? What is typically happening is that the person read somewhere that optimizations for performance are really important. The person ends up trying to optimize code that simply doesn't need optimization or they are trying to optimize the code because they used the wrong algorithm for the given situation. The only traditional bottleneck where optimizing code to extremes was where the algorithm was the correct one to use and just happened to be performance intensive. This happened particularly when developing games. Of course, if you were developing games, you were in a


The latest StrongBad e-mail (#117) references #173. Feel free to click here: To get them to come up with one of those nifty pages like this: Hmm...fresh blueberry pancakes sound good right now. No syrup or butter. Just the pancake and a good tall glass of milk.

Look mom! I can be a terrorist!

Probably the most disturbing tiny bit of SPAM to hit my in-box that I have seen consists of some spammer advertising weapons in e-mail. Hmm...let's see...I've got a few spare bucks or so and I have nothing better to do with my life than go become a professional terrorist. (Hopefully you caught the oxymoron in that last sentence). Really. These people have to be dead to themselves to realize that blowing themselves and a bunch of other people up is a complete waste of everyone's time and not an artform. We could all be writing programs that benefit society or something like that instead. I mean, I have a task list of at least 500 things that would keep every terrorist occupied for the next couple centuries. They would not have time to do anything else but write computer code. Besides, coding is fun. Programmers know this to be true. There are very few thrills on earth that get the adrenaline going than a late-night debugging session (roller coasters come close). Nothin

Brain Jam...

The person Google just hired is not a real programmer and they missed the one who was. Oops. Why do I say this? Programmers who code really fast generally lose track of what they are doing. When CubicleSoft writes code, the code has already been our heads with ideas on paper that fire off the memories of the code. Real programmers can visualize code coming together as someone rattles off requirements. Not just big generalized blocks of code but the entire thing line-by-line. They wake up at crazy hours of the morning with the realization that they forgot one important line of code and can't sleep until they fix it. When a company gets their hands on a real programmer, everyone knows it. Real programmers can determine exactly how long something will take to develop to the hour and then produce it on time generally with only a couple bugs that are worked out in the QA process. Product managers love these type of people. Or they sh

Hmm...I wonder...

I just found out that the republicans now have a majority in both the house and senate and governor races. This is particularly unusual and actually is a HUGE plus for software developers. In fact, this is the best possible scenario that could have ever been created. A decidedly complete republican majority has, more or less, meant better economics in the short term. Now, while the President has no effect on the economy, the government can play a small role in improving it for a short time (a couple years). Here is what I mean by this: Microsoft Windows has a window of opportunity for Longhorn that they can't afford to pass up. Even if it means releasing it early in late 2005. I have consistently predicted that Linux could take on Longhorn and take out Microsoft if the developers bothered to work on a little thing called usability testing. However, my predictions depend on an early 2006 official release and mid-2005 beta for Windows developers. Assuming pretty de

Finally works...

Took forever, but just for the curious, my new DLL stuff finally works. Pretty cool actually, but since it is proprietary, I can't share exactly how it works. Just know this - it involves lots of macros and plenty of pre-compiler abuse and works great under both Borland C++ Builder and MSVC++ .NET 2003. I'm so proud I want to hug myself. But I won't because that would look weird.

"DLL Hell"

Today I experienced what every Windows programmer experiences when interacting with DLLs - only on a much grander scale. What I am talking about is "DLL Hell." The results of these efforts caused me to have 23 programs open along with 50 unique files. Over the past week I have been working on huge modifications to some core library code. This code is fairly proprietary, but basically what I was striving for is perhaps the most unique approach to interacting with DLLs. As many people know, I already live and thrive in macro hell. For instance, my most evil macro to date is basically unreadable and 335 characters long...and on one line. Anyway, as I said, I have come up with a really creative and unique way to load in a DLL. The way this works is to simulate delay-loading with the option of not running into the issue of crashing if it fails to load for whatever reason. This feature is actually useful where plug-ins are concerned. The other issue is that I needed application

Well, it sort of works...

I'm not referring to code here. I am referring instead to the Packet8 IP phone I got to try out. I can hear anyone who calls the number crystal clear - well, not quite perfectly clear, but when you factor in that it is a "long-distance" call (all calls from it are long-distance, but long-distance calling is free - international calls are really cheap too), the quality is pretty average. On the other end, however, it really depends on how much upstream bandwidth you have. If people are hitting your web server really hard, for instance, then you leave Packet8 with less bandwidth to work with and therefore some choppiness will happen. This makes me sound like you are on a cell phone or something to the other person. Or worse, like one of those outsourced Indian call centers. At least I don't have a crazy non-understandable-to-English-speaking-people accent. When the upstream connection isn't being used much, it basically sounds just like a regular phone l

The Internet - for free...

Free is generally not something people believe equates to "high-quality." Microsoft charges a premium for its OS mostly because there is little to no competition and they can market basically anything to anyone. They do a good job of that. People can complain about it, but I don't see them doing anything to compete with Microsoft, so until people stop complaining and start doing something about it, Windows will continue to dominate the market. I wrote a week ago on the minimal amount of work that has to be done in the Linux realm to make it succeed. Anyway, I have recently figured out why wireless Internet access has not really kicked off. The problem is that people are relying too heavily on the government to put wireless in major cities. I have a simple solution to the whole problem. Whenever someone buys a wireless router, have two ports - one that is able to be locked down and secured - the other should be open on port 80 only with upstream traffic headed to


Really. I honestly can't imagine what would possess a person to get a cell phone. I just finished looking at a cell phone for people to reach CubicleSoft and can't justify the cost. See, the cell phone is "free," but what you get suckered into is a 2 year agreement to sell your soul. Or at least your kidneys. Okay, now let me make some sense of that paragraph. Basically, I need a way for someone to reach me whenever I turn the doggone thing on. I am not a cell phone fan. In fact, I find them highly annoying. So, naturally, I place little value on something I can pretty much do without. The only reason I would ever use one is if it was cheaper than a land line. In this case, the price I'm looking for is $10 to $15 per month. The first celluar company that offers a plan in this range with at least 600 minutes will own the industry overnight. Everyone else will continue charging $39.95 (just round it to $40 already - it makes check writing a lot simple

Clustered computing

Read this: I have my own opinions about privacy, but frankly, there is such a thing as too much privacy. People inherently want to be famous - they have dreams of being movie stars and splashed across pages of magazines and newspapers. They want their 15 minutes of The problem with fame and fortune is that you have the media up your nose with cameras. Literally. Someone will take a picture of famous-people's nose hair if they think they can get $15 for the photo. Those famous people are probably embarrassed as I am embarrassed for them as nose hair gets shown on the cover of every magazine. Society couldn't stoop to new lows of sleaze? Forget I ever asked. However, in the digital world, what people don't realize is that there is power waiting to be tapped and Google is trying to preempt IBM in this regard. (Microsoft is clueless about this and I wouldn't want them trying to me


Read this and then come back here for what actually happened: Everyone keeps conjecturing this and that about outsourcing and why companies are moving overseas. Well, technically they are not moving, they are just shifting business around to reduce the bottom-line costs. There are a number of reasons businesses may claim they are moving overseas, but there is only one underlying reason: No innovation. Businesses here in states are not innovating. They are not inventing. They are not being creative. What happens when this happens? Think about it for a moment. If you guessed that in order to stay in business they have to focus on reducing bottom-line costs, you have guessed correctly. So, really outsourcing is just one symptom of a huge problem here in the U.S. For lack of a better term, I am going to blatantly call every American lazy. You are all lazy. And fat. So there.

The light is on, but nobody seems to be home.

I recently spoke to someone who works for an energy company in the Lansing, MI area. This person had a very interesting perspective on the software the company uses and it boils down to the whole "buy versus build" debate that seems to be never ending. My take on the whole debate is, "If it already exists and is not going to break the piggy bank, buy." I will give my reasons in a moment. The energy company that I just mentioned has one of the most head-scratching policies that I have ever heard of. It took me almost 5 hours of pondering and a 2 hour nap to figure out what logical thinking there was behind this. Basically, the energy company likes to build their own software if they have the resources to do so. However, when they buy other software packages they request only portions of those packages. This really frustrates the employees who are in the field trying to use the partial package and consistently having it crash. On the surface, my first tho

Microsoft is going to die. Riiight.

Heh. Read this and then come running back here to read what I have to say about the professors who write this sort of stuff: First off, Microsoft is here to stay. Like IBM has re-invented itself as a consulting firm, Microsoft has enough assets to re-invent the company 20 times over and still not go bankrupt and could enter any industry they choose to own. Linuxheads can rant and rave about how great Linux is (see my post yesterday), but that doesn't make the 90% market share suddenly go away - and even if it did go away overnight, Microsoft still has that money. Anyone who says Microsoft is going to die in the next two years is mistaken. Second, educational institutions are generally big, whiny, mooching organizations that throw their weight around just because the general notion is that the budgets there are too small to buy the software. Wrong. Those organizations have millions pouring in every year and they pour a lot of it int

In other news...

Completely unrelated to software development, it was pointed out to me that I bought a completely sealed, and yet very empty Kool-Aid packet. I don't drink the stuff personally, but when I buy it, I usually buy the 8 for $2 or whatever the sale price is - grab a big handful and assume it will taste fine. Anyway, when I go to the store to buy packaged items, I generally assume that the packaged item actually contains the appropriate item or a poisoned item but have never really thought about the possibility of no item. I mean, the possibility is there, but why would anyone bother shipping empty packaging? If you are concerned about your Kool-Aid, feel free to call 1-800-367-9225 and let Kraft know about it. For me, it would cost me and them more trouble than it is worth. It was worth a quarter. If I had paid $5 (US), then I might start getting annoyed. Okay, so I lied. There are a few crystals of the stuff in there - I can hear it, but I'll let someone else open this un

Tips for Software Developers

Okay, while I'm not usually that angsty, the whole Linux vs. Windows thing does get me riled up easily. Anyway, I figured I should balance it out with a much more calm and serene post. So, you are a software developer? Or you think you are anyway. Software developers think they know everything. That is good in some ways, highly annoying in others. However, lately I have noticed that many foreign programmers will come into mailing lists that I moderate (e.g. ) and they will say, "I have a doubt" as the subject line. Then they will doubt again in the body. Several times. It is okay to have the occassional doubt, but doubting every other sentence is rediculous...especially where people post about code they could have run through a compiler asking about their doubts compiling it. If we lived back in 1960-something where compiling a program took hours or a day and had to be scheduled I could understand people doubting a compiler

The way to start right.

Big deal if this is my first entry in the blog. You know how many entries there are out there on the Internet where everyone is like, "ooh! My first blog entrie thingie." They can't even spell "entry" correctly. So, I'm going to start this blog off on the right foot. I'm going to do what I do best - chit chat about software. In fact, I am going to be so bold as to NOT advertise the company I work for ( CubicleSoft ), but rather take the most daring topic public. Yup, that's right. I am going to cover the flame war called Linux versus Windows. However, I am going to do it so well that this hosted Blog will probably be asked kindly by the folks at to shut it down because of being slashdotted. Linux versus Windows. The flame war of flame wars. The discussion of discussions. People have argued and pulled and fought and said both sides are going to die and neither have. Before anyone says anything, I am a product recommender.