Concern

In which we worry and complain out loud in our outside voice.

longnow:

A History of the Sky

Google Maps Adds Bike Directions 

I’ve used the “walking” maps feature to get an approximate idea of how far/how long/what the route looks like, but this is awesome, and couldn’t have come out at a better time.

Final Fantasy for iPhone 

It’s still downloading, but I still haven’t picked my jaw up off the floor. This will probably beat working, oh yes it will.

iCrossFit Lite

I noticed that another CrossFit iPhone app appeared on the App Store, which, automatically, made them my competition and therefore mortal enemies.

Just kidding.

But I still think my app is better, and I want to tell you why it is, not only because I want people to purchase my app instead of theirs, but more because I think apps like this don’t do much for the mobile application marketplace: they aren’t of any quality, don’t have any sense of design, and otherwise basically command the very cheap price attached to them. The problem is that it’s difficult to make a decent application that can survive, if it’s swimming in an ocean of mediocrity.

But to the app, which I did purchase, so I could try to give a fair review for it.

First Impressions

The thing I like the best about this app is its apparent focus on a core function: starting a workout. The first screen after the app loads is a big wheel with workout names, a button that lets you select that workout, and a button that selects a random workout. Selecting a workout brings you to another screen that describes the workout, and has a big green button that starts the workout (e.g., it starts a timer, or opens a “score card” kind of interface). This is one thing the app does right:

The most common function should be the most obvious one in the interface.

At the description screen, you can also look at the workout, broken down into the various movements. Now, the first time I played with it, I chose “CrossFit Total,” and saw that the third lift (Deadlift) in the list (that is, in a UITableView) had a bug: the disclosure indicator was the wrong one. Instead of the expected plain gray chevron, it was the white chevron in a circle — the former means “tap this entry to bring up detail on this item,” while the latter means “tap this circle to edit or view detail about this item, aside from the function that tapping the item itself does.” And, when I tried tapping the “Deadlift” item, the app crashed.

This should be rule number one about developing a mobile app, or if not #1, at least damned near the top of the list:

You cannot have bugs in basic navigation in an app, ever.

A bug like this indicates one thing: a novice programmer. Learning while shipping is OK, for indie developers with limited resources. I’m in the same boat, since I’m learning a lot while shipping an app. But if you’ve clearly just started learning how to develop for the iPhone, and ship a product with bugs as fundamental as this, it is seriously difficult to think how you can demand a price to be paid for that app, even if it is only 99¢.

Features for Features’ Sake

Tapping on a movement — when it works — brings up an sequence of photographs that show an athlete performing the movement. This is a decent way of illustrating a movement, and it was something that I originally conceived of having in WOD: photographs, illustrations, or videos/animations of each movement. It would have taken a ridiculously long time to produce these, however; it even took too long to write up a brief paragraph that explained the movements in WOD, and I don’t think I did that great of a job.

But the thing I realize now is that:

An application on your phone is not a replacement for a coach.

You likely fall into one of two categories, as far as CrossFit goes:

  1. You have never worked out at a CrossFit gym, and may only be familiar with some of the movements or lifts used, or

  2. You have been doing CrossFit for at least a short while, and have learned the movements and lifts involved.

If you are in group 2, I find it unlikely that you will need a reminder about how to perform a clean and jerk. A description or illustration of the movement is hardly of any use.

If you are in group 1, an application on your phone will not teach the movement to you. You will not learn how to properly snatch, clean, jerk, press, deadlift, or do anything else by looking at photographs. You need a coach, or at least, a partner, to watch what you do and point out to you what you are missing, or what you are doing wrong.

A brief description of a workout is fine, and is useful — I may forget what Annie is — but an illustration of a lift is not useful. It seems like a useful thing to have in an application, since it adds richer media and provides a reference, but it fails in providing any useful function.

Style and Form

The application is ugly, and poorly designed. That’s subjective and an opinion, but I did put a lot of time into some of the details you probably barely notice in WOD. Some examples:

  • When you update something in one screen, other screens are affected. Like if you add a workout, special care is taken to make sure that the log list is properly updated, so when you go back to that view it looks consistent with what you expect.

  • When you tap the notes field while editing a workout or record, the notes field slides upward, pushing the other fields “off the screen” so the field you are editing takes up all the real estate on the screen, and — most importantly — so the keyboard doesn’t obscure what you are doing.

  • And, more on that point, special care is taken on the size of the text areas when the keyboard is present and when it isn’t: when it’s not present, the text area takes up all the vertical space on the screen; when it is present, the text area’s vertical size matches the vertical space not obscured by the keyboard. It’s a simple thing, but you might miss it: the keyboard, since it’s another layer above your view, can obscure things.

  • When a “wheel” selector is shown in landscape mode, a special background image is used, so the UI element takes up the entire horizontal screen space. This makes it look like the wheel element takes up the entire horizontal space, instead of leaving the sides of the element “blank” and showing the view beneath it.

I doubt anyone ever noticed any of these things, even though they took the bulk of the time to get right. That’s exactly the point: you have to work very hard to make sure people don’t notice things, because if they do notice something, it’s likely that it’s unpleasant to them.

