All posts in Development

The Tupalo.com Kanban Story – ON TOUR (3)…LKSE 2012 – Buenas días Madrid!

I guess it’s time again for a new update on our journey through Kanbanland. Last week I had the honor to present “The Tupalo.com Kanban Story” at the Lean Kanban Southern Europe 2012 conference in Madrid.

The LKSE12 conference was held for the first time and was packed with interesting talks around Kanban, Lean, Product Development and Risk Management. Since the emphasis of the conference was laid on experience reports I decided to sum up our challenges and discoveries in a little case study. During my talk I gave an insight into the implementation and evolution of our Kanban system over the last 1 ½ years.

 Excerpt of the feedback/comments via Twitter…

@agilemanager: And now @shuabee telling the wonderful @tupalo #kanban story :-) #lkse12
@pawelbrodzinski: Introduction of kanban helped to realize that the process in fact is different than the team thought. @shuabee #lkse12 Same experience here.
@pawelbrodzinski: And over time the kanban board became way more complex. @shuabee #lkse12 Again, I share that experience.
@agilemanager: .@tupalo story now showing how #LeanStartup validation ideas are now being incorporated w/ #kanban@shuabee #lkse12
@asplake: Great example from @shuabee of visualising feedback loops that involve external parties #lkse12
@JasperSonnevelt: And they have bug-fixing-fridays! RT @pawelbrodzinski @shuabee is putting bugs on the board. This way you show how doomed you are ;) #lkse12
@JasperSonnevelt: Wip limits are encouraging pair programming at tupalo #lkse12 #kanban @shuabee
@arneroock: Very interesting #kanban case study from Tupalo by @shuabee #lkse12

 

All in all I can say – I heard some great talks, met with great people and had a great time!

For those of you who want to hear more about “The Tupalo.com Kanban Story” I will mention some of our findings and experiences in more detail in the next blog posts.

You can make IT!

Screen shot 2012-05-04 at 12.26.25

Vor einiger Zeit war ein Kamerateam bei uns zu Besuch, um unseren Clemens (und ein bisschen vom Büro- und Developmentalltag – inklusive Laika!) für eine ganz spezielle IT-Kampagne bildlich einzufangen:

Bei der Initiative You can make IT! geht es darum, junge Menschen, die vor der Wahl des passenden Studiums stehen, auf das Fach der Informatik aufmerksam zu machen und gleichzeitig auch das Image des Studiums zu verbessern.

An dem Projekt beteiligt sind alle österreichischen Universitäten, die Informatik anbieten, und neben Infos zum Studium stellen sich auf der Webseite der You can make IT!-Kampagne eben auch Studierende oder in der IT Arbeitende vor – wie eben Clemens, die “technische Hälfte” des Tupalo-Gründerduos. :)

Weitere Interviews gibt’s da zu finden, das Video featuring Clemens könnt Ihr gleich hier ansehen:

The Tupalo.com Kanban Story – ON TOUR (2)…Leadership Workshop Barcelona!

At Tupalo.com we always like to travel…also on business. This time, the father of Kanban David J. Anderson invited me to present the Tupalo.com Kanban Story at his Leadership/Coaching Workshop in the lovely city of Barcelona.

The 3-day workshop was filled with interesting insights and useful methods every Kanban practitioner should know about. That did not only mean listening to helpful theory and our case studies but also rolling the dice at the GetKanban board game.

The workshop was a great experience and I am glad that we received lots of positive feedback on our Kanban implementation. The next stops on our journey through Kanbanland are already planned and I am pretty excited to follow up on this. :)

The Tupalo.com <3 Kanban Story

Tupalo.com runs on Kanban and Nina is the one, who makes it happen. You may have read her blog post from about a year ago, where she explains how we implemented Kanban at the beginning at Tupalo.com.

Well, it’s been a great year of Kanban-ing for us and even David J. Anderson “the father of Kanban”, was impressed enough with our work, that he invited Nina to present the Tupalo.com Kanban Story at a leadership seminar he held in Vienna yesterday as well as at the Lean & Agile Coffee in the evening.

The presentation was well received, there were tons of questions from the audience and judging from the enthusiastic reactions on Twitter etc., it seems like there will be even more Kanban boards hanging in other offices around Vienna in the near future!

Well done, Nina! :)

Explore Tupalo.com’s nightlife world on Wikitude!

Tupalo.com Wikitude

Tupalo.com Wikitude

If you didn’t download Wikitude just yet, do it now (via the app store or android market). The AR based app will change the way you interact with what’s around you. And while you’re at it: check out Tupalo.com’s Nightlife world! It might just come in handy on a thursday, friday and/or saturday night! Read more…

Hack Week @ Tupalo.com

Tupalo hack week

Tupalo hack week

We’re in the middle of one of our Hack Weeks. As we blog Sebastian works on a last.fm integration for example. Kathrin and yours truly work on a tour through Vienna for people who like to shoot&share (to be continued!). And we enjoy breakfast and lunch together every day.

