Archive for the ‘Rants’ Category

The Curse of the New

Friday, May 16th, 2008

There are some people who whine whenever something interesting comes along that has maybe happened in some form before. They say things like, “This isn’t new! It was done X years ago by Y.” Or, “This is hardly an original idea. I had it when I was 10 and knew immediately it was the greatest thing ever.”

Of course I’m not immune to having done this… In fact, I find myself saying things like that a lot and I’m starting to think that I should try to keep myself from doing so. It’s not productive, adds no value, and just brings other people down. Who cares if it was done before? Who cares if it isn’t an original idea? What matters is if you (or someone else) act on the idea and prove it can work or that the idea is better or whatnot. What really matters are the results.

If you have a great idea, just do it. If you see a great idea that has been done, don’t assume you’re the only person on the planet with the immense intellect to notice it isn’t new - you might be missing something. It’s like that classic Mark Twain quote: “It is better to keep your mouth closed and let people think you are a fool than to open it and remove all doubt.”

Made With Real Eggs!

Tuesday, March 11th, 2008

What does it say about our culture if it’s considered an advertising advantage to mention that your product has actual, natural food items in it?

Software Complexity

Friday, December 14th, 2007

If you’re not a developer, this rant might not apply… (although there’s probably parallels in every discipline)

The “hard” stuff is easy. The “easy” stuff is hard.

It’s difficult to give a concrete example of this without going annoyingly deep into details, but I’ll try to capture the gist of what I mean with a made-up example: Let’s say you have a web site and you want the entire site’s look (logo image, background colors, highlights, etc) to change and reflect the season (Christmas, for example). If you think about this at the surface without knowing the technology (such as a manager or boss might), it seems like a huge, complex task. If you’re not privy to the knowledge of how things work, you’d likely assume that doing such a massive change could involve edits to hundreds or thousands of files! Daunting! (Which in manager-speak translates to: Expensive! Which means some web designers end up making a lot more than programmers do per hour.) And yet, this is actually quite easy stuff assuming you’ve done your CSS/HTML properly. Just a few changes to one or two files, some new artwork graphics, and you’re good to go - the entire site has been updated!

Ultra-simplistic example:

old CSS:
#header-logo { background: src(/img/logo.png) }
#header-title { color: black; background: white }

new CSS:
#header-logo { background: src(/img/xmas-logo.png) }
#header-title { color: red; background: green }

Just sit and think about that for a moment… a few changes and this potentially HUGE website got an entirely new look for the holidays. Every single page is changed. Wow!

So if something so “hard” as changing every page on the entire site is that straightforward, why not just change how the input box accepts input real quick, too? How about getting rid of the text box for “birthday” and putting in a day/month/year box with drop downs for each value? That can’t be too hard, right?

No, that sort of thing is not terribly difficult in the grand scheme of things, but compared to tweaking a few styles in CSS it is likely many orders of magnitude more time consuming and potentially error-prone. Why is that? It doesn’t make sense! It’s a small, localized thing - only visible in one input box. How hard can it be?!? Why does it take so long? What’s the big deal?!?

Well, there’s a ton of things that could potentially need to be changed just because of this “easy” modification. The number of changes that the developer makes is inversely proportional to the elegance, clarity, maintainability, and cleanliness of the resulting code. This birthday example is sort of simple, but maybe it can illuminate how a larger “simple” feature can result in a developer going totally insane as complexity ripples throughout the program…

Ok, so we’re changing the birthday field on an input form from a simple text box to three individual boxes. This means that the user-entered data now needs to be gathered from not one place, but three. This means the amount of code required just to get the raw data has trebled. Sure, in this case you’re talking about 3 whole lines - big deal, right? Well, in addition to those three lines, the final date would need to be rebuilt from the component parts and validated as a legal date (unless you want bad data in your database). So there’s more code to combine all the discrete parts back together. On top of that, the old input box was empty and this new input system requires pre-populating the drop down menus with numbers and month names and years - so that’s even more code that’s either hardcoded in the HTML itself or added as yet another condition that gets activated on page load or whatever.

Previously code might have looked like this (in a fake language I made up just now):

onPageLoad:
... nothing extra ...

