Brian Lam on the iPad#

Probably my favorite "review" of the iPad so far (and yeah, I've read them all), if only because it's a bit different, kind of like the device itself. An enjoyable read.

(I of course will write up something at some point, but definitely feel I need more time with it before committing myself to anything. Sentiment so far: I really enjoy using it, and look forward to that time each night when I can just plop down on the couch and sip from the content firehose.)

The great baseball card bubble#

American boys growing up in the 1980s [and 1990s] approached Beckett Baseball Card Monthly with something like religious reverence. For many of us, it was the first magazine we bought and the only one we leafed through regularly. […]

What none of us understood at the time was that Beckett's guides were probably creating card prices just as much as they were reporting them.

For those that don't know, I was, uhh, obsessed with basketball/baseball cards when I was younger (surprise!), and my guess is that many of you reading this now also were into cards around the same time. Enjoy.

Demo of Photoshop's upcoming content-aware fill tool#

Words fail me. In an odd way, this actually is a bit frightening — has Adobe beat everyone to the AI punch?  ;)

I'm hoping beyond hope they roll this into Lightroom in relatively short order, but my guess is that it's going to be many years before we see it there.

Real-time feed processing and filtering#

This post is about web syndication feeds (RSS and ATOM), technologies for real-time delivery of feeds (PubSubHubBub, RSSCloud) and two opportunities I believe could help make these technologies better and widen their adoption: real-time feed processing/filtering and end-user selection of processing/filtering services.

RekindleIT redux

March 13, 2010

Late last year I linked to RekindleIT, an awesome service that lets you send — over the air — any web page to your Kindle. In that bit I said the following:

Works as advertised, though it definitely would be much more useful if it filtered the content through Readability (or similar) before pushing it to the Kindle; without such a filter you run the risk of having to sift through all kinds non-content stuff, which can be terribly annoying on a page-at-a-time e-ink device.

Accordingly, if the site doesn't offer a print-friendly formatting option (read: most sites, especially blogs), you're kind of out of luck and probably are better off reading the article on your computer.

If you, like me, find yourself not using RekindleIT as much as you would like because of this very issue, then I've some good news for you. A few days ago, John Singleton, the founder of the company behind RekindleIT, emailed me to let me know that the latest version of the service does the Readability-like formatting I mention above!

I've thrown a number of long-form articles at the updated service and it has handled them perfectly. This changes my whole game. Seriously. Now when I come across an especially long article that I know I'm going to want to read on my Kindle DX, I simply hit the bookmarklet and *boom*. That's it. (Of course, this introduces the problem of there being no non-manual way (of remembering) to link to an article I've just read on the Kindle; on the computer I just use a bookmarklet to jump into MarsEdit.)

Finally, it would be remiss of me to not mention that Instapaper (which I've written about many times before) has been offering similar functionality for a while; however, the key difference here is that RekindleIT lets you send to the Kindle on an article-by-article basis.

The iPhone's missing feed reader#

Nice write-up from Shawn Blanc on the state of (GReader-syncing) feed readers for the iPhone. I've written about this sort of thing extensively here (and on Twitter), and as most of you already know, Reeder is, by a mile, my app of choice. (I've used them all.) I love nearly everything about it; it's pretty, fast and fun to use.

However, I do have a few niggles:

  • Inability to save/restore state, which Shawn discusses in his overview.
  • When backing out of the last item in a particular feed, it doesn't dump you into that feed's folder (or root); it brings you back just one level (i.e., to the list of items in the particular feed) and you're required to tap either the checkmark (i.e., "mark all as read," even if all items actually have been read) or the ‘back one level' button in the top left.
  • No way to set a max number of items to process at a time — it's either all or nothing. For example, if I have a feed that has 100 unread items, I have to commit to getting through all of these items (and eventually marking all as read) before doing anything else, because it won't let me act, in bulk, on fewer than all of them. This requirement sometimes prevents me from looking at high-volume feeds, because I know I'm not going to be able to make it through the entire list before having to back out of the app. (This obviously would be a non-issue if Reeder maintained state.)

For the life between buildings - some notes on the iPad#

I'm not advocating for multiple computers necessarily - as Apple would have it: an iMac in the living room, a Macbook Pro on the desk, an iPhone for walking, an iPad for the transient bits in-between etc. But it is relatively smart of Apple to now have a stratified yet integrated range of products across all those spaces, you must admit.

What is time?#

