Send emails to OmniFocus with Airmail

I’ve been using Airmail for over a year now as my primary email client for OS X – it’s wildly customizable and handles multiple Gmail accounts in a fairly sane manner. A benefit of being a third-party mail client is that it’s reasonable to build in support for other third-party apps: after all, a mail client can’t and shouldn’t handle everything. While Airmail includes support for tools like Calendar and Reminders, it’s not uncommon for Mac power users to be using something besides those (especially in the case of Reminders).

OmniFocus time! … 

Hello

Another year, another blog.

I’ve been using Jekyll for years now, and I’ve built up a pretty good collection of Markdown files from various versions of this blog.

The problem I continue to run into is that deployment (and by extension) writing isn’t very fun. So I’m trying something new, by sticking to good old WordPress.

I want to write more about process, and workflows. I’ve spent a lot of time intentionally rebelling against talking about that, because it’s a lot of the things I read on a regular basis and a lot of the content I was into when I was finding my internet “identity”.

I recently started as an engineer at Simple, and I’ve been thinking a lot about my processes as I start somewhere with both the opportunity to redo my current systems and the influence of years of functioning systems to look towards (i.e. Simple).

So what will I be writing about here? Right now, GTD, Mac applications that drive development, small programming hacks that aren’t insane technical articles, instead, things that are actually helpful. I’m tentatively excited about writing on more non-technical things; I’ve felt a lot of pressure over the last couple years to do just that.

I’ve also imported a lot of my posts from my old blog onto this site. The import process was a little wonky: I wrote a Ruby script to parse the Markdown files (and their YAML headers) and convert them to a CSV. I then used a WordPress plugin to do a CSV import. Unfortunately, some things didn’t make it over – I scrapped most of the posts involving embedded code (honestly, there weren’t a ton) in favor of the ones that used GitHub’s Gist tool. Some of the embedding code from previous versions of Jekyll and Octopress didn’t make it over either, as the conversion for that would require some Regular Expressions from hell. Additionally, at some point the dates got screwed up as well. This bothers me more than random formatting stuff, but for now it’ll work. I may go back and re-import and try not to lose those, but for now I’m happy to just have them on the site.  Regardless, they’re there as an archive, and of course, they also sit on GitHub in a fairly non-destructive fashion.

And with that, we’re off.

You Should Learn Vim

Vi IMproved, or Vim, is my favorite text editor. It has a big learning curve, and it’s certainly not beautiful, but it is tough as nails and is installed on almost every *nix system by default.

I want you to learn Vim because I think it’s the best tool for programming. I’m not an expert at Vim – I’ve been using it since February 2013, but I know enough to love it and recommend it to any programmer looking for a new, powerful editor.

vimtutor

If you have Vim installed, you most likely have vimtutor installed as well. Type vimtutor at your command-line and follow the ~30min tutorial built into Vim. It’s quite helpful and teaches you a great deal of Vim up front. You might not remember it all the first time, because there is a lot of stuff to learn. Try doing it once a day for three or four days, and it’ll begin to stick. Once you finish that, we can begin to actually use Vim.

Freedom

Here’s my set of commands you should know in Vim (case-sensitive!):

  • i: Insert mode. This is the mode most editors are in by default. When you type, those letters actually appear in the document.- Escape: Escape exits whatever mode you are in back to normal mode. If you start messing things up, press escape.
  • u: Undo. Bonus points if you set a persistent undo folder.
  • CTRL-r: Redo.
  • V: Visual block mode. You can select multiple lines in this mode and yank, delete, etc.
  • y: Yank. Adds your selected text to a buffer and makes it pastable somewhere else.
  • p: Paste. Pretty self-explanatory.
  • x: Delete a single character.
  • d: Beginning of delete motion. dw, for instance, deletes to the end of a word.
  • dd: Deletes an entire line.
  • ciw: The c motion removes and enters into insert mode. ciw deletes a word and goes into insert mode. I use this a ton.
  • gg: Go to the beginning of the document.
  • G: Go to the end of the document.
  • 99k, 99j – All commands in Vim allow you to prefix with a number. For instance, typing 9k or 99k will go up nine lines, or ninety-nine lines.
  • / – The forward-slash enters search mode, which will move your cursor to your search query if it exists on the page. Press enter to stop searching and stay at that result.

