New Version of Concerts in Oslo Pushed to the App Stores

(May 16, 2024)

I started doing the Concerts in Oslo web site in… 2013? Hey, I forgot the ten year anniversary… Anyway, the idea behind the thing is that there are no comprehensive and handy sites to see all the concerts in a city, really — I mean, these days, sites like Songkick cover a lot, but not … Continue reading New Version of Concerts in Oslo Pushed to the App Stores

Mysteries of Communication

(June 20, 2021)

Dear Web, since the world is opening up again, I thought it might be a good idea to spruce up the Concerts in Oslo apps for IOS and Android. Nothing major — just fix some minor layout issues and stuff like that. The Apple App Store submission was accepted within 12 hours (very nice), but … Continue reading Mysteries of Communication

Facebook Continues Its War Against The Web

(June 16, 2021)

I just got jabbed again today, so I thought it was time to start going out to catch some concerts again. It’s been just a … year … since the last time, and meanwhile my Concerts in Oslo concert listing web scraper aggregation service hasn’t received a lot of love. I mean — everything’s been … Continue reading Facebook Continues Its War Against The Web

So you want to run your own mail server… redux

(July 26, 2020)

I was reading this blog article today, and it reminded me that I hadn’t implemented MTA-STS in that mail server setup script I put together the other month. MTA-STS isn’t really… vital… for running a mail server, but I guess it’s nice to have, and it’s easy enough to add. It does mean that the … Continue reading So you want to run your own mail server… redux

Noindex Redux

(April 8, 2020)

A month ago, I wondered whether there was any way to make those useless WordPress overview pages (i.e., category, author and “page X” pages) go away from search index results. To recap, whenever I’m looking for something, Google has a tendency to return a result pointing to “page 35” of somebody’s blog, but when I … Continue reading Noindex Redux

The Campaign Against Link Rot

(April 6, 2020)

This blog has been going for a while, and more and more of the very, very useful external links (ahem) now point to sites that have disappeared, or that have rearranged all their internal links. This is sad. I wondered whether there was a tool that’d just point all the broken links to, and … Continue reading The Campaign Against Link Rot

The Google Audit

(April 6, 2020)

As I’m sure you remember perfectly, in 2012 (!) I did something silly (no really): I scripted a teensy thing that would check what was playing on the stereo, and then search Youtube for a video that matched that as best it could (based on artist name, track title and the length of the track), … Continue reading The Google Audit

So You Want To Run Your Own Mail Server…

(March 25, 2020)

Whenever the subject of running your own mail server comes up, there’ll always be two people who chime in. The first will say “No, don’t do it! It’s a virtually impossible thing to do these days!” The second will say “Don’t listen to that guy! It’s trivial! I just installed one and I had no … Continue reading So You Want To Run Your Own Mail Server…

Outgoing DKIM and exim4

(March 22, 2020)

