Into the Void


The Art of Software Design

Posted in Tech by Scott Baldwin on the April 2nd, 2006

I’ve written many programs in many different languages, from PHP/MySQL Web applications to multi-threaded servers in C++, but one thing never changed: the importance of good design.  Every experienced developer knows how imperative it is to have a clean application framework.  Creating a clean, scalable framework however can be a challenging task.  Fortunately, there exists a near-endless arsenal of languages, toolkits, APIs, and IDEs, as well as countless design patterns and methodologies to aid us in designing and implementing quality software.

I think truly recognizing the importance of good design can only happen through real-world programming experience.  Most programming courses in college will briefly mention design paradigms (such as Object Orientation), and then move on to syntax, APIs, algorithms, etc.  To make matters worse, the programming assignments (specifications) are normally so trivial and laid-out that it frees students from design challenges that exist in developing real-world applications.  Therefore, students must take the initiative to develop real-world applications outside of class.  By doing so, I have learned a lot about the importance of good design through many lessons and mistakes.  I have listed some important ways to achieve better program design and results below.

1) If you’re copying and pasting your own code, then stop!  Creating reusable software and eliminating redundancy is crucial to good design.  If you can extract any functionality from something, then do it (you can always declare it inline if you’re worried about performance).  By duplicating the code, you make it a nightmare to maintain.  Eventually, you’ll get tired of updating 10 sections of code just to change one thing, knowing that if you miss one it will cause run-time anomalies!

2) For big applications, use an Object Oriented Programming Language such as C++ or Java.  Big code bases will become extremely difficult to manage unless you tame them with the power of OOP.  The four frequently cited advantages of using an OOP language are inheritance, abstraction, encapsulation, and polymorphism.  All four of these capabilities are tremendously beneficial!  Inheritance makes it possible to create a hierarchy of functionality that cascades from the top to the bottom (direction depends on how you look at it), useful for creating reusable software components.  Abstraction lets you treat complex things as simpler things through modeling.  Encapsulation hides implementation details that would otherwise be distracting.  Last but not least, polymorphism makes dynamic programming simple through the magic of virtual methods.  These capabilities are not just great in theory… you will learn to appreciate them when you have to develop an application with 50,000 lines of code or more.

3) Take full advantage of your environment’s debugger!  It seems like many students do not understand basic debugging concepts such as memory watching, stack inspection, breakpoins, and backtracing.  These tools are invaluable so use them!… it’s well worth the initial learning curve!

4) Read the documentation!  For whatever language you choose, learn the APIs, frameworks, toolkits, and libraries at your disposal.  There is no reason to reinvent the wheel unless you absolutely have to!  Plus, odds are your “wheels” will not be as fully tested or as fast as the ones provided by your environment.  For portability purposes, the more standard the libraries are the better.

5) By properly separating the functionality of your software into cohesive units (such as Classes), you will achieve clean interfaces.  Clean interfaces will provide simple interaction between components (Classes) within your framework.  More importantly, maintaining small, clean, loosely-coupled interfaces will make your software easy to extend forever.

In conclusion, make reusable components with clean interfaces that take full advantage of your development platform, language, and libraries.  And remember, software design is an art that takes time to master.  Never give up, because you’re only bound to get better.

Etherice now on MySpace

Posted in Life by Scott Baldwin on the March 10th, 2006

I resisted for almost a year, but given the recent explosive popularity of MySpace, and to a much lesser extent, Facebook, I have decided to create accounts for both.  I mainly use my Facebook account to link to my Website and MySpace profile.

I must admit I’ve enjoyed using MySpace to stay in touch with old friends and connect with some new ones.  I login a few times per week and keep my friends list pruned down to people I actually know.  That doesn’t mean I won’t add you if you send an invite… I’m just saying I don’t treat MySpace as a popularity contest like many users seem to.  I also find it interesting how seriously many people take their “Top 8″… like their list is a current event or something.  Haha.  My only realy complaint about MySpace is that it’s owned by Rupert Murdoch’s News Corp.  Why couldn’t he have bought Facebook instead?!!

Capstone project official