There’s a lot more commands than that, but you can be very effective in Vim just by knowing these short few. How about some customization?

Customization

Keep a .vimrc. Vim is incredibly customizable and you’ll benefit from spending some time tweaking it. Some of my favorites:

  • vim-update-bundles is the best way I’ve seen for managing Vim plugins. Run vim-update-bundles after editing your .vimrc to install new plugins.
  • Remap Caps Lock on your keyboard to Control. The EmacsWiki has a good guide to doing this on various systems.
  • Steve Losh has a great blog post on setting some sane Vim defaults. It’s served as a good template for my own .vimrc. Definitely read through that.
  • If you’re a Rails programmer, vim-rails is your new best friend. Commands like gf and :Rmodel user are incredibly powerful. If you ask me, it’s worth switching to Vim just for this plugin.

You can see my .vimrc on GitHub.

Vim has a reputation for being incredibly difficult, but with things like vimtutor, it becomes very demystified. I love Vim for its speed, portability, and power. Since I switched to Vim, I rarely leave the command-line during coding sessions, and in general my focus has increased. If you’re a beginning programmer looking to take the next step in your code, consider getting out of the GUI, and into Vim.

Finally, regarding other text editors. Some people like Emacs, others like Vim. I’ve used Vim, but I am interested in Emacs. Arguing about text editors is stupid – you don’t call someone out on what car they drive to work because that just makes you an asshole. That being said, I’d be remiss if I didn’t include this hilarious XKCD on editors:

XKCD #378

The Playlist

In 2012, I was kicked out of WWU for having a terrible, terrible GPA. The kind that someone has who doesn’t give a shit about any part of education. That wasn’t my issue. I was depressed because the Computer Science program at Western had turned out to be exactly what I didn’t want to study. I had grown up my entire life thinking I wanted to be a programmer. I had been using computers since before I could even formulate real words.

The CS program was all math and logic. The programming language we learned was used in air traffic control computers, and at colleges. This wasn’t the programming I thought I was signing up for. Programming, to me, was making things – taking a system capable of far more powerful calculations than myself and manipulating it into producing real, composite software.

Months before that, I had stumbled upon something that seemed closer to what I imagined programming to be. It was Try Ruby. Ruby was different than what we were learning in school – it was concise, beautiful, and fun. I didn’t fight Ruby to accomplish my software goals; it had systems in place for helping me. Right before school ended, I came across the Rails Tutorial. This was even better. Not only did I have the power of Ruby to write beautiful code easily, but Rails extended that so that my software could be accessed by the internet. It was amazing – and it still is. Every day that I work in Ruby or Rails is a reminder of the crash-and-burn year I had after high school, and the fortune that this language and framework brought me after that.

In May, my hope to work as a programmer had begun to fade. If I couldn’t get a degree, how would I be hirable? I decided that I should try freelance work and see if I could actually build anything with the small amount of skills I had. Luckily, I had family and friends who needed things to be built. Nothing complicated, mostly static sites with a bit of dynamic content. On June 9th, I began work on the first of these sites. I sat down at my desk and wrote rails new redsashimi1. Red Sashimi was my freelancing moniker, as I thought it would sound a bit more official as a company name. I filed an LLC – Red Sashimi Inc.

I also began a playlist at that time. Spotify was fairly new, and their collaborative playlists were the best way to create group playlists that I had ever seen. My girlfriend and two of my close friends began adding to it, and they would come in during the week and hang out as I worked. It started as a couple songs that we were listening to at the time – mostly singles, a couple weird songs that we were fond of.

In the next week and a half, I finished the client project. I was paid $800, which was more money than I had ever made in a single paycheck. It was amazing. The site was deployed on Heroku, and was launched without a hitch.

This was amazing! I had made something, and it existed on a publicly accessible URL! I had made many websites before – WordPress and Drupal were both pretty familiar to me to the point where I could comfortably launch both of them from scratch with no trouble. But this was different. A couple months ago, a Rails app was a huge, scary folder structure I didn’t understand. And to be fair, it still was in a lot of ways. Regardless of this, I had something to show for my studies – something I never had in the Computer Science program at school.

