Introducing: LCS – Least Crappy Solution

I’d like to propose a new term for everyone in engineering and computer science professions to adopt:

LCS
— abbreviation for Least Crappy Solution

  1. A solution or answer that was selected not because it met all requirements but because it was the option that was the least offensive or subject to the least amount of failure.

Lets be honest, it’s a pretty common thing we all talk about and deal with. So lets just coin this term and simplify things. We’re constantly forced to decide between bad options, yet we don’t seem to have a great term for it. You can just say the abbreviation and it will be obvious to all regarding what it’s about.

So lets go ahead and spread the word. LCS means “least crappy solution” and is perfect, or should I say the LCS to referrer to this situation.

Remote Programming

From the BBC:

Wanted: 12 programmers to live on a remote tropical island for two months to do nothing but write code.

Applicants are being sought for the coding jamboree that will take place on an as yet un-named island.

Those applying will have to submit a proposal explaining what they will work on during the hackathon.

They will also have to complete a psychological evaluation to show they can live in harmony with other coders for the duration of the event.

Part of me thinks this would be a pretty cool way to just focus on whatever project you’re doing. Another part of me thinks island fever would set in after a few weeks. It’s one thing to not be distracted for a large chunk of the day. It’s another thing to pretty much remove yourself from it all for 2 months.

Why Airplane Bathrooms Have Ashtrays

Everyone has seen that airplane bathrooms still have ashtrays, despite smoking being banned on flights for almost a generation now. Engineering Infrastructures For Humans has a great blog post explaining why (spoiler: because some people will still smoke). Even greater is the takeaway for anyone who builds anything:

You don’t engineer your systems with the belief that none of your computers will ever break. That’s insane; you KNOW they’re going to break. So don’t assume that your users will never break the rules. Build in graceful failure as often as possible, whether you’re designing a user interface or a security policy.

Airplanes are actually quite redundant in almost every respect from human error to mechanical failure. They are, generally speaking the gold standard for engineering.

Quality Trumps Speed

Interesting perspective from Take Two CEO Strauss Zelnick reported by Ars:

During a conference call accompanying today’s earnings report, Take Two CEO Strauss Zelnick attributed the company’s inability to reach its revenue and profit goals last year to “slippage”—what you or I might simply call “delaying games.” He insisted multiple times that putting off marquee titles until they’re really fully ready is the best way for the company to ensure long-term growth, even though such delays might sometimes lead to disappointing-looking numbers in the short term.

He’s right. These days software (both the printed disks and the web) have shifted from a model of pushing a quality product out the door to pushing something out the door as quick as possible. The reality is customers only care about the quality products.

Truth is customers generally never know how long it took you to build something. It could be 10 years, it could be an hour. They just look at the quality and utility of what you’ve done to make their decision. If you’re short on time it’s because you’re too late to put a vision together, or you’re short sighted with your product. Shipping a poor product because of those failures doesn’t make up for it. Fixing strategy and vision to give enough lead time to construct it is the proper fix.

I can’t think of anything that succeeded because it quickly went through development. Ever. Even being first to market doesn’t guarantee success. Friendster went bust. Yahoo went bust. Customers have little loyalty beyond a few cult elitists (Apple fans, BMW drivers for example). I can think of quality products “years in the making” that succeeded. Being first doesn’t mean you win. Being the best means you win.

Perhaps it’s time to stop fearing becoming the next Duke Nukem’ Forever.

PHP 5.4 And Short Syntax

I’m actually pretty excited about PHP 5.4′s release. I still manage to write a fair amount of PHP these days.

I suspect it will be quite some time until I have enough PHP 5.4 targets to utilize some of the newer features like Traits and the short array syntax, but that’s OK. Performance and memory improvements are always welcome. I doubt I’ll touch the built in web server much. It seems to only be intended for testing, and I never really ran across PHP without Apache (except when I didn’t want it in which case cli is what I wanted).

One slight disappointment is that there is a short array syntax, but no short object syntax. I guess you could always use casting to make it happen like this:

$obj = (object) array(‘foo’ => ‘bar’);
$obj = (object) [‘foo’=>‘bla’, ‘bar’=>2]; // PHP 5.4+

But that still isn’t ideal. I’d prefer to see:

$obj = {‘foo’=>‘bla’, ‘bar’=>2};

Maybe next time around.

The Programmer’s Curse

It's Alive

Programmer’s Curse [proh-gram-er-s kurs] – When a professional programmer sees a problem they think “I can solve this by implementing ________”. They then go on to build something in a manner similar to a mad scientist in an old sci-fi movie.

It’s often associated with eccentric behavior, ingestion of caffinated beverages, late nights and repeated cursing during debugging because it’s “so close”.

Screen capture from the awesome Young Frankenstein

How Read Only Programming Languages Are Born

One day a man was writing an email when he left the room to get something to drink. In his absence, his cat walked over the keyboard and among the myriad of characters entered into the body managed to send the email off. The man returned and soon realized what had transpired. Wondering what the recipient might think receiving such a random unsolicited email, he decided to pass it off as a new programming language. He named it after his cat – Perl.

On Dennis Ritchie

The past week there has been a ton of recognition for the contributions Steve Jobs had made to computing and society through his work. Steve Jobs was a household name. Dennis Ritchie however was not a household name. Despite this his work was amazingly influential on almost every aspect of our daily lives either directly or indirectly. Everything from the computer I wrote this blog post on to the server sending you this blog post involved his work.

Rob Pike best eulogized his work, copied below for posterity. An amazing legacy.

Continue reading