A Letter to the Dev: thoughts about Audiosurf 2’s “Autofind Music”

Dear Dylan,

First of all, I tremendously enjoy playing Audiosurf 2. I bought it as soon as it was available on OS X. I longed for that to happen since one of my favorite games I had to leave behind when switching operating systems was Audiosurf (1). While I personally find Mono a little harder than in AS1 (or do I recall it having an “easy” mode?) I still love every minute I play.

However, I am of the confound impression that the “autofind music” feature is not well implemented. From this forum thread I gather that before you were not scanning external disks. Right now, you are doing some things that are worse and will probably result in the scan never finishing its run. Here are some recommendations on how to make it better.

  • Build either a blacklist or whitelist of folders, with the content of that varying by operating system (Windows, OS X, Linux)
  • Exclude system folders
  • Set a maximum amount of depth that you follow symlinks / NTFS junctions. The lower, the better.
  • Think about implementing a time-out. (This is not necessarily a good idea, just something to think about when you’re scanning for more than, say, 30 minutes.)

Here are some suggestions for exclusions, prefixed by operating system for your convenience:

  • OS X: ~/Library (contains preferences, caches, etc for your user account)
  • OS X: /Volumes/Time Machine (contains the external copy of time machine, the Apple provided backup system)
  • OS X: /Volumes/MobileBackups (contains the local version of time machine, enabled for all laptops on which Time Machine is active)
  • OS X: /Volumes/BOOTCAMP (NTFS volume which is there when someone enables dual-booting with Windows on their Mac)
  • OS X: Generally don’t read outside of a user’s home, unless it’s a portable device (/Volumes/…)
  • OS X: Don’t access hidden folders (starting with “.”)
  • Windows: C:\Windows (system components)
  • Windows: C:\Program Files (installation data)
  • Windows: C:\Program Files(x86) (installation data for 32bit applications on 64bit systems)
  • Windows: %appdata%, %localappdata% and %appdata%/…/locallow (Microsoft explains this better than I would)
  • Linux: Generally don’t read outside of a user’s home, unless it’s a portable device (/mnt/…, /media/…, /mount/…)
  • Linux: Don’t access hidden folders (starting with “.”)

I have built this list in order to try and help you make AS2 an even greater game which actually finishes automatically finding my music instead of digging through my local and external backups, accidentally indexing music that might be gone the next time and following potential symlink circles. I sincerely hope this helps you.


I originally wrote this in the steam forums, however it might be useful to keep around in case someone needs advice on the same topic.

A Letter to the Dev: thoughts about Audiosurf 2’s “Autofind Music”

State of e-mail 2014

I’ve been chatting with @stefan2904 about mail clients recently and we came to the conclusion that we’re rather unsatisfied with the current status of desktop mailing software.

Only a few weeks back I’ve reorganized my complete e-mail workflow again. I’ve done this once before and it was unpleasant the first time, it was still annoying the second time. Moving your mails from one provider to another one is crappy, slow and error prone – the more advanced tools are complicated and not suited for an impatient mood. I’m not sure what the preferred tool for this task is but migrating your existing mails with Apple Mail or Thunderbird is every bit as shitty as it sounds. (CMD+A, drag to folder on other mail provider, wait for timeout to occur, repeat)

Anyway. My previous setup looked like this:

  • IMAP (standard, or rather sub-standard) at my website host whose SquirrelMail web interface is crappy and its filtering sucks in every single category you can think of, be that spam or rules for regular mail.
  • IMAP (standard, but somewhat better) Horde mail interface at my institute at university.
  • Exchange (the name is precisely the activity I wanted to do with it) mail for university, directly at university
  • iCloud IMAP (sub-standard) holy shit. I’ve wanted to switch to iCloud for its Push delivery of new mail to my iOS devices. I’ve never before seen such a ridiculous spam-reporting technique. You are supposed to forward mail that their filter has missed to a special address. iCloud really completely blocks spam instead of collecting it in a dedicated folder like Gmail does.

In essence, I had all those accounts set up on all of my devices (3, about to become 4) and that led to the occasional confusion and a lot of micromanagement for identities and preferences when setting up a device or changing a tiny detail.

There were a few points I intensely disliked about former setup, the most annoying one getting spam onto my mobile phone. Since there is no automated spam filtering in the iOS world you have to rely on your server component. If your server part happens to be crap, you are syncing every tiny piece of unwanted mail to mobile devices regardless of its importance (read: spam is not important). That means more irrelevant notifications and less battery life. I arrived at this setup after realizing I wanted Push notifications for at least some of my mails. Newer versions of iOS do not provide Push for Gmail accounts, so I switched everything to iCloud.

