Skip to main content

Posts

This is going to take a long time...

I am in the process of moving roughly 1.5 million lines of C code to C++ for several very specific reasons I can't mention here - not yet anyway. I'm off e-mail, web surfing, IM, blogging, and general reality for the next 3-4 weeks. I expect that by the time I get back, I will have my fourth case of Carpal Tunnel Syndrome (CTS) in the past three years. Wish me luck and, uh, I hope it doesn't take much longer than that. I have already had enough setbacks, but this one could knock me out for a while.

Time for an update

What's hot? What's not? Below is my list of recommended companies to do business with and those whom you should avoid like the plague. As a developer, you need computer equipment and software that simply works. I am always looking out for newer and more interesting technologies to add to my core recommended list. If you are a hardcore gamer, these recommendations are not for you. If you are searching for a good PC that won't break down, these can be for you but may be slightly out of your budget. Recommended PC and/or hardware manufacturers: Dell. I have yet to have a problem with Dell. Good solid hardware, but not the best for gaming. Spending less than $500 on a PC will get you in trouble, though (you get what you pay for). IBM. Good hardware. Unfortunately, they shut down their PC division, so parts will be hard to find. Expensive. Micron. Their memory chips are still top notch for those who need an upgrade to existing hardware. ATI. NV...

Wow...in the "I have just been positively wowed" sense.

Usually when I say, "wow," I refer to the negative sense of the word. This is most definitely a positive "wow." Apple has recently slashed prices on their hardware. About a year ago I got a new PC, but at the same time I was seriously considering a Mac. All developers, look at this: http://www.apple.com/macmini/ The Mac mini is visually impressive, but that isn't what counts. I have been saying for a long time that people won't move to Linux because it is unusable. Macintosh/Apple/whatever their name is today (such is the sad result of mergers - you can't figure out a company's name any more), has their sticky fingers all over making a usable OS. I would recommend Mac over Linux any day. I could care less about proprietary hardware - in fact, as a developer, it probably makes my life easier. For developers, I have been eyeing the Mac for a really long time. It has one thing that every developer needs: Three OSes rolled into one ...

I have returned...

Eons ago, in a day before my time, Douglas Macarthur once said that he would return. When he returned and set foot on one of the islands in the Philippines, he said that famous phrase, "I have returned." (Unfortunately for him, Ahnold Schwarzenegger's line "I'll be back" seems to have superceded "I shall return" in more recent times - I would wager that the difference makes for a good history test question). In roughly the same way that Macarthur returned, Microsoft today dropped a bombshell on the anti-virus companies. In my automatic updates in-box resides something called the "Malicious Software Removal Tool," which will get installed before the next reboot in roughly 23 days from now. Microsoft is wisely being very careful as they cautiously step on anti-virus vendor's toes not even daring to call it an anti-virus tool. Most people will not remember back to the Windows 3.x days as Microsoft was busy trying to define wh...

An interesting article on blogs

http://www.developershed.com/plugin/PIM_200501.pdf See the last page of that PDF. The author discusses an important topic about bloggers. Basically, bloggers can control the results that come back from search engines. For those who have no idea what I am talking about, I am referring to SEO. No, this isn't someone who has decided to shorten their long name to three letters, but rather stands for Search Engine Optimization. Most programmers are aware of things like Googlebombs and sites like that and generally think there isn't much to search engine optimization. Technically, there isn't. You want people to link to your site and they want you to link to theirs. A never ending battle of trying to get high quality and high quantity links to a website - and get spidered properly. The trick comes in knowing how each search engine algorithm works and what to do if it changes. Some people try underhanded methods to raise rankings. A Googlebomb, for instance, wil...

Standard additions...

Okay, while I am not on the C/C++ committees, it has come to my attention over the more recent months and years that the core languages are simply not capable of handling modern devices - particularly dealing with PCs. If you search the archives of several of the many lists I subscribe to, you will frequently find programmers asking about how to use ANSI C/C++ to do: 1) Single keypress keyboard input. 2) Drawing graphics on the screen. 3) Printing to a printer. 4) Accessing USB devices (e.g. a scanner). 5) Responding to mouse movement. (etc.) Every single time, without fail, someone replies saying that these are not standard. I have, on occassion, jokingly made the suggestion that C was designed to output to a dot matrix or line printer. So, all of these discussions have me thinking about what to do. The result of all this thinking is that, because C is incapable of these things, people have to resort to using OS-level APIs. One of the major goals of C/C++ was to make it abl...

The English language.

"i am having TreeCtrl which have check box can any body tell me how to get check box click event or what iwan to do is to select the child notes when theparent node is selected??? can any oyd help me????????????" The English language is a rich language. Please do not misuse it. As programmers who participate in the art of writing code (it is an art) and the science of writing code (it is a science) know how important it is to have detailed and complete comments. Their comments in programming forums should be of equal value. I found the above paragraph on a random forum. I'm sure Google will turn up where it came from, but realize that the topic of this is not about where the source is, but to use it as a mere example of the broad problem that plagues programmers. Programmers simply don't know how to write in English. If they can't write good English, they will be lousy commenters and therefore lousy programmers - no matter how good their coding skills are...

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 http://www.happypenguin.org/ 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 this...to 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...

Floating-point

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...

Optimizations

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 ...

Hmm...

The latest StrongBad e-mail (#117) references #173. Feel free to click here: http://www.homestarrunner.com/sbemail173.html To get them to come up with one of those nifty pages like this: http://www.homestarrunner.com/sbemail100.html 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. http://www.google.com/codejam/ 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 written...in 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...