Browsing the archives for the Computers category.


Is the iPad for me?

Computers, Opinion

What’s the question?

Like every other critic and salivating fanboy, I feel compelled to chime in on yesterday’s religious experience in which The Steve descended from on high bearing a tablet. However, this is not a review, but merely a (lengthy) answer to a simple question: is the iPad for me? I won’t be talking about the market for digital content distribution, I won’t be whining about what software and hardware widgets weren’t included, I’m not going to rant about Apple’s closed ecosystem, I won’t be begging to lick someone’s boots for a chance just to touch one. Additionally, although hopefully this is obvious, this is heavy on speculation, since I have yet to actually hold the product, let alone use it for any length of time.

I’ll also take this opportunity to brag that I got 29.5 points on the prediction score card, with only one question as yet unanswered: will textbooks be available (I said yes, and I think this is eventually likely, based on the list of publishers involved). I was briefly unsure if my existing Apple Wireless Keyboard would be supported, but the Design page indicates that in will be, in spite of the existence of the iPad Dock. I got the name right, and most of the detailed features based on the rumorsphere. The substantive places I was wrong were the absence of a camera, the price point (cheaper than I expected), and the lack of any information on iPhone OS 4. I had a hope for an open development environment, but I knew that wasn’t going to be true, so that’s more a self-docking principle point. I failed to predict the dock, and I gave myself a half-point for saying no 3G when there are models both with and without.

Below the cut I’ll start off with a brief history of my personal electronics habits from college through today, and then consider where the iPad would fit into my little niche… and, if it does fit, whether it’s worth it. I’ll also look at what still-open questions about the device would affect my potential buying decision (not the least of which is that I need to try it out in an Apple Store to get a sense of the ergonomics). While I’m only speaking for myself, maybe my analysis will be useful to people similar to me.

Continue Reading »

4 Comments

I Found a Twitter Bug!

Computers, Software

I found a Twitter bug! Hah!

Specifically, certain characters which much be escaped in the GSM 03.38 character encoding are getting treated as the wrong encoding when posted to Twitter from Verizon Wireless SMS, and showing up as ? in text messages sent by Twitter to Verizon Wireless customers via SMS.

I should add that I didn’t find this bug alone – @elliotreed asked why I used question marks to note something in a tweet when I had actually used square brackets around some text. Some quick investigation with him revealed the more specific nature of the problem, but it wasn’t until I actually found out that there was such a thing as GSM encoding that I came up with a hypothesis to explain the character weirdness.

As far as I can tell, Verizon’s HTTP/SMS gateway is now doing the GSM/UTF-8 mapping internally, but Twitter is assuming it still has to send GSM bytes to Verizon, so the encoding is happening twice, or at least attempting to happen twice. Verizon chokes on the GSM two-byte characters, since they’re not valid UTF-8, while Twitter receives certain ASCII-range one-byte UTF-8 characters but converts them as if they were GSM one-byte characters, resulting in a totally different UTF-8 character!

The GSM-to-UTF-8 encoding bug, shown here for square brackets, curly braces, tilde, backslash, and carat.

The GSM-to-UTF-8 encoding bug, shown here for square brackets, curly braces, tilde, backslash, and carat.

The GSM encoding doesn’t allow certain characters as single-byte characters; this appears to be a way to shove a number of European characters into a 7-bit mutant ASCII, with control characters and certain punctuation replaced by characters from the Latin-1 codepage. To some extent this makes sense, given that with the 160-byte length limit on SMS messages you want to avoid multibyte encodings while still supporting commonly used characters (UTF-16 is used for non-roman languages). Unfortunately, this leaves [, ], ~, {, }, \, |, and ^ out in the cold. As a programmer, I use these punctuation characters often as separators in various notations, so it is perhaps not surprising that one of my tweets revealed the problem. These characters can be sent as a two-byte sequence in the GSM encoding, but those start with an escape byte 0×1B, which since it starts with more than one initial bit high will always be invalid as the first byte of a UTF-8 character.

