Thank God Not Everything Is Software

On an average day I’d see a comics like this, smile and walk by.  But I am currently involved in a project that makes me feel stronger about it.

Consider, for example, a client request I got a couple of days ago:

We are using the database for this project, right?  We are using it for a reason – to store data.  If we store data, we should be able to retrieve data.  So I want a report that retrieves data.  I want a report with all data, all on a single page.  But it shouldn’t be too much or too complicated.

Funny?  Well, I laughed at first too.  But when I actually managed to build that report, I had a few things to think about.  And a few to reconsider.

Google : 60,000 dollars for a bug report

I’m a Google fan, there is no reason to hide it.  And this is one of the reasons.  They are setting a good example to follow.

Open sourcing company products changes the way code is written.  The moment programmers know someone else will be looking at their code, they start paying more attention as to what and how they write.  Paying money to outsiders for discovering bugs with company code is like the next level of Open Source Software.  Just open source gives the possibility to review.  Money provide a good incentive to.

PHP 5.4.0 released

These days, it is hard to imagine a web developer or an advanced web user who is not involved with PHP somehow.  For all of you folks, there are some good news – PHP 5.4.0 has just been released.  Of course, it will take a bit until it is well tested and pushed to most hosting companies, but you should take a brief look at the changelog to make sure you know what to expect.  Some of my favorite changes are:

  • Long-awaited removal of many configuration options: register_globals, register_long_arrays, allow_call_time_pass_reference, magic_quotes_gpc, etc.
  • Long-awaited removal of some confusing session-related functions: session_register(), session_unregister(), and session_is_registered().
  • Change of default_charset from ISO-8859-1 to UTF-8.
  • Added Traversable iterator in mysq_result for MySQLi.
  • Plenty of performance improvements and memory optimization.
  • Plenty of bug fixes.

Also, have a look at the migrating from 5.3 to 5.4 document.

The permanence of temporary

I came across this little story about the Gmail logo.

How many times have you been told not to leave something for the last minute, but when you did, it actually turned out better than expected? Well, Gmail’s logo was the product of this situation — it was designed by Dennis Hwang (who’s responsible for most of Google’s doodles at the time) the night before Gmail launched. Former Google designer Kevin Foxtells the story on Quora: “The logo was designed literally the night before the product launched. We were up very late and Sergey and I went down to his cube to watch him make it.”

The last minute bit reminded me of something else.  A few years ago I was involved in a project with a rather hectic release plan.  There was too much work to do, not enough organization, and the deadline appeared much sooner than expected.  The team was in the office pretty much since Friday afternoon and it was already just after 11pm on Sunday night.  Everyone was stressed and exhausted, and we thought that the painful release of the project was just about done.

It was then that we got a report from the support department that something is wrong with our outgoing emails.  And the problem was that they weren’t going out much.  Clients submitted forms and were told to expect activation / verification email with code.  And those emails weren’t coming for a while already.

It was then that we realized that in all the chaos we actually completely forgot to implement that bit functionality.  There was nothing there that was sending emails.  Oops!

I kicked everyone out of the room, locked the door and wrote a very quick Perl script.  I spent not more than 15-20 minutes.  We just needed something really quick to get the mail queue out of the way.  We would rewrite it properly next day, when the dust settles a bit and everyone is rested and thinking clearly.

Can you guess when we actually rewrote it?  One and a half years later!  That’s  right!  Something as temporary as that lasted and did the job for almost two years.  Turned out that the job I wrote it to do on the first night was pretty much the job it would be doing 24×7, and there was no need to even update it.  It supported templates, multiple languages, and pre-configured attachments based on the template and language.  And it was efficient enough, since when I was writing it we already had a few thousand messages in the queue and I wanted to send them out as quick as possible.

Even later, when the rewrite happened, it wasn’t for any new functionality, but for better integration with the rest of the project.  After all, it doesn’t make much sense to have a single standalone Perl script in the project that is completely written PHP.  It was ported almost verbatim.

Every time I tell this story, especially to my Russian friends, I keep hearing the same response: “Nothing is more permanent than temporary“.  You build something to last for years and it gets destroyed, redesigned, and rebuilt every 6 month.  You throw something together to get you through the day and that lasts a century.

The Gmail logo reminded me of that.  Designed on the night before the release, the logo is still here…

Open Source or not?

Slashdot has an interesting discussion on whether or not a small start-up company has to Open Source their code or not. From one of the comments I followed a link to an excellent blog post by Tom Preston-Werner, one of the co-founders of GitHub.

Lastly, it’s the right thing to do. It’s almost impossible to do anything these days without directly or indirectly executing huge amounts of open source code. If you use the internet, you’re using open source. That code represents millions of man-hours of time that has been spent and then given away so that everyone may benefit. We all enjoy the benefits of open source software, and I believe we are all morally obligated to give back to that community. If software is an ocean, then open source is the rising tide that raises all ships.

In a nutshell he basically says that you should Open Source everything, except things that are at the core of your business value. His arguments are insightful and I suggest you read the whole thing.

Interestingly, this reminds me of a few discussions I had on outsourcing. And I was saying is that a company should outsource as much as possible, except for things which are at their core business value. As in, IT company should outsource accounting and legal, not IT, while accounting companies should outsource IT and legal, not accounting. And so forth.

That leads me to think that Open Source community is a huge outsourcing resource. Something that I’ve known for a long time, but now arrived to through a totally different route.