[Y]ou can't define a consistent arrow of time if you can go into the past. Because what you think of as your future is in the universe's past. So it can't be one in the same everywhere. And that's not incompatible with the laws of physics, but it's very incompatible with our everyday experience, where we can make choices that affect the future, but we cannot make choices that affect the past.

Our world may be a giant hologram#

Our everyday experience might itself be a holographic projection of physical processes that take place on a distant, 2D surface. […]

3D information about a precursor star can be completely encoded in the 2D [event] horizon of the subsequent black hole - not unlike the 3D image of an object being encoded in a 2D hologram.

Depression's upside#

We suffer -- we suffer terribly -- but we don't suffer in vain. […]

Andrews and Thomson see depression as a way of bolstering our feeble analytical skills, making it easier to pay continuous attention to a difficult dilemma. […] If depression didn't exist -- if we didn't react to stress and trauma with endless ruminations -- then we would be less likely to solve our predicaments. Wisdom isn't cheap, and we pay for it with pain.

Create a simple timer using LaunchBar and AppleScript

February 24, 2010

The problem

I often find myself at my computer waiting for a specified length of time to pass before taking action on something. These waiting periods and actions aren't the type you'd normally associate with GTD or similar, and to that end really aren't fit for OmniFocus (or whatever to-do app I'm using that day); they're more ephemeral and immediate, and thus require a different approach. Examples include:

  1. Remembering to leave in 10 minutes to pick up the takeout order I just made.
  2. Remembering to get the coffee out of the french press in four minutes.
  3. Remembering to call someone back in 20 minutes.
  4. Remembering to take the pizza out of the oven in 15 minutes (when I'm not within earshot of the oven alarm).
  5. Etc.

You get the point, and I'm sure you've a billion use-cases of your own. The real problem with me is that sometimes I get so engrossed in what I'm doing on the computer that things like those listed above simply slip my mind, often to frustrating ends (e.g., a burnt pizza). In light of this, I wanted a simple and frictionless way to set up reminders for things that needed to be done in the very near future.

The solution

Truth be told, I didn't even want to bother with this if I couldn't find a solution involving LaunchBar, because, well, I use LaunchBar for everything. Fortunately, and due mostly to another project I'm working on (and eventually will discuss here), I knew LaunchBar was perfectly suited to the task, and that a solution using it and AppleScript would be fairly simple.

Since the second release candidate of LaunchBar 5, the application has included an optional after delay argument for the display in large type AppleScript command, which displays given text in a semi-transparent window across the center of your screen. The argument takes values like "1m," "5m30s," "1.5h," etc. (Note that you also can use values like "2 minutes," and "1.5 h," but for the purposes of my AppleScript (shown below) you'll want to keep spaces out of the argument, because they're used as delimiters.) As you probably already guessed, the argument causes the display in large type command to do nothing until the after delay period elapses, at which point it displays the string it's been given.

Accordingly, all that needs to be passed to AppleScript is a period of time and the message you want to see once the period of time has elapsed (e.g., "Get pizza out of the oven 15m"). The AppleScript I whipped up simply grabs the last word of the string you pass in (i.e., the after delay value), waits for the specified time to elapse and then displays your reminder message (minus the after delay argument) until some positive action from you (i.e., either a keystroke or mouse click).

on handle_string(msg)

    set duration to last word of msg
    set mLength to (count characters of msg)
    set dLength to ((count characters of duration) + 1)
    set reminder to (characters 1 thru (mLength - dLength) of msg) as string

    tell application "LaunchBar"
        display in large type reminder after delay duration
    end tell

end handle_string

To get this up and running, paste the above code into a new AppleScript file and save it to ~/Library/Application Support/LaunchBar/Actions. Keep in mind that the name of the LaunchBar action will be the name of the file (e.g., I called my file timer.scpt, and so to launch the action I type "timer" into LaunchBar).

For those of you just starting out with LaunchBar, or heretofore using it only to launch applications, realize that in order to get your reminder message and timer value into the AppleScript action, you simply need to hit the spacebar once your action is highlighted. For example, in my case, I invoke LaunchBar, start typing out "timer" until the action is highlighted, hit the space bar and then punch in, say, "Check on clothes in dryer 10m." Easy peasy.

And yes, you can run multiple timers at once.

New approach to generating truly random numbers#

The German team has now developed a true random number generator that uses an extra layer of randomness by making a computer memory element, a flip-flop, twitch randomly between its two states 1 or 0. Immediately prior to the switch, the flip-flop is in a "metastable state" where its behaviour cannot be predicted. At the end of the metastable state, the contents of the memory are purely random.