I would have thought that the Age of Unicode would have ended many of these non-standard application-specific encodings (and plus, given the way mobile carriers love to gouge on SMS, if they make your characters take more bytes, they get more money!). It looks like that’s exactly what Verizon is trying to do, in moving to exposing UTF-8 on the edge of their network… they just didn’t tell anyone that they had changed encodings, or if they have, Twitter hasn’t acted on the change yet.

Since Twitter disabled their help ticket creation (probably because too many stupid people were posting the same questions without reading the FAQs), I reported the bug using the Twitter API ticketing system on Google Code.

Short story: if you use any of the punctuation characters above in your tweets, expect texting Twitter users with Verizon to see ?, and expect to receive tweets from them with weird European characters, until this is fixed by one or both parties.

2 Comments

BackSnapper – My First Chrome Extension

Code Projects, Computers

BackSnapper

On a whim tonight, I whipped up my first Google Chrome extension in about 2 hours. A non-trivial amount of time was spent writing it up and making the icons. It’s obviously very simple, but it replicates one of my favorite features of Safari 3: SnapBack (the feature got eviscerated in Safari 4).

Basically all this extension does is add a button to the Chrome toolbar that you can click to jump back to the first page in a tab’s history. I realize the button and icons are ugly; I am not a design-type person.

The BackSnapper button once installed in Chrome 4

The BackSnapper button once installed in Chrome 4

You can read a bit more about my BackSnapper extension, download it if you’re using the developer edition of Google Chrome (currently version 4), or view the code on github.

As Chrome rolls out the Extensions Gallery, I’ll deploy the extension out there. It could probably use some better options, and some smarter heuristics for determining where the beginning is, but for my purposes it gives me the magic button I want.

Installation

You can install the BackSnapper extension from the .zip file more or less by following Step 4 in these instructions. Note that at present this only works for the dev channel (version 4) of Google Chrome.

  1. Download and unpack the .zip file
  2. Select Extensions from the Tools menu.
  3. Click “Developer Mode” on the right in the Extensions display.
  4. Click “Load unpacked extension…” and select the unpacked BackSnapper folder

Development Tips

There were a few things I learned getting this working that weren’t immediately obvious from the documentation:

  • The debug console is per tab
  • You may need to select your injected content Javascript in the debug console to view logged messages
  • For simple calls into content scripts, chrome.tabs.sendRequest() is sufficient, you don’t need to use the more complicated connect() message passing calls.

There were also a few things I couldn’t figure out:

  • Why won’t the current developers-only Extensions Gallery accept my unsigned zip file?
  • Why can’t I determine the current URL in the history after having called history.go()? location.href remains unchanged, and history.current is undefined.
2 Comments

Top 200 Video Games of All Time According to Game Informer

Video Games

Introduction

Oh yeah, I have a blog! Lots has been going on in the intervening months (see my Twitter feed for short attention span details), but I figured a video game post during NaBloPoMo would be a good way to get back on the wagon, even if I’m not actually posting every day during November.

While visiting my Little Brother this weekend, I noticed a rather unusual magazine cover… a (very pixelated) monster from the original Doom. This turned out to be the latest issue of Game Informer, specifically Volume XIX, Number 12, Issue 200. In honor of this decimalist anniversary, they published their Top 200 Video Games of All Time list, which unsurprisingly is linkbait for any video game fan who likes to rant about what should and should not be included in such a list. I ran through my opinions quickly with my Little, mostly fixating on why so many recent games were already on the list, but decided a deeper analysis was in order.

Instead of complaining about the contents of the list, I thought I’d use it to track my personal video game history (much as my father has in the past used the Rolling Stone 500 Greatest Albums of All Time and Rolling Stone 500 Greatest Songs of All Time to guide his music purchases). I’ve also done some histogram breakdowns of what’s on the list. I would say that my guideline for inclusion on any such list would involve adjectives like “innovative” and “influential”, and explicitly avoid conditions like “critically acclaimed”, “popular”, or “best-selling”. This in turn means that inclusion must be viewed through a somewhat temporally distant lens, for sufficient perspective on a particular cultural artifact’s import.

