waffle

Waffle was a weblog that ran for nine years and five days from 2003 to 2012.
The last post has been written and comments will be closed by the end of March 2012.
The author of Waffle, some guy in Sweden, also occasionally writes stmts.net.

(If anything will ever succeed or revive Waffle, it will be announced in this location, and in the feeds.)

Fixin’

Paul Thurrott is right, in part: “It’s either dazzling or retarded”, and by “it”, he is referring to everyone’s favorite phone.

Especially, Paul nails the MMS scenario.

If you’re not familiar with the iPhone, the number 1 and 3 requests above work in tandem to perform what is, quite possibly, the stupidest thing I’ve ever seen on the device: When someone does try to send you an MMS message, it appears in the SMS application with a link to a Web page so you can go and view the content. (So much for the iPhone’s multimedia prowess, eh?) But the link includes a user name and password. Since you can’t copy and paste (a la complaint number 3), there’s no way to actually view that content without either memorizing the user name and password, and switching repeatedly between Safari and SMS, or by … get this … writing down the user name and password on a piece of paper and then manually typing that info in after you go to the linked Web page.

Paul doesn’t seem to be able to mesh the concepts of “people liking iPhone” and “iPhone sucking in places where attention has not been paid”. Most things that are there (feature-in-an-application granularity) work, and almost unconditionally work a lot better than on any other phone I’ve tried. The execution of “reading a thread of SMS messages” is great, but the execution of the SMS app is bad, despite this, because you can’t zap individual messages. It’s that everything else is simply not there that’s frustrating.

The average phone’s ways of receiving a Bluetooth file transfer, composing an MMS message, managing the phone-wide documents folder, searching data phone-wide, turning on SMS message receipts, selecting and copying text, or bulk deleting fifty SMS messages in the middle of the five you want to keep are dreadful. But if you compare it to not having any way at all to do those things, dreadful will often do just fine. And no, none of these things can be added by “legitimate” application development.

Moreover, I advise that the iPhone software platform must be opened.

This Isn’t in the Script

Before long, Ruby will nearly be compiled Objective-C, and C# will be able to run in a REPL loop, run eval and call out to methods decided at runtime. Languages and language implementations are converging and sprawling to the point where it’ll be a gooey mess in 20 years. (And maybe, just maybe, the C++ Mars lander will run with garbage collection by then.)

In the light of this, I propose that “scripting languages” is starting to become an obsolete measure in terms of categorizing different language genres.

I also propose a new measurement of three tell-tale signs for a modern, refined language:

  • A native variable-size, read-write list type used as the primary list type in the language’s (de-facto, if needed) standard library.

  • Regular expression literals or range literals available. (Or literals for more oddball things like dates or XML.)

  • Sufficient metaprogramming capabilities that any regular object can be replaced by a mock object without runtime errors related to method dispatch, given that the mock object’s methods return values that may be random or nonsensical but also structurally consistent with the replaced object.

I will provide justifications for these three signs:

  • We’re not programming C anymore. Arrays are convenient containers in a language on that level, but they are inconvenient in terms of getting things done since they doesn’t match very many actual use cases.

  • We’re not programming C anymore. Having more concepts at your disposal gives you more ways to think about a problem. String manipulation and pattern matching are common enough that it should be easy to deal with the problem, and to the extent that regexes are helpful in solving these problems (and they’re not always), reducing the distance to regexes from the language is beneficial. Ranges are similarly an intuitive way of thinking about parts of lists and about iteration.

  • We’re not programming C anymore. Metaprogramming is something many people are comfortable with because it makes the code’s pattern and intent clearer. Its presence is also indicative of a language with flexibility and few static constructs, which makes it easy to adapt it to attack newer problems, like parallelizing iteration (where that makes sense).

The attentive reader may have noticed a theme. I’m not ragging on C and C++, I’m simply stating that for most problems, the upsides are really starting to outweigh the downsides across the board, for almost any “modern” language, in going for them instead of C and C++. It’s gotten so far that most of the upsides are also finding their way into the newer languages closer to the C-end of the stick. Which brings us full circle.

Moreover, I advise that the iPhone software platform must be opened.

2008.11.04

Yes, you can.

Yes, you will.

Update: Yes, you did.

Welcome at last to the 21st century; where “wings take dream”.

« Newer posts