softwareengineering

Nifty things

Worth checking out / under current investigation:

  • Heroku - sweet, painless Rails hosting and dev environment with an Amazon grid computing back end? More experimentation required, but so far I am impressed.
  • GitHub - sweet, painless git repository hosting with a shedload of web eye candy and collaboration tools? Ryan Tomyako describes it best.

More details to follow.

rubyonrails
softwareengineering

Comments (0)

Permalink

iPhone SDK - Still No Silver Bullets for Device Development

There has been a lot of criticism of Apple over their decision to not release a ‘proper’ (ie low level) SDK for the iPhone. A lot of developers with only a background in PC and/or web development have been bitching the lack of the SDK. I have a background in smartphone development, having been involved in development for the Symbian platform (’110 million Symbian smartphones shipped’ as their website crows). So here’s a perspective based on some experience in that market.

I think Apple’s decision not to release a full blown SDK is an understandable one. When Apple cites security concerns for this decision they are not whistling dixie. Controlling access to, protecting the state of, and profitting from the mobile network is something that network operators take very seriously. They certainly don’t like the idea of any old code being run on client devices.

Symbian used to be an open development platform - anyone could write applications for it given the time and inclination, and then distribute the applications to other users. A couple of years ago this changed with the advent of the Symbian Signed initiative. Developers have to get their applications certified through an expensive (ie. more than free) programme before they can distribute their applications.

If Apple ever do decide to do an open SDK, they will probably have to have their own certification programme for applications.

I also think people have got carried away with the hype over how powerful the iPhone is. Sure it might run some kind of cut down version of OSX, but the fact is it’s still a smartphone and not a full blown computer. Device programming imposes all sorts of constraints and requires a level of developer discipline that developing for desktop machines just does not demand.

Power consumption is an issue. Users expect their phones to work reliably all the time. Memory is limited, and applications can end up running for a long time - meaning memory leaks can be disastrous for system stability. If you’ve ever been annoyed by some Java application that has crashed your phone, you will know what I mean.

It’s certainly tempting to think Apple have come up with a silver bullet and made all the constraints of device development disappear, but they haven’t. And protecting the user experience consumers have with the iPhone is a priority for Apple. If the iPhone ran 3rd party apps, there would be no way to provide the kind of consistent user experience that a closed platform can provide.

Apple has promised a Web based SDK for the iPhone. It reportedly will allow access to some features of the iPhone. This could be more than good enough for a wide category of applications. I predict that Dashcode will form the heart of any SDK for the iPhone.

Not happy with this? Really want to develop applications for smartphones that have a large market? Try using Symbian or Java. There are a lot more devices out there running these platforms and development is (relatively) open. And yes, you’ll have to cater for a wide variety of devices and form factors and face all the challenges that brings. When the iPhone Nanos/Shuffles/Gizmos get released at some future point in time, these exact same problems would face any iPhone developers with access to a iPhone SDK.

After watching a Steve Job’s reality distorting presentation, it’s tempting to think the iPhone has the power and capabilities of a desktop computer, and that developing for it would be a pretty simillar experience. Unfortunately, the reality will be quite different.

Uncategorized
technology
osx
softwareengineering
mobile

Comments (0)

Permalink

Psion Retrospective

The Series 5 pocket computer from Psion was launched 10 years ago this week. It was a remarkable achievement: entirely new silicon, a new operating system, middleware stack and applications were developed from scratch in just over two years.

The Register runs a massive retrospective on the once great and innovative UK technology firm Psion.

Someone really needs to do an updated Psion 5mx like device…

technology
secrethistory
softwareengineering

Comments (0)

Permalink

Make your own Compiler

Large Systems Suck

This rule is 100% transitive. If you build one, you suck.

Just one highlight from Steve Yegge’s Rich Programmer Food. In a word: awesome.

design
softwareengineering
education

Comments (0)

Permalink

New Media Problems at the BBC

“iPlayer is swarming with people,” one source, who asked to remain anonymous, told MediaGuardian. “They’re throwing more and more people at it - a classic mistake - while McKinsey suits run around carrying wads of paper and trying to look important. The BBC often tries to be a software development company, and fails every time.”

Bobbie Johnson on where the BBC’s attempt to lead the new media revolution went wrong. Registration required. (Via plasticbag.org)

technology
softwareengineering
media

Comments (0)

Permalink

Guido on Concurrency

Just because Java was once aimed at a set-top box OS that didn’t support multiple address spaces, and just because process creation in Windows used to be slow as a dog, doesn’t mean that multiple processes (with judicious use of IPC) aren’t a much better approach to writing apps for multi-CPU boxes than threads.

Just Say No to the combined evils of locking, deadlocks, lock granularity, livelocks, nondeterminism and race conditions.

Guido van Rossum (creator of Python) discusses Concurrency

code
python
softwareengineering
concurrency

Comments (0)

Permalink

Amazing Tales of Optimization…

…or conventional thinking leads to conventional results.

I’ve come across two articles recently about the non-conventional design and architecture of systems that are yielding some outstanding performance. First up is an article about writing high performance code for the Sony PlayStation 3 (itself an example of a non-conventional hardware architecture).

The second article is a blog post about the architecture of the Mailinator service. It’s a great read about the design of system tightly tuned for its purpose.

design
code
softwareengineering
architecture

Comments (0)

Permalink

Javascript: A Plea for Sanity

Look, pay attention folks. Javascript is a great, powerful little language (simillar in many respects to that other great embedded scripting language Lua). Unfortunately, due to its history, and various bits of maltreatment by some of its users, it’s gotten an absolutely filthy reputation as a language you just “copy and paste” with, and can just “hack” with (in the worst/false sense of the word).

Also, most developers simply dont care. Javascript is just that after thought language you have to use when you get down to the presentation layer on your enterprisey web application (all the SERIOUS stuff is done in C#/Java/[insert your SERIOUS ENTERPRISE LANGUAGE here]). So you just hit the web and copy and paste some code, maybe include one or more AJAX libraries here and there, and who knows, somehow get the stupid thing working.

Urgh.

That hairball of Javascript that you tangled together is someone’s maintainence nightmare. If there is any justice in the world, it will be YOUR maintenance nightmare. So if you are going to write Javascript, how about taking the time, care and attention to at least get the basics right, and code in a sensible, safe and professional way? It really isnt that hard at all, and there are some great resources out there to help you.

The very least you can do is read Simon Willisons’ presentation and notes from his ETech Javascript Tutorial. If you haven’t done any Javascript in a while, this material is gold.

If you really want to get the full lowdown on Javascript, read this book:

The 5th Edition was published in August last year, and its the single best Javascript book I’ve seen. It covers pretty much everything, the core language, client side scripting, AJAX, the works. Good stuff.

openjsan.org is the JavaScript Archive Network - “a comprehensive resource for Open Source JavaScript libraries and software”. So if you are going to reuse some Javascript code, you can do it in a modular way and not using horrendous copy and paste hack hack hack “methodology” every scriptkiddie with a modem was using back in 1995.

Other libraries you might want to check out for slick AJAX’y goodness include:

So there you have it. A list of useful resources to help you get some Javascript mojo. .

javascript
softwareengineering

Comments (0)

Permalink