How many of these have you played? Do you strongly agree/disagree with any of the rankings?

The columns are Game Informer rank, game title, platform(s), and year of publication from the original article; I believe using this data for commentary is covered by Fair Use. I added platforms in a few places to account for the particular port of a game that I played. I have also added columns for myself, for Played, Owned, and Completed. The full table and further analysis is below the cut.

Continue Reading »

6 Comments

Satisfy MacPorts Dependencies Locally

Computers, How-Tos

Introduction

Like many Unix geeks, I have software installed that I’ve built manually from source. A good example is my post on compiling django; a number of the relevant dependencies were built in /usr/local/src/ and installed in /usr/local/. I also like using package managers, because if I’m not doing any customization (and the package is common and not hard-to-find), I want to just get the latest version and slap it in the right place. The conflict between the two methodologies is when a managed package depends on software that is already installed on your system, either part of the default configuration (OS X ships with a fair bit of Unixy software included, especially if you install the Dev Tools, although not always a “standard” or particularly recent version) or custom-built.

I recently dumped Fink for MacPorts; while I’ve used Fink for a long time, since an early version was available for Mac OS 10.2 Jaguar in fact, it’s just gotten in a messy state maintenance-wise. I’ve been familiar with apt since using Debian-based systems at the SCCS, but the mish-mash of binary and source items, the preponderance of out-of-date packages, and the apparent need to install 70 metric boatloads of GNOME just to satisfy a few dependencies was frustrating. Of course, MacPorts has its own weaknesses, as do almost all package managers; in particular, none of them seem to be able to track whether a package was installed explicitly by the user or merely to satisfy a dependency. My opinion is that the latter should get uninstalled when all of its dependents are uninstalled, but no package manager seems to agree with me on that. A rant on that probably merits a separate post.

Below the cut is a rough step-by-step guide to creating a local portindex and creating portfiles for your manual dependencies. Note that most MacPorts users would tell you this is a terrible idea, and you should just install all the port dependencies, but I already put the effort into these custom from-source builds and I just want to use them without duplicates getting dropped all over my hard drive.

Continue Reading »

1 Comment

Tweetworks Python API

Code Projects

Tweetworks Python API

Version 1.0.0b1 of the tweetworks package for Python 2.6 is now available. This package implements the web service API for Tweetworks, a Web 2.0 service that facilitates threaded conversations on top of Twitter.

This is definitely a beta, because while I’ve tested everything I can think of, I haven’t tried writing anything seriously complicated with it, although I certainly plan to. Comments and questions are welcome here, or find me in the Tweetworks Developers group or as @UltraNurd. I admit that the documentation is a little light at the moment.

If you’re interested in using Tweetworks programmatically from Python, or want to know more about the service, read on.

Continue Reading »

No Comments

iPhone 3GS

Computers

Yes, I am an Apple fanboy and preordered the iPhone 3GS, which arrived today. To be silly, I recorded a quick video of Spot’s unboxing from its own point of view. Be forewarned: the sound of packaging being opened might be a little loud, depending on your audio setup.

Note on the name: all of my Mac devices are named after Star Trek animals, and all of my Windows devices are named after Star Wars animals. This is Spot, as in Data’s cat.

Does anyone know how to correct YouTube’s display to handle a vertical video orientation more cleanly? I just manually adjusted the <embed> size, but on youtube.com it is still horribly letterboxed. A good size appears to be 220×320, but that messes with the YouTube player’s control layout, even though it frames nicely.

No Comments

Spending Time

Computers, Video Games

Playing with Wolfram

I was inspired by a recent tweet by Doc Searls to play with Wolfram|Alpha and get some stats on how old I am. In particular, if you make a query of the form [<month name> <day of month>, <4-digit year> birthday] Wolfram|Alpha (why is there a pipe in the middle of the name?) will calculate your age in a number of differen units, and how many days until your next birthday. You will not be surprised to learn that I am a total statistics addict, so this got my brain juices flowing.

