Shanghai Barcamp Spring 2015

Welcome Shanghai Barcampers! (again)

If you’re reading this, you may have arrived here from the the grouphug experiment at this year’s Barcamp. If so, awesome! I hope you had an memorable experience. You may find that some of the header links on this page are broken. This is not a bug, they are not broken, you have just arrived prior to their creation. :)

Shanghai Barcamp Spring 2014 Presentation

Welcome Shanghai Barcampers!

Thanks for coming to my talk. As promised, here’s the link to the slide deck so you can follow along at home:

Download PPT here

Six OSX Apps I (and Maybe You) Need.

Two years ago I made the long and scary jump from Windows to OSX. As a nerd from the days of DOS and Apple IIe, I had long identified myself as straight edge Windows, dismissing Macs as style over substance, Fisher-Price computers for elitists with money to spare.

Then I bought a MacBook Air. Identity crisis.

I bought it because I needed a laptop for the move to China. I was looking for good hardware quality and an easy coding platform. What I found was.. exactly what I needed. The combination of a SSD drive, rock solid OS (thanks BSD) and light form factor was like summiting K2 and finding a magical box of computing nirvana.

However! OSX is not without it’s shortcomings. So without further ado we begin Ye Olde App Recommendation Post:


Alfred makes your OSX Dock obsolete. Why use the slow clumsy mouse when you can access everything you need with a few keystrokes? Load it up with command-space, and you’ll run your programs and find your files in milliseconds. Plus, once you hide the dock, you get more screen real estate. 双赢!


System wide gestures are OSX’s killer feature. BetterTouchTool supercharges those gestures by enabling you to make your own. Remember Minority Report? You can live that dream, today. Swipe up to maximize, swipe down to minimize. Tap to open/close tabs; it’s all doable. Did I mention it’s free?


$30 USD
Finder sucks. It’s like a neutered Windows Explorer, but worse. Forklift fixes this problem with dual panes and other basic file visualization necessities.


$20 USD
Google Calendar saves my life daily. However, calendars only work when you fill them up with your data. Fantastical is the fastest way to offload appointments and reminders from your brain into Goog Calendar and thus your life. Meeting with Bill Gates at 3 tomorrow afternoon? Type that exact phrase and Bam! it’s in there.


$40 USD
Sometimes bad stuff happens to good people. Theft, house fire, zombie apocalypse, etc.. etc. You should be prepared. Arq helps you prepare by backing your stuff up to Amazon AWS. You can even use it with Amazon’s nifty new Glacier service, which costs but a penny per gig. A PENNY PER GIG. WHAT IS THE WORLD COMING TO.


Are you a 夜猫子? Do you stay up later than you should? Flux is for you. Flux will automatically adjust your screen’s color levels based on time of day. What this means for you is that when you’re working late into the night, your screen’s blinding white LCD will be transformed into a soothing dusk glow. Your eyes will thank you, trust me.

From Zero to Octopress in 4 Hours

After sitting on the todo list for about an eternity, I’ve finally knuckled down to push this blog onto the interwebs. This supersedes my old blog –, dating way back to high school / college years. I dedicate this new blog to you, 1988 Toyota Tercel; may you continue to live your Initial D dreams in Thug Mansion.

One of the most beautiful things about the internet is the sheer volume of easily accessible knowledge. In the spirit of contributing to that idea, what follows is the quick mind dump of how I brought this baby online.

Hours 1 and 2

Let’s do it. What are the criteria?

  1. Gotta be free.
  2. No ads.
  3. Flexible layout that allows for themes because my CSS/LESS skills ain’t paying the bills yet.
  4. Something that’s hackable so I can get my hands dirty and do something about #3
  5. Not blocked by the Chinese government (damn you GFW)

Blogger, Tumblr and Wordpress were out. Posterous had gone to a better place, and its replacement wasn’t free. This left the following:

Ghost is fresh off the kickstarted press and looked awesome, but a stable solution isn’t yet available for Heroku. Azure charges monthly fees, and I’ve used up my free year of AWS running an AWS VPN while here in China.

Octopress is free and can be hosted off of your own Github account. It’s well documented and built on Jekyll, which also fits with my long term goals of learning Ruby.

All aboard the Octopress train.

Hour numero 3

A slew of good Octopress tutorials exist on the net. Paul Sturgess’s was a great help, as was Moncef Belyamani’s.

Moncef recommended to create a separate Ruby gemset for the Octopress installation. It seems that the purpose of a gemset is to keep your gems (libraries?) for one app isolated from the required gems for other apps in the case that your apps require differing gem versions.

Though, I did create a separate gemset for Octopress, I must have screwed something up because I ran into the following error when running anything using rake:

rake aborted!
You have already activated rake 0.9.6, but your Gemfile requires rake
Prepending `bundle exec` to your command may solve this.

Lo and behold, running bundle exec did indeed fix the issue, but if bundle automagically selects the right gems for the job, why do we need to segregate things with gemsets? Furthermore, my attempts to remove the offending rake version with gem uninstall failed. Wack.

Hour 4

Mo’ coding mo’ problems. When attempting to push to Github, I was thrown this nice message:

 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to ''
hint: Updates were rejected because the tip of your current branch is behind its remote counterpart.
Merge the remote changes (e.g. 'git pull') before pushing again.

Unfortunately, I’ve forgotten the root cause for the error, but the amazing box o’ knowledge that is StackOverflow came through with a solution.


Implementing themes turned out to be a piece of cake. Choosing the theme that best represents an extension of myself on the web, however… well, we’ll just leave those details out of the report.


Technical trips aside, making Octopress run took less time than expected. There’s still some work and tweaking to be done but it’s a start.

Not sure what the process flow will look like for image uploads – it appears some host on Github, others Flickr, still others, Dropbox.


  1. Figure out images
  2. Set up custom domain
  3. Add related posts sidebar
  4. Profit.

Hello World.