What programming is


Making software that works is really hard. I don’t say this because I’m a programmer and I want it to sound more impressive; I wish it were easier. But we programmers put endless hours into getting it right, and still your laptop blue-screens, your phone reboots, the rocket crashes into Mars.

The words we use to describe making software (in job ads, for instance: develop, design, write, architect, build, engineer) are glibly positive. They make it sound like a monotonic process, like laying bricks. But any programmer knows that working code comes in fits and starts. Most of the hours go not into designing or building, but into understanding: what a library call actually does, what’s happening in some code you’re trying to modify, why a bug doesn’t show up in the debugger. (This is why it’s hard to estimate how long a programming task will take; to estimate the task you have to understand it, but it’s the understanding that takes the time.)

Perhaps the best way to describe it is this: making software is reasoning about code. The methods of reasoning about code are the same as those of math or logic - considering all the cases that might arise, arguing by induction, breaking a larger argument into parts - although in programming we usually do it informally. In order to do a better job of programming (to program faster, with fewer bugs), we have to do a better job of reasoning about code.

In my next few posts I’ll talk about a few ways we’re trying to do that at Skydeck.

Content Will Be Free


Russell Buckley reports a claim that the global market for paid content on mobile phones is already worth $20 billion, while the market for paid content on the web is worth only $4 billion. I don’t know the ultimate source, but the numbers probably aren’t far off. Does this mean that consumers are happy to pay for mobile content, or that the mobile market is somehow healthier than the market for content online? Russell is doubtful, and he’s not the only one.

Consumers don’t have any choice about paying for mobile content. Carriers exert so much control over our phones that in some cases - I’m talking about you Verizon - we can’t get free content onto our phones even if the content provider wants to give it away. (more…)

Carnival


For more commentary about the mobile market, check out this week’s Carnival of the Mobilists at Michael Mace’s blog.

Languages for talking to phones


There are a number of runtime environments available or in the works for open phone platforms (e.g. Python, Perl, Ruby, Java). Instead of using one of these, we decided to port a runtime for a language you may not have heard of, called OCaml.

If you’re interested in writing code faster and with fewer bugs, you should give OCaml a look. Its advanced type system prevents whole classes of bugs in the same way that garbage collection does. We like it so much that we use it whenever we can.

At first we thought that “whenever we can” meant only on the server; we thought the time it would take to port OCaml to phone operating systems would be prohibitive. However, after a little investigation, we decided to port the bytecode runtime to the Nokia S60 platform. It is turning out to be easy. The runtime is a beautiful piece of code and very portable.

Doing our own port gives us the same degree of control as writing native code, while retaining the productivity advantages of a runtime environment. It also helps maintain portability across different platforms.

We expect OCaml to make a big difference in our ability to get working software out the door. Programming everything in C++ seems insane by comparison.

Prepaid Rules


Prepaid Cards

I am skeptical about a lot of MVNOs. These companies used to be called resellers: they resell wireless service from one of the ‘legacy’ operators, under their own brand. Mobile Virtual Network Operator may sound fancier, but it’s the same strategy. The problem is that you are always competing with your own suppliers.

Running a carrier is a capital-intensive business, and most people assume that the MVNOs with the most money will win. But I am most skeptical about the big, well-funded, highly visible MVNOs, because they compete with their own suppliers for the most valuable customers in the market. Unless you can switch suppliers easily (they can’t) or you have some feature that your supplier cannot replicate (they don’t), this is usually a bad idea, no matter what you’re selling, be it books, groceries, or wireless phones.

I think the most successful MVNOs will come from the wrong side of the tracks: companies selling prepaid service to customers with no credit or low credit. (more…)

Use a runtime environment in mobile development


Mark Lam wrote a great post Monday about reasons to choose Java for embedded systems development. He starts with an anecdote about wanting to abstract away the complex security issues involved with native programming by creating a scripting language.

However, in order for the content to be interesting, the scripting language needed to provide more and more functionality like that of a full programming language. After numerous enhancements to the script engine, eventually I realized that I am re-inventing a solution just like the Java programming language.

This path has been — and likely will continue to be — followed by many companies building mobile products in order to isolate security risks and provide custom adapters for platform differences across a broad range of handsets. But it’s a lot of work to build a runtime environment from scratch, so Mark is hoping to persuade his readers to choose Java before investing in that work. Because he is addressing an audience of embedded system developers, some of Mark’s points and his ultimate conclusion do not necessarily apply to mobile ISVs. However, his underlying argument is sound: using a runtime environment provides many advantages, and rolling your own will come up lacking.

Just in case you’re not convinced that you should seriously consider using a runtime environment for mobile development, the Symbian Developer Network is publishing a series about it. The first two present a business case (pdf) and describe the concept (pdf).

Today, if the handset runs an OS with a closed development environment, then the only managed environments available are JavaME and in some cases, Flash Lite. But a lot of interesting possibilities exist for handsets that have an open development environment, such as Symbian (S60/UIQ), Windows Mobile, Linux. Coming up, we’ll talk about some of the possibilities we considered and what we wound up using.

Crippled N95


Carriers have crippled another handset. This time Vodafone and Orange removed access to Internet telephony from their branded Nokia N95. Andy at VoIP Watch suggests that it may be possible to reflash the phone to Nokia’s original settings. But be warned, you will probably void your warranty in the process.

In his post, Andy also reminds us about the E62 on Cingular: it’s just like its E61 twin, except with Wi-Fi removed. That difference is a hardware change, so reflashing won’t solve the problem. Of course, this practice of crippling isn’t limited to GSM carriers or even just Nokia phones. Verizon Wireless is a major offender as well (note that it may be possible to fix Bluetooth in some Verizon Wireless branded phones after purchase, but the details are murky).

Yet another reason to buy your N95 directly from Nokia.

Welcome to Skydeck


Skydeck is a new company, founded by Jason Devitt and Mike Wells. We haven’t announced what we’re up to yet, beyond saying that we have ‘a new approach to the market for mobile and wireless services’, but if you subscribe to this blog you’ll be one of the first to know.

In the meantime we have lots of opinions about the current market for mobile and wireless services, which we will be venting here. We think that almost everything about this market could be improved: buying a mobile phone, using a mobile phone, the high cost of phone service, the technology, the regulatory framework, the structure of the market itself.

You may or may not agree with us, but either way we want to hear from you. All spam-free comments are welcome. We promise to be polite and we ask the same of you. We hope that you stick around.