Tagged: apps

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.

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?

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.

Accepting the switch to Android (Part 1)

I predict I’ll inevitably end up switching to Android. The alternative would be to get an iPhone 4, but that’s looking less and less attractive these days. Read on for Part 1 of my long-winded debrief. Part 2 is here.

Why Choose iPhone 4?

Accustomed. I am quite used to using an iPhone. When it’s not being slow as hell it is really fun and intuitive to use for most things. I would have to learn a new OS and it might not be as good as I’m used to. On the other hand, a new OS may not have many of the iOS annoyances, e.g. Safari purging background “tabs” from memory then reloading when refocused and losing my place in a LONG list of articles I was sifting through.

Hardware. The iPhone hardware looks sexyawesome (putting aside antenna issues). I guess the ideal device would be an iPhone 4 running Android but that’s a long way off. I still reserve judgment until I see this device.

Maturity. Android is quite immature in some respects (e.g. no proxy settings for WiFi connections). But these may not effect me so more research is needed before I can say “Android does 90% of what iOS can do” or whatever. It’s interesting to observe a power distribution in the graph of open Android issues, with respect to perceived importance by the community.

Note: “Number of Stars” above reflects how many users “care about” each issue. There over 5000 open issues but in a power distribution only the first few are interesting.

This graph illustrates two things:

  • There are a few issues which many people care about
  • There are many issues which only a few people care about

Sync. iTunes syncs everything beautifully, and I might miss this convenience and security. It warms my heart to know that if my phone dies because I dropped it while texting on the loo, I have a backup and won’t have to waste time setting the whole phone up again. It syncs, in order of importance:

  • Settings (all customisations, esp. WiFi networks and mail accounts)
  • Google Contacts (very handy but have noticed some duplication)
  • All my apps and their settings
  • My iTunes music library which is highly organised (not)
  • Browser bookmarks
  • Calendars (don’t really use)
  • Photos (could live without sync)

Android syncs all the Google stuff out of the box (except Docs) but it’s up to third party vendors to provide their own apps for the rest. There are apps to sync iTunes with Android phones, which is nice. But what about the settings and other crap? A quick Google suggests “rooting” the phone and installing custom firmware is the current solution. Blegh.

What Android needs is universal (works on any Android device) automatic back up to “The Cloud” (FTP, dropbox, etc.). I would imagine this working something like: first take an initial snapshot of the phone state and store on cloud, then each time a user changes a setting, downloads a file, or takes a photo etc. add metadata for this “delta” to a local queue of “stuff that’s changed on my phone”. Then when the phone is idle, gradually push this queue up to the cloud backup service. But WAIT until I’m not browsing the web or streaming audio thankyouverymuch. And you can save large queue items like video for when I’m on WiFi. I can has. Someone write this and I’ll switch to Android today.

Music. It’s a really great iPod. I am not so sure about other Android phones. But the Samsung Galaxy S music player seems pretty good, and audio quality gets a big thumbs up. It also comes with ear sunctiony headphones out of the box, which is a step up from Apple’s default earphones which are only good for trussing your roast chicken.

Apps. I might miss some iPhone apps. Also, I feel like I’d be losing an investment on bought apps. But rather than trust my vague feeling I have collated a categorised breakdown of my frivolous app spending.

Category Spent
Must Have
Apps I use every day – there’s only one PocketWeather AU
$2.49
Rarely Use
Novel apps I don’t feel guilty for not using because they are cool.
e.g. Tyrian, Hipstamatic
$8.97
Something Better
Apps made redundant due to better or free alternatives.
e.g. Metro Melbourne, Oz Weather, Quota
$10.47
Never Use
Disappointments, games I’m tired of, impulse buys.
e.g. Labyrinth, GeoDefense, Feeds, Sleep Cycle Alarm
$25.10
Total
(My estimate of $45 back in January wasn’t far off!)
$47.03

It’s also worth considering the free iPhone apps I use frequently and would miss dearly. More broadly, this could make Android the phone equivalent of Linux in that I have to do work to hunt down and install the things I want, rather than just have them. Thanks AppBrain for making this easy.

iPhone Android Comments
IMDB Free
Official
Looks good.
Tram Tracker Free
3rd Party
Impressive that a 3rd party would write this.
Last.fm Free
Official
The iPhone app still streams radio despite them making it not free via the desktop client. I wonder if the Android app is the same.
Scrobbled Free
3rd Party
Jailbreak app, submits every track played in iPod to Last.fm. Android version dependent on support for specific music player app.
Flickr Nothing The free official iPhone app is very basic so I bought Mobile Fotos which I only use when I’m really bored. I wouldn’t use their mobile web offering.
iTunes Remote $4.99
3rd Party
Don’t use enough to pay.
IceTV Web
Official
Acceptable if it remembers my login
Wikipanion Web
Official
Any Wikipedia app needs bookmarks and font size control and I’m sold.
Facebook Free
Official
Looks like garbage compared to the iPhone version.

The verdict? If a suitably polished Android phone came along, I probably wouldn’t miss the iPhone. As I rant on in Part 2 Android’s openness would go a long way.

Continued in Part 2