Posted on 12/30/2009 5:11:43 PM by Justin Etheredge
It is just about that time again… time for a 2009 wrap-up post. 2009, what a year. Quite the mixed bag really. On the economic front, I feel very lucky that I am where I am. Many were struggling this year. My family and I faired very well, and I have nothing but gratitude for that. I'm hoping that 2010 will be better for most in these respects.
As far as the blog goes, 2009 really has been a great year for my blog. I didn't see the stratospheric rise to the top that I expected deserved hoped for, but you know, you can't have everything I guess! Overall though, I definitely had a solid year, beating out my 2008 number pretty handily. I'm still not getting very much search engine love from Google, but I'm hoping that this might change in 2010. In case you're wondering, I got about 263k pageviews this year. Some people seem surprised when they hear it is that low. For some reason people think my blog has crazy high traffic, but the reality is that I just have really awesome readers who love to post comments and interact. :-) Just goes to show you, you have to fake it til you got it! Ha. I think reality is that I often post about topics which are more niche, and less interesting to the community at large. One of my plans in 2010 is to try and keep that focus on the niche hardcore topics, but to also provide more content to the larger developer community. But when it comes down to it, I blog about what is interesting to me so we will see how this new strategy goes.
Continue reading the rest of this post...
Posted on 12/22/2009 10:16:40 AM by Justin Etheredge
"I'm picking up your sarcasm." "Well, I should hope so, because I’m laying it on pretty thick."
–Tommy Boy
While the developer lexicon is loaded up with more patterns than we can possibly ever learn, I just wanted to introduce one of the more important patterns that I think exists out there in software development. I call it the “Static Spider Web” pattern. The main driver behind this pattern is that object instantiation, allocation, and deallocation impose far too much overhead in modern programming language runtimes. Since we aren't in direct control of memory management, and since garbage collectors on systems with large amounts of memory can cause huge latency overheads, we need to find some way to minimize, at all costs, the number of objects that we allocate.
First, we are going to have to just accept the fact that we will have to create a few objects. I mean, our application data needs to go somewhere, right? I'd advocate for passing the data around as parameters, but that would get old pretty quick with all of that typing. Besides, that is what objects were invented for, to be stateless data containers.
Continue reading the rest of this post...
Posted on 12/17/2009 12:19:48 PM by Justin Etheredge
Bet you never thought about it, but Energy-efficient traffic lights can't melt snow. Talk about the Law of Unintended Consequences. You want to save money by buying more energy-efficient traffic lights, but then you end up spending an untold amount of money on traffic light cleaners, or potentially, the EMS/Police who have to deal with the aftermath of stop lights not working after heavy snows. Then there are the health insurance costs, department of transportation costs to fix the barriers that might get damaged, car insurance costs, etc... The consequences are complex and far reaching. But once you see it, it just seems so obvious! Of course LEDs aren't going to melt snow, they don't produce very much heat at all!
Unfortunately, while using incandescent bulbs, this wasn't a problem. So it wasn't a problem that they knew needed to be addressed. Trust me, if incandescent bulbs didn't melt the snow previously, then you can be guaranteed it would have been at the top of their list to find a solution to this problem. But they picked a solution based on one factor that brought some other problems along with it.
Does this sound familiar? If you are a software developer, it should. You probably have to deal with some of the most complex systems that have ever been devised by humans. Thousands of inputs, outputs, moving parts, pieces of business logic, and probably a team of about 5 people to do it all! Right? Of course, companies often don't have the resources to bring in dozens of developers to write a really great system, they just need a "good enough" system to allow them to function.
Continue reading the rest of this post...