Democratic Jukebox

Last week I’ve published my latest fun projekt, the democratic music player: Democratic Jukebox.

Ever wanted to listen to music with a larger group of people e.g. in your office? Who decides what to play? Make your music player democratic and give everyone the chance to promote their favourite song.
The jukebox provides a web interface to search your music library and vote for songs to be played. The more votes a song gets, the sooner you will listen to it.

Jukebox Screenshot


Jukebox is written in Python using Django and some other packages.

The project source code and installation details are published on Github.
Fork it, play with it, add features, post issues, give feedback – have fun!

Sphinx search query log analyzer

I found a nice little piece of software again today while cleaning up my development stuff…

Sphinx is an open source full text search server, designed from the ground up with performance, relevance (aka search quality), and integration simplicity in mind. It’s written in C++ and works on Linux (RedHat, Ubuntu, etc), Windows, MacOS, Solaris, FreeBSD, and a few other systems.

Working with sphinx is pretty easy but it’s query log is – like any other access log – not meant to be read or analyzed by humans. Some time ago I wrote a little tool to analyze these log files and extract information about slow queries – the bad ones making your users sad.
Because sphinx itself is open source and free to use, I decided today that I will also share the tool with anyone out there. Have a look at GitHub and try it out.

Get it here: Sphinx query log analyzer

Analyzer screenshot

A robots walk

“A robot is located at the top-left corner of a 5×5 grid. The robot can move either up, down, left, or right, but can not visit the same spot twice. The robot is trying to reach the bottom-right corner of the grid.” (link)
How many unique paths can the robot walk?

One simple solution is to recursively walk the grid and eliminate as much one-ways as possible.

Solution source codes:
PHP (~0.06s)
Python (~0.05s)
C (~0.002s)
Go (~0.002s)
Node.js (~0.06s) Thanks to Michael Braunbeck
Java (~0.06s)

Hint: Time measurement on Core2Quad Q9400, 8GB RAM