Tagged: thoughts

Life is too short

Here is an ironic, satirical list about the hypocrisy of existence. Gen Y is cursed to endlessly pursue happiness through a series of trivial distractions from reality. Atheists are cursed to wallow in the paradox that free will is an evolutionary illusion for preserving a meaningless existance. Satirists are cursed by the irony that the audience most responsible for perpetuating the cliches they so perfectly illustrate are the least likely to receive the satirical message.

***

Life is too short for listening to music I don’t like.

Life is too short for reading painfully irrelevant news articles, blog posts and tweets.

Life is too short for correcting spelling mistakes in text messages.

Life is too short for creating reminders in Outlook.

Life is too short for email conversations.

Life is too short for long term planning.

Life is too short for filling in time sheets.

Life is too short for fast forwarding through ads.

Life is too short for 10 megabits per second.

Life is too short for flashback episodes.

Life is too short for fadey and slidey animations.

Life is too short for reading menu items.

Life is too short for dialog boxes and confirmation messages.

Life is too short for googling error messages.

Life is too short for correcting spelling mistakes in web searches.

Life is too short for scrolling to get to web page content.

Life is too short for reading useless forum posts.

Life is too short for installing drivers and codecs.

Life is too short for transcoding video files.

Life is too short for adjusting audio delay to achieve lip sync.

Life is too short for writing blog posts.

Life is too short for doing the dishes.

Life is too short for ironing.

Life is too short for reading books.

Life is too short for sleeping.

Are you a Computer Scientist, Programmer or Software Developer?

Alternative title: Are you willing to be pigeonholed by someone with a narrow view of the software industry?

I recently came across a post by Alan Snorkin which claims there are three types of people in software: computer scientists, programmers and developers. It’s pretty short and worth a read.

On the face of it the post seemed insightful. I could see myself as fitting best into the programmer category. But I fail to see the point of  this kind of restrictive pigeonholing. It may appeal to recruiters and managers who percieve it makes their job easier – but beyond that it’s largely counterproductive.

The article exemplifies an observed insudtry-wide lack of enthusiasm for software architecture and engineering. It’s a wonder the author can stand upright, with his knees jerking like that. I responded, paraphrased here.

Remember that software engineering is the most immature of all engineering disciplines. We’ve been building bridges and buildings for centuries – chemical and electrical systems to a lesser extent. But modern software development has only existed for about 30 years.

Add to that the much higher growth rate in software relative to other engineered industries, and you start to understand the lack of widespread adoption of engineering in software. Software engineering is still evolving as new systems come along such as the Internet, distributed systems, cloud computing, social networking etc. Many programmers, developers, project managers, etc. will hesitate to adopt a certain architecture or expend resources to engineer a system when there is a very real possibility that all their work will be out of date in 2 years as something better has come along or the industry has moved on.

So why then is rigorous architecture so ingrained in other industries such as mechanical, electrical and civil engineering? It’s a necessity. Without engineering, projects fall apart. There are no real consequences if your toy Web 2.0 app falls apart – maybe some commercial losses. But what if your un-engineered application was a control system for a nuclear reactor? A building, a bridge, or a train signalling system? Ouch.

I’ve done a bit of research into Facebook’s architecture. There are some brilliant videos and their engineering notes blog which describe it in detail, especially their focus on scalability. Services such as Google and Facebook could not meet their load demands without a scalable architecture. This kind of architecture will not “evolve” out of a consensus – it has to be designed.

The attitude of “Architecture is not used, therefore it’s not needed” is counterproductive and will only serve to reinforce the already observed industry-wide skepticism about engineering in software.

What’s missing from the original post is the acknowledgement that people can fit into one of the three categories but still be bad at what they do. Not all programmers “write awesome code”. Not all computer scientists “have 31337 math skills”. Not all developers have awesome people skills.

I have experienced first hand the need for consistency in system design in programming, but the principle also applies to IT support. In projects without the discipline of clean, modularised architecture, programmers will often revert to worst practices. If they have the time, they might do some refactoring but in reality, in high pressure environments with looming deadlines and no architecture enforced by management, programmers will be expected to achieve their task as quickly as possible – and this is often at the expense of code quality and thorough testing.

Too much freedom can be a tyranny of its own

Miranda Devine shares some invaluable insight which may help explain why I feel like jumping the Apple shark with iPhone 4. And it’s not just me. Here are a few choice quotes from her article in the SMH.

“Part of Apple’s success came from popular antipathy to Microsoft because it was so successful … Jobs cleverly made Apple’s journey, like his own, into a countercultural success story, playing off the Goliath that was Microsoft. But this year Apple’s market value surpassed Microsoft’s, making it the most valuable technology firm in the world … It seems Jobs is finding himself hoist on his own petard. Too successful in a capitalist sense, at a time and to a new generation for whom success is suspect.”

