Skip to main content

Posts

Showing posts from May, 2009

Mythical Man Month - Recap

Even after almost 35 years in print, and with such sweeping changes in the software industry, I still find the lessons and observations in this book relevant in today's development environment. The Man-Month is truly mythical; software projects work best with a very few, sharp developers. When a project becomes late, throwing more people at it makes it later, and communication/synchronization between parties is key. Touching on such topics as unit testing, regression testing, project hierarchies, and niche languages, MM-M predicted long in advance very common, important practices found in today's projects. Brooks even touches on his excitement of object-oriented programming, his skepticism of the benefits of artificial intelligence, and the potential benefits of shrink-wrapped software. Even though they were presented in 1975, these are all correct assertions in 2009.

Being the 20th anniversary edition, Brooks adds new chapters to reflect on the thoughts of the first editi…

Fun with MySQL + PHP

Lately, I've been getting a lot of requests to build websites driven by lots of data, so I've been reading heavily into MySQL and PHP. I've been relying "Beginning PHP and MySQL: From Novice to Professional, Third Edition" by W. Jason Gilmore. I was concerned with his use of connecting to MySQL with a plaintext user name and password, so I went through a few tutorials online:

[hvassing.com]

[studiolounge.net]

and the SQL reference manual: [dev.mysql.com]

Of course, they did the same thing. I'm working on trying to implement an SSL solution to login, but unfortunately I think it'll require an X.509 certificate.

Nagios

I installed Nagios at home and configured a Windows client with an agent. So far, it looks promising; I can look at availability, CPU+Memory Usage, and other useful stats. Although the dashboard is really ugly and there is a 3D View link in the menu to a VRML MIME object (which, I understand, nobody supports these days), I will still try some additional tweaks to see what else I can do. Maybe I can upload some screen shots of a better looking dashboard!

[nagios.org]

I love LAMP

A close colleague of mine recently spoke of his desire to create a website driven with a database. I told him he wanted LAMP:
Linux
Apache
MySQL
PHP

I have Ubuntu 8.04 installed at home, so I referred to this guide:
[ubuntu.com]

There are others as well:
[lamphowto.com]
[redhat.com]

Now, about integrating the code for the website into version control and a bug tracker...

Rehashing C++ With Smart Pointers

Though I have seldom cared about using smart pointers these past three years (primarily because I work mostly with C, which can't support truly encapsulating smart pointers), I have tried to rehash my knowledge with Andrei Alexandrescu's tutorial here:[informit.com]

I am absolutely astounded by the attention to detail in this article for something so simple as a single class with overloaded operators. C++ is a language that is not for the faint at heart, so this sort of article helps to navigate through the memory management limitations of C++.

I should consider buying Andrei's book with the Eckel book to go with my Stroustroup and Musser books! Where's my amazon wish list...

Programming Language Trends

Just found this link to tiobe.com programming languages, their use, and their trends.

I guess the metrics are gathered using popular internet search engines (Google, Yahoo, MSN).

Java taking the #1 spot is probably attributed to the explosion of web services over the last few years, coupled with its built-in cross platform UI and other APIs. C is at #2 probably because of the Linux kernel, popularity in embedded software, and the *nix utilities and ubiquity of open source projects. At #3 is C++, which with C# and VB make up the languages made popular by Microsoft in Visual Studio.

All the others can pretty much be isolated to either niche environments (MATLAB, Objective C), the web (Javascript, Ruby) or as utilities (Perl, BASH, Python), so they won't have as much exposure.

Goals for next three years

I have decided that if I can accomplish one of the following things within the next three years, I have done something special:
- Author a whitepaper
- Start an open-source project with other contributors
- Speak at a (somewhat important) conference on software

I plan to accomplish this by doing a few different things:
- Read and write a lot of code!
- Read and study online and printed software novels, particularly the Head-First, Fowler, or O'Reilly series of materials
- Subscribe and receive emails of tech articles (I already subscribe to TechRepublic)
- Active use of Twitter and Linkedin
- Making use of software community message boards

Of course, additional suggestions/comments are all welcome.

Mythical Man Month

I'm an avid but slow reader, so as a reward for finally getting through the heavy "Guns, Germs, and Steel" by Jared Diamond on Monday night, I am rewarding myself by picking up "The Mythical Man-Month" by Fred Brooks. I guess this is the quintessential software project management book, but as a developer I still am concerned with the software process because I like to be cognizant of the time constraints of my work.

I probably bought this book about four years ago, so I regret not reading it through the first time due to its heavy material. I'm a little more patient now, so maybe this time around it will be easier.

Other geeky stuff I've read:
"Just for Fun" - Linux Torvalds
"Hacker Culture" - Douglas Thomas
"The Art of Unix Programming" - Eric Raymond
"Domain Driven Design" - Eric Evans

Experiments with Valgrind

Lately, I have been experimenting with using Valgrind in my OPNET Discrete Event Simulations. So far, I've noticed that every time Valgrind runs the runsim executable, the models are recompiled, and I have been using full-stack IP models, so I need to start smaller.