However, working with multiple e-mail accounts, aliases and different push/fetch settings as well as redirects quickly proved painful and actively discouraged me from using my preferred address, the one associated with my domain.

To Google again

In order to remedy this, as well as get better push support I’ve moved back to Gmail. Since Gmail support for iOS is not exactly the best (although quite good) and the Gmail iOS app feels more like a wrapper arounds its website than a responsive app, I’ve also decided to make Mailbox my new mail client on both iOS and OS X (admittedly, the desktop version is only in beta stage at the moment but it works okay).

Another big reason for my renewed use of Gmail is its automated spam filtering: In contrast to other solutions which require you to follow a certain process for reporting spam Gmail allows you to simply move an unwanted mail to its Junk folder via IMAP. Learning will happen automatically on the server side. Let me repeat this again, so you can appreciate it better: There is no need to create rules or other procedures to combat spam other than marking unwanted mails as spam when they arrive.

What works great

Swiping is a great interaction method for clearing messages quickly. Auto-swipes sync across your devices (as the should). While it would be preferable to have absolutely all filtering on the server-side, creating simple rules is extremely fast and very handy. Due to the Dropbox integration, both rules and preferences sync to your other devices if you choose so.

In contrast to Google’s Inbox which I’ve also tested for a few hours, I vastly prefer the simple white interface to Google’s Material Design. As you are probably aware, Google tries its best to keep you immersed in their ecosystem, which makes working harder on iOS if you prefer to use tools from multiple companies.

What’s decidedly bad


It seems like there is no (outgoing) attachment support in the desktop version yet. From having a look around the forums I arrived at the conclusion that the preferred method is to put a file into one’s Dropbox and send the link to that. I am curious if this will be automated via the GUI in the future.

While drafts are accessible on the desktop, it’s simply not possible to save a draft. I’ve tried hitting CMD+S, I’ve checked whether there is a prompt on closing an unsaved message, I’ve double-checked the menus for an option regarding saving of drafts. It seems like I will keep my habit of keeping e-mails as short as possible.


Mailbox for iOS seems to choke on particularly long e-mails – even on the latest iPad (iPad Air 2), so I assume it is not a CPU problem. Since this only happens on the extremely long log file one of our server creates every day it is not a problem for me.

Another slight problem is iOS’s unwillingness to let users exchange the default mail program. While this could easily be remedied by Mailbox providing a new iOS 8 share extension, it is currently necessary for me to have my Gmail account configured in Apple’s Mail.app in order to share articles from Instapaper and Reeder easily. I’ve set the refresh to ‘manually’ to avoid syncing everything twice.

State of e-mail 2014

Work as a part-time system admin

I’ve wanted to write about my work at university for some time now but I’ve never really sat down and took the time to do that until now.

There are various things I do at the institute, some of which I don’t understand why they are my responsibility. Some of them I enjoy. Others I don’t, which is something very typical for any job, I suppose.

I am a part-time system administrator at the Institute for Computer Graphics and Vision.

Server Maintenance

Whether it’s searching lost files, looking through logs to find specific, maybe even security critical events or just reconfiguring an existing piece of software, maintaining the servers of the institute has become my job – that is if you subtract the physical maintenance and the purchasing process. I am extremely thankful that those areas are covered by my friendly full-time colleagues.

I try my best to investigate errors in logs, particularly recurring ones when there is time to spare.


Obviously there’s a lot of command-line fu involved.

In the last few months I changed some processes which were occurring regularly:

  1. Changed our servers to use unattended-upgrades where possible
  2. Set up more reasonable e-mail notifications

Moreover, I blocked the 360Spider bot from constantly requesting files from our web server. I set up an OpenVPN server with guidance from Thomas. I configured a system in which an encrypted partition is automatically unlocked and mounted on login if you belong to the correct user group (I’m not sure whether I should be proud of that given the incredible hackyness of said system).

Currently I am looking into puppet for my next assignment. I’ve heard great things from friends about the software but my first experience was creating a VM for testing and realizing that the apt puppet module is currently broken (Dec 15th 2014).


When I arrived I was pretty shocked to see that there was absolutely no internal documentation at all. I am working to remedy this situation whenever I have spare time between more immediate assignments. Since I consider the documentation my primary project I made all the important decisions myself. It’s written in Markdown and we are using our internal gitlab platform to host and distribute it. Gitlab provides a nice “edit” button too, for those unfamiliar with git.