I continued going to school, at WCC, a local community college. They didn’t have any computer science classes. I took classes like Creative Writing, Women’s Studies and the intersection of it with Math and Science, and Classic Films. It was what I had imagined college to be in the first place. The freedom of learning anything and everything, given you’re willing to put in the effort. I had been so focused on the CS program that it had brought me down emotionally and educationally, but at WCC, I built myself back up again.

I kept using that same playlist from June throughout the year. My tastes in music continuously rotate, but this set of music represented something optimistic, something that made me incredibly happy every time I listened to it.

In January 2013, I became an intern at Carnes Media and began being paid to write code. It’s been the best job I’ve ever had, and I haven’t really looked back, until today. Before 2013 started, I had already switched to Rdio for streaming music. I switched to Android this fall, and relied on Rdio almost entirely for my music. Last week, I switched back to iPhone, and also back to Spotify.

For the first time in a year, I looked at the Red Sashimi playlist in Spotify. There’s songs added by my friends, my girlfriend, by a version of myself that is a lot different than how I am now. It’s remarkable.

When I listen to it, I remember sitting at my desk, hanging out with my friends, listening to the playlist on my favorite set of speakers, my red BX5a’s. Time passes really, really quickly.

I began adding more songs to that playlist today. Tracks I had listened to a lot on Rdio, things I had heard in-between, even songs I had missed the first time around. After a couple hundred songs, it finally hit twenty-four hours of non-stop music.

I’m proud of that milestone, and I’m proud of all the other milestones that it reminds me of along the way. Here’s to 2012, 2013, and 2014 to come.

Comcast is the worst company ever

But if you’re a customer of theirs, you already know this.

Comcast recently began sending out modems that have router functionality built-in. This is awkward because up until this point, Comcast has treated routers as a nuisance, something that they encourage during their technical support.

The modem-routers are mandatory, and resemble an obelisk:

Obelisk

So I began installing the one provided for my house. We previously had a Comcast-issued modem made by Motorola, and an Airport Extreme as a router. Both work great. The Airport is an awesome, hassle-free router that my parents could configure themselves if they really needed to. The modem is, like any modem should be, fairly straightforward: a passthrough for all the connectivity in your house. You don’t think about the modem. It shouldn’t be a point of confusion or failure, because there’s no way to configure it. You’re entirely at the mercy of Comcast if the modem is faulty, and you lose all connection until you can get it resolved.

This is the issue with Comcast providing both your modem and router. There is only one point of failure, and now it all belongs to Comcast. Wi-Fi isn’t working? If you determine it’s not user error, you are now entirely at the will of Comcast.

I swapped out our old equipment for the single obelisk, and it worked great! Who would’ve thought? Comcast provided something that worked on first try, without even needing to read the instructions.

And then it all came tumbling down. First, the internet. The internet has to be first because it disables you from reading any support documentation online. Next, the phone. The phone has to be second because once you have no way of resolving things yourself, they must also take away your ability to get in contact with their support team. They do, however, keep the TV alive. You have to have something to keep you sane as you sit on hold with Comcast via cell phone.

I was on hold with Comcast for thirty-five minutes. In this time, I deduced the following:

  • The internet functioned for about three minutes after a factory reset of the modem-router (referred to past this point as the Cobelisk1).
  • The Cobelisk would then attempt to download a firmware or package from Comcast to set the speed of the internet connection (I didn’t save the logs, which would be handy here).
  • That file was corrupted. It would throw an error at this point, thus causing the internet to go down.
  • The Cobelisk began attempting to resolve the remote IP settings every minute, crashing on what appeared to be a invalid/corrupted MAC address.

This is where Comcast support comes in.

Hello, this is Comcast Customer Support. To whom do I have the pleasure of speaking to?

Kill me, please. My experience with Comcast support usually involves me having a fairly comprehensive understanding of what part of the system is breaking, and the Comcast support contact refusing to acknowledge this.

He asks what the problem is. “Our modem is requesting a corrupted file from your servers, causing the internet to fail, followed by the phone lines. It seems like we either have a faulty modem, or you guys have it configured incorrectly on your end.”

