Apple is not Worried

Is a real web site, or is it a parody site like The Onion? Let’s take a look at some claims made in this article about the Vodafone Magic phone.

Vodafone’s new flagship is superb – Apple should be worried – yet the packaging for the HTC Magic is discreet.

OK. Apple should be worried..about what? Let’s see.

…whereas the Storm endured weeks of teething troubles prior to evolving into the best business handset on the market, the Magic weaves its spell from the moment you turn it on.

Does this phone offer Exchange support? Because without that, it’s not going to make inroads into the “business market”.

The handset also lacks a standard jack for headphones; an adaptor, however, is included in the box.

WTF? Another stupid non-standard headphone jack. Awful. Carrying an extra adapter is a pain. I have used headphones with my G1 exactly zero times. It needs a standard jack.

Three aspects are particularly impressive: the first is the touchscreen, which works as effectively as the iPhone’s, and consequently is among the best on the market.

Absolute horse shit. Ask any parent who has these two things in his or her house:

  1. An iPhone or iPod Touch
  2. A toddler

Multitouch is essential. A single touch screen isn’t even in the same league as iPhone. A toddler knows this intuitively. Watch them pinch the screen when viewing photos and playing games on an iPhone.

I have handed my G1 to family members and friends, and when they go into a picture, web page, or map…they instinctively try multitouch gestures.

I love Android, but let’s not be naive about how these phones stack up against the iPhone.

Fixing a Broken Atom Feed

File this under “mistakes and bugs” — my Atom feed was invalid. For each feed entry, I generate a unique ID roughly following these guidelines. I did not, however, include the date in the Tag URI, making my feed invalid.

With only five comics published, I decided to make the feed 100% correct rather than leave it alone, which means changing the unique IDs for each entry. This will confuse newsreaders, as shown here in Google Reader:

Now each feed entry ID looks like this:,2009-04-18:5

The date portion indicates when the tag: URI was “minted”, so it will always be 2009-04-18. Sorry for any confusion this causes in your newsreader.

Exploding Balls

I received an email from Amazon about a product recall for a Valeo fitness ball. Here is a portion of that email:

We have recently learned that EB Brands (Yonkers, NY), in cooperation with the Consumer Product Safety Commission (CPSC), is voluntarily recalling certain FITNESS BALLS.

These sold from May 2000 to February 2009 for between $15 and $30. An overinflated fitness ball can unexpectedly burst while in use, causing the user to fall to the floor.

Consumers should contact EB Brands to receive a copy of the updated instructions on how to safely inflate the ball.

This ranks right up there with “warning: coffee is hot”. The ball is rubber. If you overfill it, it will pop. Is it really that hard to figure out?

I want to see a video of someone falling to the floor when their fitness ball pops. Cue the lawyer comments.

Comic 4 – Linux on the Desktop

Comic 4 is up, go to Twittch to see it.

As requested, the Twittch Atom feed now includes full-size comics.

On a technical note, I publish Twittch using Yummy FTP. Yummy is super fast and easy, but still requires “going into an FTP program” to publish. Via Daring Fireball, I found ExpanDrive a few hours ago.

ExpanDrive looks exactly like what I really need: it treats your FTP site just like a USB drive. If all goes well, I should be able to create a shell script with rsync to publish changed files to my web site, in conjunction with ExpanDrive.

Twittch Update

I posted a new comic over on Twittch a little while ago:

Fail Whale

I wrote a custom static publishing tool that generates the whole site. My tool generates the random links *when I publish the site*, rather than dynamically. With only three comics, this isn’t a big deal. As the site grows, I will use some JavaScript to generate that link on the fly.

For each new comic, I do the following:

  • Create a new, numbered directory on my filesystem.
  • Create an SVG file using Inkscape.
  • Export three images: the full-size comic, a 320-pixel wide mobile version, and a 320-pixel wide teaser comic for the Atom feed and the image shown above.
  • Create a .properties file with the comic title, tooltip, tags, characters, and publication date.
  • Run a program that generates the site on my hard drive.
  • Using Yummy FTP, I synchronize the site to my ISP.

