Category Archives: Programming

Localize Zendesk Help Center, and Make PDFs Too

We needed to internationalize the user documentation for Gaia GPS recently, so I wrote some open source scripts that automate Zendesk+Gengo localization. I found this to be a delightful task as a programmer – it was a finite problem, with a clear cut solution, and I could just kind of code away and see it come to life without many issues.

These scripts (in Python) let you select a chunk of your Zendesk Help Center, post the articles to Gengo for translation, retrieve the translations, and post the localized articles back to Zendesk.

When I started working on this, I found the blog post that Zendesk wrote about using their API for localization. That code was a big help, but it produces static files to hand off to a localization firm. I wanted my scripts to do a bit more:

  • totally automate the round trip between Zendesk and Gengo – i.e. script gives English to Gengo, and script posts locales back to Zendesk
  • allow us to localize a chunk of our voluminous Help Center, and later a different chunk with just some configuration
  • estimate the cost of the localization that was about to be requested

PDFs Too

The main reason I did this project was to better localize Gaia GPS for international users, but I also wanted to generate nice PDFs of the help docs, to cache in the app for users to read while offline. For example, here’s the Gaia GPS Help Center, converted to PDF, in Russian. It also generates an inventory of the PDFs too.

image (1)


This script now runs as a cron job for Gaia GPS, so the PDF manual gets updated each night. This is a good hack to give our users an offline version of the user manual, both in the app, and also for printing (surprisingly common request). Hopefully Zendesk will make their SDK (cough, ahem, closed source, or I’d fix it myself) work offline someday, but the PDFs will do until then.

Localization Usage

You can follow along the docs on Github, but the gist is this:

  • edit
  • add your Zendesk/Gengo credentials
    • configure which categories, sections, or articles to translate
  • run the script in Gengo’s sandbox
    • make sure the articles and cost are what you expect
    • the Python script estimates the Gengo cost, but you can double check in the sandbox too
  • run the script in production
    • run the package and post steps
    • wait for Gengo translators to do their work
    • run the retrieve and update steps

PDF Usage

See the PDFing docs on Github, but again, the gist is:

  • edit
    • beyond what you configured for localization, add info about an S3 bucket to post the manuals to if you want to use the “post” command
  • add your own custom name, logo, and background image.
  • run the script with “create” and again with “post”
    • create – generate PDFS for all languages locally – one for each language/category pair
    • post – puts the PDFs on S3
  • if you use the default “User Manual” title provided, the script will localize the title automatically, using the included data

Aside: Make a Business Out of These Scripts

As I wrote these scripts, it occurred to me that companies would pay hundreds or thousands of dollars to use a simple web interface that wrapped these scripts.

I don’t think this is a billion dollar idea, but I think a good hustling programmer could make a few hundred thousand dollars or a few million even making Gengo↔Zendesk automatic and easy for non-programmers. If Gaia GPS wasn’t keeping me so busy, I might give it a whirl, but anyone who comes across this code is welcome to try.

Semi-related: Transfer a Uservoice Knowledge Base to a Zendesk Help Center

We found that UserVoice didn’t have a capability to localize our Knowledge Base, so that’s why we moved to Zendesk (though, p.s., we also now like a lot of other things about ZenDesk).

So, this code also includes a Python script to transfer your Uservoice KB to a Zendesk HC, if you find yourself in similar need.

Coding for Managers – Learn to Code

I started working on a free and open source book recently, called Coding for Managers. I aimed the book at people who have no previous coding experience but wanted to do practical things with code. You might be a manager, entrepreneur, or other knowledge worker.

I don’t expect this curriculum to turn someone into a professional programmer, because I’m not even sure I am one myself. I just expect this to empower people to both write a bit of useful code, and understand code/programming when it intersects their business or interests.

