Category Archives: Technology

It’s like WebOS all over again

So a long time ago, Palm had a pretty neat idea: there’s web applications almost literally everywhere, so why can’t we start using them directly on hardware?

(Note that I have no idea if this was the actual question they asked, but for my purposes, it’s good enough.)

From this they created WebOS, which ran on their Pre phones.

WebOS was pretty freaking awesome. Everything on the hardware was exposed through a pretty nice JavaScript API; you could play music, access location, dial the phone, check email, contact instant messaging services, whatever. The UI was created entirely with HTML and CSS, and they shipped a pretty nice set of “widgets” (basically, CSS and JavaScript) to quickly add UI elements.

There were tons of features that were really, really genius on the Palm, that has yet to be copied to Android, iPhone, or WinPhone. If nothing else, I still believe that the Palm/WebOS touch-based interaction was so much farther ahead and just damn better than all the others.

Anyway, it wasn’t all sweetness and light. There were … problems:

  • They used a forked version of the otherwise wonderful WebKit, that never quite worked just like the iPhone or Android browsers, so you had to deal with yet another layout engine.
  • Their JavaScript engine was JavaScriptKit, which is a good engine but at the time it wasn’t as fast as, say, v8. Today the benchmarks war is often one of increments but at the time, it was provably slower.
  • At the time, people were raving over a bunch of games and apps (mostly on the iPhone) that simply aren’t possible with HTML5 today, much less 2009. Need proof? See this list. Show me HTML5 versions of those apps. Hell, show me Flash versions of those apps.
  • jwz detailed his difficulties in getting one of the first apps onto their app store, among other problems.

Palm eventually gave in and shipped a sort of “native” runtime, allowing developers to ship C/C++/whatever apps.

You could make small complaints about the hardware, as well: AAPL was really hitting their design stride in 2009, and the Pre was a noble but ultimately failed effort to make a device that really stands out. It was really good but only when placed against the not-an-iPhone pack.

(Daring Fireball has some thoughts from mid–2009 that are pretty spot-on.)

Ultimately I think had Palm been competing in a world without the iPhone, it would be the #1 device today. They just didn’t get a critical mass of developers to attact enough users, because everyone was gaga over the iPhone.

So what’s this got to do with anything? Well, there’s this: Boot2Gecko. The tl;dr is simple: “Take WebOS and s/WebKit/Gecko/g”. It’s the same story as WebOS.

Seriously. Watch this presentation and tell me, that’s not the same stuff Palm said 3 years ago.

I really wish someone from Mozilla would explain how their thing is going to be any different, other then they have experience making “web APIs”. They’re not even targeting a hardware platform, like Palm did; so they are already 1 step behind Palm, who at least had a reference platform and “total package” right out of the gate.

I’ve reverted to Firefox and Tbird lately, because Safari is going through yet another spurt of growing pains and Google can kiss my ass. It’s pretty amazing how Firefox has been able to turn the ship and go from crashy bloatware to speedy; just a year ago Firefox was basically unusuable for me (and if Chrome’s adoption is any indicator, a lot of people) but I’m actually pretty content these days. I imagine others would, too, but they’ve already leapt on board of Chrome and one browser switch per generation is enough for most people, especially if the story is simply “hey, it sucks less now”.

So I’d really like to know why I should bet the farm on Boot2Gecko; why I should tell my bosses, “No way, you guys, the future isn’t Android and iPhone, it’s gonna be this MozillaPhone thing”. I’d really like to know how they’re going to overcome all the problems that killed Palm.

Translating the “Rails is DEAD!” talk to plain (?) English

So apparently a bunch of people woke up this morning and decided Rails sucks.

Let me translate some of this for you.

I’m becoming more and more certain that this means that Rails-style MVC frameworks on the server-side are going to end up being phased out in favour of leaner and meaner frameworks that better address the new needs of thick-client architecture.

Uh, yeah.

What that means is:

