Lighting talk – Tail call optimisation in C++

This series: Lightning talk, Explanation, Performance, Generalisation.

Update: watch the video

Here’s the lightning talk I gave at the ACCU 2012 Conference:

Tail Call Optimisation in C++

It’s about how you would generate C++ code that represents a recursive function, without running out of stack space.

Freeview dvb-t scan gives “tuning failed!!!” after 18th April switchover

Usually when the channel lineup changes, I just have to do this:

$ scan /usr/share/dvb/dvb-t/uk-CrystalPalace > ~/.mplayer/channels.conf

But this time it is failing with:

>>> tune to: 505833000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_AUTO:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
>>> tune to: 505833000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_AUTO:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE (tuning failed)
WARNING: >>> tuning failed!!!

(snip)

However, a more low-level scan with w_scan seems to be working today:

$ sudo apt-get install w-scan     # Install w_scan
$ w_scan -X > ~/.mplayer/channels.conf

I still can’t see BBC Four at the moment…

Update
It looks like I have to scan when the channels are actually on air. I did this:

$ cd ~/.mplayer
$ w_scan -X > channels.conf.morning    # I ran this in the morning
$ w_scan -X > channels.conf.evening    # I ran this in the evening
$ cat channels.conf.morning channels.conf.evening | sort | uniq > channels.conf

Now I have both BBC Four and CBeebies, which pretty much covers us!

Scheme: feel the cool

Update: watch the video

In this series on Scheme: Intro, Basics, Closures.

Here’s a presentation I did recently, introducing the Scheme programming language (a dialect of Lisp).

Scheme: feel the cool

Metaprogramming is very powerful, but is usually so hard that we shy away from it. In Scheme, most metaprogramming is just “normal” programming – you can do it in the same language, and in a macro language that is very similar the normal language.