Where a typical programming book shows you all the facets of a programming language, I try and stitch together several languages and tools into the curriculum to get you to the first level of hackerdom. I lean on popular online tools for coding (like, and try and get you publishing some code to right away.

Do you want to code something, better schedule coding, or manage coders? Read Coding for Managers. This is a work-in-progress, and I appreciate any feedback – open an issue on the Github repo to comment, or even create a pull request since the book is open source.


The Robot Prism

When I start thinking about a topic in depth, it makes me see the world through that prism. It’s happened to me with games like chess and go, and I’ve been thinking a lot about robots these days, and I am seeing robots everywhere.

As I came out of Nick’s Pizza this evening with my takeout for Anna, the baby and I, I noticed how my body reacted to the steep step down. I hadn’t seen the step at first, but I didn’t quite stumble or fall. Rather, my foot noticed the terrain was uneven before I descended too much. I sort of naturally wiggled my foot, glanced down to confirm there was an unexpected steep step, and left more or less gracefully with my stack of two pizzas, two salads, two cookies, and a glass bottle of coke.

So it’s sort of amazing that a human can do this – juggle an unwieldy stack of objects, and quickly (at least compared to Darpa Robotic Challenge robots) scamper along uneven and unexpected terrain. Klutz that I am, I’ll make the best bipedal robots look like fools in a dance competition, or a running-across-arbitrary-terrain challenge.

It’s an innocuous moment – an unexpected scamper down a step, that is – but when you think about what it might take to have a robot navigate steps, it’s a fun and interesting rabbit hole. You can think about how to mimic a human and what sort of algorithms and sensors and servos that might take, or you can think that maybe it would be easier if the robot was a tank or a soccer ball.

I see robots everywhere, in my stumbles, and in my 15-month-old son Adlai’s little struggles and triumphs with the physical world. It’s such an interesting thing to explore, robotics – movement and sensing and manipulation, that we take so many years to get right as animals, but we hope to be able to synthesize and conjure up in our machines.

It doesn’t seem odd to me, somehow, to suppose that millions of robots might walk and fly and buzz and zip among us in just the next few years. In fact, I’m starting to think its certain.



Here’s a review of Nick’s Pizza too, while I’m at it.

Economy – iOS Card Game with Source Code

My project to make a digital collectible card game may not be dead – here’s the source code for “Economy“.

I mustered the will to update the code while Anna and I were traveling over the holidays, so it runs on iOS7. I also rolled it back to what I like to call the “last fun commit.” At one point, when I handed the game to people, they sort of “got it” and wanted to play a few games, despite the graphics sucking and the game being unrefined.

So, if I do put a few more hours into this, I think I will start at the last fun commit, and throw away the baroque work I did later that didn’t improve the game. Despite what it looks like, this was kind of fun:

Screen Shot 2014-01-11 at 1.54.02 PM

Color Wheel – Extending the Flashlight Experiment

If you read my blog post from yesterday, then you are familiar with my iPhone App Store experiment. I built a simple application (a Flashlight), and now I’m trying to improve sales by listening to users and evolving the app – nothing more, nothing less. It’s a flashlight today, but tomorrow it could be anything.

During launch yesterday, A Flashlight! sold 13 copies, probably about half to friends and family who I coerced into buying it. While I haven’t gotten any feedback from real users yet, I did get some ideas from the Hacker News discussion that ensued. A thread full of people commented that the app could be construed more as a rave toy than a flashlight, with its ability to flash any color at any speed, and they suggested I work on syncopating the flashing colors with sounds and other people using the app. So, if I don’t get any more feedback on the matter, I guess that’s what I will probably do.

Beyond the pure experiment of responding to users requests, after I spent a day on Flashlight, I also got interested in applications around images and color and how I could use the Color Wheel UI element I cooked up. So, I decided to create a separate application called ColorWheel! As it says in the app description on iTunes, ColorWheel lets you select colors and then it provides you with RGB and hex values. It also lets you grab colors from photos, type in hex/RGB, email colors, and adjust the opacity of the colors.

Here’s a screenshot of the two apps side by side – as you can see, they are very similar.

So, now this experiment has two forks. On the Flashlight side, we’ll see how response to user requests drives the development of the app and how that affects sales. On the ColorWheel side, we’ll see if my random idea for evolving the Flashlight speeds things up and leads me to a market faster. For both A Flashlight! and ColorWheel!, I plan to just respond to user requests, but I think ColorWheel is a much more targeted app (for designers, programmers, etc.), so I wonder what the difference in their evolutions will be.

As the final step in this experiment, I’m also pushing an app that starts out just as a feedback box. It’s ready to ship to the App Store now, but I’m just wondering what to call it. Blank Slate? Or maybe just TBD if I can get away with that.

My Agile Experiment – A Flashlight on the iPhone

A couple weeks ago, I spent eight hours in XCode, Photoshop, and iTunes Connect, and I submitted A Flashlight! to the iPhone App Store. As it stands, the app is very simple, yet it is also unique among flashlights. You can use a Color Wheel to select a color, and a slider to select strobe frequency. It also remembers your settings between uses. You can view it on iTunes here.

A Flashlight! is intended as an experiment in agile, user-oriented development. I just want to see if a) I can sell any flashlights and b) if I can improve sales by doing whatever users say to do. Today, this app is a flashlight, but I intend to do whatever users request and let this app morph into whatever it becomes. Maybe it will become some weird chimera, or maybe it will become a really tricked out flashlight, or maybe it will turn into an RPG or something.