Part of the reason we have these monstrous frameworks is because at some point all software is just one giant if/switch around the seemingly endless list of bugs stemming from one of (client OS, client hardware, client browser, client plugins, deranged and clearly pants-on-head-stupid client workflows, and the vagaries of quantum physics.

But, because programmers think code rusts, and we love to rewrite the HELL out of it, we come up with new and exciting ways to do just that.

Much of the OP‘s complaints can be easily and succintly explained by simple things: IE6 is now dead, most browser vendors have some sort of agreement to not put us all though the same old BS browser war we went through last time. JavaScript is now a “first class” language and not an annoyance for “know-nothing” Web designers or inflicted on the company “rock stars”. Enough JavaScript exists “in the wild” that we have stable platforms to use to build apps.

So! It’s the trifecta of awesome rewrite-your-app time:

“Everyone’s settled on non-blocking IO as the only way to scale.” ”Client-side tempting is where it’s at these days.” ”We’ll less trouble since it’s all the same language and platform everywhere!”

Time to rewrite those apps!

Fast-forward 2 years when “I’m becoming more and more certain that this means that Node.js-style single-threaded engines with client-side logic are going to end up being phased out in favor of leaner and meaner megathreading frameworks that better address the new needs of the quantum-core architecture”.

The Enemy of my enemy

In “Web Sites and a Plug-in Free Web“, IE’s “Program Manager Lead” says:

“A plug-in free Web benefits consumers and developers and we all take part in the transition.”

I’m sort of cynical about this whole “no plugins” thing, when it comes to Microsoft. IE was a submarine made of Swiss cheese for the most critical years of the the web – crashy and a security nightmare.

The reason it was a security nightmare was because of plugins. And it was those plugins – mostly ActiveX controls and Flash, among others – that Microsoft needed as a critical cornerstone of its “embrace and extend” policies.

So: the web community in general looks forward to a world without plugins, it’s sort of annoying to have you guys act magnanimous and not acknowledge that you played a pretty big role in creating the mess.

 

New Phone!

I got a new phone, and a new phone number. If you’re curious that number is:

 

 

Contrary to what you’d probably guess, I didn’t get an iPhone; I got a Blackberry, and the free one at that (a 9300 series).

“But Blackberry sucks! They’re going out of business!”, you may think. You’re right, sort of.

One thing I learned since I got an iPad was I don’t like the smartphone form factor. Increasing the size of the device (what seems like the current Android device solution) to me just seems to create a form factor that’s further inferior to both the slightly smaller iPhone and larger iPad.

The things I want most from a phone are the 3 “T’s”: Talk, Text, and Twitter. I’d like decent email support. And that’s … pretty much it. Maps or a web browser or Angry Birds or ssh or 10 billion other things, I simply don’t do. I made myself angry (and spent too much money) trying to convince myself otherwise.

For all of the OMG BLACKBERRY SUCKS talk, it is still a pretty good email and text device. From my point of view, the recent problems with RIM are more about “how did you idiots make so many bad decisions in a row, when you were on top?” more than “your technology sucks”. They’re making bad decisions with an otherwise workable tech platform.

One day, when I go places and do things, maybe I’ll upgrade to an iPhone. Until then, my iPad is all I need for most everything, and the Blackberry is my ideal handset.

Syncing and RSS readers

Brent Simmons, he of NetNewsWire fame and demigod of the indie Mac scene, details all the problems with syncing in general and Google Reader in particular.

I disabled Google Reader sync last night and switched back to NetNewsWire on the desktop, doing local sync.

On the plus side, there’s not a HUGE amount of feeds I follow any more. Also, I never go anywhere so the lack of Google Reader sync isn’t crippling.

BUT: my main use case is, Mac downstairs as “digital hub” and iPad everywhere else (couch, bed, porch, etc). Unless I’m sitting at my Mac to do work, I’m using my iPad; I watch TV on my Apple TV; I listen to music streamed from the Mac via Home Sharing from iTunes.

What I really really want is to have NetNewsWire/iPad to sync to the desktop, much in the way the Yojimbo iPad app does.

I know it’s not some “look at me I’m SUPER MOBILE”, work-at-the-coffee-shop thing, but it works great and is probably (hopefully?) less error-prone than the scenarios Brent describes.

Not understanding the lessons of history: Windows 8 is going to be a *smash hit*, you guys

Extremetech asks the question, “Is Microsoft flailing?” with respect to Windows 8 and some serious criticisms.

Very interested in a “withering” criticism of Windows 8 and Metro, I click through, and what to my wondering eyes should appear, but those 2 words that send shivers through my spine:

John. Dvorak.

People. John Dvorak has never been right about anything, ever.

The Macintosh uses an experimental pointing device called a ‘mouse’. There is no evidence that people want to use these things.

(Source)

And from there it’s been one endless pageview troll after another, for his entire career. I’m pretty sure he’s never been right about anything. (Wikipedia calls it his “pithy” style “attracts critics who point out his frequent—and occasionally egregious—errors of prediction”.

So from that you can pretty much expect that Windows 8 and Metro will be a smash hit, much like the “mouse” that no one wanted.

Let’s build an ecommerce web app, Part Two: 3 letters, 3 more, and then 3 more still

So! You’ve made it this far. What do you need to start thinking about? Probably what kind of bitchin’ language and framework you’re going to use, right?

No.

The first thing you need to think about is SSL.

So here’s the deal: totally really smart people often make the mistake of thinking about SSL. They get hyped up to use some big “cloud” thing and forget the golden rule of SSL:

No virtual hosting.

Hell you might even be saying right now, “Crap you’re right, I forgot about that!”.

It might not matter to you, though. In our experience, customers demand that the checkout process occur on their domain and not at storename.somecompany.com. Your mileage will vary. Bear in mind, though, that the two paradigms – hosted checkout versus integrated – will strongly affect all your future technical decisions (which is why we talk about it first).

There’s hope, though: SNI. The short answer to “what is SNI” is “SSL virtual hosts”.

The downside is everyone’s absolute favorite piece of technology, Internet Explorer 6, which doesn’t support SNI. Because IE6 ruled the roost for so long (hell we’re still waiting for it to go away), adoption of SNI has been … slow.

You could decide “screw IE6″ and start using SNI today; check the wiki article for all the stuff that does support it, it’s pretty comprehensive. You can make that call today.

In our experience, approximately 100% of the web-browsing public uses IE6. That’s not a joke: almost 100% of our customers are using IE6 on XP right now, and close to 100% of their customers are using IE6. Your mileage will almost certainly vary.

It’s the first big design decision in your app: do we support IE6 at all? Doing so will dictate a lot about front-end development (Javascript frameworks), and as I said, whether or not you want to deep-drive into SNI or stick with the tried-and-true SSL configuration (1 IP per host). Do you want to “funnel” your customers into a unified checkout or have virtual hosting with the checkout process on each host?

 

Let’s build an ecommerce web app, Part One: You might be insane

SO! You’ve decided to enter the fray and start your own internet company: you’re going to develop and host online stores, targeting all sorts of businesses.

Frankly, you’re insane: people will throw dump-trucks of money at you if you try to “change the world” by opening up a new social network for chinchillas, or a Facebook app that simulates sitting in traffic. Trying to enable small merchants to sell stuff online isn’t really all that world-shattering. No one really cares.

After all, they can just host their store at a big existing commercial provider, like Yahoo! Stores; or they can roll their own store with Paypal; or they can get some commodity hosting and install a free cart app.

Well, yes. You can do all those things. And sometimes, they’re good ideas. Other times, they’re not. How do you know? You don’t. Each of these solutions offers a certain level of pain: for example, installing a free cart app on commodity hosting means you are now a designer, sysadmin, programmer, and IT manager. The hoster probably has N other customers running who-knows how many other random free cart apps; if your store is down their level of commitment may end at “well the web server is up and running, so it’s your problem”.

That’s the essence of your business case: the “easiest” options are in fact complex and fraught with peril. You’re an expert in the tools, the tech, and the business know-how. Host with us, we’re awesome!

I don’t want to talk about business; I don’t know it. I wanted to instead go with what I know, technology. Let’s assume you’ve got a co-founder with great hair and a flawless smile to handle all the business stuff, and you’re in charge of the technology. I want to talk about bytes, not bucks.

On our next episode: 3 little letters, then 3 more, and how they’ll make your life miserable.