iPhone 4 The Tie

I reserved an iPhone 4 the day preorders opened – I didn’t actually order one since I couldn’t get through Apple’s website; I reserved one via the Apple Store iPhone app instead. Turns out this was about as good an outcome as waiting for it to just be available, since I wouldn’t have had to wait in a 6-hour line, like I did. I even made fun of the people waiting overnight to get their iPhone so they don’t have to wait during their workday, but there I was. I am such a tool.

Now whether I’m a tool for actually BUYING the new iPhone is debatable. Getting a new phone usually results in me MAKING money, because I can sell the old one, sans contract, for about the same price of a new one, plus AppleCare, plus tax. Disregard the fact that I took time out of my work day to get this phone, which cost me almost that amount in lost pay. It’s not lost! I’m on contract! I can make it up whenever I want! Ugh!…

No, the reason I might be a tool is because of Early Adoption Syndrome. The new iPhone has two flaws, both of which I’m not sure if Apple will have a solution to anytime soon.

First, it’s the infamous left-handed signal loss issue, which does affect me, because I am left-handed. Almost all of the calls I’ve made so far have required that I move my hand from the natural phone-holding position, lest the calls be dropped. It’s a real shame. I can’t start holding it in the other hand because it’s still difficult to lift my right hand to my face. I really don’t want to buy a case because I keep the phone in my pocket and I can see the rubber conflicting with the ease of taking it in and out of my pocket. That, and I don’t feel as if I need to buy something extra to correct an inherent design problem.

Second, it’s FaceTime: it might work right out of the box, but it doesn’t when you restore your old iPhone’s backup onto the new phone. You can’t re-enable it: the option just plain disappears from the phone settings screen. The only way to get FaceTime to work is to restore your iPhone to factory settings and start from scratch, which would be fine, if it wasn’t for one thing: Final Fantasy II. The game, and many other games I have on my phone, have save data which I want to keep around (the data screen reports I have spent 23 hours and 18 minutes on the game so far). So basically, I need to finish up the game – which, by the way, runs just amazingly on the new phone compared to my old one – before I can restore and enable FaceTime. Which is fine, because I don’t know anyone else with an iPhone 4 and the feature is a gimmick just like video chat has always been.

Overall I’m glad I upgraded, mostly due to speed concerns. The OS and apps just blaze along. The new higher-resolution screen is pretty, but doesn’t really affect my experience that much. Due to the reception problem, I might have been better off buying an iPhone 3GS, which is also pretty fast. But I’ll deal with it. Maybe Apple will come out with a software update that will solve both problems. Probably not. But there’s always hope.

Binary Image Converter

Binary Image Converter

I made another HTML5 toy! It deals with binary images that print ASCII messages when converted, and vice versa. Try it out!

Last night, I noticed chickensnack‘s favicon on his site – I converted it to a binary string by hand (by literally typing out the 1’s and 0’s), and then feeding it through a binary-to-ASCII converter I found through Google. I decided that there must be a better way!

I wrote this toy to function almost entirely in JavaScript, so everything except form submission and image verification happens in JavaScript. This includes the actual pixel manipulation to read or generate a bitmap, thanks to data URI and canvas.

I learned how ASCII and binary are converted from one another – JavaScript has a handy function to parse a binary digit into an integer (parseInt(x, 2)), but not the other way around. I also learned how to convert images and canvas data into base64-encoded data URIs, meaning that I don’t need to temporarily host an uploaded image on my server – just process it in memory and spit it back out in the response.

This toy (currently) only works with ASCII, meaning you’re out of luck if you try throwing Unicode in there. And also due to the way that browsers display non-printing ASCII characters, you’ll run into problems if you try encoding any old image into ASCII. Perhaps I’ll create a variation that converts the binary into base64 intermediately, so non-ASCII characters can be displayed properly. This would be incompatible with the version I’ve made, though.

Some examples for you to try:

Source for this can be found here:

Magic.

Jeffrey: carl and ellie cant be in the same world as andy because they are more cartoony than andy
Jeffrey: i refuse to believe it……
Anna: what will it take you to believe?
Anna: a wizard?
Anna: I can get you a wizard
Jeffrey: FETCH ME A WIZARD!
Jeffrey: ONLY THE FINEST WIZARDS, CLAD IN SILKEN ROBE AND CAP
Jeffrey: WITH A COMPENDIUM OF MAGICAL KNOWLEDGE RIVALING THE GREATEST OF DRAGONS!
Jeffrey: They’re over there in the supply closet.
Anna: yeah, I ordered too many last time
Anna: we are in abundance of wizards

jeffreyatw.com v13

After a few years of my site sitting around and doing nothing, I decided I’d have it continue to sit around and do nothing… IN STYLE!

I made my site all HTML5 and CSS3-ey by using more semantic elements and some nice gradient and shadow stuff. The site looks best in Chrome, but degrades gracefully in other browsers. I load my portfolio’s section names via Django, and I request my Twitter and LiveJournal feeds via JSONP. Furthermore, there is only one image on the page, the photo of me – everything else is done up in CSS. All in all, it’s a pretty and pretty simple site.