Devine also explores Jobs’ take on freedom, as exemplified in his recent email exchange with Gawker’s Ryan Tate:

”If Dylan was 20 today how would he feel about your company? Would he think iPad had the faintest thing to do with revolution? Revolutions are about freedom,” Tate wrote.

Jobs replied: ”Yes, freedom from programs that steal your private data. Freedom from programs that trash your battery. Freedom from porn. Yep, freedom.”

Well, finally, something Eric Schmidt and Jobs can agree on. We all deserve to be free from porn. This brings me back to the title of this post, which I have stolen from Devine’s article and have to include again because it’s just so damn insightful.

Too much freedom can be a tyranny of its own.

This applies not only to the incredibly important world of smartphones. It can also be seen in less important matters such as western society’s tyrranical attitude to implementing counter terrorism.

We seem to be fine with outsourcing the “filtering out of bad stuff” to any dictatorship who is willing to take on the task. In effect, we are happy to trade in our freedom to experience the bad along with the good, in return for being freed of the inconvenience of deciding which is which.

We are now getting to the crux of the Android vs. Apple dilemma. As observed by Craig Simms from CNET (my emphasis):

“The separate approaches of Google and Apple are interesting. Apple’s ridiculous level of control, strange regulations and amazingly closed system have severely limited what its platform can do, but has resulted in a much more polished, complete and integrated operating system. Most apps will actually work when you download them. It’s both its biggest strength and weakness.

Google’s openness and flexibility is equally its biggest strength and weakness: it allows considerably more capability than the iPhone, but to the detriment of platform stability and a more polished experience. We’ve lost count of the amount of apps that simply don’t work and need to be force closed.”

It’s also worth pointing out that Android’s openness for allowing almost any app onto the Android Market raises the possibility of wallpaper apps that steal your personal data. This brings us right back to the terrorism allegory: trading in freedom for convenience.

What is convenience?

In the smartphone space, one of the most important conveniences to me is speed: freedom from wasted time. I’m not just talking about the processing power of a device, although that is a contributing factor. The question of device speed involves many more aspects of the whole smartphone package. They can all be encompassed in the broader question:

“How much of my time is wasted in achieving my objectives on this device?”

Assuming for the sake of argument that activities performed on my smartphone are not intrinsic time wasters, I’ve jotted down some areas for potential inefficiencies for both packages in approximate order of importance.

iPhone 4 Android
Sync One click sync with iTunes Hunting down multiple desktop sync apps. Performing separate syncs for music and data. On wipe, reinstall all apps using the phone.
Setup Accept I cannot customise the phone, download apps for OS shortcomings. Jailbreak just to customise SMS sound (this is essential) Hunting down OS patches, installing custom firmware just to get the phone set up how I want.
Migration Not an issue Hunt down app alternatives
Music That extra swipe to bring up iPod controls introduced in iOS 4 Using iTunes to manually create Genius playlists, hunting for an app with star ratings, album art, Last.fm logging. Sift through non-music media files!
Input Typing and correcting errors on an inefficient Swype-less keyboard A little time getting used to Swype, then much faster typing
Bed & Couch Lock phone rotation with double-click, swipe, tap Disable phone rotation with 4 taps (slower as screens load)
Apps All apps just work, a few crashes which 90% of the time resolve with app reinstall. Many apps only work on specific versions or handsets. Don’t find out until install. This wastes time.
Dev Significant time investment and hours of therapy while learning SDK I expect dev to be way faster if the standard of the API is anything like Google Maps
Gmail Archive now in native Mail app instead of visiting web service to clean up my inbox. Archive also in native Mail app
Text Selection Sometimes fiddly to use Apparently woeful

Android still has a long way to go before it has anywhere near the polish of iOS, despite all its faults.

The evidence seems to suggest that an iPhone 4 would be the most efficient solution at the moment. Can I really allow myself the luxury of indulging my own principles by rebelling against the Apple alliance? Not really.

Am I willing to accept Apple’s tyrannical dictatorship if it saves me some time and potential heartache?

The answer is Yes. Suck it up Orwell.

Google Reader Adds Shared Items Privacy

Privacy seems to be the new “hot topic” for Web 2.0 companies. There is a great opportunity in the market for a company like Google or Facebook to step up and just get privacy right, setting the benchmark for others. So why don’t they?

Google appears simply to lack the ability to anticipate how its actions will be perceived. Or in the case of the recent Wi-Fi scandal, actually has no knowledge of what it’s actions really are.

