by Nicholas Lash

And then work happened…


Long time no type.

As some of you know, I recently picked up a full-time job as a Web Developer at a futures-trading firm. I’ve been immersed in enterprise Javascript, and as a result have no desire to go near it at home. In other words, the nodejs project described in the previous post won’t happen. Instead, besides having a normal life, I’ve been focusing on design and typography principles as well as revamping daily habits. I’m also hoping to add in finishing up Swift programming tutorials.


There’s little time nowadays, but here are some things I’ve been pondering.

  1. Billy Corgan, my idol in sixth grade, put on a heckuva show at Ravinia. I recommend you listen to his 2007 solo album. It’s my favorite work of his.
  2. Headquarters Beercade has opened a new location in River North. Free pinball? Craft beer? Count me in.
  3. God damn the Cubs and their amazing prospects. FML.
  4. Brett Terpstra, superhero and author of Marked 2, and Ulysses’s creators The Soulmen, have put together the Textbundle, a sandbox-friendly plain text format. I have some ideas about how to use this format to make some revolutionary products.
  5. I love innovative software. Tinderbox, a Mac app for notes, has some revolutionary ideas of using meta-data and scripting. I’m not recommending it to people because the UX is maddening at first glance. I likely won’t purchase it (it’s $250!), but it's cool.
  6. These fonts rock.
  7. I’m probably the only one in the office who listens to MF Doom’s Special Herbs. :D

P.S. The tags are dead. Long live the tags.

Soundsmitten’s tag list seems to not be working, so I’ll be taking it down shortly. Sorry.

Being Stupid: Using Yosemite Developer Preview As Your Main OS


It’s an exciting time.

With a stunning interface redesign in years, Yosemite has been attracting the most attention and downloads among registered developers of any other OS X version. It’s a thoughtful and subtle reimagining of the user interface. With no extra computers, no desire to wrangle more than two partitions, and little thought, I jumped in on the download and installation just as the keynote ended.

Disclaimer: DON’T do this.

Using Yosemite as your main OS is absolutely stupid. This is a developer preview, which means many of your apps won’t work and you’re in for kernel panics, lost data, and permissions bungling. Reverting back to Mavericks is possible, but at the expense of not being able to access your iCloud documents on iOS 7 and your Mavericks installation. If you don’t know what you’re in for, you might bust an artery (or five). If you run Yosemite as your main OS and complain to me or Apple, you won’t get our sympathy. Companies such as Google have given the impression that pre-release software is polished. It’s their fault and many people are misinformed. I know Apple wants to be more open, but I think the public beta that will soon be released is a mistake. Anyhow, in short, DON’T do this. Stop reading now.

Think before acting.

OK, so you’re still reading. Here’s some things you want to think about before you dive into Yosemite. I’d suggest you read the rest of this post before you do anything.

  • Do you have anything to lose? I don’t, I program during my day job on Windows and am only taking one grad class at a time. Also, everything is backed up in multiple places.
  • Do you do mission critical work? Then follow my advice in my first section.
  • Do you need all Homebrew packages to work? Homebrew never supports pre-release OS X versions.
  • Can you afford not using your favorite app?
  • Do you need access to iCloud from iOS 7 and/or OS X 10.9? Once you convert to iCloud Drive, you are stuck with iOS 8 and OS X 10.10 developer previews if you want to access your iCloud documents!
  • Can you withstand crashes and kernel panics?

A checklist.

Here are some good things to have (and remember):

  • A thumb drive install of Mavericks (this is better and faster than using the recovery partition, which has to re-download everything)
  • Time Machine backup(s)
  • Bootable image of your computer
  • All your projects and dot files are safely in a git repository somewhere.
  • Your ssh keys
  • 1Password, Ember— and anything app with database Dropbox option — are on Dropbox. iCloud on Yosemite DP can’t be trusted.
  • Nothing to lose
  • Boundless calm and patience