So, I sent an email to my sister, and I didn’t hear back. After exchanging some SMS-es, it turns out my mails went to the spam box on Gmail. Rude! That’s a new development for my MTA (, so I tried poking around seeing whether I’d ended up in a blacklist or something. But, no, … Continue reading Outgoing DKIM and exim4

The Mysteries of WordPress

(March 12, 2020)

I moved to a self-hosted WordPress last week, and importing the images failed, so I had to do that manually. (That is, with rsync.) Everything seemed to work fine, but then I noticed that loading the images of some of the older pages seemed to take a long time. Like, downloading megabytes and megabytes of … Continue reading The Mysteries of WordPress

This Is A Test

(March 8, 2020)

This blog has been hosted on for many a year. It has, all in all, been a very pleasant experience: It feels like the uptime has been at least 110%, and most everything just works. The problems with using that solution is that it’s very restrictive. There’s so many little things you just can’t … Continue reading This Is A Test

Search Index Cleanliness Is Next To Something

(March 5, 2020)

Allegedly, 30% of all web pages are now WordPress. I’m guessing most of these WordPress sites aren’t typical blog sites, but there sure are many of them out there. Which makes it so puzzling why Google and WordPress don’t really play together very well. Lemme just use on of my own stupid hobby sites, Totally … Continue reading Search Index Cleanliness Is Next To Something

Parallax Error Beheads You

(February 25, 2020)

tl;dr: I made a silly 3D web page thing. Yadda yadda: For entirely nostalgic reasons, I’ve been buying a bunch of paperback books published by the largest Norwegian publishing house, Gyldendal, in the 60s and 70s. I guess these are the Norwegian equivalents of what Penguin was at the time: Cheap, but nice and with … Continue reading Parallax Error Beheads You

Reagent is… Nice?

(February 11, 2020)

I’ve been procrastinating on writing a web-based admin interface for… because I just haven’t been able to make up my mind as to what technologies to use. I hate learning new stuff, but it feels pretty stagnant to tap away in Javascript (on the frontend) and PHP for whatever has to happen on the … Continue reading Reagent is… Nice?


(January 10, 2020)

When looking at the log on my mail server, it usually looks like this: Just and endless stream of spammers sending spam to addresses that don’t exist. I’ve often wondered why people who run MTAs don’t just band together and work out was to just ban these obviously horrible spammy monsters from the interweb totally! … Continue reading “Spamtraps”

Whatever Happened To

(January 6, 2020)

I fucked up. Short version: If you’re reading mailing lists with an NNTP news reader via, you should update your news reader to point to instead. Over the past few years, people have asked me what happened to Gmane, and I’ve mostly clasped my hands over my ears and gone “la la la … Continue reading Whatever Happened To

Adding a CSS File to WordPress

(November 18, 2019)

Of all things in the world that are frustrating, Googling for how to do things in WordPress is the absolute worst. I guess I’m not used to, like, search for stuff that’s popular. Because whatever you search for related to WordPress, the top ten answers are from content farms that wants to sell you something, … Continue reading Adding a CSS File to WordPress


(April 20, 2019)

Hidden tracks on CDs used to be a pretty common thing. Not “real” hidden tracks: You could play tricks with the directory structure and put a track before the first one, so you have to skip back from 1 to get to 0. No, the common way to do this is to pad the final … Continue reading unsilence

(Not) HDR10 to sRGB

(February 27, 2019)

I’m going to be watching a bunch of 4K movies in High Dynamic Range (i.e., UHD HDR) later this year, and I’m going to be screenshotting a bit. Now, as you can see from that blog post, I’m using an HDMI splitter that sends the UHD HDR bits to the TV, and sends 2K SDR … Continue reading (Not) HDR10 to sRGB

For Flacs Sake

(December 16, 2018)

Yesterday, I bought this Black Cab EP off of Bandcamp, but when I played it today, all I got was silence. A new form of Extreme Australian Minimalism or a bug? My music interface is Emacs, and it uses flac123 to play FLAC files. It’s not a very er supported program, but I find it … Continue reading For Flacs Sake

Z-Wave and Emacs

(September 16, 2018)

I’ve had a 433-MHz-based “home automation” system (i.e., light switches) for quite some time. It works kinda OK. That is, I’m able to switch the lights on and off, which is the main point. But, man, the range of 433MHz devices sucks, including all Telldus models. I’ve been able to overcome the problems by having … Continue reading Z-Wave and Emacs

Twiddling Youtube; or, I mean, Innovations in Machine Learning

(August 14, 2018)

I mean, we’ve all been annoyed when we set up our USB monitor in our hallway that displays weather data, and then we decided to show videos from Youtube that somehow relate to the music that’s playing our apartment; we’ve dreamed of having something like the following catch our eyes when passing by on the … Continue reading Twiddling Youtube; or, I mean, Innovations in Machine Learning

I can haz mp4?

(August 3, 2018)

Let’s Encrypt was so ridiculously easy to install on my private web server that I wondered whether I could switch to mp4s for gifs. I mean, video snippets. I can’t do those directly on, because does not support controlling where mp4 videos appear in email posts. So let’s try! Did it work? Huh? … Continue reading I can haz mp4?

Innovations in Web Scraping

(August 3, 2018)

I added event descriptions to my Concerts in Oslo a few months back. It mostly worked kinda OK, but it’s using heuristics to find out what “the text” is, so it sometimes includes less-than-useful information. In particular, those fucking “YES IT KNOW IT”S A FUCKING COOKIE!” texts that all fucking web sites slather their pages … Continue reading Innovations in Web Scraping

Let It Snow

(November 24, 2017)

I wanted to make the Carpenter series of posts look ridiculously romantic, so I got the swashiest font I could find.  But it’s not enough: I wanted to make it snow, too. Now, this blog is on, which adds limitations to what is easy or even possible to do.  I wanted a CSS-only snowing … Continue reading Let It Snow

Responsive Comics

(September 13, 2017)

The other month I was staring at the Diamonds Previews interface that I hacked up last year. Its main purpose is to allow me (and anybody else) to go through the monthly listings rapidly, without all that clicking and stuff. I was wondering: Has CSS Flexbox technology progressed to the point where the interface could … Continue reading Responsive Comics

“Concerts in Oslo” App Updated

(July 30, 2017)

I took a short holiday to sit in the garden and update the Concerts in Oslo app.  I mainly wanted to make navigation more intuitive by having the “back” button do what you’d expect it to do, but I also wanted to play with the Google Map API and see whether that’s any fun. And … Continue reading “Concerts in Oslo” App Updated

Face Your Problems

(June 13, 2017)

I maintain a web site (and a gaggle of apps) that scrape event lists of all the clubs and concert venues in Oslo.  The other day, I was told that it missed a bob hund concert and I was all whaaa? It turned out that the reason was that Facebook is now blocking all non-logged-in … Continue reading Face Your Problems

Blackest Night

(February 7, 2017)

Previously: I bought an HDMI OLED screen and determined that its black pixels emitted light. This made me start wondering: Do all OLED screens emit light from “black” pixels? So I did the simplest thing possible to test this: I made a little app that displays a black screen. It’s on Google Play and everything. … Continue reading Blackest Night

More Fun With Google Geocharts

(January 1, 2017)

I’ve been using Google Geocharts to create nice world maps for my World of Films and Cocktail blogging project. It’s a pretty good service, but it doesn’t really have all the bells and whistles I need to customize the interactive version the way I want. But today I’m hung over, and I got down to … Continue reading More Fun With Google Geocharts

“Muting” Pictures With Pure CSS

(November 30, 2016)

I’ve been somewhat wary about posting some of the images from some of the more extreme Fantagraphics comics I’ve written about (I’m thinking of you, Grit Bath).  Not everybody appreciates being flashed images of bitten-off ears or penises while scrolling down a blog. On the other hand, I want to represent these comics honestly, so … Continue reading “Muting” Pictures With Pure CSS

Google GeoChart

(April 21, 2016)

I wanted to have some maps in my World of Films and Cocktails series.  Like this: I tried various mapping services, but nothing was flexible enought to do what I wanted.  I wanted more recently “visited” countries to be brighter, I wanted it to be scriptable, I wanted it to be easy to take unassisted … Continue reading Google GeoChart

Filtering Out Pingbacks From A “Recent Comments” Box

(October 12, 2015)

If you self-host your WordPress blog, you can do whatever you want.  If your blog is hosted at, you’re very limited in what you can customize. For instance, for years I have wanted to get rid of pingbacks from myself in the “Recent Comments” box on the pages.  When I link to older messages, … Continue reading Filtering Out Pingbacks From A “Recent Comments” Box


(October 10, 2015)

Look, I’m a Windows developer: Actually, I just pushed the Concerts in Oslo Cordova app to the Windows Phone store to debug the submission process.  At work I’ve tried to push an app several times to the store, but Microsoft just says “it doesn’t work”.  When I ask “er, what doesn’t work?” their response is … Continue reading NCSI SUV: CSID


(September 29, 2015)

Some weeks back, I decided to appify the Concerts in Oslo web page thingie.  Because UX. It’s a Cordova (i.e. Phonegap) app, so I thought it would be, like, no work at all.  And it wasn’t!  Until I started thinking about the added opportunities the Cordova framework gave me, like exporting events to the calendar … Continue reading SUV: CSID

Jolla, Keyboards and Apps

(September 12, 2015)

Oh, well. The search continues. Meanwhile I’ll just have to keep using my non-smart phone.


(September 3, 2015)

I made a web page for concerts in Oslo because reasons a couple years ago.  An evening this week, it occurred to me that perhaps I could make the page “responsive”; i.e., more cell phone friendly. That was quite easy, but one thing led to another, and before I knew what was happening, there were … Continue reading CSID: App

Campaign for Humane Sorting

(October 13, 2014)

Does this look familiar to you? Or this? Then you know the pain and suffering caused by virtually all tools that sort things “alphabetically” when those things contain numbers, and the strategies we’ve adopted to deal with these broken tools. We’re humans.  How would a human sort “foo25.txt” versus “foo3.txt”?  We would think “hm, there’s … Continue reading Campaign for Humane Sorting

From The Annals Of Trivial Programming Errors

(September 6, 2014)

It was pointed out to me that the alphabetical list of groups on my web site was very short.  It seemed to only list a tenth of the groups I probably had albums from. Here’s the snippet that constructs an array by reading the directory that contains all the group names: while ($group = readdir($dir)) … Continue reading From The Annals Of Trivial Programming Errors

Offensive Code

(March 10, 2014)

While writing code to format Roman Numerals, I was made aware of the Rosetta Stone collection of code snippets to do the same.  I read the code, and after looking at it for a few minutes, I found myself oddly offended. By the code. Here it is: (defun ar2ro (AN) “translate from arabic number AN … Continue reading Offensive Code

Detecting Youtube Movies

(December 18, 2013)

I play Youtube movies as background noise on a small USB monitor in the hall.  However, there seems to be no way to determine whether a Youtube clip is a “still image” thing or a real moving clip.  Lots of people just show a still image of an album cover and put some music on … Continue reading Detecting Youtube Movies finally gone awol?

(November 3, 2013)

According to this, shut down the service in 2007.  Now redirects to domainnamesales, which I assume aren’t nice people. The reason I noticed is this: I tried to submit something to, and it bounced because of  So perhaps somebody … not very nice … finally decided to start answering in the … Continue reading finally gone awol?

Importing Type1 Fonts Into LaTeX

(October 8, 2013)

Using “foreign” Type1 fonts in X is pretty easy — you just drop them somewhere and tell X about it.  Importing fonts for use in LaTeX/xdvi/dvips isn’t that difficult, either, but requires that you know just what files to alter.  I’ve been using this script for years.  It takes Type1 font files, runs them through … Continue reading Importing Type1 Fonts Into LaTeX

Crowdsourcing Is Dead

(September 22, 2013)

For a brief, shiny moment back around 2007, it seemed like crowdsourcing would really take off.  However, by now it’s become pretty obvious that we just saw an enormous influx of Can Do people as (pretty much) the entire Western world got reliable Interweb connections at all at once. Then most of these people grew … Continue reading Crowdsourcing Is Dead

The Gimp: A Complaint

(August 18, 2013)

With free software, you can’t really complain.  It’s free.  The people who made it don’t owe you anything. On the other side, I try to make software as least annoying as possible. I try, I fail.  But I try. Today’s sermon is about The Gimp. It’s a good program.  It doesn’t crash, and you can … Continue reading The Gimp: A Complaint

Displaying Animated Images With ImageMagick

(August 15, 2013)

The Internet Is Made For Cats I’ve spent the day adding support for animated GIFs to Emacs via ImageMagick.  Emacs can display animated GIFs already, of course, but not via ImageMagick, so we couldn’t scale animated images.  Which is awkward. An animated GIF is (basically) just a bunch of images in one blob.  However, the … Continue reading Displaying Animated Images With ImageMagick

Twenty Years Of September

(August 5, 2013)

Just a decade since the previous edition of the shirt After I had announced the No Gnus t-shirts, it was brought to my attention that this September is the 20th anniversary of Eternal September. That, surely, deserves a celebration.  Or a wake. In any case, you need this t-shirt to participate fully, wherever you may … Continue reading Twenty Years Of September

No Gnus T-Shirts!

(July 31, 2013)

After procrastinating for a few years (I’m getting better and better at procrastinating), I’ve finally gotten some No Gnus t-shirts organised. With fancy silver print and all. Head on over to the shop to buy some.  Buy a lot, buy a few.

New Chart Version

(July 30, 2013)

Back in 1999 (or something) I released the PHP library we use to generate charts and stuff.  It’s been updated somewhat since then, but I hadn’t pushed the update to PHP5 for some reason. So I took the opportunity to push it to github. Enjoy.

Note To Self

(July 3, 2013)

This is how you set up the digitemp device the next time the SSD breaks down and you’ve forgotten to back up the /etc directory: [larsi@stories ~]$ cat /etc/udev/rules.d/20-digitemp.rulesATTRS{idVendor}==”0403″, ATTRS{idProduct}==”6001″, MODE=”0666″, NAME=”digitemp” It’s “ATTRS” now, not “ATTR”.  Or “SYSFS”.  Thanks a lot, udev people.  Changing the names to be used in the conf files all … Continue reading Note To Self

Fluttering Back To The 20s

(June 29, 2013)

I’ve been running Youtube clips sourced from whatever is playing on the stereo as the background to my hallway weather monitor  for quite some time now, and I kinda like it.  Except when having guests over being slightly er puzzled about what’s running on the screen when the band Sex Worker is playing, for instance.  … Continue reading Fluttering Back To The 20s

The Teensiest Script

(June 12, 2013)

For decades I’ve wanted to be able to open an xterm and run a command in there as if I had just entered the command manually on the command line. That is, when the command exits, I don’t want the xterm to exit, and I want “arrow up” to show me the command that was … Continue reading The Teensiest Script

Libraries and Frameworks

(April 21, 2013)

The past few weeks I’ve been implementing a stock trading interface for cell phones.  I thought I’d give jQuery Mobile a whirl.  It looked quite nice in the demos, at least, and I was curious. jQuery Mobile promises that the pages will look app-ey, and will work on iPhones, Androids and Windows Phone 8 devices.  … Continue reading Libraries and Frameworks

Years and Years

(February 23, 2013)

I was reading this article and thinking “gee, 1980 sure was a good year for music”. So I wanted to list all the albums I had from 1980.  And then I discovered that I lacked the release year for about 1300 of mah records. Fortunately, has a nice API, so I wrote a tiny, … Continue reading Years and Years

20 Years of Free Software

(February 7, 2013)

It’s 2013.  It’s cold outside.  I’ve had a couple of drinks.  It’s the perfect time to sum up my career in free software.  I think it was yonder in 1992. That them there old days. I’d started using GNUS (the Emacs newreader) to read Usenet news.  My most pressing concern was how to read the, … Continue reading 20 Years of Free Software

Slightly More Useful Fluttering

(December 30, 2012)

Some weeks back I wondered whether I could use Youtube as a screen saver.  It turned out that I could. That wasn’t, strictly speaking, very useful, but now I had a small USB monitor sitting in the hall, so I might as well make it display something practical in addition to the music videos. Hence: … Continue reading Slightly More Useful Fluttering

Conspicuous Youtube Consumption

(December 17, 2012)

Stina Nordenstam rockin’ in the USB I’ve been sleeping in even odder patterns than usual lately (I suspect that I’m coming down with microencephaly, SAD and “the hypo”), so I found myself staring at the stereo computer thinking that there should be movement. I normally hate computer screens that have pulsing lights and stuff, but … Continue reading Conspicuous Youtube Consumption

Itsy Bitsy Sad Keanu Pair Programming

(October 4, 2012)

JavaScript Is Fun

(September 24, 2012)

In this blog post I ramble on about how writing stuff in JavaScript is fun.  Bonus conclusion: Node.js doesn’t suck, either! But first: Context. After some discussion, I decided that it might be nice to allow comments on Gwene.  However, if people make public comments, there should be a way to display these comments to … Continue reading JavaScript Is Fun

Computers Can Remember Things

(March 20, 2012)

One feature that I’ve been missing from mplayer for years and years is the ability to remember how far you’ve watched a movie.  Like, if I’ve been watching a movie, but then I stop the movie because I want to watch a TV show, then mplayer doesn’t helpfully remember where you left off. So I’ve … Continue reading Computers Can Remember Things

Compositing Text Over Images

(March 17, 2012)

8 Inch USB Screen With Composited Text I have a number of small USB-powered screens scattered across the apartment that displays various stuff that I find myself wanting to know.  In particular, I always want to know what music is playing. And I sometimes want to know what temperature it is outside.  (And I can … Continue reading Compositing Text Over Images

Tube on the Tube

(December 20, 2011)

Puny Weakling Laptop I’ve wanted to be able to display YouTube stuff on my TV for a long time.  If somebody mentions a link on IRC, it would be nice to display that on the big screen instead of my minuscule sofa laptop.  (Which isn’t powerful enough to show most YouTube videos, anyway. Poor Sony … Continue reading Tube on the Tube

Music Distribution

(November 12, 2011)

The main issue when I moved to the new flat, oh, three-ish years ago? I think, was how to listen to music. I want to be able to walk between rooms, listening to the same music.  This means that there has to be some kind of way to distribute music between the rooms. I looked … Continue reading Music Distribution

Will This Do?

(November 9, 2011)

I was reading an MC Siegler post linked to from HackerNews, where he rants about the iOS Gmail client and Google products in general: And all of this is the M.O. of pretty much all Google iOS apps. They’re half-ass, buggy, and generally ugly to boot. The obvious retort is “yeah, and Apple never released … Continue reading Will This Do?

flac123 tweaks

(November 8, 2011)

I’ve altered flac123 slightly to allow setting the output buffer size, as well as cleaning up the STDOUT/STDERR interaction and put it on github.  Not extremely exciting. So here’s a picture of a bowl: Bowl

Scanning Record Sleeves

(April 19, 2011)

A CD Rippin’ Cupboard with an A3 Scanner In the continuing story of bits and pieces related to my music playing Emacs@Home installation, here’s the sleeve scanning function.  It’s basically just a tiny data base of common CD/LP/tape sleeve sizes. There’s a lot of sizes, unfortunately. But what I really wanted to have was something … Continue reading Scanning Record Sleeves

Greylisting Considered Annoying

(April 16, 2011)

Nobody likes spam.  So to avoid spam they either inflict pain on others, like with challenge/response systems that send endless challenges to me since “I” have sent them spam (From headers are so hard to fake? (I know this guy who automatically responds to all challenge/response systems (evil, but understandable))), or they use “greylisting”, which … Continue reading Greylisting Considered Annoying

Adding Commands to mplayer

(April 7, 2011)

The computer I use to watch DVDs (and other stuff) with has three sound outputs: via HDMI to the TV, via the built-in analogue sound port to my wireless headphones, and via a USB sound card to external stereo speakers.  Which one I use depends on what I’m watching and what time of day it … Continue reading Adding Commands to mplayer

Tellstick Redux

(April 1, 2011)

I was whinging a lot about the terrible Tellstick range in my last post on the issue.  Deservedly so.  It’s terrible!  However, the Telldus people have released a new version of the device: The revolutionary new invention is the antenna!  Who would ever have thought that an antenna would give greater range?  Kids these days. … Continue reading Tellstick Redux

Make RSS feeds from Shoutbox Pages

(March 31, 2011)

I was somewhat interested in seeing what people were saying about the new Boris albums on, but reloading that page is so 1993.  I wanted to read it through Gwene, but there’s no RSS feeds on  So I whipped one up (in Perl!  *sob*) and put the service on Quimby. Feel free to … Continue reading Make RSS feeds from Shoutbox Pages

Emacs Home Automation

(January 9, 2011)

Nexa unit We all grow so very weary of having to switch lights on and off. Every day. On again and then off again. Will the madness never end? Technology comes to the rescue! There are companies that sell receivers (like the one pictured to the left, plugged into a wall outlet that I now … Continue reading Emacs Home Automation