"The Archive" 2008

Two Thousand And Eight

Some thproducts from the year that you might want to call twentyzeroeight.

Beifall für die 10-Uhr-Show. Im Audimax der TU Wien bei der GSI-Vorlesung von Peter Purgathofer wird die Millionenshow parodiert und ~ 300 Informatik-Studenten applaudieren. Ein Bild der Folie und der Audio-Mitschnitt (meines Wissens von Bl4cky).

Ein kleines Script, um schnell JPEG-Files in allen Unterordnern zu verkleinern (wenn man sie zB zur Archivierung auf DVDs brennen will, aber nicht gleich Unmengen an Scheiben verbrauchen will): recursive-reduce-fotos.py

Speaking at Linuxwochen 2008If your iPod database contains tracks that have their title field set to a MP3 filename, like. "Artist - Title.mp3" and the artist field empty, here's a script that uses python-gpod to scan your database and update all tracks with the correct artist and title: ipod_db_filename_titles.py

Funny Python idleness hack: a "flag" object: flagstuff.py

Draft of a Tango icon mixup: gpodder-wolke.svg

Simulating the "Flash" effect of Apple's PhotoBooth in Linux when using a compositing manager: flasher.c (for this bug report)

Quines

I've found "Quines (self-replicating programs)" and wanted to do one myself in Python. I came up with three, and write a short "quine tester" in Python, too:

Minimal Quine (mail me if you have a shorter one!)
x=';print"x="+repr(x)+x';print"x="+repr(x)+x
Python Quine Tester Script
#!/usr/bin/python
import sys, subprocess
fn=sys.argv[-1]
fn != sys.argv[0] or sys.exit(1)
code = open(fn,'rb').read()
output = subprocess.Popen(['python', fn], stdout=subprocess.PIPE).communicate()[0]
print fn, ('is a quine' if code == output else 'is NOT a quine')
Two other quines (one with an intron and one with a lambda function)
  1. quine2.py
  2. quine3.py


Five Years of Tennix!

[Five Years of Tennix]On June 21st 2003, we had to present Tennix, a cute, little tennis game written in C with the Borland C++ 3.1 IDE (in DOS!) to our teacher and classmates. It was the end of the school year, and thank to our professor, we were allowed to hold another programming challenge in our programming class, the first being held just before Christmas 2001 (see Funk Das Licht 2). So, this was the second school year, and we quite used to the text mode "conio.h" offered us (this is a DOS-only header file that supports the DOS text modes). Some of us already played with Borland's own BGI (Borland Graphics Interface), but it didn't allow us to have fast, direct-access graphics that we wanted to have (and of course, being quite naive in this early days, we wanted to "write all code ourselves"). And so, after fiddling around with DOS interrupts, mouse handling and all that crazy stuff we've most likely never heard about (and also didn't really had much use for after the project), we got a nice game together that was playable, although it wasn't optimized, but that didn't really matter back then, as it ran and had enough bling-bling to be considered "good" :) Then, last year, I decided to look at the code and wondered if I could port this old codebase to SDL, to get it running on my Linux system. Three nights of crazy hacking later, I was able to play the game with the old, crappy graphics and it worked okay-ish. After that, I started replacing the graphics one-by-one, increasing the screen resolution to 640x480, which is a bit nicer to play in windowed mode. Later in 2007 and earlier this year, I started supporting the Win32 platform and Mac OS X. Tennix (the SDL port) has since been included in several Linux distributions, has been reviewed a few times (even in Linux print magazines). I even got very good feedback from places like the Linux Game Tome, and reviews in several blogs (a list of media coverage can be found on the SDL port website). Now, if you have not already, download the Tennix! SDL port and see for yourself. The original Tennix! is also still available, and can be run in DOS mode, so you don't have to dig out that old DOS machine, buried somewhere in your basement. You can: Go to the Tennix! SDL Port or Read about the original Tennix!.

Movie trailers

I've written a short demo app that shows how to query and read the Apple Movie Trailers RSS feed and extract enough information to show a window full of muvie posters which can be played back with Totem by simply activating one of the posters: trailers.py

[Elisa Trailers Screenshot]

I've also created a Plug-In for the Elisa Media Center to play Apple Movie Trailers, which can be downloaded here (read README for instructions): elisa-plugin-appletrailers-0.1.tar.gz


Moonbootica at UAF08. If you somehow obtained the FM4 recording of the Moonbootica session at Urban Art Forms Festival 2008 in Wiesen, Austria, you can download a wavbreaker trackbreak file here for all your tracking and CD burning needs: moonbootica-uaf08.txt


Reordering M3U files in PyGTK. A demo I wrote for a fellow gPodder developer to show how to make a reorderable gtk.TreeView: gtk_reorder_m3u.py


Maemo Summit 2008. I've given a lightning talk about gPodder and Panucci at the first ever Maemo Summit in Berlin. Also had some nice user interface design chats with other developers and designers.

thp talking @ maemo summit 08 thp talking @ maemo summit 08 thp @ maemo summit 2008
Me, talking at the Maemo Summit 2008. Photos cc-by-nc 2.0 Tim Samoff

Monkey Remote. A small app that can remote-control your PC from a N800 connected via WiFi. Simple, socket-based interface (no security!) and simple, finger-friendly UI. monkeyremote.tar.gz

Send TODOs from Linux to Nokia 5310. Probably works with other mobile phones that support receiving VTODOs via Bluetooth, too. With this, you can easily add TODO items to your Nokia 5310 mobile phone via Bluetooth without the need to enter the TODO text with the phone's keypad. todo2mobile.py


StrongBad's DELETED! for Mutt. I finally managed to work myself into Mutt, and because deleting mail should be fun, I used img2txt from caca-utils to create a nice ASCII-Art "DELETED!" screen (based on the Lappy 486 DELETED! message). Here's the script: sb-deleted.sh. To show it whenever you delete a message, put it in your $PATH and use the following code in your .muttrc:

macro index d "<delete-message>!sb-deleted.sh^M" "Delete, StrongBad-style"
macro pager d "<delete-message>!sb-deleted.sh^M" "Delete, StrongBad-style"
set wait_key=no

git duff In case you mistype "git diff" often on the command line, this might make you day a bit brighter ;) git-duff.patch
dangeresque ringtone Oh, my carphone..
hangman w-i-p It's a work in progress!
splash gtk something i made up for gpodder once splash-logo.py.

continued in 2009 eventually



Thomas Perl (m at thp io); jabber: thp@jabber.org