Posted in Tech by Scott Baldwin on the February 11th, 2006

outlined The LiquidLan project has been revived after almost two years of not working on it.  My capstone professor has approved it to be my capstone project, so now I can’t graduate unless I finish it… how’s that for motivation?!!  There’s a lot of work left to do, and I’ll be working solo, but I guarantee it will be finished in time to present this May.  I’ll update my progress on it at the official site: http://www.liquidlan.net/ … check it out!

Building a Super Desktop

Posted in Tech by Scott Baldwin on the February 3rd, 2006

Radioactive My friend Nick was asked last week by his dad to build him “the fastest computer possible”.  He said emphatically that price is no object and if it ends up costing $10,000 then so be it (yes, they are very wealthy).  I immediately jumped on board to help out because building a computer with no budget has always been something on my wish list… even if it would not be my own.

As of now, we have picked out most of the components for it, including an SLI-enabled motherboard with nForce 4 Ultra, AMD Athlon X2 4800+, two GeForce 7800GTX-SLI graphics cards, 4GB of Corsair XMS2 DDR400 memory, 550W Antec power supply, two 150GB 15000rpm SAS hard drives, and an LSI SAS-RAID controller card.  The mass storage (SAS RAID) component alone is about $3,000, but we felt it was important to reduce the biggest bottleneck (disk I/O) as much as possible.  The average latency on these drives is less than 2ms!  We will set them up on a RAID0 and hope to achieve sustained throughput rates of close to 250MB/s.  This may be optimistic though.  I’ll let you know how it turns out and post some benchmarks once we have them.

Dinner with Dr. Shyu

Posted in Life by Scott Baldwin on the January 21st, 2006

Drinking and dining with the prof. In case you missed the article, my team won the best project award last semester in CS4380, DBMS I.  Our reward for winning was having dinner and beer with the professor at the Flat Branch Bar and Grill (of course, we are all 21+).  I must say I had a very good time.

I wasn’t sure what drink to order, so I just had what Dr. Shyu had.  While we waited on our food we talked and watched Mizzou play KSU in basketball (the game had just started when we got there).  It turns out Dr. Shyu is quite the basketball fan, and his competitive spirit definitely showed.

All in all it was a great experience and a very fun evening.  I have a great deal of respect for Dr. Shyu, as do all the students and Engineering faculty at MU.  I hope that someday I will have a chance to sit down and talk with him again.

A Message from Bill Cobb

Posted in Tech by Scott Baldwin on the January 20th, 2006

No love for eBay!Today I received another mass email from Bill Cobb, President of eBay. This can only mean one thing: more fees! Bill Cobb has only been President of eBay for like a year now and he’s already made about a billion fee adjustments. It’s funny too, because I thought that eBay was already making tons of money. True, their stock price hasn’t gone up five thousand percent like it has in recent years, but isn’t eBay rich enough? Shouldn’t they stop screwing over their user base (pretty much everyone) simply because they have the market power to do so?

This is why I hate Bill Cobb. I’m sure there’s pressure on him from stock holders and other executives to increase the share price, but couldn’t he have thought of a better solution than raising fees again?… The fees are getting out of control too. After the insertion fee, final value fee, and PayPal related fees, you end up paying like 12% or more! For most sellers, that results in slim or non-existent profit margins. Many companies have stopped selling on eBay for this reason.

So just for fun, I sent a reply to his email:

“We know pricing is a critical issue for our sellers. We stand behind our decision to increase final value fees…”

Why is that Bill… did you need another jet? I think you should be cautious about raising fees in the future. Your brand name will only stretch so far. You keep testing sellers, someday your dynasty will fall. Oh, and [expletive deleted]! 

I expected to get a canned response, and here it is:

It sounds as though you are upset. You have some questions about our recent increases, and it also sounds as though you feel that eBay is no longer very secure. I’d like to begin to address each of these concerns below.

The fee increases will go towards improving eBay - expanding customer support, developing features, advertising, security, and other aspects.

I understand you feel eBay is no longer a safe place to trade. I’m not sure what you are referring to, specifically; however, you can get information by going to the eBay home page, and clicking on the link called, “Security Center”, found at the bottom of the page.

