On the Revolution Systems blog, the author has a good, common sense approach to making source code more programmer friendly: use better names and be consistent.
Though this is kind of like a “duh” moment, it’s amazing how frequently these practices are ignored. I’ve looked at a lot of source code that was simply horrible because the variable names were concise to the point of being worthless; for example, $tobj could be “temp object”, “time object”, or even “total observational bone joint”. You get the idea.
Alternatively, I’ve also seen code that had an object named something like “Group.classObject.Frame.Widget1.VariableTimer.CountdownToNextEvent”. Even using auto tools like in Visual Studio, it’s still a pain in the butt to write out a name like that every time.
Consistency is another big item. There always seems to be a push to standardize things, especially at my current shop. But even with all the SOPs and policies, I still haven’t actually seen anything discussing variable naming conventions, commenting standards, or even how source code should be put into the code repository. I think part of this is because we rely on the configuration manager to handle things like these; just give the code to the CM and he’ll take care of the logistics.
But what happens when he’s not around and you have to do it yourself? How do you train new people? What about audits or showing senior management how work is accomplished? Standards are made for a reason. They make life easier for everyone.
Found via Slashdot, some professors at NYU have written an article in a software engineering journal about the hazards of teaching students Java as their first programming language. It’s very enlightening, especially when they talk about the advantages other languages have to offer for problem solving. They also talk about how CS, as a discipline, is declining since students aren’t learning the fundamentals needed to actually solve problems; all they know how to do is fit the right part into the project and hope it works. When it doesn’t, they are at a loss to deal with it.
Here’s a quote from the article:
Because of its popularity in the context of Web applications and the ease with which beginners can produce graphical programs, Java has become the most widely used language in introductory programming courses. We consider this to be a misguided attempt to make programming more fun, perhaps in reaction to the drop in CS enrollments that followed the dot-com bust. What we observed at New York University is that the Java programming courses did not prepare our students for the first course in systems, much less for more advanced ones. Students found it hard to write programs that did not have a graphic interface, had no feeling for the relationship between the source program and what the hardware would actually do, and (most damaging) did not understand the semantics of pointers at all, which made the use of C in systems programming very challenging.
It is worth noting that the authors do have an interest in the Ada programming language, being part of AdaCore Inc. Obviously they make a stand for learning Ada, so there is some bias to be expected. However, some of the ideas coincide with what I’ve learned over the years, especially having taken Java as my first programming course.
Personally, I think I learned more when I taught myself Python. It was the first time I actually understood OOP even though I “learned” it through Java and C++. I guess ultimately it’s whatever continued learning you do that makes you better. School is designed to make you “well rounded” and expose you to different ideas. Learning what’s needed to actually excel in your chosen field is left up to you.
I found this site a while back but had forgotten about it. However, since I just bought new computers I was in the market for more blank DVDs but I couldn’t remember the difference between DVD-R and DVD+R.
How To Choose CD/DVD Archival Media is a very informative blog article. It gives the history of both CD and DVD technology, the differences between the various flavors of the media available, and which format you should choose for archival purposes. The author also has a recent update listing his choices for CD/DVD burners.
In a nutshell, the author recommends Taiyo Yuden media, which apparently is difficult to find outside of Japan; however, it’s the most reliable of all media on the market. Also, don’t spend the extra money on gold CD-Rs because they don’t give you much benefit for the price. Oh, if you’re buying blank DVDs, get DVD+R if your computer will handle it; they are better quality and generally perform better.
On Slashdot today there was an article from Computer World entitled 10 Things We Hate About Laptops. As I was reading it, I couldn’t believe some of the things being said. I’ve used laptops for a while, though I’ve never had to support them for other people. However, I found much of what was said to either be fallacious or misleading. > more <
Found an article this morning discussing 10 dirty secrets of the IT industry. It’s quite interesting and enlightening. Not to mention pretty truthful, at least in my experience. The comments are also interesting.
If you work in IT or are planning on it, I recommend taking a read. One of my favorites (mainly because I see it far too much in the military/government sector):
3.) Veteran IT professionals are often the biggest roadblock to implementing new technologies
A lot of companies could implement more cutting edge stuff than they do. There are plenty of times when upgrading or replacing software or infrastructure can potentially save money and/or increase productivity and profitability. However, it’s often the case that one of the largest roadblocks to migrating to new technologies is not budget constraints or management objections; it’s the veteran techies in the IT department. Once they have something up and running, they are reluctant to change it. This can be a good thing because their jobs depend on keeping the infrastructure stable, but they also use that as an excuse to not spend the time to learn new things or stretch themselves in new directions. They get lazy, complacent, and self-satisfied.
For what it’s worth, here’s a picture of Ubuntu Linux running under VMWare Fusion on my new Macbook Pro. You can’t really see the lighted keyboard very well because the backlight is white.
Linux on Mac
Obviously this makes it very easy when developing software since I can test it on any necessary operating system. An advantage of using VMWare for the virtual machine is that VMWare provides several dozen “pre-built” images that I can download and install, giving me access to components I wouldn’t normally be able to have.
Plus, I can now play games in Windows without having a separate machine and I don’t have to mess with Fink or DarwinPorts to have Linux programs running under OS X.