Pause.

“I’m going to have you unplug the modem. This is a black power cable on the back of your modem. Please unplug this and wait thirty seconds.”

What do I say here? That I’ve done this already, a dozen times, and that I’ve proceeded past this point to just wiping the entire thing over and over again? The Cobelisk doesn’t need power cycling, it needs assistance from their end.

But we do this anyway. And after this, he encourages me to do a factory reset of the Cobelisk. So we do this as well. Fifteen minutes later, absolutely nothing has changed.

“Sir, I’m going to check on our systems to see if we’ve sent you a faulty device.”

I stay silent. This has to sink in for a minute. Comcast is sending broken pieces of equipment to their customers, asking them to install it, and then likely repeat this same process I’m currently involved in across the country. Is there an easier solution? Sure – just make sure the POS works before it gets to our doors.

It’s a faulty modem. He suggests that we visit our local Comcast store (I don’t even think we have one of those in a thirty-mile radius) and get it replaced. Somehow, this has become our problem to solve. I mention this to the Support technician (which I’ve realized is a gracious description at best):

“Can you ship it to us? I mean, this is your guys’ problem that you’ve sent a faulty product. In the meantime, we have no internet or phone, which multiple people in this house depend on for various businesses. Can you expedite it or something?”

He offers to get it shipped to us in five days. This is a whole business week. I remember that, following Comcast’s instructions, we’ve already sent the old modem in the mail to them.

“Five days is a whole business week. There’s no way to get it here any faster?”

He pauses. He offers a ‘better’ solution: three days, but we pay for the shipping rate.

My mom takes the phone at this point, and suggests that is quite possibly the worst service we have ever received, both from Comcast and maybe any company, ever.

They drove a technician out today and fixed it for free. In classic Comcast fashion, they left before changing the network’s SSID and password back to what it was before this, when things were in perfect working order.

This is Comcast, the monopoly that runs through all of Washington. They are evil, sneaky bastards. And they are most certainly the worst company, ever.

  1. That is, the Comcast Obelisk.

Cascadia Ruby 2013

Cascadia Ruby was on the 21st and 22nd of Octoberthis year, in Portland, Oregon. I flew from BLI to PDX on Monday morning witha coworker and flew back Wednesday night. Some brief observations and notes:

The conference had a great selection of speakers. I also attended Waza thisyear, in San Francisco. The technical lineup was fantastic (honestly, sofantastic that it probably would be hard to match) but there were a lot ofnon-technical talks; enough that it was detrimental to the whole conference.Cascadia, on the other hand, had a great selection of technical andnon-technical talks (technical being defined as “Is there code on theslides?”). It was a single-track conference, which I think I enjoy more. Thetalks are very concentrated in quality in a single-track conference – itdoesn’t feel like spots are being filled with mediocre talks for the sake ofbeing filled.

My favorite talks definitely gravitated toward the technical presentations. Thetalk about music and programming stood out to me because I have pretty strongopinions about music; naturally this spills over into what you listen towhile you work. The speaker had great taste in music – he mentionedpost/math-rock bands and gave particular shout-outs to Don Caballero and Toe,the latter of which is one of my favorite bands. The talk on imposter syndromeand shame resonated with me – I still feel massive amounts of impostersyndrome after coding for a couple years and working in the industryfor almost a year. I should write something about that.

Ryan Davis gave an amazing presentation on his flay and flog tools, whichfunction as code metric tools and function as the backbone of CodeClimate.

Jerry D’Antonio talked about multithreading and concurrency in Ruby, whichseemed pertinent given the recent Rubinius X announcement about focus on Rubymultithreading. The talk on transcoding video using Ruby was prettyinteresting, though I predicted before the talk even began that it would focuson ffmpeg and utilizing it through Ruby. The process of relying on S3 andpassing data around between clients and EC2 servers was very interesting aswell.