I commit the SVG, PNG, and .properties files to git. I do not commit generated files to git.

Atom Feed

Although the Atom feed appears in the “normal spot” in any modern web browser, a few people missed it. So I put a feed icon directly on the page to alleviate this problem.


I use Google Friend Connect for comments. I just added it a few hours ago, and am looking forward to seeing what kinds of gadgets Google comes up with next.

Why Static?

So why write a static publishing tool?

  • I don’t want to deal with WordPress upgrades.
  • I want 100% control over every single URL.
  • I want the most scalable possible site in case I’m ever on Digg.
  • I can (and do) store all content in git with full history.
  • Because I wanted to.

Future Plans

You’ll have to stay tuned. But I do plan to publish at least weekly, and a mobile version of the site is high on my priorities list.

Announcing Twittch

There won’t be any more comics here on Instead, head on over to, my new webcomic.

I’ll post a tease here as each new comic comes online. Here is the first frame of Comic #1:

Inbox Zero

Inbox Zero

And here is the first frame of Comic #2:

Beautiful Wife

Beautiful Wife

Consider the new site *pre-beta* quality. I have not tested the site with Internet Explorer, for instance. I have ideas for many more features, but I wanted to publish the site now rather than wait several more weeks. I do have a day job, after all.

Google Inc. Q1 2009 Earnings Call Transcript — Seeking Alpha

There are announcements happening between now and the end of the year that are quite significant from operators and new hardware partners in the Android space, which I won’t preannounce except to say that they really do fulfill much of the vision that we laid out more than a year ago.


Posted via web from Eric Burke

Phipps is Wrong

Sun’s Simon Phipps is wronger than wrong:

Whether you agree with Sun policing it or not, Java compatibility has served us all very well for over a decade. That includes being sure as a developer that all core classes are present on all platforms. Creating sub-sets of the core classes in the Java platform was forbidden for a really good reason, and it’s wanton and irresponsible to casually flaunt the rules.

He’s talking about Google’s JRE Class White List for Google App Engine. The white list is a subset of JRE classes that work on Google’s App Engine hosting environment.

I seriously doubt Google set out to “casually flaunt the rules”. I find it far more likely that Google sought to support as much of Java as possible within the confines of their data centers.


Java is over ten years old, yet I write this blog on WordPress, a PHP application. PHP is ubiquitous and cheap with virtually any ISP, Java is not. Java hosting is expensive and consumes a lot of server resources. For this reason, server-side Java is largely limited to in-house deployments on company servers.

Now Google offers a way to cheaply host server-side Java applications that gracefully scale to hundreds…perhaps thousands of servers. This is wonderful news!

Yes, Google only supports a subset of Java. Rather than calling this “wanton and irresponsible”, how about recognizing this as an engineering tradeoff? We programmers give up some flexibility in return for the ability to scale cheaply and easily.

Other Examples

There are other ways to scale Java to many servers. None are possible without tradeoffs. MapReduce tools like Hadoop require a completely different way of designing your applications and are not appropriate for most applications.

Terracotta tries really hard to be transparent, but you won’t have much luck running it with Java WebStart apps. That’s one of the engineering tradeoffs you live with. Much like Google App Engine’s white list, Terracotta has a list of Non-Portable Classes. Those are the breaks with distributed computing.


Much like App Engine, GWT also supports a subset of the full JRE. That’s because GWT needs to generate JavaScript to run in the browser.

Is GWT another example of Google casually flaunting the rules? Really? GWT is one of the most innovative, cutting edge products I’ve ever seen. It is a marvel of ingenuity and can only support a subset of the JRE because of its nature.

Fully supporting every JRE class and method in a sandboxed environment like GWT is impossible.

Java ME

Sun’s own Java ME supports a subset of the JRE, currently limited to JRE 1.3. See CLDC and MIDP.

Some people say Sun chose a subset of JRE 1.3 as an engineering tradeoff because mobile devices and embedded systems cannot support the full JRE.

But we all know the truth. Sun is wanton and irresponsible to casually flaunt the rules with Java ME. Shame on you, Sun.