So, I didn’t scare you too much and you’re still reading. Installation of Yosemite DP is very straightforward. However, keep in mind that the install can stick at sub-ten-minutes-left for a couple hours. This is because all of your hundreds of Homebrew, LaTeX, and other dev files get moved to a recovered items folder during installation. At the end of the install, the original paths are recreated and the files are moved back, which takes forever.

iCloud: There is no going back.

This is probably your deal breaker: Every time you open an app with iCloud support, it will offer to convert your iCloud storage to the new Yosemite format. Keep in mind this will completely block access to your iCloud documents from Mavericks and older as well as iOS 7. Effectively, there is no going back. However, as you concluded, you have nothing to lose, so it doesn’t matter.

What is not working (as of DP3)

I’m not going over the expected bugginess, just a couple apps I noticed that aren’t working just yet.

  • iMovie
  • Final Cut Pro
  • Diablo 3 (frame rate is unplayably slow). However the 2.1 PTR is working better than ever, so no big deal.
  • Homebrew’s gcc package, meaning you can’t install a lot of packages such as mariadb.

Some new beta versions for Yosemite

Some developers have really kept up with the times. Here are some that I use. You might have to visit sites/enable a beta update option to get these versions.

  • PCKeyboardHack (now Seil) and KeyboardRemap4Macbook (now Karabiner).
  • Bartender
  • CleanMyMac 2
  • Little Snitch

Many other apps such as Reeder already have stable versions that fix a lot of Yosemite issues.

It is too much trouble to go back.

I tried reverting back to Mavericks and got nothing but trouble. My account lost administrative rights and I had to boot into single-user mode to fix it. Also, iCloud-powered apps permanently beach-balled, and the Finder kept hanging. Be forewarned.

The Bottom Line

DON’T do this. Some of the things I described are nightmare scenarios to many people who don’t have time to experiment. Just wait until Yosemite is stable. That being said, the OS is great and usable enough to be used for non-mission-critical work.

There's a Time and Place for Everything.


Marco Arment and some others have talked/joked about how college may not be necessary. Here's some quick thoughts.

Society Sucks.

In this society, college is almost a necessity. However, it is unfairly expensive and that needs to be fixed. There are the "credentials" that woo employers and the actual learning experience. It's total bullshit IMHO, but as we grow older, we have to accept some bullshit tenants of society if you want to eat.

I'm a Nerd.

Unlike a lot of my friends, I love academia. I love the structure, the reward of a high GPA, being mentored by the good teachers, and complaining about crappy ones. Sure, if you're Bill Gates or something, you might not need it, but chances are you aren't Bill Gates.

Learning to Be Social.

The most important part of college, however, is the social interaction. You have the chance to goof around, screw up, and experiment a bit. In the four+ years, you can change friends a bunch of times, do stupid stuff, burn out and get back on track, deal with giddiness and depression, and convert to and abandon various world religions. You form bonds with different kinds of people, and you have to cooperate in order to build cool things. I especially needed all this because being locked in a practice room for 17+ years wasn't conducive to these skills and overcoming social anxiety.

The Bottom Line

In short, college is well worth it. It's a time of self-discovery. If you have the chance, I'd give it a try, even if you don't finish.

Function Junction, What’s Your (Javascript) Function


I’m finding that Javascript and beer go well together. Especially when trying to shed the conventions of C-based languages. The buzz kinda hides the voice in my head shouting “Netscape, WTF!” Coincidentally, the endgame of all of this is to have that beer web app. (Do I have a problem?)

As I heave out another giant burp, I ponder the last couple days of study as well as the days when I’ll be able to sell apps so I can buy vast quantities of brew, barely scraping by otherwise. Javascript functions and Java methods have some striking differences. JavaScript functions are objects, are pointed at by references, and have their own methods and properties. And functions can be passed into other functions.

I know I could be making this syntactical mistake a good deal, I’ll point this tidbit out, courtesy of Professional JavaScript for Web Developers (and proudly sponsored by Negra Modelo of Mexico).