As of the time of this writing, there is documentation about the most common workflows, some server configuration, deployment notes and command line hints.

Additionally I’ve written a Getting Started guide for new members of our institute in order to avoid explaining everything to every new person again (and again in case something was unclear).

Building stuff

Creating ways of interweaving technologies is easily my favorite task. I like to write scripts to automate laborious tasks that have to be done. On the other hand I am also looking for challenges in which proven ways have to be reassembled to fit a client’s needs (though they are not directly paying me, the members of the institute are “clients” in the sense that it’s my job to make their ideas or wishes in terms of infrastructure work).

In practice that means I’ve written several scripts and am in the process of rewriting most of the tools to use the awesome Fabric module for Python. This particular direction was inspired by my other friend Thomas, who suggested just the right kind of tool for my work – a tool which profits from my profound joy working with the Python language. Except when it comes to the byte string/unicode string problem in Python 2.x. My collection of administrative helpers is located at my github repository since I’ve liberated it from our internal gitlab.

It would’ve been easier – and probably more comfortable – to just stick the configuration in the scripts themselves instead of reading everything from JSON files. That would’ve meant at least three things I was uncomfortable with:

  1. Sharing the code outside of our ICG admin team would have been impossible due to the risk of compromising confidential data. I preferred to share because I think that it’s hugely beneficial for any IT worker, be them programmers, sysadmins or similar to have a presentable portfolio of their work.
  2. Asking peers for advice would have been impossible due to the same risk. I don’t consider myself a superior programmer and therefor like to get the opinion of my peers every so often to improve the quality of my code.
  3. Hardcoding data where it is not strictly necessary feels unclean to me.
  4. It would’ve been way harder for anyone who might like my work to use it themselves. I immensely dislike working against the Open Source idea where it’s so obviously unnecessary.

In combination with the work done on a server configuration project involving a cryptographic setup for groups I’ve also scripted a rather convoluted process of setting up new users for said system.

Administrative Chores

I’m not entirely sure why this belongs in my domain but I’m routinely tasked with entering content in our CMS of choice, Plone. That wouldn’t be as annoying of our instance of the system did not feel that broken and slow. Hm, I almost forgot “confusing”. Never had imagined that simply putting up a job offer needed so much administrative overhead just in a CMS.

I don’t have a lot of love for any database driven CMS, now that I think of it. Still, due to laziness I have not taken the time to move my personal site from WordPress to something like Jekyll yet.

And of course, there’s the usual “enter user X into the system, please” because others don’t have the same permissions that the system admin has. Cue “I am root” joke here. Actually, don’t do that. I did that once. Made a terrible mistake less than an hour later.

Tech (and Moral) Support

So you fix our computers, right?

Given you have acquired a certain knowledge of computers, operating systems and software over the years you will be tasked with fixing or configuring things that your co-workers simply cannot manage to do themselves. That’s okay. Sometimes you won’t be able to find the bugs, fix the errors or configure their thing to work. That’s okay too.

Your colleagues want you to try your best – if you manage to do the impossible on the way that’s great. If you’ve obviously done your best and invested multiple hours into research and experimentation concerning their problems, it’s very likely they will understand that it’s not possible for you to smooth out every little itching. And every once in a time, they’ll want your advice or input on a problem they’re trying to solve. You might know something. You might even guess something right – it’s not important. You’re there, supporting them with their issue. Maybe that will be enough; I’ve personally had more than a handful of these occasions during my half year at the institute.

People in my life know I’m good with computers. And they come to me and ask for advice. I can see the pain. They’ve been hurt. They want a savior.
And I’m tired. And I’m busy. And there’s so much to say. So much to teach. So much to do.
And I don’t want to be their savior right now.
And that hurts, too. ~SwiftOnSecurity

This passage from SwiftOnSecurity manages to catch my opinion on this issue pretty well. I’ll try to help everyone given the time but I sometimes I need my colleagues to understand that it’s outright impossible for me to be working on their issue right now. There may be more pressing problems, say I might have rm-ed a file we still needed or I’m in the middle of a project already.

I realized I need to work on my communication skills and the timing of e-mails in order to minimize stress – both for me and others.

Work as a part-time system admin

Media Recap: May, June, July and parts of August 2014

Since I skipped the last two month, this will be a longer post, summarizing both May, June and July 2014, probably even some entries from August, just so they’re written down somewhere.

Continue reading “Media Recap: May, June, July and parts of August 2014″

Media Recap: May, June, July and parts of August 2014