Creative defacement
Something funny I saw attached to a sign on the car park down the road from my flat:
IPv6
IPv6 is something that I've been interested in for a while; I was even employed to do some v6 porting work a few years ago. Unfortunately, even though it's been several years and address exhaustion is rapidly approaching, uptake remains slow.
create nat rule entry ruleid 41416 rdr prot num 41 lcladdrfrom 192.168.1.6 lcladdrto 192.168.1.6
iface tun6to4 inet6 v4tunnel address 2002:0102:0304::1 netmask 16 endpoint any local 192.168.1.6 ttl 255 remote 192.88.99.1 post-up ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 post-down ip -6 route flush dev tun6to4 auto tun6to4
$ ping6 ipv6.google.com PING ipv6.google.com(2001:4860:a003::68) 56 data bytes 64 bytes from 2001:4860:a003::68: icmp_seq=1 ttl=61 time=53.8 ms 64 bytes from 2001:4860:a003::68: icmp_seq=2 ttl=61 time=52.5 ms 64 bytes from 2001:4860:a003::68: icmp_seq=3 ttl=61 time=45.5 ms 64 bytes from 2001:4860:a003::68: icmp_seq=4 ttl=61 time=51.5 ms
interface eth0
{
AdvSendAdvert on;
prefix 2002:0102:0304:face::/64
{
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
};
iface eth0 inet6 static
address 2002:0102:0304:face::1
netmask 64
net.ipv6.conf.all.forwarding=1 net.ipv6.conf.default.forwarding=1
sudo sysctl net.ipv6.conf.all.forwarding=1 sudo sysctl net.ipv6.conf.default.forwarding=1
wlan0 Link encap:Ethernet HWaddr 00:1c:10:63:63:d0
inet addr:192.168.1.25 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: 2002:0102:0304:face:21c:10ff:fe63:63d0/64 Scope:Global
inet6 addr: fe80::21c:10ff:fe63:63d0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7658 errors:0 dropped:0 overruns:0 frame:0
TX packets:7228 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4073660 (4.0 MB) TX bytes:903010 (903.0 KB)
Stock photos
BBC News' obsession with filling their articles with stock photos that contain no relevant information is reaching absurd extremes.
ebay
Buying things on eBay became more fun once I started getting creative with the feedback that I leave for people.
12 inch pianist
For anyone who doesn't get today's xkcd (I did, but there seem to be quite a few people who haven't heard that joke before).The Buddha Lounge
The Indian restaurant opposite my house, which was called The Natraj, has reinvented itself as a trendy bar, called "The Buddha Lounge". This is ironic on multiple levels.
Firstly, the Five precepts of Buddhism forbid the consumption of alcohol or intoxicating substances. Secondly, the more strict Eight precepts encourage followers to abstain from music and dancing, and also from all sexual activity (and the main purpose of these types of bar is basically to find willing sexual partners). Finally, followers also refrain from "luxurious places for sitting or sleeping", so even the "lounge" part is out.
What's next, the Jesus Casino?
Does this make me an Internet star?
I was reading the Wikipedia article about Ken Silverman's PNGOUT, which is a program for creating optimised versions of PNG images. However, it was the screenshot in that article that intrigued me the most. Upon further investigation, it seems that a group of Wikipedia users have been running a minor contest amongst themselves to create the most optimised version possible of an image I originally uploaded three years ago.
It's really weird when you stumble across things like this.
c-algorithms 1.2.0
Version 1.2.0 of my C Algorithms library is up. The biggest changes in this release are the improvements to the test suite. I've written a bit about the test process that I've been using for improving the library.
Learning about coverage tools has been an interesting process. I liken writing tests without using coverage analysis to trying to optimise code without doing any profiling. With optimisation, it's easy to pick something that you think is a bottleneck and waste lots of time optimising it; in the same way, I've found that it's possible to write tests that you think are exercising the code in a satisfactory way, but actually aren't. Profiling helps to show exactly what's going on. In the course of analysing the library, I found a bug that should have been shown up in the tests, but wasn't, because the tests weren't exercising all of the code as I assumed they were.
Testing how code behaves in failure conditions is as important as testing how it behaves normally, so I wrote some code that uses #define macros to wrap the standard C allocation functions and allow the tests to simulate memory allocation failures. Again, coverage analysis is helpful here, too.
All in all, I'm not entirely sure why I'm writing a data structures and algorithms library, considering that all of these things have already been implemented hundreds of times over by different people. I originally wrote the library to remove the dependency of Irmo on GLib. Since then it's taken on a life and direction of its own, probably due to my own slightly obsessive nature. I think I just like the process of crafting something to the highest quality I possibly can.
(Also: Open source software with a test process? World coming to an end!)
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!