The Javascript interpreter goes through a file and sucks the functions to the top, so that wherever it is called in a file, it will know about the function. That’s called function declaration hoisting. But there’s a catch. Hoisting only happens with “function declarations” and not “function expressions.” Here’s an example.

Function declaration: hoisting

console.log(“Chef: Hello, Children.”);
console.log(helloChef()); // This works fine.
function helloChef() {
        return “Hello Chef.”;

Above, the function is “hoisted,” so we can call it anywhere in the file.

Function expression: no hoisting

console.log(“How are you doing?”);
console.log(response()); // Error!
console.log(“Why bad?”);
var response = function() {
        return “Bad.”;

Here, we have an error on the second line because hoisting doesn’t occur since we are using that assignment expression.

The Bottom Line

That’s just one example of the stuff I’m finding a bit different. Hope that wasn’t too boring…


I’m trying to keep the post volume down to 1-2 every couple days. I’m crossposting headlines to Facebook and don’t want to spam newsfeeds. I’m hoping this helps help maintain a semblance of quality writing.

Launchbar 6 vs Alfred 2


Why I'm Writing This

With today's release of the venerable Launchbar version 6 and the maturation of Alfred within the last couple years, my fellow productivity nerds want updated comparisons of these two behemoths. After a brief introduction for the uninitiated, I'll dive into the juicy stuff.

The Launcher Niche: History and Rationale

OS X has always led the pack when it comes to quickly launching applications and finding documents. From Tiger on, Spotlight has gained speed, stability, and accuracy.

Around the Tiger era, Launchbar and Quicksilver gained popularity and revolutionized the way power-users do work. Images can be resized, tasks can be added to various task managers, and tweets can be sent— all from one interface using a simple shortcut (cmd-space by default).

Back in the day, Launchbar was the stable app, while Quicksilver was the mad-scientist that crashed under the weight of some insane plugins. After many years, Quicksilver's code was open-sourced and refactored, and the first stable release is available to download. I'm not reviewing it because it has been years since I've used it. Based on old memories, I find the other two launchers to be more modern, efficient, and easier to configure.

A Disclaimer (My Measly Experience)

I lost my launcher virginity on Quicksilver. When Quicksilver started choking on newer versions of OS X, I switched to Alfred 1. I've used Alfred 2 since the beta, and have attempted to write workflows.

I only started playing with Launchbar 6 during the beta, but I've read a bunch of tutorials and reviews.

In short, take this post with a grain of salt.

The Input Window

The implementation of the input field in these two launchers is very different. While Alfred uses a standard text field for input, Launchbar's input is embedded in the UI.
Alred's text box allows for use of native text editing shortcuts such as the cmd shortcuts (select all, copy/paste) and the EMACS bindings (ctrl-A and ctrl-E to jump to the beginning and end of the line). Launchbar lacks this flexibility. If you mess up typing in Launchbar, you can press escape to reset or delete to remove a character. Also after a few seconds, the input field resets and characters must be re-entered.
Alfred’s native text-field implementation persists input. The user can think longer about what they are typing into the box and the action they want to trigger.
If Alfred can't find what your looking for, it "falls-back" to making a web search. I prefer this to Launchbar's behavior of being dormant until the escape key is pressed.

Search results

Launchbar and Alfred implement search in very different ways. While Launchbar maintains its own index, Alfred uses Spotlight results. The default behavior of Alfred is that typing a name immediately searches through workflows and Applications only. In order to access Spotlight-indexed files you first type the single quote key (which also can be triggered with the spacebar). Typing in Launchbar, on the other hand, immediately queries the entire index.

Because Launchbar's index can be precisely pruned to fit your needs, the potential to be overwhelmed with results can be mitigated.

The big advantage of Alfred's results are much clearer and easier to sort through in that applications and documents can be searched separately. Launchbar is somewhat redeemed by categories. You can check them out by going to the Index preference window.


Launchbar is much prettier than in past versions. Like Alfred, the bar can now be moved anywhere on the screen, rather than being pinned to the OS menubar. Alfred is much more customizable in terms of appearance, but I think I think the Launchbar default themes look more professional.

Workflows and Actions:

Launchbar has now caught up to Alfred in action/workflow functionality. Both Alfred and Launchbar 6 support actions/workflows that can be programmed in any language. Feedback from actions can be piped back into the application interface.

Alfred provides a wonderful visual GUI for making workflows, which makes life easier for people not so comfortable with code. With a bit of knowledge and reading documentation, it looks like many Alfred workflows can be ported to Launchbar.

Because the workflow functionality has been present in Alfred for a while now, there are more workflows available. I'm hoping that the Launchbar community begins to start working on some custom actions.


Most of Alfred's functionality can be called in global hotkey triggers. Launchbar lacks triggers. However, this functionality can be recreated using Keyboard Maestro. Keyboard Maestro is even more powerful than Alfred's shortcut capabilities because the application scope can be specified and complex combinations of actions can be defined using the Automator-style interface. When I've used Alfred, Keyboard Maestro remains a vital utility.


Alfred is by far more straight-forward than Launchbar. All functionality is presented in the preferences. Launchbar's preferences are very sparse, and it is necessary to watch videos or read a manual to get the most out of it.


Besides the lack of fall-back search results, Launchbar really blows Alfred out of the water in the efficiency department. Launchbar hides functionality in keyboard shortcuts you can view in an action menu by clicking on a the main search result. Once learned, getting around seems much faster than Alfred.

By holding down your activation shortcut, Launchbar can use the Instant Send functionality to act on selected documents and text. Alfred has a similar feature, but I've found it to be clunky.

Launchbar's interface is always consistent, no matter what action/functionality is active. I find this to be much more pleasant and efficient than Alfred's penchant for using different interfaces to access the clipboard and browse the iTunes library. I find the Alfred mini-player to be bloated compared to the iTunes application, but that's just me.

Respect for the Dvorak-QWERTY Layout

An explanation of the Dvorak keyboard layout is beyond the scope of this post, but Launchbar respects Dvorak-QWERTY users. Unlike Alfred, pasting clipboard entries and clippings consistently works (yes, I've sent in the bug report to the Alfred folks years ago). Also, the QWERTY positions ctrl-j,k,h,l and ctrl-j,i,l,t can be used as arrow keys when browsing.


Just as Sublime Text trounced Textmate, Alfred has become the popular kid. There is a vibrant community that is always pushing the limits of the app. With the improved extensibility, Launchbar has shaken off the dust and the community will start making tons of cool actions.

The Bottom Line

In terms of getting up-and-running quickly and installing and making some really cool workflows, Alfred wins. However, for me right now, the efficiency and consistency of the Launchbar interface gives it the edge. I've realized I don't need a lot of the Alfred workflows I have installed. I emphasize once more that Alfred and Launchbar are both amazing software and the two teams are kind and responsive. The folks Objective Development, though, have done a great job modernizing Launchbar and I'm looking forward to the actions in development.

Learning JavaScript, or Why Following an Opinionated Structure can be Helpful.


Because Swift is in it’s infancy, and JavaScript/Node will be the backend of my beer apps, I’ve started with learning the fundamentals of JavaScript. After the noun-based tedium that is Java, I’m finding JavaScript to be really fun.

The Opinionated Primer

I was pointed to solid JavaScript resources by a Nodejs programmer a friend had me contact. Of the several intro primers to the language he recommended, I found the tutorials at JavaScript.isSexy to be really well-written. The site organizes material into courses and lists prerequisites at the top of each subject. This 6-8 week introductory course has treated me well so far. It’s very opinionated, though, which could turn off more free-form thinkers.

I find that opinionated lessons (whether in music, or whatever) at first are best. Wishy-washy guides do not provide direction. Even if you are an independent learner, it helps having structure to guide you through a sequence that maximizes efficiency. Later on you can develop your own style and pick and choose what works (or what is expected in the corporate environment).
It’s interesting that the guide doesn’t suggest starting out at the the definitive book by Douglas Crockford, because “It does not explain JavaScript’s core concepts in a thorough, clear,
easily digestible form.” I’ll read it eventually, but a strong opinion like this piques my interest.

Initial Thoughts

The book recommended for experienced programmers/web developers is very comprehensive. I’ve found that it’s unnecessary to read every word; Skimming to find the nuances has been sufficient. Going through the recommended Code Academy introductory primer (again) has probably been without benefit, but I was able to drill through the 8-section course in around 30 minutes. There has been Reddit study groups for the course, but they aren’t active right now.

The Bottom Line

I’m cruising along and waiting for the tough stuff. So far so good.

Status Report: Future (Beer) Projects


I’m writing this to keep myself honest, but if this is interesting, then cool.


My goal is to make a web app and a native iOS/Mac app. The two apps won’t be connected at first, but the idea is to set up sync.

Baby Steps:

The first steps are learning two languages/frameworks:
1. The new Swift programming language, Objective-C’s successor, was announced by Apple last Monday (June 2nd). It seems like a less tiresome language. Right now I’m reading the iBook that focuses just on the language, but I’m hoping to dive into the actual practical stuff (Cocoa) soon.
2. Javascript and Node.js are the other hurdles. For those out of the loop, Node is a server-side Javascript framework that is super fast. I’m reading a beginner hands-on book now.

So what?

Bit-by-bit, I’ll be writing and rewriting and re-re-writing an app for beer-lovers. It will pull information from the Open Beer Database and the Beer Mapping Project. There are two parts: a search function for the different types of beer, and fields to put in description/rating, and a pub-finder, with the same types of fields. The two parts may (at some point become inter-related, but that depends on how fast/well I pick up database design.

It will be embarrassing.

Inspired by Brent Simmons, I’ll be documenting this process here. I’m totally clueless about making useful software so it will be embarrassing. My StackOverflow score will continue to slide for a long time. In the end, I’m hoping to reach out to the community, ask (stupid) questions, and eventually make something of which to be proud.

The Bottom Line

Will it be good at first? Absolutely not. Will it ever be useful? Maybe not. It's just project with the sole purpose of learning, and I’m expecting no more than that.

Because I’m Stupid


Yes, I installed the Yosemite Developer Preview on my Mac. Until now, I didn’t think about the fact that I can’t take screenshots in app reviews due to the NDA. Yes, I only have one computer (with plenty of backups, though) and I’m not switching back. Heh.

Mac RSS Client Roundup: Reeder 2 vs. ReadKit vs. NetNewsWire 4


I never used RSS regularly until just before the fall of Google Reader and the renewed fixation on RSS. It's revolutionized the way I read content.

I have a Fever instance, but haven’t paid much attention to it because I’ve been using the NetNewsWire 4 beta, which currently has no sync. The lack of this feature has bugged me lately, so I’ve tested other clients.

Here are some impressions I have about each client I’ve tried. Be aware that this is not a full or fair roundup because I haven’t used each app for an equal amount of time.

NetNewsWire 4: A Polished Reading Experience

NetNewsWire has a long history. The amazing Brent Simmons developed the first three versions as well as Version 4 Lite. The app has lived through the rise and downfall of a couple generations of RSS services, and there is a segment of people who still use version 3.

Black Pixel, one of the best development companies out there, purchased NetNewsWire and produced a polished version 4 beta (free in beta, $10 sale until stable release). The app does not have any sync functionality yet, which is a huge downside for most people, but there are a few killer features.

Tabs, tabs, tabs.

NetNewsWire has a very elegant tabbed interface.

NetNewsWire has a very elegant tabbed interface.

NetNewsWire 4 has the best reading experience of the three apps I've tested. This is mainly due to the thumbnail tabs, which I use as a short-term “read later” queue that I fill over the day. For example, Husky might post an always-hilarious Bronze League Heroes episode while I’m on a five-minute work break. I’ll just open a NNW tab in the background, and save it for later at night when I’m relaxing. NNW can have a good number of tabs open in the app without choking. This feature allows the user to stay focused on the reading experience.

Cross-app communication.

NetNewsWire 4 offers seamless native app communication.

NetNewsWire 4 offers seamless native app communication.

Black Pixel has done a great job laying a foundation of communicating with native OS X apps in addition to the expected web-app services. NetNewsWire 4 already has Delibar and VoodooPad integration. I’m hoping that there will be an SDK for writing plugins that allow for further integration (i.e. Things, Omnifocus, DEVONthink etc.).


NetNewsWire’s lack of sync is the deal-breaker for most people. Black Pixel is not being transparent about how their sync is going to work, which makes many people unlikely to put down the $10 (price while in beta). They are likely developing a proprietary syncing service that will work only with their own apps. Most people have moved to services with APIs which allow them to mix and match clients. I can’t see many users moving to a restrictive ecosystem.

The only way I can see a closed syncing solution working is if there are ground-breaking features such as smart filters, tagging, color-coding, and plug-ins that could benefit from an in-house syncing service. Otherwise, I can’t see NetNewsWire 4 being a major player in the market.

ReadKit: Power-user Paradise

ReadKit is filled with functionality.

ReadKit is filled with functionality.

ReadKit started as an OK viewer for read-later and bookmark services (Instapaper, Readability, Pocket, Delicious, Pinboard), but through many iterations gained RSS support for more services than any other major app. The developer’s pace of development and response to feedback is impressive and ReadKit improves with each update.

Impressive Service Support

ReadKit is by far the most functionality-rich and customizable app. It offers integration with the largest number of web services. In addition syncing with typical RSS services, ReadKit continues to support read-later and bookmarking sites. My favorite feature is the ability to view all of my Pinboard tags.

Smart Folders

ReadKit offers super-powerful smart folders that are created using email-style rules. I don’t have a huge feed collection so I don’t use super-complex rules, but I could see how this could be really useful.


ReadKit, although improving, is the slowest of the three apps in this review. I haven’t used this app extensively as of late, but I have a bad taste in my mouth from the rough edges and crashing during the app’s early days. That’s probably very unfair; It is the favorite RSS app of many respected bloggers, but I can’t help it!

Reeder 2: Beauty, Speed, and Fluidity

Reeder is beautiful.

Reeder is beautiful.

The first version of Reeder relied entirely on Google Reader, and was pulled from the App once Google shut down the service. It took a long time, but the app is back, syncs with the major RSS services, and is better than ever.

It’s gorgeous!

The app kept the strengths first version and made it even smoother. The fluid animations and slick trackpad gestures are sure to tickle dopamine receptors. It may not be the most feature-filled but, it’s fun to use.

Fever Support

Reeder did Fever support right. It provides Hot Links and can refresh the server. The whole point of Fever is the temperature rating system, where the most important links float to the top, and I miss that in every native RSS client I’ve tried.

Conclusion, a.k.a. What the hell do I choose?

Upon examining each app, I’m not sure which one to choose. It’s unfair, but memories of ReadKit’s past instability have turned me off to the app. Reeder is beautiful, but I miss NetNewsWire’s tabs. And NetNewsWire lacks sync, and when it finally comes out it will likely only work with Black Pixel’s apps. I’ve considered using the Fever web interface with a thumbnail-view browser like OmniWeb beta 6, but the unpleasant narrow margins, small text, and the clunkiness of social integration make it less than ideal. So I guess Reeder 2 with NetNewsWire tabs and native app integration would be the ideal app…

UPDATE: I'm moving to Reeder 2/Fever for now. I'm sick of waiting for a walled-garden sync.