vi brace matching

For 40 years, brace matching in vi has been part of my workflow, and for the most part, it works great! One of the first things I look for in a new editor is this feature. But sometimes, it breaks down. Consider a PHP line like:

if (stripos($str, '{+') !== false) {

As soon as you do something like that, your brace matching in vim falls apart.

But there’s a fix! The incredible matchit mod for vim by Benji Fisher. Handles THOUSAND LINE if blocks (this is legacy code, my friends) like a knife through butter. Thank you Benji!

Best Article on Making Money in 2011

The New York Times list of Best Small Business Reads for 2011 praises Jason Fried’s article How to Get Good at Making Money  in Inc. as the best article this year about making money. Here’s the key line for software developers:

“People are happy to pay for things that work well. Never be afraid to put a price on something. If you pour your heart into something and make it great, sell it. For real money. Even if there are free options, even if the market is flooded with free. People will pay for things they love.”

Tomorrow’s Software Guys

The Journal of Defense Software Engineering published this article raising more alarms (as if that were needed) about the state of computer science education in the US. Money quote:

It is all about programming! Over the last few years we have noticed worrisome trends in CS education. The following represents a summary of those trends:

  1. Mathematics requirements in CS programs are shrinking.
  2. The development of programming skills in several languages is giving way to cookbook approaches using large libraries and special-purpose packages.
  3. The resulting set of skills is insufficient for today’s software industry (in particular for safety and security purposes) and, unfortunately, matches well what the outsourcing industry can offer. We are training easily replaceable professionals.

When I’m interviewing a candidate for a programming job, one of the first things I do is ask them to explain the C language statement

char *p;

What does it do?  How is the result used?   etc.

If you can’t work the phrase, “it’s an address” into your explanation, you won’t be able to handle embedded systems work.  You might be just fine for a job in financial IT, but there’s just no way you’ll be able to debug something like a stack corruption, memory leak or wild pointer. And the root cause of this weakness is too much Java, and not enough C.