I chose to start with a flashlight app because they are simple to build and seem to have a natural market on the iPhone – there are 100s of flashlight apps, and even one in the top 20 in the Utilities category. So, these factors make it easy for me to get my app out quick, and hopefully ensure some feedback from users on what I should build.

Either way, it will be fun to see where the natural current of the App Store takes A Flashlight!, and I’ll write a few blog posts about it.

In Search of a Good Idea

I’m a long-time reader and contributor to Hacker News – not the most prolific, but I lurk a lot. When I first moved to San Francisco about 3 years ago, my friends introduced me to Hacker News, Reddit, Seth Godin, and a lot of other influences that eventually drove me to leave my job and found a company.

Hacker News has been a tremendous resource for me. First, it was a source for inspiration, ideas, and philosophy. Later on, when we started building something, Hacker News became a sounding board for ideas, a way to get a critical review of products. And then even later, Hacker News helped us launch and market new software.

Hopefully I’m not being greedy, but now I want something else. I want business advice, and maybe even a CEO. After dreaming and scheming for 18 months, and working full time on this company for 10, my two co-founders and I have finally gotten to what we all know as “ramen-profitable.” In the next of paragraphs I’m going to lay out the history and stance of our business, TrailBehind, in hopes that someone out there has good ideas on what we should do next. If you have advice to impart, please read on, and give us some commentary on HN. If you have really good ideas, don’t need much money, and are interested in leading our company’s business strategy, please contact me at[email protected].

TrailBehind, Inc. – History

My girlfriend and I first dreamt up TrailBehind hiking through the woods about two years ago. I don’t know if computing or hiking is our favorite thing, but it’s close either way. We started the company intent on making a great hiking website – we weren’t quite sure what that meant, but we knew it was tough to find good information on the web, and we didn’t really like any of the community sites out there either.

The result of this was – a mixture of a hiking search engine and social site to help people “find great places to hike.” is a moderate success – it gets about 300-400 visits a day and helps us market our new products, but we haven’t worked on it in months. It was enough to win us a $25,000 fbFund grant and secure about $35,000 in other angel funding to get us started, but the internet is a tough market, especially for a niche media product with nothing to sell. So, eventually we turned to the iPhone platform in search of revenues.

Our first iPhone product, TrailBehind, launched last May and earned us a few thousand dollars. TrailBehind basically took and brought it to the iPhone, selling for .99 a piece. It was built by our first hire (Feb ’09), and a person I consider to be one of TrailBehind’s co-founders even if he came to the party a few months in – my friend from college Tim Bowen.

Finally making some money was a great morale boost for us, but it still wasn’t enough to keep the lights on. With that in mind, we took another look at the Navigation market on the iPhone and concluded that we needed to address a broader market – not just hikers and climbers and bikers, not just people who spend a lot of time in the woods. We needed a product that people in the city would use – people who run, people who drive, and people just walking around. And so, Gaia GPS was born.

With Gaia GPS, we wanted to build on the unique search capabilities and map overlay capabilities from, and incorporate features we knew there were a broad demand for – specifically GPS recording, offline mapping, and related functionality. And that’s where we are today. Gaia GPS launched almost a month ago, and it’s now one of the top 20 apps in Navigation. We now have loads of feedback from users, we are pushing steady releases, and sales and our ranking are climbing. Besides Gaia GPS, we also have our original TrailBehind app, and also Gaia Maps and Gaia Places – which are individual features of Gaia GPS as standalone, less expensive apps.

Today and Tomorrow

Besides just pushing releases and trying to generate some press, we are anticipating more incremental growth in our sales. We now have (in review by Apple) an international version of the app, which is quite a large percentage of the market for GPS apps. We also have in review the “Lite” version of Gaia GPS, which seems to be a proven strategy for selling more apps. So, as far as survival goes, I think we’re there. We still have about $15k from our investors in the bank, and we’re cash flow positive, so that number is now slowly growing. The three of us live a very affordable life, sharing a cabin in Truckee, grocery bills, and keeping expenses to a minimum.

