Karpool.us – Techcrunch Disrupt Hackathon 2011

Posted on September 13, 2011 | No Comments | Tags: |

I had an amazing weekend at the Techcrunch Disrupt Hackathon and build with Eric Allen and Scott Tran a really cool app called “Karpool”. Karpool is the easiest way to organize carpools with your friends. Sign in with your number, add your riders, and start a trip. Karpool will show your rider’s current locations, and whether or not they’re ready to leave. It also notifies the riders once the driver is nearby and arrived. You can also check your drivers position on a map. Only the driver needs the app, the rest works over SMS and your smartphones browser. Techcrunch picked us as a staff favorite and won TC Disrupt tickets! Check out my 60 second pitch and the page karpool.us.

Cutest automated email ever!

Posted on September 7, 2011 | No Comments | Tags: |

I just had a little mixup with ordering some business cards at moo.com and had to email customer service. I received this automated email:

Dear Ulf Schwekendiek,

Thanks for contacting the MOO Print Team.

I’m sending this email to confirm that your enquiry is in our customer service queue, and that a real, human MOO Service Agent will get back to you by the end of the next business day (that’s Monday-Friday, excluding Public Holidays).

Remember, I’m just a bit of software, so please don’t reply to this email. You’ll find our Service Agents far more conversational.

Best wishes,

Little MOO
Tireless Print Robot

I think this is the cutest, nicest copy-text for an automated email response I’ve ever read!

Update:
Stay with me. It turns out that there real customer support is even better. My problem was solved immediately. The error was on my side, but I still got free express shipping. Feeling very happy. #thatshowcustomerserviceshouldbe

Rails helper time_ago_in_words() and distance_of_time_in_words() translated into coffee script

Posted on August 19, 2011 | No Comments | Tags: |

C’mon, you always wanted those nifty little rails helper functions for your javascript. Here’s my translation to coffee script: https://gist.github.com/1157909 and the corresponding javascript: https://gist.github.com/1157909

Example:

time_ago_in_words((125).seconds().ago().getTime())

results in

"2 minutes ago"

Note: You’ll need the http://www.datejs.com/ library to run this fancy example.

Wriggle @ Babycastles

Posted on July 28, 2011 | No Comments | Tags: |

Here an older video from last years event at Babycastles in Queens. We were showing off our research game Wriggle:

Kinect math game ported to Move.me

Posted on | No Comments | Tags: |

I’m so happy to see progress from NYU’s the social game lab. They took my initial prototype and polished it so that it became a really nice math game, that also works for the Playstation Move.

Check the video: http://www.viddler.com/sceablog/videos/1989/

Sick of Backbone.js _bindAll()?

Posted on July 14, 2011 | No Comments | Tags: |

Thanks to this great blog post, we can safely now bind all public methods (all methods that don’t start with ‘_’) of our Backbone classes by calling auto_bind() in the initializer.

Here’s the coffee script version of it:

AutoBind =
	auto_bind: ->

		funcs = _.functions(@constructor.prototype)
		protoFuncs = ['auto_bind', 'constructor'].concat(
			_.functions(Backbone.Collection.prototype),
			_.functions(Backbone.Model.prototype),
			_.functions(Backbone.View.prototype))

		_.each funcs, (f) =>
			if f.charAt(0) != '_' && _.indexOf(protoFuncs, f) == -1
				@[f] = _.bind(@[f], @)

_.extend Backbone.Collection.prototype, AutoBind
_.extend Backbone.Model.prototype, AutoBind
_.extend Backbone.View.prototype, AutoBind

Segfaults problem with ImageMagick/RMagick in OSX

Posted on July 10, 2011 | No Comments | Tags: |

If your ruby interpreter is crashing when you use rmagick on osx and you installed ImageMagick over macports, those simple steps help you to get your system up and running again:

1. sudo port uninstall ImageMagick

2. sudo port edit ImageMagick

3. Add –disable-openmp to configure.args (near line 100)

4. sudo port install ImageMagick

5. Remove rmagick:gem uninstall rmagick

6. Install rmagick:gem install rmagick

That should do it.

Sunday Hack – Kinect math game in Unity3D

Posted on January 12, 2011 | 7 Comments | Tags: , , |