Portland is a beautiful city. The food is on average really good, and thecoffee while I was there was always smooth and dark. The public transit systemis really marvelous – the light rail reminds me of the rail system in Tokyo,which ranks as my favorite mode of transportation in the world. There are busesconstantly, and barring those two options in odd times and places, the Car2Gosystem works tremendously. Amiel and I made use of his Car2Go membership andwere blown away at how intuitive it is. The Car2Go parking agreement with thecity dictates that it can park in any metered parking without paying forparking – if you’re staying for an extended period of time in a place withexpensive metered parking, it can quickly become a better deal. I’m planning onbuying the membership, as it is a pay-as-you-go system compared to the monthlyZipcar membership.

We spent a good amount of time at the New Relic offices.They graciously hosted a party for the conference at their offices after thefirst night, with free food and drink. As I’m not twenty-one until January of2014, I mostly sat around and enjoyed some free food and played with the littlecode projects they had set up around the office. Among these were the Sphero,a Bluetooth-controlled ball, and an accent lighting system around the officethat had an API. sphero (the gem) was written by Aaron Patterson, so we spenta good amount of time digging through that and enjoying controlling the ball aswell as admiring the gem’s structure itself. It was probably the first “code”party I’ve been to – it was a lot of fun.

On Wednesday, we worked out of the New Relic offices since our flight was inthe evening. They were very cool about letting us work there, and we ended upsitting with the Ruby Agent team and making use of their amazing setups. EveryNew Relic employee has a Thunderbolt Display – it was the first time I’ve usedany Thunderbolt accessory on my new MacBook Air. It’s a remarkable monitor andthe integration and extensions that it provides with the Air are reallyfirst-class. I was planning on buying a monitor of some kind in the nearfuture, but it became pretty obvious that there really is no substitute forthat kind of integration.

We flew PDX -> BLI that evening. There was a bit of pre-flight suspense – itwas foggy throughout Washington and if it was too foggy to land in Bellingham,we’d end up flying back to Portland. While landing in Seattle seemed likea more reasonable alternative to me, I was pretty anxious to get home. The fogcleared up before we took off and we landed safely.

Overall, it was a great trip. Portland is really beautiful and I always enjoythe opportunity to go to conferences – I leave a bit more refreshed then whenI arrived. I’ll definitely attend the conference next year, regardless oflocation.

Code Geass: Lelouch of the Rebellion

Code Geass: Lelouch of the Rebellion (コードギアス 反逆のルルーシュ)comes in at number four on my list of favorite anime. It’salso the most recent series I’ve watched to completion.

A sidenote: This will have spoilers. The next couple paragraphs are a briefdescription of the introduction to the series, and after that point, I willtalk about it as if you have seen the entire series. If you haven’t seen theshow, I recommend that you stop when you see “Geass” in quotations.

I enjoy Geass because it is a proud nationalist piece of entertaiment. Thatis, it’s very passionately Japanese and disparaging to other cultures withgreat consistency. This is pretty rare for an anime, I think; while Lelouch“Western-izes” character looks like most newer anime, the storyline is veryanti-European, and the enemy of the protagonist becomes essentially everynon-Japanese at the end of the series.

This isn’t the only reason why I like Geass, but it’s a good framing point.The storyline of Geass is as follows: The Britannian Empire (think Europe) hasconquered most of the world. Years before, Japan was one of these placesconquered and was renamed to the eleventh colony. Japanese are not Japanese,they are “elevens”. Japan’s great national pride has been destroyed, and whileJapan is in a relatively peaceful state, the influence of Britannia pervadesalmost every aspect of their lives.

Lelouch is a high school student (it’s an anime, what did you expect?) in theeleventh colony. He is introduced as a tactical genius, though we can onlydeduce this through his skill of chess. On a fateful day, he stumbles intoa rebellion, where a number of Japanese have stolen Britannian mechs.They are attacking a Britannian convoy which they believe carries a weapon. Theattack begins, and the cargo is abandoned in a building, which Lelouch finds.When he opens it, he finds a girl, who wakes up and gives him the power of“Geass”.

The power of Geass is the ability for Lelouch to go into a person’s mind andrewrite it. This has a number of applications: he can order people through mindcontrol, erase their memories, or plant new/false ones. There are a number ofconstraints that are revealed throughout the series:

  • He can only use Geass once on a person
  • The more he uses Geass, the less control he has
  • Geass cannot be used on another Geass user