What I am sort of at a loss for now is how to make an order of magnitude improvement in the business. We intend to keep working on Gaia GPS and climbing in the Navigation category, but this app alone will never be worth more than a couple million a year, and it won’t be worth more than a couple hundred thousand next year. I yearn for more.

Pretty quick here, we need to figure out what else we can do. We’ve been working a lot recently – once you launch a product, there is a lot more to do than just code, between talking with users, marketing, keeping your books, and all the day-to-day administrative trivia of owning a business. But, soon we’ll add a few more features to Gaia GPS, iron out bugs users report, and get that product down into a steady release cycle that doesn’t tax our resources completely.

I’ve been thinking a lot about what that next project should be. The major candidates are as follows:

  • Gaia Quest – Develop a game built on top of Gaia GPS, based on exploration and map-making. I have drawn up a rough sketch of what this game would look like. 
  • Military Applications – Build a military oriented version of Gaia GPS. Seek grant funds to from DARPA and similar. I have started to discuss this with a DoD contractor and a VC contact from one of my board members, and this seems like a real possibility, but a big divergence for us. 
  • Work on Search – Use the runway provided by our iPhone revenues to re-focus on our efforts to build a geographic search engine. This capability is perhaps the most unique thing about all of our products – aggregation and presentation of geo-data. However, it was sidelined because we needed to make money, and we had no clear route to monetize this. 
  • Other Mobile platforms – Build Gaia GPS for new platforms, such as Palm, Android, or Blackberry. Seek marketing incentives from these platforms to migrate the software, otherwise this is probably not a reasonable path for us right now. 

So, I guess I’m just unsure what to do. As is the common Silicon Valley attitude, I have come to believe that ideas are mostly worthless, and execution is king. But while we have managed to execute a few products and make a few dollars, I’m grasping for a good idea. I wonder what to do next. I wonder how much to focus on incremental progress for Gaia GPS. I wonder if we should be aiming to go from making $70,000/year to $200,000/year. Do I shoot for a goal I know I can reach, or is it time to double down and shoot for the stars? Maybe you have a better idea than me.

Please Help

If you go on Hacker News and you are a business guy with a great idea but no software development expertise, you will get asked poignant questions and probably laughed out of the forum if you come looking for hackers to help you execute. Hackers believe that that it all boils down to the software. This is only partially true. All of you idea men quietly lurking in the shadows of HN, this blog post is for you.

Today, my company has plenty of hackers. We all program, led by Anna, who is a truly gifted (and pedigreed) hacker. But we lack vision I think. Today, I need advice, strategy, and ideas. I have discussed this heavily with my board and co-founders, but I’m still not sure what to do.

Before I came to the Valley, I thought of myself as an idea-man, but today I think I know myself a bit better. I’m pretty good at accomplishing a goal, but I’m not so sure I’m great at deciding what goal to focus on. I have a business degree, but I’m not sure I have the requisite flare for marketing. Give me a feature to build, a bug to fix, or even a reporter to call and land a story, I can do that. But if you ask me what’s the next thing TrailBehind should be working on, I fear my ideas aren’t correct. Maybe once I started to lose respect for the strength of the “idea,” I lost the ability to have good ones. Recently, I’m thinking that what I need and have undervalued is a good idea.

So, I guess that’s the end of my rambling. I’m hoping that someone out there can set us on the right track. If you want to know more, if I left out some important details, please ask away on the HN comment thread, and I’ll try and fill in the blanks. If you have ideas or commentary on the state or direction of our business, please post those.

Also, if you think you might be able to steer this ship to grander adventures, drop me an email at [email protected]. There’s a lot of stock to go around, but not much money. Maybe you can change that.

Adding a Third Monitor with DisplayLink USB to DVI

My genius girlfriend and co-founder Anna figured out how I could run another monitor off of my Macbook.

Typically, a Macbook Pro can support two 24″ monitors through a splitter, or one 30″ monitor because 30s use dual DVI. However, you can also buy a USB to DVI converter from DisplayLink, and run a 30″, a 20-24″, and the laptop screen itself concurrently. Here’s a picture of my setup:

In this rig, the 20″ monitor actually runs on the CPU, not the GPU on the graphics card. When I am resizing windows on the 20″ screen, it can react a bit sluggishly, but it works perfectly for my purposes since I just keep non-programming browser windows over there.