onFormSubmit:
birthday = Date.dateFromString( Form.birthday );

And it has been transformed into this:

onPageLoad:
Form.birthdayDay.selectOneOf( 1 .. 31 );
Form.birthdayMonth.selectOneOf( Jan, Feb, ... etc.. );
Form.birthdayYear.selectOneOf( 1900 .. Date.currentYear );

onFormSubmit:
birthday = Date.new;
birthday.setDay( Form.birthdayDay );
birthday.setMonth( Form.birthdayMonth );
birthday.setYear( Form.birthdayYear );

Or something like that… (Note, I’m not cheating with the previous code that calls something named “dateFromString” as many common libraries have functions that do exactly that and will parse all sorts of user-generated date format strings.)

This example doesn’t even account for the fact that the HTML of the page probably had to change to accommodate the new drop downs, which means that the structure of the CSS may have changed a little bit, too, and possibly caused a headache for the web designer! On top of all that, my made up example language would actually be a welcome change to the insanity that it can take to do some of these things in some real-world UI frameworks (for the web or otherwise) which means in real life you’re probably looking at even more lines of code to manage everything. All for this so-called “easy” change!

I know this is a somewhat convoluted example, but I hope somehow my point has been made. :-)

Whew. I wish I felt better… sadly, though, I have to go back to working on “easy” stuff that’s taking way, WAY too long. *sigh*

Warning: Rants Ahead

Thursday, November 8th, 2007

It’s rant time, people!

#1: Have any of you ever heard the phrase “Don’t look a gift horse in the mouth?” I think you need to study up and figure out what that means and how it applies to me and iApp-a-Day - it’s wise advice…

#2: This next issue is more important. Ste (world-famous iPhone package maintainer extraordinaire) has apparently been getting some nasty emails from folks about hosting Mobile Holy Quran. Seriously?

First of all, I wrote the software for Zoosware and I happen to think it’s some pretty sweet stuff, technically. No, I’m not a Muslim. And yes, I am American/Christian. Shocked? Some people apparently are.

The shock goes both ways: I’ve been told that Muslims are often stunned to find out that a non-Muslim American wrote it and it impresses many of them. You see, their world is filled with the same misconceptions about ours as ours is with misconceptions about theirs. Interesting, isn’t it? There’s people on both sides of this divide that feel they are superior or more “right” than the others - and the truth is that neither set of extremists represents the vast majority of normal people stuck in the middle.

Extremists keep people apart. Extremists are against open communication. Extremists would rather believe their own specific fiction than know a real truth. Christian extremists, Muslim extremists, nationalistic extremists, racial extremists, etc. All are guilty of driving people apart.

Interestingly, I do believe that extremists have their place in society. We need them - but their usefulness as a whole is limited and not perpetual. Extremists help shake things up and cause the masses to question long-held (and often incorrect) assumptions. This is good for everyone and when we come back together again, we grow as a species and as a culture - but it is not healthy to maintain an extremism in the same way that it is not healthy to drink soda and eat potato chips for every meal. Moderation is important to maintaining health mentally, physically, and spiritually.

I believe that the time for religious extremism is globally coming to a close. The world is much smaller than it used to be. It’s far easier to communicate. The normal people that the extremists have been trying in vain to “protect” from each other on each side are starting to find ways to come together, meet, understand, and accept one another for who they are as individuals. It’s a slow process, for sure, but I think it proves a fundamental point about humanity: we need each other and there’s some underlying force of nature that constantly strives to bring us back together after a rift develops. That force goes by many names - but in my opinion, the name is just an attempt to make concrete something which is, presently, very mysterious and unknowable about life.

Think about it… It was not so long ago that the world was caught up in war. There was so much hate and mistrust that the US eventually dropped the mother of all bombs on Japan. And where are we now? Japan and the US have great relations. Most of Europe gets along quite well now - perhaps better than they ever have before. Only a few decades ago the hate being thrown at Muslims by some in my country was being directed to the Japanese, or the Germans, or the Italians, or the Russians and they thought and believed that it would always be that way and that it would always be socially acceptable to hate another culture.

They were wrong then.

They are wrong now.