Why is Software Development So Hard?

01 NOVEMBER 2013 | Software | Software | 2100 | 1424 | 1

The recent fiasco over the launch of the healthcare.gov website (which is part of the US government’s effort to implement the Affordable Care Act) will almost certainly find its place in text books as a glaring example of yet another failure of a multi-million dollar software project to deliver on time and within budget.

As the industry and the associated technologies mature, will software development eventually become less of an uncertain endeavor, or will it continue to be complex forever? In the paragraphs that follow, I'll present some thoughts from different perspectives. You be the judge.   >>>

Removing Argument Order Dependency in Ruby

15 OCTOBER 2013 | Software | Software | 1500 | 1008 | 2

About fifteen or so years ago when I first read the bible on Refactoring (Refactoring: Improving the Design of Existing Code, by Martin Fowler, Kent Beck, et al.), the first chapter had a couple of pages of example code. It was pretty innocuous looking, something a reasonably experienced developer would write, I thought at that time. Nothing jumped at me that could be an obvious red flag. As I kept on reading, the authors revealed about 23 or so different items that could be improved to make the program better. I was floored! (Following few days were marathon reading of the rest of the book!)   >>>

Ruby Iteration Methods - Part 2

01 OCTOBER 2013 | Software | Software | 1400 | 958 | 2

In our last post we talked about Ruby iteration methods. Through numerous examples we saw how they help us write less code. We also listed the more commonly used iteration methods, with examples, that most Ruby built-in collection classes support.

We've come a long way on the topic of iteration, and we have a bit more to go. What we didn't talk about in our last article, however, is how the Ruby collection classes uniformly support those iteration methods. We promised to talk about it in this post, along with how we can create our own collection classes that also support all those iteration methods. Without much ado, let's get started!   >>>

Ruby Iteration Methods

15 SEPTEMBER 2013 | Software | Software | 2300 | 1223 | 5

If you are writing in Ruby and still using for and while loops for iteration or accumulation over collections, you are almost certainly doing it the old-fashioned way without a good reason! Instead, you should really be using Ruby's built-in iteration methods, particularly if you really want to bring out Ruby's real expressive power. You'll also be hard-pressed to find experienced rubyists still using for and while loops.

Even if you don't care so much about looks (of your Ruby code, that is), you should still avoid for and while loops in favor of iteration methods. Your fingers will thank you!   >>>

Closures in Ruby: Blocks, Procs and Lambdas

01 SEPTEMBER 2013 | Software | Software | 2400 | 4983 | 12

Recently I've been spending some time trying to better understand Ruby Closures in general, and Blocks, Procs and Lambdas in particular. Fortunately, there are a large number of articles available on the internet on the subject. Some of them are really good and I'll be listing those that I particularly benefitted from at the end of this article.

So why another article on the topic? You can think of this like a "note to self". I extracted what I needed to remember as a reference for myself. If anyone else benefits from it too, that'll be a bonus!   >>>

Space: From Physicist's and Designer's Perspectives

15 AUGUST 2013 | Design | Science | Design | Science | 1300 | 984 | 1

Space, to most of us is emptiness. Something that is waiting to be filled. A backdrop for other things but in itself is not seen as conveying any meaning. One has to fill it with something for it to be interesting. It is mostly a placeholder for other things of interest. Space is like an empty canvas where the drama of life plays out.

But if we look beneath the surface through the eyes of a physicist or a designer, space is anything but. From their perspectives space is truly enigmatic.   >>>

The Debut

01 AUGUST 2013 | General | General | 480 | 541

Finally, August 1, 2013 is when I launch this blog --- TechnicalEcstasy.net. I have already written a few articles, it is just that I wasn't done with the development of the blog engine that powers this blog, created using Ruby, Sinatra and a number of other technologies.

I already missed two launch dates, July 4 and July 15 of 2013, that I had set for myself. July 4 would have been a good day, as it was around that time that I wrote the article on Higgs Boson, and it was the first anniversary of the experimental discovery of the particle. It also happens to be the independence day of the USA, the land I call home for over 25 years.   >>>

The Moral of the Story

15 JULY 2013 | General | General | 1100 | 591

It was my first day after I returned from a vacation. There was a resumé on my desk, with a yellow post-it note attached to it. It was from my boss (let’s just call her Jennifer). It read: "Ahsan, the resumé looks good to me. If you agree, please consider interviewing the candidate". It was a time when the economy was booming. It seemed like we were perpetually in a hiring mode. My then boss, Jennifer, was polite, respectful, full of empathy, and an all around pleasant personality whose presence would brighten anyone's day. The memory of those days still warm my heart.   >>>

Higgs Boson: Why is it a Big Deal?

01 JULY 2013 | Science | Science | 3000 | 1164 | 2

If you've missed the news that shook the scientific community on July 4, 2012 by the long awaited discovery of the Higgs Boson, and the confirmation of the discovery in March 2013, then read on. In this article I'll try to explain what Higgs Boson is, who discovered it and how, and why it is such a big deal.   >>>

Designing a Simple Blog Engine and the Lessons Learned

01 JUNE 2013 | Software | Software | 3500 | 1359 | 4

In my last post I talked about why I set out to write yet another blog engine. Basically the whole purpose is to learn a number of technologies and tools that I planned to use for this project. I also talked a little bit about why I chose this particular set of technologies.

Just to be clear, this post is not about a comprehensive design of a perfect blog engine. It is just a journal on my feeble attempt at creating a rudimentary system that I can use to start blogging, and what I learned from the whole exercise.   >>>

Reinventing the Wheel and the Inception of a Blog

15 MAY 2013 | Software | Software | 1100 | 1100

There are numerous feature-rich Blog Engines and Content Management Systems (CMS) available online, and like the best things in life, many of these are completely free. But I still decided to build my own!

Rolling my own, while there are so many good ones freely available may seem like a waste of time, but I thought as a developer who’s just entering the wonderful world of Ruby and Open Source software, this would be a great learning exercise. What better way to learn something than going out in the wild and tackling the beast yourself? Besides, since this is only for personal blogging, it doesn’t really need to have all the bells and whistles that many of those readily available systems come with. It just has to be neat and follow a consistent style. How hard can that be?   >>>