Semira sings songs

Published at: 4.IX.2012 23:40 CEST

My pet store application is a music streaming website and has been so for over 15 years. Every 3 to 4 years I rebuild it using whatever tool is the sharpest in my shop at that time. I’ve build it using Perl, Java, Ruby and (the most recent incarnation) Clojure.

The feature set changed a lot over time; the early versions simply browsed directory structures, later versions extracted meta data from the audio files and, later on, used that to provide structure. Some versions had playlists, a news sections and even downloads. The latest version goes back to the basics; being able to search, browse and play music. But it does a bit more than that: it works on Android and iOS too.

So please welcome Semira to the world of Open Source Software!

source on github

Bye bye Jobs, rest in peace mister Dennis Ritchie

Published at: 15.X.2011 14:12 CEST
Categories: english, rant
Comments: 1 piece

My first reaction to the news of Steve Jobs’ death was annoyance; here we go, a never ending stream of praise will hit the media “he changed the way we think about computers” and more nonsense like that. Then came the news of Dennis Ritchie’s death and nobody noticed. Hardly anybody I know even knows who he was, including people in the IT industry. Well, he is the guy who developed the C programming language, every time you touch something with software inside chances are astronomical there’s C code involved, and had great influence on UNIX, OSX is based on this work.

Everybody was still going on about how Steve gave them their pretty shiny laptop (in exchange for, on average, 2000 euros) and how happy it makes them everyday. Fact is: people like pretty shiny things and will more easily look passed their flaws. Our brains are wired to distrust ugly things and Steven Jobs turned that into gold. Now he’s being praised for his “contribution to the computing industry”.

He did make his contribution to the world, no doubt, but the scale is highly exaggerated in my opinion. Mister Ritchie on the other hand deserves much more credit. You, dear reader, are effected by his work right now, regardless of what brand of computer you’re using. That reminds me of a blog post by Linus Torvalds (google his name if you don’t know how he is), more than 90% of all your activity on the Internet touches his work and he was the nobody on the party and Warren Beatty is a star.

Rest in peace mister Dennis Ritchie.

EXIFR 1.1.1

Published at: 12.IX.2011 09:00 CEST
Categories: english, exifr, programming, ruby

I’ve added some convenience methods to access GPS because people really seem to want it. Is should be fully backward compatible with earlier versions;

EXIFR::JPEG.new('enkhuizen.jpg').gps.latitude  # => 52.7197888888889
EXIFR::JPEG.new('enkhuizen.jpg').gps.longitude # => 5.28397777777778

Enjoy!

Partial content for ring

Published at: 9.III.2011 21:25 CET

When streaming audio or video or serving largish files over HTTP you’ll eventually want to provide seeking resp. continue download capabilities to your application. I’ve cooked up some ring middleware to respond to partial content requests and mangle your application responses accordingly. It works well with the commonly used ring.middleware.file wrapper but do read the fine print.

Et voilá: ring-partial-content

Basic authentication for ring (and compojure etc.)

Published at: 23.VIII.2010 21:26 CEST

I’ve always liked HTTP authentication (like basic and digest) over login pages because they look so.. technically savvy. Finally somebody who bothered to read an RFC to implement it and make me feel warm and welcome like peers do.

Okay, I must admit, it takes a customer just a couple of moments to request a logout button, which is a real pain to implement, if possible at all. And I wouldn’t want to login on something I care about from a public computer either. But it is very nice for web services!

Anyway here’s my implementation as ring middleware: ring-basic-authentication

elein.el: leiningen functions for emacs

Published at: 19.VIII.2010 19:41 CEST
Categories: clojure, english
Comments: 3 pieces

I’ve bundled my emacs leiningen convenience functions into a package and dropped it on github for other people to use. It’s a collection of interactive commands for common lein tasks used within a project; elein-clean, elein-deps etc.

Mosts of the commands basically run lein using the emacs compile function, with the exception of elein-swank and elein-reswank. These also handle (re)connecting slime.

Curious?

  • download elein.el
  • copy it somewhere in you emacs load-path
  • (require 'elein)
  • open up a file in a leiningenize project
  • M-x elein-version

I hope somebody finds this useful.

Announcing clj-base64

Published at: 20.IV.2010 16:22 CEST
Categories: clojars, clojure, english
Comments: 2 pieces

I’ve justed released a small clojure library called clj-base64 for encoding and decoding data using the Base64 coding scheme. The code’s at github (and gitorious) and a pom and jar have been pushed to clojars.

Lein it up:

(defproject..
  :dependencies [..
                 [clj-base64 "0.0.0-SNAPSHOT"]]..

And use it:

(use 'remvee.base64)
(encode-str "I 8> clojure!")        ; => "SSA4PiBjbG9qdXJlIQ=="
(decode-str "SSA4PiBjbG9qdXJlIQ==") ; => "I 8> clojure!"

Enjoy!