First, I’m 9,720 days old. I recently got a good laugh by pointing out that I was “twenty-six and a half!” after someone commented on how young I look; I think the “and a half” made me sound too much like a 4 year old being ever-so-proud of being closer to 5 than 4 :oD.

Quick aside: someone (I forget who) on a SWIL mailing list suggested the notation of writing search queries demarcated by square brackets, since this is not something that is typically in search strings. This was in response to people saying things like “You should just google “search string”", which leads to nasty quote-nesting problems and also induces some ambiguity as to whether to quote (and therefore group) the specified search keywords. I’m not going to post the full BNF notation for this, so I hope that [<search term> ...] is a clear enough explanation of the format.

Second, I realized that I’m pretty close to 10,000 days old. While I usually am not a big fan of celebrating arbitrary anniversaries, particularly those that favor Base 10 (that’s for all you decimalists out there), I missed 213 days a while ago and I have a ways to go until 214 :oD. Another quick Wolfram|Alpha search ([today + 280 days]). I guess this means I’ll celebrate my 10,000th day of existence on March 12th, 2010. A quick glance at Wikipedia doesn’t indicate anything particularly auspicious about that date, but hey.

Third…

I don’t have a problem

I am of course referring to World of Warcraft. Seeing my age in days reminded me of the /played command in WoW, which gives you how many days you’ve played a particular character. I have only one primary character, which I had a vague recollection of being at over 100 days; however, I have two other level 80 characters (as of Wrath of the Lich King, the level cap), plus a number of mid-level alts as well as some very low-level alts rolled on various other servers either as experiments

I didn’t feel like mathing this all myself, so I grabbed the addon AllPlayed to do the hard work for me; all I had to do was login on each of my characters so that it could accumulate the data. This addon also has some other nice features, including allowing me to see which of my characters are fully rested (giving them the optimal XP bonus while leveling). I enjoy all of the character classes, and while sometimes I’m in the mood for one class or another, I try to make leveling as fast as possible given my play time (which I’m sure is more than most casual players, but less than a lot of people I know and play with, primarily because I’m limited to a few hours in the evening, possibly with longer sessions on the weekends).

The cold, hard total is 179 days, 4 hours, the vast majority of which (61.2%) is on my main Kjallstrom (109 days, 15 hours). That means I’ve spent about 1.84% of my entire life playing World of Warcraft. I’m pretty sure I could have done some amazing things with that time (which probably does not include writing the great American novel), but on the other hand, it’s entirely after work entertainment which most people would spend watching TV (about 13.5% on average over a 65 year lifetime). I would argue that it’s a bit different, given that it’s interactive and social, but I know a lot of people disparage online socialization as “not as good as the real thing”. I contend that I’ve greatly expanded the diversity of my friends on a number of axes thanks to long-term involvement in the guild community.

I’ve been playing WoW since October 2005 (I don’t have an exact date), and I’ve been playing on Kirin Tor (and a member of Mellonea) since November 2005. I did play non-trivially on other servers with real-life friends well into 2006, and briefly convinced them to join me on Kirin Tor, although they eventually gave up on the game. If we isolate the percentage to just the time that I’ve owned WoW, the past 1300 days or so, that gives about 13.7%, which is on par with the typical American’s TV usage.

Even more absurd details below the cut.

Continue Reading »

5 Comments

Nostromo Keybindings for WoW

Computers, How-Tos, Reviews

Introduction

As you may have gathered, I have a… healthy… relationship with everyone’s favorite MMO, World of Warcraft. I forget who originally planted the idea in my head (there’s a good chance it was Lilboo, formerly of the Daring Blades on Kirin Tor), but I decided that I wanted a dedicated game controller that was more than just the keyboard; there’s just too much going on in WoW for an FPS-like control layout, in my opinion. I settled on a Nostromo, and after a few weeks of adjusting, and very few changes to my bindings, I have gotten very used to what may be a very unusual control style.

Verbose explanation of how I use the device below the cut.

Continue Reading »

3 Comments

Windows Setup Fail

Computers

Sometimes, Windows is so damn special it deserves its own blog post. From my work computer:

Setup needs setup to close

Setup needs setup to close

4 Comments