Friday afternoon we’ll share the results of a week’s work during our weekly TGIF. I’ll keep you guys posted. Our next hack week will take place in 3 weeks. Since we’re always open for suggestions: start sending in your ideas!

Tupalo.com Hack Week 2

The second official Tupalo Hack Week is over – and it was even better than the first. Accompanied by some fine music, our darkroom of developers bravely ignored hunger and sleep deprivation in their ongoing quest to give our users the perfect Tupalo experience.

Among other things, our heroic coding kings made various tweaks to the site’s look and feel, wrestled with our soon-to-be-launched language versions (Klingon amazingly not present), and finalised our ever-so-useful Restaurant Radar.

A great week’s work, which the Tupalo.com founders celebrated in style…

Hack Week. Tupalo Strong.

The week before last was Hack Week here at Tupalo HQ. Our dedicated darkroom of developers (that’s my copyrighted collective noun, by the way) put up their ‘Do not disturb’ signs, and hacked away until they could hack no more, powered by vast amounts of breakfast carbs, fresh fruit, coffee and lunchtime take-outs.

The results were, as I’ve come to expect from my techy team-mates, mightily impressive. Highlights include a decidedly dynamic dashboard (for us to keep a better eye on ourselves) and a rather racy recommendation engine (to give our users even more top tips), both of which are already up, running and winning gold medals.

And… we’re doing it all again next week. If you have any ideas for us to hack, please do let us know.

(* For the uninitiated: Tupalo Hack Week was planned to be similar to Hate Week in George Orwell’s 1984, but we’re so nice that we all struggle to feign even a mild dislike of our Big Brother competitors.)

Tupalo.com on your Android phone

Android, Google’s highly popular and growing Operating system, is a success. Aside from the iPhone it’s market share, especially in the US, is strongly growing. Reasons enough to make Tupalo.com fully available for your Android phone.

As of today we’ve deployed and released our first Version of the Tupalo Android App. It’s a nifty, free app, that gives you all the tools to discover your neighbourhood.

Browsing your favorite spots, adding them as favorites and even checking in at your favorite venue is supported.

The beautiful code comes straight out of the hands from our mobile developer Ryan, who just moved from San Francisco to Vienna and now built one of the best local apps out there!

Download the App by photographing the QR Code below or search for it on your Android phone!

Generating XML diffs with awk and bash

Did you ever wonder where Tupalo.com gets all these spots from? Apart from the ones our awesome users add, we get them from our various partners, often in the form of XML. This generally works fine, but XML’s structured nature also means that you can’t just treat it like any old text file.

That’s something we recently had to work around when we wanted to generate a daily XML diff that only contains elements which changed since the previous day’s feed. Of course there are several open source tools for exactly this purpose (e.g. diffxml or xmldiff) but since we didn’t get them to do what we want in a reasonable amount of time, we just decided to roll our own.

The final solution is a 71 line bash script, which downloads a zip, extracts it, generates MD5 sums for every element and then creates a diff between this new file and the previous list of MD5 sums. Once we know which elements have changed we merge them into a new feed which then gets handed to our importer. The awesome xmlstarlet was a great help in this, as was battle-tested old awk.

Let’s look at an interesting snippet from the script:

 xmlstarlet sel -I -t -m "//item" -v "./guid" -o "|" -c "." -n - | 
  sed -e '...' |
  awk \
    'BEGIN { 
      FS="|" 
      RS="\n"
    }
    {
      id=$1
      command="printf \"%s\" \"" $2 "\" | md5sum | cut -d\" \" -f1"
      command | getline md5
      close(command)
      print id":"md5
    }' >> $MD5_DIR/vendor-md5-$TODAY

Here we use xmlstarlet to iterate over all the items in the feed (the XPath “//item”), print the value of the “guid” element (-v “./guid”), output a pipe character (-o “|”) and then copy the current element followed by a newline (-c “.” -n) . This then gets piped through sed for some cleaning up (which I omitted here for brevity’s sake) before awk takes the part after each “|”, generates an MD5 sum and finally produces a file that looks like this:

rKKTZ:4012fced7c4cd77da607d294fbb8b5b6
hC7Jr:39245a0f9a976e6d47c0e2d76abf6238
...

Now that we are able to create a daily list of MD5 sums, it’s easy to generate the diff feed:

if [ -e $MD5_DIR/vendor-md5-last ] ; then
  changed=`diff $MD5_DIR/vendor-md5-last $MD5_DIR/vendor-md5-$TODAY | 
	   grep "^>" | 
           cut -d":" -f 1 | 
           cut -b 1-2 --complement`
 
for record in $changed ; do
    f=`fgrep -l "<guid>$record</guid>" $FILE_PATTERN`
    xmlstarlet sel -I -t -c "/rss/channel/item[guid='$record']" $f >> vendor-import-$TODAY.xml
  done

Here we create an array with the id of the changed elements over which we then iterate. In the loop we once again use xmlstarlet to extract the current item from the feed which contains the right guid.

This is a good example of how familiar old Unix tools can be combined to create a fairly concise solution for a non-trivial problem.