The blagotube home of Sune Kirkeby. Here are rambling rants and some bits of code.

20. Oct

myTunes: Music-library and player

myTunes is my own music-library and player. I wrote it primarily because I wanted a music player with an iTunes-like rating system; so I can play my entire music collection on random, and mostly hear my favourite music.

Notable features:

  • Plays MP3 and Ogg files
  • iTunes-inspired rating system
  • Random playback will mostly play your favourite music
  • Keeps your music files organized in a nice directory-structure
  • Keeps your ID3 tags and Ogg metainformation updated
  • Imports ID3 tags and Ogg metainformation

Coming features:

  • UI for tagging your music (e.g. this is music for hacking sessions)
  • Filters for the random playback mode (e.g. don’t play classical music right now)
  • UI for browsing your music library (by artist, by rating, etc)
  • UI for searching your music library
  • Playlists

It’s written in Python and uses Durus to keep it’s database and pygame to play your music.

See the trac page.

This post was written by Sune Kirkeby on 2005-10-20, and claimed to be mostly about rambling.
18. Oct

Scryer: Django page-view counter

My Django page-view counter got a decent name today. Yay! It’s now called Scryer. Thanks go to iholsman from #django for inspiration. The name comes from:

scrying, n.; a method of divination in which one gazes at an object (crystal ball, water, candle) until prophetic visions appear.

I think it’s kind of appropriate, also I like the sound of it :)

Also, I implemented some new views for Scryer. Here are screen-scrapes of them:

See the trac page for installation instructions.

This post was written by Sune Kirkeby on 2005-10-18, and claimed to be mostly about rambling.
14. Oct

Django page-view counter

ibofobi.apps.fresh is a page-view counter for your Django site. It collects the statistics with a small JavaScript which calls back to your server for every page-view; inspired by Mint.

For now the only view I have is a simple referrer tracker, but all the data (timestamp, URL, referrer and user-agent) is all there in a neat little model, so more can easily be added.

See the trac page.

P.S. Kudos to anyone who can come up with a better name, it was not named in my most inspired moment…

This post was written by Sune Kirkeby on 2005-10-14, and claimed to be mostly about rambling.
06. Oct

Django blog application

I have finished prepping my Django blog-app for distribution; it is now fairly user-friendly, and I even wrote an installation guide. I have spent some time making it work however you install it (I know it works running from a subversion checkout in PYTHON_PATH and from a Python egg).

See the trac wiki for more information.

This post was written by Sune Kirkeby on 2005-10-06, and claimed to be mostly about rambling.
06. Oct

The Worst Thing About Procrastination

It’s such a long word; it’s hard to even think about stopping procrastinating, because you get tired just thinking the word.

This post was written by Sune Kirkeby on 2005-10-06, and claimed to be mostly about rambling.
29. Sep


This Django middleware helps your site handle some common features of the HTTP protocol. First off it adds a Date and Content-Length header to your responses, if they are not already set. Also, it clears the content from your response object, if the request was for the response headers only.

The last thing it does is handle conditional GET requests. If the request has If-None-Match this is compared to the response ETag, and if they match the response is turned into a not modified response. Likewise for the If-Modified-SinceLast-Modified header-pair.

The middleware is available as ibofobi.middleware.http.HTTPMiddleware in the ibofobi subversion-repository Enjoy.

This post was written by Sune Kirkeby on 2005-09-29, and claimed to be mostly about rambling.
14. Sep

Vary-aware CacheMiddleware

I got around to hacking up a version of Djangos cache-middleware, which understands and obeys the Vary response-header. This means it will cache different copies of the pages, based on what the request headers are.

So, Firefox will get a XHTML page from the cache, while IE will get an HTML page. And, I will get a page with admin-links from the cache, while you will get a page without admin-links.

This is good.

It’s in ibofobi.middleware.cache under, now I just need to figure out, if it is interesting enough to include in the official distribution.