Review of 2014

Filed under:

2014 was a great year for the blog despite my apparent inability to write past late August. As a light reintroduction to the sport of blogging, I figured it would be useful to highlight some of the most popular, overlooked and (I think) cool posts from last year in addition to some stats I find interesting.

Most Popular Posts of 2014

Though technically posted in 2013, my Introduction to KAREL Programming was by far the most popular post on the blog. It seems there are a lot of people interested in learning KAREL! I have a few ideas as to why:

  1. The TP language is very limited.
  2. The FANUC ecosystem is very closed and difficult to extend.
  3. FANUC makes it difficult to get manuals and learn their software.

People are attempting new and ambitious projects with robots every day. Unfortunately the TP sandbox is very limiting. Luckily FANUC provides a lower-level language with a little more control in KAREL, but it’s not widely publicized or documented. My guide serves as a good “Hello, World” introduction, but you really need the API documentation to be productive.

In an age where even Microsoft releases its developer tools for free, here’s hoping FANUC opens up a bit more in 2015.

Writing TP Programs by Hand - Pros and Cons was my second most popular post. Again, we see robot programmers trying to learn how to be more effective while working on their robots. I always code my FANUC projects by hand. It definitely helps increase my productivity and the quality of my code. The TP editor is great for making small changes, but it’s a nightmare when dealing with large products.

There’s definitely a missing link in the process though. Here’s how I typically go about programming a robot:

  1. Write programs in a text editor (vim with TP syntax highlighting of course)
  2. Transfer programs to ROBOGUIDE
  3. Test process
  4. Make small changes (teach points, etc.)
  5. Manually update local programs
  6. Repeat

An IDE or vim script that could automatically do step 5 would be great. In fact, inspired by the Go Programming Language’s go fmt utility, I wrote a utility that will validate and reformat TP code, removing line numbers, wrapping long comments, etc. It needs a bit more work to be able to compare changes between a local and remote file, merging only the necessary changes in the correct locations, but it’s getting there. Interested? Shoot me an email.

Introducing KUNIT was my third-most popular post of 2014. KUnit is a simple unit test framework for KAREL. To be completely honest, I have not really used KUnit beyond testing KUnit, but I would love to hear if others have used it. I was happy to receive a pull request from a Mechanical Engineering professor computer scientist and researcher at the Technical University of Delft in the Netherlands who is very active in the ROS project. I’ve been keeping my eye on ROS for a while now, and I definitely want to dive in a bit more in 2015.

Useful Projects


Quite a few people have downloaded BackupTool, a free tool for backing up FANUC robots. I use it all the time, and it saves me hours. Check it out and backup all your robots simultaneously with a single command.

I wrote my first programming language in 2014: TP+. Here’s the introductory post. I used it successfully on a fairly large project, but it suffers from a number of issues. I plan to re-write TP+ from scratch in 2015 and probably release it as open source.

Most Overlooked Posts

I think my post on Simulating TP Programs in the Browser with tp.js is probably the coolest one of the year. I wrote a fairly complete TP parser and runtime in JavaScript. You can see some code executing right in your browser if you click over there. I’d love to spend some more time on this and possibly release it as open source this year.

Technically written in 2013, but I think this post is worth a read: Intelligent Part-Presence. Part-presence checking is so important in material handling applications that I believe it deserves some discussion. In fact, my opinions and techniques have changed significantly since that post was written. This post called Keep It Running is a little closer to how I program my part-presence macros these days.

If my site statistics are truly telling, it would seem that I’m the only FANUC robot programmer in the world that uses vim! I created a vim syntax highlighting file for FANUC TP a while back, and I love it. Here’s a screen shot:

TP Syntax Highlighting

Instructions for usage are available on GitHub. Learn Vim!.

Interesting Metrics

I am a total metrics/statistics geek. If you are too, you might find some of these interesting.


My traffic has steadily grown despite my break from blogging towards the end of this year. Much of the site’s traffic is from Google, so it makes sense that I would continue to receive traffic (and even increase) as Google determines the site is worthwhile.


Less than 50% of my traffic comes from the United States! The industrial robotics field is definitely global with many of the site’s visitors coming from Canada, Germany, Brazil, India, France, Italy, the Netherlands and Spain.

Google seems to think that two thirds of my visitors stay for 10 seconds or less. Maybe I need to redesign the site? I take solace in the fact that of the remaining visitors, many stay for three to ten minutes and some for up to twenty!

80% of my traffic comes from Windows PCs, with Android and iOS bringing up the number two and three spots. Macs only represent 5% of my traffic, and the majority of that is probably myself. I really shouldn’t waste my time developing utilities for Mac and Linux just yet.


2014 was a great year for the site and for me professionally. I worked with many great companies on many very interesting projects. 2015 is already booking up, and I’m excited about some of these new projects.

I plan to publish more both on this blog and open source on GitHub. I’m also working on more developer tools similar to BackupTool and TP+ to come out later this year.

Thanks for your support!

Want posts like this delivered right to your inbox?

If you liked this post, please sign up for my mailing list!