One of my new years resolutions is to to meet with friends every Sunday for a hacking session. The last Sunday I met with Rahul and Yuichi to get some data out of my Microsoft Kinect. After we got this done, we wrote a little math game that utilized two hand tracking.

The game we wrote should teach players fractions. Bubbles, with fractions in them, are falling down. The player controls a number line and can extent fraction on that number line. An example number line is 1/3, 2/3, 3/3. The player has to find the suitable fraction on the number line for a given bubble. For instance, if the bubble is 6/18, suitable spots for fractions on the number line would be: 6/18, 3/9 and 1/3.

The game is written in Unity3D and uses OpenNI hand tracking. Currently there is no Unity3D plugin for OpenNI/NITE that works in Mac OS X, but at least drivers are available. These, including some examples, are available in OpenNI’s github unstable branch. I modified the PointViewer sample app from NITE and added UDP package sending to a server, which I implemented in Unity3D. Checkout the files for that here: https://github.com/sulf/KinectHandTracking

Here’s a video of the game. You will be able to download it from the social game lab soon.

Design and validation of an A/B testing framework for mobile platforms

Posted on December 28, 2010 | No Comments | Tags: |

I recently graduated from my Integrated Digital Media masters program at Polytechnic Institute of NYU and defended my masters thesis.

I thought it might be useful to give a summary of it here as a blog post and point you to the complete work.

This thesis is about the design and validation of an A/B testing framework for mobile devices. In my thesis I introduce A/B tests and discuss the design and architecture of an A/B testing framework I developed.The framework is split into a back-end and front-end component.The back-end will enable any mobile and non-mobile platform to monitor and run A/B tests.The front-end is developed for Apple’s iOS SDK and demonstrates the use of the back-end API. It enables iOS developers to add A/B tests to their applications, to verify their UI decisions, and to improve their designs. In the following chapter, I describe how an example application is created and enhanced with A/B tests. After that, I describe test-cases I designed for one of my App-Store applications “FOUND magazine” which is running currently two A/B tests and test devices report back to the back-end.The back-end was developed on the Ruby on Rails Web application framework. It is currently installed and running on a cloud-based Web server available at http://www.abmob.net. Lastly, I summarize my findings and describe current open questions and possible future work on this topic.

If you are interested in reading the full thesis, download it.

If you want to get some beta access to http://www.abmob.net, shoot me an email.

I also want to thank my external committee member Richard Ting once more for coming to my defense and giving me great hints and feedback.

I am determined to continue this projects as time permits and keep you posted here on my blog.

Git tools and best practices

Posted on December 18, 2010 | One Comment | Tags: , |

Welcome to my blog! The intention of this blog is to update it with topics, that I think are worthy of sharing and keeping you updated on some projects I work on.

A lot of people asked me to give them help with git and I thought it might be helpful to summarize the general response I give to them in a short blog post. I’m using git only Linux and Mac OS X only, so I can only really give advise for those operating systems.

So, what is git? Git is a distributed version control system, that was developed by Linus Torvald. Check out his talk about it here.

My projects branching models is mostly based on this great best practices guide from Vincent Driessen. I maintain a development branch for current development work and branch from it sometimes feature branches if the feature takes some more time. When I release I merge those changes back into master and tag the release.

A lot of people also ask the difference between rebase and merge. Fortunately this was answered already on stackoverflow.

Some people also ran in the problem of adding a tracking branch to a local branch. Just use git 1.7.0+ and type

git branch --set-upstream local_branch remote/remote_branch

The last question I often get is, which tools I use. I mostly use the command line, but found those tools for Mac OS X very helpful:

  • GitX – this is a very lean git client, that installs a command line extension “gitx”. I use it to look at diffs, stage changes, and perform commits.
  • GitX Experimental (thanks Marcello)- there is another branch from GitX that is much more advanced. It supports sidebar, fetch, pull, push, add remote, merge, cherry-pick, rebase, clone, clone to in the GUI. Note, that if you want to build it with Xcode, you have to clone it and not download a snapshot from github, because the build script will automatically checkout some sub-modules.
  • Tower – this great client is still in beta and hence sometimes real buggy. It visualizes a large set of the git features and is very good for git beginners.
  • Git gui – this TCL/TK gui comes with the git Mac OS X installer and can be invoked through the command line with “git gui”

For collaboration I use github, which is really fun for social coding.

I hope you enjoyed my short post and ping me with any questions you have.