Lelouch quickly grasps these powers and uses them for his new mission: todestroy the Britannian Empire and eliminate the Royal Family. His reasoning forthis? He is, of course, Lelouch vi Britannia, the son of the BritannianEmperor, and an heir to the throne.

Admittedly, this plot device seemed thin to me, as it assumes a number ofcharacteristics not uncommon to anime:

  • A high school student
  • A granted power
  • A lofty goal

If these sound familiar, it’s because you might be familiar with Geass’spiritual brother, Death Note. It’s pretty hard to watch a lot of Lelouchwithout seeing the continuous analogies in both story and character throughoutDeath Note. The manga version of Death Note started in 2003 and is the first ofthe two. The anime, however, started within days of Code Geass! From 2006 to2007, they ran in almost perfect sync with each other. I imagine this wasfairly jarring to Japanese viewers, as the characters of Lelouch and LightYagami are fairly consistent throughout the series.

While Death Note ended after a single season, Lelouch continued for a second,titled “Code Geass R2”. Lelouch’s character in Season 2 is very similar toLight in the endgame of Death Note; the first part of both shows is abouta wildly intelligent, calculating leader; the second and final part showsa emotional, reactive character (not unlike Walter White in the final season ofBreaking Bad) who makes decisions that effectively write their own finale.

This similarity could be very off-putting for some, but I found it prettyrefreshing. I enjoyed Death Note more overall, but I found the final episodes(namely, the introduction of Near after L’s death) to be excessive and barelyjustifiable. The series could have ended after L’s death. Geass, on the otherhand, has a clear goal that is established at the beginning of the series, andfollowed through to the very end, with only a couple episodes that serve as anepilogue (and a true resolution) after Lelouch defeats the Emperor.

Lelouch and Death Note work because of the establishment of an incrediblystrong protagonist. Light and Lelouch are idealistic and outspoken about theirbeliefs, and pursue them at the expense of those around them. While some of thedecisions they make are deplorable, they command a certain amount of respectfrom the viewer because they fight for what they think is right, and nothingelse. It’s also worth noting that both characters fight for this underalter-egos: Light is Kira, and Lelouch is Zero.

Geass’s supporting characters reinforce the protagonist in very powerfulways. Lelouch’s crippled sister is a beautiful personification of what Lelouchis fighting for, and in a enjoyable twist, becomes who he is fighting againstas she ultimately chooses her previous family over living in hiding asa eleven.

Lelouch’s appropriation of the Japanese rebellion into The BlackKnights is a fascinating study in manipulation, and their relationship withZero is a good analogy to military command structure. This is one of the mostinteresting parts of Lelouch – his alliance with the Japanese even though he isnot only a Britannian, but a member of the Royal Family. It is remarkable,then, that the Knights’ hero is a part of their greatest enemies, and it’s nosurprise that they ultimately consider him an enemy shortly before he ascendsto the throne.

The mech portions of Geass feel well-done. Giant robot fighting has the abilityto become over-done like the harem style of anime, which has never beenremotely interesting in my opinion. Geass continually elevates the strength ofthe mechs until they are decimating cities at the end of the series, and themoral question of controlling such power is brought to the forefront and givenample exploration. The show also chooses to make the mechs defeatable. It’s notGundam where there are another fifteen mechs for a pilot to jump in after onegets destroyed – the Knights have one superpowered mech that, whenincapacitated, causes serious problems for the group. It’s a nice touch thatharkens back to Evangelion’s treatment of the mech genre. Being similar toEvangelion is always a good thing.

Overall, I really enjoyed Code Geass. Lelouch is a wonderful protagonist andwhile the comparisons to Death Note can be seen throughout the whole show, itstakes territory for itself and is a uniquely complex and smart anime. Whilethe second season slumps in the first third to half, it picks up fora satisfying and unexpected ending that wraps the show up nicely. I recommendit if you’re interested in military strategy (though don’t expect hugelycomplex scenarios, most resolve within an episode or two), racism andoppression (a topic that seems pretty rarely covered), and characterdevelopment over an extended period of time. The show dumps Lelouch on you inepisode one, and you stay with him all the way to episode fifty. That’s nota bad thing when it’s a fantastic character.

AndroVM

