Concurrency the other way around

Clojure is built around concurrency and it clearly shows in the abstractions the language makes available. I would say that concurrency is pervasive in the language. The good thing about that it that it’s a bit harder to shoot yourself in the foot when doing programming with multiple threads. But the bad side is that it adds quite a bit of mental overhead in situations where concurrency is undesirable. As an example in mucomp, there is a certain part of the code that deals with the audio player. This is inherently a resource that should only be handled by one thread at a time. Clojure comes with a very good abstraction for exactly this problem, agents. An agent is simply some state, that is manipulated by only thread. Using an agent is done by through sending a function to the agent that will take the old state and return a new state. So with that one gets everything that is needed to write an audio player: serialized access and safely mutable state. ...

June 13, 2010

Do we really need record labels?

I was very sad to hear that one of the better bands in metal, The Project Hate MCMXCIX, parted way with their record label, Vic Records, after only one record because they didn’t have the money to record their latest album. I guess it’s not easy to have a band on your roster who doesn’t tour. The new album is written and just needs the funding to get recording. One great thing about Lord K, the main man behind the band, is that he cares a lot about the sound quality. The music sounds so much better in flac than in mp3 and proper speakers / headphones of course helps a lot :-) hint Slayer and Metallica. ...

June 8, 2010

Microfunding

I’ve recently joined flattr (that’s the icon on the right you can see :-)), and just last week I read about some students from NYU who got almost 200.000$ in funding through kickstarter to write an open source facebook clone. Something is definitely buzzing in the micropayment world. When you look at kickstarter and flattr, they are attacking the same problem, funding, at different angles. Kickstarter tries to get all the funding up front, while flattr is more of a tip jar model for something already produced. So in a way, they are complementary. I would argue that they both work best if the content is placed into the public one way or another. And that is where I think there is a huge potential. ...

May 26, 2010

Google search is not a programmers best friend

I was playing around with google this weekend. The original problem I wanted to solve was that last.fm returns strange strange release dates for albums, so I was writing a small script that would extract the correct release date from various sources. I was aiming at www.metal-archives.com and wikipedia. Both of these sites have different search pages, and in general I’ve come to rely more on google’s site:xxx functionaly, than on individual pages own search engines. So I thought, why not just use google programmatically to search the sites. Seems easy enough. ...

May 23, 2010

Channel downmixing in MPlayer

Recently I have been playing with downmixing in MPlayer. When I bought new speakers, I decided to go with stereo instead of surround since I mostly listen to music. As anyone using mplayer or any “derived” players such as vlc have discovered, there is a incredible annoying problem that the voices of the actors are very low, actually in general the sound is very low. It appears that when mixing to two speakers, the center channels is put very low in the mix. The same could be said about the subwoofer although it’s naturally not as easily recognized. ...

February 27, 2010

mucomp released into the wild

Today I’m happy to announce that the world is one audio player richer! This is a personal project of mine that I have been working on for a little while. It’s written in clojure and javascript (jQuery) and uses alsaplayer as the audio player. I probably won’t have much time to hack on it, so consider this a code dump that hopefully someone else will find useful and play/run/do-whatever with. As for maturity I use it almost daily and it’s pretty stable. There are some known bugs and kinks (mostly due to that its using alsaplayer and that the java inotify library is buggy).

February 4, 2010

How far have we come?

Things like these makes me wonder, with all the advances in computer science how far have we really come? 40 years after the invention of relational databases we are still manually defining indexes 40 years after the invention of Unix, the scheduler in Android (= Linux) still does a terrible job at scheduling the tasks that really depend on it (games and audio)

February 4, 2010

AndNav2 is now Open Source

Wow this is quite a nice suprise. Nicolas gave in and released the source of AndNav2. So I can now spend my time hacking that instead of reverse-engineering it :) I rooted my HTC Hero so I actually don’t need to do that anymore, but that is really beside the point. With the source available there is no ends to what can be done :) As I have said before, I really think this is a killer app for Android. Google released their navigation which is nice, but I’m not sure how well it works in offline mode.

January 30, 2010

Programming nirvana part 4: the repl

A repl is a very important tool in the arsenal of a programmer. It allows one to test bits and pieces of code and then assembling that into a running program. Examples of this includes the excellent firebug utility for firefox and various shells (like the python shell). There has even been tries to bring a repl to C#, but the languages is not at all designed for this purpose, so it’s a crude hack at best. ...

January 28, 2010

Programming nirvana part 3: avoid relational databases

This is actually a blog post I have been meaning to write for quite a while not, but I just never got around to it. Relational databases are ubiquitous in programming. Whether it’s mainframes, application programming or even phones now a days everyone stores persistent data in a database. Recently there has been some talk about non-schema databases and there’s a myriad different implementations of them, but why the sudden interest? ...

January 18, 2010