Thanks again for writing.

Michael C. D.
On behalf of Bill Cobb,
President of eBay North America

What more can I say?… I still use eBay for the same reason everyone else uses it: everyone else uses it. This is why I think it’s dangerous for eBay to continue raising fees. There’s nothing special about their website and software, so if they continue to piss off sellers then someday there may be a revolution. When that day comes, put me on the front line so I can shoot Bill Cobb.

Ipod Shuffle is no Zen Nano

Posted in Tech by Scott Baldwin on the January 17th, 2006

Apple could learn a thing or two from Creative when it comes to digital music players. I’ve tried every iPod make and model to date… the original, the mini, the nano, the shuffle… and I’m stunned by how people consider these top-notch audio players. The construction, battery performance, sound quality, all suck.  Plus look at the featureless Shuffle… My friend recently purchased one for US $130 and it lasted about 2 days before “sad-podding”. The fact that it broke is beside the point though… I was more amazed by its lack of features.  The Shuffle is expensive yet it lacks essential features like a display or FM radio tuner.
 
The Shuffe’s competition is Creative Labs’ Zen Nano, with all of Shuffle’s features, plus a back-lit LCD display, FM tuner, mic input, and durable casing.  The Zen Nano user interface is simple and intuitive and all of its functions can be quickly accessed.  The firmware is easy to upgrade, backed up by an excellent recovery mode feature in case something unexpected should happen. Zen Nano doesn’t bitch about nonsense like DRM either, or require bloated PoS apps like iTunes and Quicktime to be installed.  I don’t even use the Creative software that comes with the player because it’s unnecessary… just plug the Zen Nano into USB and it mounts as a removable flash drive.  Then you can just drag-and-drop your files… any type of file!  Now that’s thinking different.
 
For those wondering, this post was inspired by a friend of mine who recently purchased an iPod Shuffle that broke after a couple days.  He said Apple Care technicians were mean, difficult, and totally incompetent. Plus they wanted to charge him a restocking fee to return it!  The good news is that he bought a Creative Zen Nano *Plus* from Wal-Mart last week (US $120), and he’s extremely satisfied.  It’s smaller than the iPod Shuffle and yet it has equal storage capacity and higher SNR (which is good).  Plus it has all the bells and whistles Apple forgot to include in the Shuffle.  So if you’re in the market for a compact digital music player, then I highly recommend getting the Zen Nano instead.

24: The Greatest Series Ever

Posted in Life by Scott Baldwin on the January 10th, 2006

Thats Jack Bauer 24 is a show on Fox about an FBI-like agency called CTU (Counter Terrorism Unit) that defends the nation against terrorists with the help of renegade agent Jack Bauer.  I started watching 24 in its third season.  I was instantly hooked in by the non-stop action and technology theme of the show.  24 is now in its fifth season, and I watch it every week as soon as it’s done recording.  Jack Bauer (Keifer Sutherland) makes the show truly exciting, but all the characters keep you engaged with twists and turns around each corner.  The terrorist bosses are always very sinister and captivating as well.
 
Probably the best thing I have to say about the show is that it seems more like a movie production than television.  Everything in it is very polished.  If you haven’t seen it yet you’re missing out.  For me, it’s the only thing good about Monday.

Days Go By

Posted in Life by Scott Baldwin on the December 17th, 2005

For one moment it was perfect. For one fleeting moment everything was perfect, everything was right… and then as soon as I tried to latch on to that instant it was gone. If I could go back I would have done things differently. I would have embraced all the good times. I would have been more honest. I would have been there when she needed me.

Another best project award

Posted in Life by Scott Baldwin on the December 14th, 2005

As if it wasn’t enough killing the competition last year in CS4330 with a multi-threaded Weiqi gaming network… I just found out that my team in CS4380, Database Management Systems I, has won this semester’s best project award. It feels good to win again, especially since I was the project manager this time. I also had fun working with my friends Nick and Bryce. Thanks to everyone who voted for us!

Dr. Shyu, my team looks forward to having some beers with you at Flat Branch.

« Previous Page