I’ve been curious about Android recently – Google Now as a kind of souped-up Siri was the first to stir my interest, then the promise of implementing my own systems to create a real smart phone pushed me over the edge. I’ve spent a good portion of the last couple weeks trying to find a good way to emulate the entire Android ecosystem: not just a emulation for development, but what it’s like to use an actual Android device. Short of buying an actual phone or tablet, the closest thing, I’ve determined, is powerful emulation.

AndroVM

AndroVM solves that problem beautifully. It’s a complete and up-to-date Android distribution, with the most recent firmware (at time of writing, Jelly Bean). It does include Google Apps – Google’s Play store, Search, etc.; I’m not sure on the legality of this, so I won’t outright suggest those distributions. There are builds without Google apps – without that build, however, you’re missing out on Houdini, an addon designed to emulate ARM processing and thus allow apps like Google Search (and consequently, Google Now), to function.

It’s quite simple to get AndroVM running, enough that I can duplicate the steps here:

  1. Download VirtualBox.
  2. Download an AndroVM distributionvbox86p, vbox86t, and vbox86tp refer to the build type of the Android image. As the site makes clear, some apps will only work if the OS is designated as a “phone” (vbox86p/vbox86tp) build.
  3. Download the AndroVMplayer, located on the same page as the distributions.
  4. Import the distribution.ova file into VirtualBox. It’ll automatically set up all the correct preferences.
  5. Run the AndroVMplayer and in theory, you’ll have a running and functional Android build.

Some functionality doesn’t work on an emulated device like AndroVM, but there are hacks around it. The beauty of the Android application ecosystem is that someone has probably figured out a way to do what you’re already trying to do. For example, trying to test out Google Maps or Google Now’s location functionality? An app like FakeGPS can simulate a changing GPS location as well as actual consistent movement.

I’ve only scratched the surface of Android with AndroVM so far, but I’ve been pleasantly surprised. It seems like the OS has taken many steps forward since the days of Android 1.0/2.0. I’ve enjoyed finding many features of the OS that not only match iOS, but beat it entirely!

Something Simple (In Todo Apps)

I’ve been searching for the right todo app for a long time. At this point, I think I’ve used all the “big apps”: OmniFocus, Things, RTM, Reminders.app, Evernote, Wunderlist, The Hit List, Clear, and so on (seriously, there’s so many that I could do this forever). All of them worked great in their various ways – powerful location-based reminders, contexts, due dates and notification systems, etc.

I’m not a power-user by any means: I usually add a half-dozen tasks on a “busy” day, and I don’t need to do powerful filtering like in OmniFocus or Things. Location reminders are nice, but I usually remember to check my lists when I go to the store or to work.

I have only one feature that I’ve looked for in an app, and until now, I haven’t found it: tagging. The ability to tag something, and then easily go back and look through those tags. OmniFocus does this with contexts, but you have to organize those contexts ahead of time – same with Things.

I discovered Cheddar a couple weeks ago and have been incredibly happy with it. It’s not updated frequently (in fact, it’s for sale at time of writing) but it follows the workflow I need:

  1. Make a tag – the Twitter-style hashtag notation works fine.

First view

  1. Tap/click on that tag to see all of the tasks. THAT’S IT. It shouldn’t be too difficult to do that, but Cheddar is the only thing that seems to do it in the way I want.

Second view

Cheddar has some other functionality that’s nice – [Markdown] notation, incredibly fast syncing (looking over their API documentation shows they use Pusher for real-time streaming), and multiple lists. The free version of Cheddar supports two lists; a paid subscription ($20 yearly) allows unlimited. Two lists works for me: I have a “Do!” list and a “Buy!” list. The deceptively powerful filtering system inherent in Cheddar’s tagging system covers the rest of my bases.

Another thing that appeals to me: both the iOS and Mac app are on Github. If I have a complaint or request for a feature, ostensibly I can build it out myself. Now that’s awesome.

Discovering New (Old) Music

(1) The content of which informs the titles of each movement – “America-Before the War”, “Europe-During the War”, and “After the War”.

(2) It would later become a memorably frightening and beautiful portion of the track “Static” on their 2000 album, Lift Your Skinny Fists Like Antennas to Heaven.