Every Phone Is Smart


Neopoint 1000Once every radio used transistors, we stopped saying Transistor Radio. Once every TV had a color screen, we stopped saying Color TV. And now that every phone is smart, we can stop saying smartphone. In fact the sooner we stop, the better, since unlike transistor radio and color TV, the term smartphone confuses everybody.

‘Smartphone’ started off meaning a phone that could do something - anything - beyond making a phone call and sending a text message. The Nokia 9000 Communicator and the pdQ were freakishly smart, but Sprint called the NeoPoint NP1000 (left) a smartphone because it had a WAP browser and its black and white screen was larger than normal. That set the bar pretty low.

It is ten years since these phones came to market, and today almost every new phone in the world has a built-in camera, a color screen, an HTML browser, a calendar and address book that you can sync with your desktop, and can download a wide range of games and applications. Every phone is smart.

But surely some phones are smarter than others? This is where it starts to get confusing. One phone may be more powerful or capable than another, but it could be on any of a dozen different measures: my phone may have a 3.2 MP camera, but yours may be better for instant messaging.

(more…)

Detail-oriented Programming


What is a full-stack web framework, and what is it good for?

Back in the day (which day being 1995 or thereabouts) there was essentially one web framework. It was a Perl module, called CGI.pm, which decoded the CGI request and provided functions to construct HTML and a CGI response. (CGI.pm is still around, but the past tense adds to the mood of misty reminiscence.) It didn’t have a template system (but Perl “here documents” let you embed HTML directly in your script), or session management (you rolled your own—it’s not hard), or a persistence layer (you used the filesystem, or DBI.pm to talk to SQL databases), but it was simple, easy to use, and easy to understand.

Now, after more than a decade of progress, we have this gigantic Java stack trace of a system running various frameworks and libraries. Somehow I don’t think this monster of delegation is the “full stack” that people have in mind. This setup does not seem easy to use and understand. How did we get here? As usual, with the best of intentions. We’re programmers, so we invented abstractions.

(more…)