iCrossFit has the feature over WOD where you can time a workout in the app itself, but here’s the problem: when you finish a workout, it isn’t listed in your log! You apparently have to quit the app and relaunch it for new log entries to show up. This is fundamental when programming with UITableView — you have to reload the data when needed, so it shows up properly. But yes, it violates what’s expected to happen when you move through the application’s flow.

You have to meet the expectations of people using your app.

This goes for visual style, as well as expectations of how things flow. For an app on the iPhone, this means that unless it is an app where a unique visual style makes sense — games, obviously, and these small, single-function apps that use a unique and beautifully-designed visual style — then you should follow the form and style of Apple’s apps. iCrossFit Lite flaunts this convention a little, not egregiously; mostly it just uses the standard widgets in the wrong contexts, or overloads them so they’re too dense and hard to look at. Garish colors are used too much, as in, are used at all.

You should never format a time as “min: 03 sec: 41”.

Overall, iCrossFit Lite is an attempt at a grander, richer feature set than WOD’s deliberately modest attempt, and it’s embarrassingly amateurish and buggy.

Made, Is Making, or Will Make? 

Nice piece about the pitfalls of selling iPhone apps, and of predicting in any reasonable fashion what future revenue an app will bring.

And, I can confirm myself the strange “good sales until they drop by 50% for no explicable reason” behavior of the App Store. Now, competition is one obvious reason, but I’m not sure if it explains it completely.

Playlist.

Select all and delete in Outlook Web Access

So, my mail reader helpfully doesn’t delete messages, but moves them into a “Deleted Items” folder, which keeps growing and growing in size, and I eventually can’t use email anymore because I’m taking up 900+ MB of space with deleted shit. My mail reader (Evolution, which sucks royally) is being helpful and isn’t displaying these phantom messages. The only way I can view all these messages is with Outlook Web Access.

OWA, being a piece of shit, doesn’t have an option to “select all” messages in a screen. JavaScript, and Safari’s developer’s console, to the rescue:

deleteall = function ()
{
    doc = document.getElementsByName("viewer")[0].contentDocument;
    form = doc.forms["msgViewer"];
    chks = form.elements["MsgID"];
    for (var i = 0; i < chks.length; i++)
        chks[i].checked = 1;
    doc.location = "JavaScript:SetCmd(document.msgViewer.CmdDelete.value);";
}

Now call deleteall() repeatedly until everything is expunged.

Addendum: and yes, we get hands-free goodness with setInterval("deleteall()", 2000).

HOWTO: Rip Vinyl With GarageBand

I’ve seen some posts on discussion boards about this, but nothing in very much detail about ripping a vinyl record to digital audio using a Mac and GarageBand.

This is my workflow:

  1. Get a turntable with USB output. Ones from ION seem OK. Some audiophile might recommend something else. Good for them. Plug this turntable into your Macintosh.
  2. Open GarageBand.
  3. Start a new project. I used the “Loops” preset, but it probably doesn’t matter.
  4. Select Track » New Track… and create a new “Real Instrument” track.
  5. Select GarageBand » Preferences… and choose the “Audio/MIDI” tab. Select “USB Audio CODEC” in the list for “Audio Input”.
  6. Make sure your new, empty track is selected. Choose “On (no feedback protection)” in the “Monitor” section on the right hand side (click the button with an “i” in a circle in the lower right corner if you don’t see this on the right hand side). That is, if you want to listen to the record as you record it.
  7. Start playing the record, and start recording with the big round button with a circle in the middle on middle bottom panel.
  8. Wait for the entire side of the record to play. Click the record button again to stop recording.
  9. Scan the waveform you see for silent bits; these are usually the places where the track splits are. Once you’ve found a place to split the track, place the cursor at that point by clicking in the timeline at the very top.
  10. Select Edit » Split to split the track.
  11. Select Track » New Track… and create a new “Real Instrument” track. Select one of the tracks you just split and drag it into this new track. The goal is to have each song from the record in its own track. Repeat 9, 10, 11 for all tracks on that side of the record.
  12. For each track, make sure it is the only one not muted (the speaker symbol in the track control on the left-hand side. If it is blue, it is muted, and if muted, the waveform will be dimmed). With a single track not muted, select Share » Send Song to iTunes. A dialog will come up where you can fill in the album and artist metadata. The track will get sent to iTunes, where you will probably need to select “Get Info” on each track to edit the song name, track number, etc. Repeat this for all tracks.
  13. Once you’ve done that for the entire album, compress the songs in iTunes by selecting them, control (or right) clicking and selecting “Create AAC Version,” or “Create Apple Lossless Version,” or “Create MP3 Version” or whatever. You may also be able to choose “Get Album Artwork” and get the cover art.

(ps for ryan)

Spinning for a minute.

I may have a problem.

(via youmightfindyourself)

Roger Ebert: The Essential Man 

I had no idea that R Ebert had cancer, or had lost most of his lower jaw and his ability to speak to it. I agree with the consensus that his writing has been phenomenal since. This is a nice, long piece about him.

Guy is hanging out.

More Information