“Oops, we didn’t read the code! Copy/paste, copy/paste! Coding is fun!”
- Anonymous Google employee (possibly a robot)

And Facebook has the social monopoly. There’s nowhere else for users to go, so there’s no commercial incentive for change. All its users can do is complain. You’re not seriously suggesting that people could ever leave Facebook, right? Don’t be silly.

However, things could be looking up. Last night, when I logged into Google Reader, it asked me whether I wanted my Shared Items to be public or “protected”. I chose the latter, allowing me to share only with selected groups in my Gmail contacts. This can be configured under “Sharing Settings”.

Logging out of Google and visiting my old shared items URL confirms this indeed works.

Then for some reason, I had the fun time of typing in all my friends email addresses one at a time to follow each of them. Thanks Google UI designers.

Death in Video Games: Part 1

Lately, I’ve been thinking a lot about the different treatments and functions of death in video games. This started because of a stark disparity I observed between Prey and Bioshock. I’m going to include Halo as well, as a sort of baseline as it uses the traditional and ubiquitous checkpoint death mechanic.

  • Halo: When you die, time effectively snaps back to the last checkpoint, so everything in the game world including your ammo, health and enemies is exactly as it was when the game saved at that checkpoint.
  • Bioshock: When you die time continues in the game without interruption. Your body respawns at the nearest Vita-Chamber with minimal health and plasmid energy but your ammo remains intact. Some enemies respawn.
  • Prey: When you die time stands still while you’re transported to a place in the spirit world. Your aim is to shoot as many red and blue flying spirit piranhas with your spirit crossbow before a time limit expires. The more piranhas you shoot, the more health and spirit power you will have when you respawn. Respawn takes the form of your spirit returning to your body with all ammo and enemies as they were when you “died”.

On the surface, Bioshock’s death mechanic may seem similar to the traditional checkpoint mechanic but the continuous time aspect has consequences which aren’t obvious until you actually play the game. Below is a typical transcript of a Bioshock session which should illustrate.

  1. Stockpile ammo and items that you find lying around.
  2. Get to difficult part of level, such as a hard boss.
  3. Try to defeat said boss, reducing your ammo and items.
  4. Die and respawn.
  5. Walk several hundred miles back to where the action is. Sometimes this takes over 30 seconds which is a long time in an action game.
  6. Continue to stockpile ammo and items.
  7. Fight boss again, using up your ammo and items.
  8. Die and respawn.
  9. Continue to stockp– Oh drat! There’s no ammo and items lying around anymore!
  10. Try to fight boss with no ammo, no items, no health and no plasmid energy. Use your wrench to tickle boss with desperate futility.
  11. Last about 5 seconds before you die.
  12. Repeat from step 8 until you throw the controller across the room in epic frustration.

The problem with the continuous time mechanic is that the gameplay asymptotes to an unwinnable situation. It’s not “game over” but you’re trapped in an infinite loop like some kind of virtual Groudhog Day set in the sixties. What can you do? Enemies keep respawning but the ammo and items don’t. And God help you if your hard boss keeps running off to a healing station that’s beyond your reach. Your only hope is to pick off a couple of weak enemies whose corpse you can frisk for ammo.

The Halo and Prey gameplay mechanics are simply immune to the asymtotic death weakness by design. In Prey, ammo is plentiful, and Halo’s time reset means you’ll always have some resources at your disposal.

Prey has made an active effort to replace the tedium of trudging back to the action. So it may last 30 seconds but at least you’re given something to do. This avoids the dull action troughs that you experience in Bioshock while walking back to the fight.

In Halo and other checkpoint games, you may have to try over and over to beat a difficult part, but at least you’re given a chance. In fact your chance increases with every trial as you become more familiar with the layout and where enemies are going to respawn, etc. In Prey, your prowess at picking off piranhas is rewarded with an improved chance in the form of greater health and spirit energy.

Bioshock’s handling of death is not some kind of built-in puzzle. It’s not adding depth to the gameplay; it’s adding unbearably relentless tedium and frustration. To add insult to injury, Bioshock has one of the most spectacularly immersive, creative and suspenseful game environments I’ve ever seen. And the player is denied this unless they are some kind of masochist who enjoys wading through concrete. It’s like the player is being forced to earn their right to the Bioshock experience.

I want to love Bioshock. I want someone to tell me that I’m just impatient or I suck at the game. But I’ve never experienced this level of monotony in an FPS played on Medium or Normal difficulty. Half-Life 2: Episode 1 is close, but I’m playing that on Hard.

In Part 2 I’ll cover some of the more unique and groundbreaking death mechanics, starting of course with Braid.