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.

Posted in Blog | Tagged , , , , , , | Leave a comment

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.

Posted in Blog | Tagged , , , , , , , , , | 3 Comments

Review: The Road

If you were expecting some epic apocalyptica, then don’t bother with this snore fest. The trailer was false advertising. Way too much “drama” for my impatient Gen Y taste. It’s more about Viggo Mortensen’s character’s longing for his former life and wife who wandered off into the darkness to die alone because she couldn’t watch Sex in the City anymore.

The apocalyptic event is obviously not the focus of the film’s plot, and it shows. Boy does it show.

No animals survived.

BULLSHIT.

Yet another example of a self-centred species defining itself as not being one of those smelly, dirty animals. A species which is so unique and special that it exists completely outside of nature itself. When a beaver builds a dam to live in, this is nature. Yet when you move into a nice 20 storey condo by the beach with its own mini mall, this is unnatural? When you build a tent out of sticks, is this nature? I say, if a species evolved a big enough brain to build shiny stick tents out of concrete, metal and glass, this is still 100% natural.

There are way tougher animals that would survive long after we’re gone. Humans are not special. Their brains make them weak. They are one of the only few species that makes itself entirely dependent on the infrastructure it creates. Sure, a bird needs to live in a nest, but it doesn’t build itself a bloody three story mansion.

Beyond that gaping hole, the removal of animals can only be an artificial plot construction to facilitate the inclusion of cannibalism — which is only added for shock value. Nowhere does the film mention the only real outcome — vegetarians will take over the world!

The more I examine the vague end-of-world scenario, the more it unravels. The son looks no less than 8 years old. Suppose all the animals did die in the event, including all the fish in all the seas, wouldn’t 8 years of total absence of life drastically upset the balance of gases in the atmosphere?

So there are plenty of dead-looking trees around, but there are still grasses so it’s just winter. The plants are still around, then. But how? Without animals, who’s been doing all that faecal seed-spreading and pollination? OK so there’s one beetle later in the movie, great. That’s one busy beetle.

And what’s with this kid? His character is constructed with some sort of innocence and kindness which is supposed to send a heart-warming message that he’s untouched by the disaster or whatever. But a kid who had grown up fighting for his life and running from cannibals would be the biggest hard-ass. He wouldn’t take shit from anyone. He wouldn’t be constantly asking “Are we still the good guys?” because he’d realise there are no good guys and bad guys. Just hungry guys and dead guys — a.k.a. dinner. Nom.

Posted in Blog | Tagged | Leave a comment

Get Sexy Apple Font Rendering on Windows

OK, so this is totally old news, but as mentioned in a previous rant, I sometimes like my fonts the way Apple intended. Software like Mac OS X, Safari and iOS use a different sub-pixel rendering algorithm to Windows when drawing fonts on LCD screens (or CRT if you are dumb enough to turn it on). Well you can now get this on Windows (works in 7 64-bit).

Download this package and run gditray.exe which will make all most of your Windows applications have sexy smooth fonts. The default setting is a bit “heavy” for my liking, so I scaled it back with the included gdixxTuner.exe.

For example, here is Word 2007 with ClearType

And the same screen with GDI++

Not much difference? Call me a pedant but it’s mostly about Arial. I really hate the way it looks on Windows at small sizes. I would love to see if anyone’s done any decent research into which is easier to read. Like when they said Serifs increase readability. Do they?

Posted in Blog | Tagged , , , , , , | 2 Comments

Accepting the switch to Android (Part 2)

Continued from Part 1

Why Choose Android?

steve jobs hitler evilApple. I dunno they are so fucking evil lately. This is not the Google or Facebook “Oops! We’re idiots!” kind of evil. No, this is the Microsoft “Use us or die!” intentional monopoly kind of evil. Google probably also want a monopoly but they are a bit nicer about it. Apple appear way more evil because they are shoving their monopoly in everyone’s face, just like Microsoft did in the 90s. But I will defer the Who is Eviler? discussion for a future post.

Antenna. Real or not, the issues with the iPhone 4′s antenna are scary. I won’t choose a phone that might work some of the time. I am not enough of an Apple fanboy to accept poor reception or a $30 bumper because Apple’s shininess outweighs a serious design flaw. I am only interested in products that JustWork™. I’m sure the problems have been blown way out of proportion by the media. The software miscalculation excuse seems plausible; it would be a classic Apple thing to do: make their phones appear to get better reception to upstage competitors. If they have been doing this, they should pay. My theory on why Apple didn’t pick it up in testing? All the iPhone 4s sent out into the field were housed in stealthy plastic cases to disguise them as 3GS which also insulated the user’s hands from the antenna. Even if this issue is resolved completely, I cannot forgive Apple censoring discussion boards on the topic. See above image.

Development. The Android SDK is written in Java which is my strongest language. Basically I would have to do less work to break into App development on this platform, so would tend towards the path of least resistance. In comparison, the learning curve on Apple’s iOS would be steeply prohibitive for an endeavour that’s just an experiment, and not my day job.

Android is just way more open. Anyone can develop. I can download and install apps without going through the marketplace. This also removes the potential risk of developing for Apple’s platform only to have them reject your app on submission, or worse, at a random time in the future because they suddenly decide they don’t like it. In contrast, Google appears to value making developers’ lives easier, instead of forcing them into a corner. This is a smart move. It makes their SDK more accessible. This will let people with really good ideas but limited programming skills into the market, which is a good thing. I also totally respect the Google for opening up a public issue tracker for the OS. Where is Apple’s equivalent? Forums? Hardly organised enough to be useful.

Multitasking. iOS 4 lacks multitasking polish. Users are reporting frustration when swiping through a billion apps in the 1×4 real estate of the switcher (see image). What is the point of this bloody switcher anyway? It’s completely redundant. Apps which support multitasking should just be backgrounded instead of closed when Home is pressed. Then you have regular app screens, folders etc. to switch between apps. As users learn where their apps are, this will be instinctively quick compared to the random placement of apps in the switcher.

Services. I use more Google services than Apple services (Gmail, Reader, News, Talk, Docs, Code, Calendar). I would expect a Google OS to have better native support for its own services than an Apple OS. Currently, there is no native support for Google Docs, but that will come. However, Google have been polishing their mobile web offerings so may not spend as much time on their apps. We’ll see.

Phones. In phone land, six months is a long time. Now we are starting to see Android phones that Don’tTotallySuck™. See Samsung Galaxy S and a promising review by GSMArena. We’re also seeing innovations like Swype, which is basically “drawing between the letters” without lifting your finger (see image). In my opinion though, all mobile typing has gone speedily downhill since the efficiency of T9 predictive text. Qwerty has no place on devices this small.

The Verdict? iOS has pleased me as a user, but I’m over just being a user. I’m sick of submitting feedback which is dismissed by egotistical app developers because 100,000 idiots bought their app and gave it a positive review after first use. On Android I could just write my own damn apps.

Posted in Blog | Tagged , , , , , , , , | Leave a comment