Tag Archives: Software Engineering

Code Freeze

I refer to the one-to-n states before actual code freeze as code slush. Code freeze is when you can’t change the code unless a critical bug is found. This should be obvious but real life intervenes in even the best organized projects. I’m often called in to help troubled engineering projects, and in many of these projects code freeze is almost meaningless, a statement of management desire or hopefulness rather than anything concrete. This cartoon describes those projects well.


7 simple rules for hiring great developers

This article from InfoWorld presents a good list of rules (principles really) for hiring great software development talent. Some are more relevant to start-ups and small companies, but all are at least somewhat relevant to every technology company. I work for a very large company and have limited influence, but I do what I can to influence my workplace to follow these and other good principles.

Be Careful Using Spreadsheets for Serious Technical Work

The Reinhart-Rogoff case makes for an excellent cautionary tale on the dangers of using spreadsheets for serious work and also a great example of science working properly due to the open exchange of experimental data and documents.

Be Careful Using Spreadsheets for Important Work

Warning someone to be careful with spreadsheets sounds like some Captain Obvious level advice, but if you read the article, you’ll see there is some good reasoning behind it. I know from experience that it’s easy to make formula errors, especially during a long slog preparing data and formulas for review. I found and corrected several spreadsheet entry and calculation errors made by the financial/pricing analyst during my work on a recent proposal. This is relevant to both financial pros and people like me who’d rather write a program to do all the calculations and then just output them to a results spreadsheet for distribution. The ease of data entry in a spreadsheet and the temptations to take shortcuts are something to remain alert for.


Rob Pike Comment on OOP

Rob Pike posted this on Google Plus a few days ago here and I had to share it.

A few years ago I saw this page: http://www.csis.pace.edu/~bergin/patterns/ppoop.html

Local discussion focused on figuring out whether this was a joke or not. For a while, we felt it had to be even though we knew it wasn’t. Today I’m willing to admit the authors believe what is written there. They are sincere.

But… I’d call myself a hacker, at least in their terminology, yet my solution isn’t there. Just search a small table! No objects required. Trivial design, easy to extend, and cleaner than anything they present. Their “hacker solution” is clumsy and verbose. Everything else on this page seems either crazy or willfully obtuse. The lesson drawn at the end feels like misguided epistemology, not technological insight.

It has become clear that OO zealots are afraid of data. They prefer statements or constructors to initialized tables. They won’t write table-driven tests. Why is this? What mindset makes a multilevel type hierarchy with layered abstractions better than searching a three-line table? I once heard someone say he felt his job was to remove all while loops from everyone’s code, replacing them with object stuff. Wat?

But there’s good news. The era of hierarchy-driven, keyword-heavy, colored-ribbons-in-your-textook orthodoxy seems past its peak. More people are talking about composition being a better design principle than inheritance. And there are even some willing to point at the naked emperor; see http://prog21.dadgum.com/156.html for example. There are others. Or perhaps it’s just that the old guard is reasserting itself.

Object-oriented programming, whose essence is nothing more than programming using data with associated behaviors, is a powerful idea. It truly is. But it’s not always the best idea. And it is not well served by the epistemology heaped upon it.

Sometimes data is just data and functions are just functions.


Neil deGrasse Tyson on STEM

This video is exactly right.

Tyson makes a perfect case for why we need to change the way we educate in the US. STEM is critical in teaching people how to solve problems and provides the broad understanding and mental capacity required to create, innovate, and advance a team, a company, a nation, and over time the world. STEM is a primary engine of progress.

Tyson, in this short interview, has given yet another talk that no one should miss, no matter who they are. We as a species are approaching a state in which understanding the idea in this short video can determine our long term survival.


Best Windows Based File Copy Tool

I’m creating a guide to help members of my team at work move from the corporate network to a development network, which will allow us to finally get off Windows XP and maintain our ability to do real development on our laptops. As part of the move to Windows 7, I’m looking into the best tools that complement the built-in abilities of Windows 7 and the various development tools such as Qt Creator, Visual Studio, and Eclipse that we’ll be using. My guide will focus on Windows even though we support Linux and Android as well, because we run Windows on our dev laptops and use VMs to support Linux when possible and dedicated machines on the network otherwise. We of course deploy Android apps to our small set of Android devices for testing.

I’ve been using TeraCopy on XP for awhile now on Windows and highly recommend it. It’s free for personal use and is about $20 if you want to use it commercially. I also run RichCopy, which is a free GUI front end for the RoboCopy utility built into Windows 7. I prefer open source applications wherever possible, but sometimes the proprietary apps are so much better it’s worth the compromise.

Anyway, if you’re looking for good copy enhancements or alternatives for Windows, the articles below are good references.



I will probably be recommending both TeraCopy and RichCopy as good options in my Windows 7 migration guide.

I want to mention one potential replacement for the above tools. Ultracopier is an up and coming open source file copy tool that’s cross platform and written in C++/Qt. I’ll be keeping an eye on this tool to see if it can replace the tools above. Since I use Windows, Linux, and OS-X, and sometimes develop in C++/Qt, this would be a great solution.




Benchmarking tools

Below is a link to an article listing the most popular benchmarking tools. I used to use these tools a lot when I was involved in doing research and making recommendations on the best hardware and software combinations for customers’ needs. Having an industry standard reference point to talk to gives a recommendation more weight by providing objective evidence for your guidance.