April 01, 2018

Robert McWilliam

Network effect

As Warren Ellis recently mentioned: once upon a time if your kink was one in a million you needed to be in a fairly big city to find a single digit number of people who might be on the same page.

Finding them was a non-trivial exercise.

Those days are past (but recent enough that I can remember them).

The internet now connects 3.something billion people. A one in a million kink lumps you in with a few thousand people. And they're only a Google search away.

You need to be a couple orders of magnitude further off the beaten track if you want to stand out these days.

April 01, 2018 11:00 PM

January 20, 2018

Tom Jones


FreeBSD on an Intel x5-z8350 tv box

There are a load of sort of generic tv boxes on ebay with an Intel x5-z8350 processor.

The x5 SOC (formerly Cherry Tree, formerly Cherry View) is the same family as the SOC in my beloved GPD Pocket. I was really having trouble with the i2c hardware in the GPD Pocket and wanted something I could take apart and poke with an oscilloscope. I looked first at the UP Board, an x5-z8350 in a raspberry pi form factor, but not only was it much more expensive than this tv box, but it has a CPLD between the SOC io and the pin header.

Installing FreeBSD

First I needed to get the board to boot from USB, the listing I bought came with both android and windows 10 (I guess that is what dual os means). In both android and windows 10 there was a handy reboot to other os application.

From installing on the GPD Pocket I suspected that the bios boot menu key would be F7 so I used that. Windows 10 also includes a handy reboot to uefi config option which makes it easy to get into a bios menu. I used it to disable quiet boot and set the boot delay to a more sensible number.

With those changes I rebooted and got a familiar AMI bios boot screen hit F7 and choose your usb stick from the menu. The FreeBSD loader menu came up and continued into a boot from the usb stick, but it hung probing ppc0.

I found a solution on the freebsd forum post about the upboard which suggested running:

OK unset

at the loader prompt. With that you I could boot and do an install.

Before you reboot make sure to make that change permanent, by removing this line in /boot/device.hints

..."0x100""isa"        # comment this line out

now reboot.


I setup the the drm-next-kmod driver, but the machine froze during boot. Next I tried using a frame buffer driver, which required the collowing config in /usr/local/etc/X11/xorg.conf.d/driver-scfb.conf :

Section "Device"
    Identifier "Generic FB"
    Driver "scfb"

 Section "Device"
     Identifier    "Card0"
     Driver        "scfb"


x5 ports

The box has:

  • Blue/Red LED
  • External Power button
  • External(ish) reset button
    • Pressing the reset button caused an instant power cycle.
  • 4 usb ports
    • 1 USB 3
    • 2 external USB 2
    • 1 internal USB 2
  • sd card reader
    • but it doesn't seem to be hotpluggable
  • ethernet
  • hdmi

The x5 box also has bluetooth and wifi, but neither currently have FreeBSD drivers.

x5 top without heatsink

Internally there are a whole bunch of unpopulated things that might be interesting.

x5 top top left

On the top left there is an unpopulated 2.54mm pin header slot next to the led, silkscreen on the board has 1 and a 7 on either end. Probing around with a multimeter suggested that P7 was ground.

I spent quite a while poking the board with a multimeter and osclloscope to see if any gpio or buses were exposed on the headers or the board. I did find that if you connect pin 1 to gnd (or pin 7) the red led comes on and the board goes off.

I did not find any useful or even really interesting signals.

x5 top bottom right

On the bottom right there is an unpopulate 15 pin header, all but two of these were connect to ground.


Some more gory insides:

x5 board with heatsink x5 bottom screw x5 bottom x5 case x5 ports naked x5 top without heatsink top right x5 without heatsink bottom right x5 without heatsink rtc

Copyright (c) 1992-2018 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
    The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 12.0-CURRENT #0 r328126: Thu Jan 18 15:25:44 UTC 2018 amd64
FreeBSD clang version 6.0.0 (branches/release_60 321788) (based on LLVM 6.0.0)
WARNING: WITNESS option enabled, expect reduced performance.
VT(efifb): resolution 1920x1080
CPU: Intel(R) Atom(TM) x5-Z8350  CPU @ 1.44GHz (1440.00-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x406c4  Family=0x6  Model=0x4c  Stepping=4
  AMD Features=0x28100800<SYSCALL,NX,RDTSCP,LM>
  AMD Features2=0x101<LAHF,Prefetch>
  Structured Extended Features=0x2282<TSCADJ,SMEP,ERMS,NFPUSG>
  TSC: P-state invariant, performance statistics
real memory  = 2147483648 (2048 MB)
avail memory = 1946144768 (1855 MB)
Event timer "LAPIC" quality 600
WARNING: L1 data cache covers fewer APIC IDs than a core (0 < 1)
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
FreeBSD/SMP: 1 package(s) x 4 core(s)
random: unblocking device.
ioapic0 <Version 2.0> irqs 0-114 on motherboard
SMP: AP CPU #2 Launched!
SMP: AP CPU #1 Launched!
SMP: AP CPU #3 Launched!
Timecounter "TSC" frequency 1440001458 Hz quality 1000
random: entropy device external interface
netmap: loaded module
[ath_hal] loaded
module_register_init: MOD_LOAD (vesa, 0xffffffff80ff8620, 0) error 19
random: registering fast source Intel Secure Key RNG
random: fast provider: "Intel Secure Key RNG"
kbd1 at kbdmux0
cryptosoft0: <software crypto> on motherboard
acpi0: <ALASKA A M I > on motherboard
Firmware Error (ACPI): Failure creating [BDLI], AE_ALREADY_EXISTS (20180105/dswload-498)
ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20180105/psobject-371)
ACPI Error: AE_ALREADY_EXISTS, (SSDT: DptfTab) while loading table (20180105/tbxfload-355)
ACPI Error: 1 table load failures, 8 successful (20180105/tbxfload-378)
acpi0: Power Button (fixed)
unknown: I/O range not supported
cpu0: <ACPI CPU> on acpi0
cpu1: <ACPI CPU> on acpi0
cpu2: <ACPI CPU> on acpi0
cpu3: <ACPI CPU> on acpi0
attimer0: <AT timer> port 0x40-0x43,0x50-0x53 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
atrtc0: <AT realtime clock> port 0x70-0x77 on acpi0
atrtc0: Warning: Couldn't map I/O.
atrtc0: registered as a time-of-day clock, resolution 1.000000s
Event timer "RTC" frequency 32768 Hz quality 0
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff irq 8 on acpi0
Timecounter "HPET" frequency 14318180 Hz quality 950
Event timer "HPET" frequency 14318180 Hz quality 450
Event timer "HPET1" frequency 14318180 Hz quality 440
Event timer "HPET2" frequency 14318180 Hz quality 440
Timecounter "ACPI-safe" frequency 3579545 Hz quality 850
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
vgapci0: <VGA-compatible display> port 0xf000-0xf03f mem 0x90000000-0x90ffffff,0x80000000-0x8fffffff at device 2.0 on pci0
vgapci0: Boot video device
xhci0: <Intel Braswell USB 3.0 controller> mem 0x91700000-0x9170ffff at device 20.0 on pci0
xhci0: 32 bytes context size, 64-bit DMA
usbus0 on xhci0
usbus0: 5.0Gbps Super Speed USB v3.0
pci0: <serial bus, USB> at device 22.0 (no driver attached)
pci0: <encrypt/decrypt> at device 26.0 (no driver attached)
pcib1: <ACPI PCI-PCI bridge> at device 28.0 on pci0
pci1: <ACPI PCI bus> on pcib1
re0: <RealTek 8168/8111 B/C/CP/D/DP/E/F/G PCIe Gigabit Ethernet> port 0xe000-0xe0ff mem 0x91604000-0x91604fff,0x91600000-0x91603fff at device 0.0 on pci1
re0: Using 1 MSI-X message
re0: turning off MSI enable bit.
re0: Chip rev. 0x4c000000
re0: MAC rev. 0x00000000
miibus0: <MII bus> on re0
rgephy0: <RTL8251/8153 1000BASE-T media interface> PHY 1 on miibus0
rgephy0:  none, 10baseT, 10baseT-FDX, 10baseT-FDX-flow, 100baseTX, 100baseTX-FDX, 100baseTX-FDX-flow, 1000baseT-FDX, 1000baseT-FDX-master, 1000baseT-FDX-flow, 1000baseT-FDX-flow-master, auto, auto-flow
re0: Using defaults for TSO: 65518/35/2048
re0: Ethernet address: 84:39:be:65:0d:60
re0: netmap queues/slots: TX 1/256, RX 1/256
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
acpi_button0: <Power Button> on acpi0
acpi_tz0: <Thermal Zone> on acpi0
sdhci_acpi0: <Intel Bay Trail/Braswell eMMC 4.5/4.5.1 Controller> iomem 0x9173c000-0x9173cfff irq 45 on acpi0
mmc0: <MMC/SD bus> on sdhci_acpi0
sdhci_acpi1: <Intel Bay Trail/Braswell SDXC Controller> iomem 0x91738000-0x91738fff irq 47 on acpi0
mmc1: <MMC/SD bus> on sdhci_acpi1
uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
atkbdc0: non-PNP ISA device will be removed from GENERIC in FreeBSD 12.
est0: <Enhanced SpeedStep Frequency Control> on cpu0
est1: <Enhanced SpeedStep Frequency Control> on cpu1
est2: <Enhanced SpeedStep Frequency Control> on cpu2
est3: <Enhanced SpeedStep Frequency Control> on cpu3
Timecounters tick every 1.000 msec
ugen0.1: <0x8086 XHCI root HUB> at usbus0
uhub0: <0x8086 XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus0
mmcsd0: 31GB <MMCHC NCard  4.5 SN 6E7E9160 MFG 06/2017 by 136 0x0003> at mmc0 200.0MHz/8bit/8192-block
mmcsd0boot0: 4MB partion 1 at mmcsd0
mmcsd0boot1: 4MB partion 2 at mmcsd0
mmcsd0rpmb: 4MB partion 3 at mmcsd0
mmc1: No compatible cards found on bus
WARNING: WITNESS option enabled, expect reduced performance.
Trying to mount root from ufs:/dev/mmcsd0p2 [rw]...
uhub0: 13 ports with 13 removable, self powered
lock order reversal:
 1st 0xfffff8000417e240 ufs (ufs) @ /usr/src/sys/kern/vfs_subr.c:2607
 2nd 0xfffffe0000e46500 bufwait (bufwait) @ /usr/src/sys/ufs/ffs/ffs_vnops.c:282
 3rd 0xfffff800042a09a0 ufs (ufs) @ /usr/src/sys/kern/vfs_subr.c:2607
stack backtrace:
#0 0xffffffff80b2bba3 at witness_debugger+0x73
#1 0xffffffff80b2ba24 at witness_checkorder+0xe34
#2 0xffffffff80a9cbeb at __lockmgr_args+0x88b
#3 0xffffffff80dc2565 at ffs_lock+0xa5
#4 0xffffffff810f7af9 at VOP_LOCK1_APV+0xd9
#5 0xffffffff80ba7006 at _vn_lock+0x66
#6 0xffffffff80b9599f at vget+0x7f
#7 0xffffffff80b87891 at vfs_hash_get+0xd1
#8 0xffffffff80dbe25f at ffs_vgetf+0x3f
#9 0xffffffff80db4886 at softdep_sync_buf+0xd16
#10 0xffffffff80dc3354 at ffs_syncvnode+0x294
#11 0xffffffff80d999ff at ffs_truncate+0x6df
#12 0xffffffff80dca7f1 at ufs_direnter+0x641
#13 0xffffffff80dd393c at ufs_makeinode+0x61c
#14 0xffffffff80dcf5b4 at ufs_create+0x34
#15 0xffffffff810f51d3 at VOP_CREATE_APV+0xd3
#16 0xffffffff80ba6908 at vn_open_cred+0x2a8
#17 0xffffffff80b9f14c at kern_openat+0x20c
ugen0.2: <Dell Dell USB Entry Keyboard> at usbus0
ukbd0 on uhub0
ukbd0: <Dell Dell USB Entry Keyboard, class 0/0, rev 1.10/1.15, addr 1> on usbus0
kbd2 at ukbd0
ugen0.3: <SanDisk Cruzer Fit> at usbus0
umass0 on uhub0
umass0: <SanDisk Cruzer Fit, class 0/0, rev 2.00/2.01, addr 2> on usbus0
umass0:  SCSI over Bulk-Only; quirks = 0x8100
umass0:0:0: Attached to scbus0
da0 at umass-sim0 bus 0 scbus0 target 0 lun 0
da0: <SanDisk Cruzer Fit 2.01> Fixed Direct Access SPC-4 SCSI device
da0: Serial Number 4C530302741216116074
da0: 40.000MB/s transfers
da0: 3819MB (7821312 512 byte sectors)
da0: quirks=0x2<NO_6_BYTE>
re0: link state changed to DOWN
GEOM_PART: integrity check failed (da0s4, BSD)
GEOM_PART: integrity check failed (ufsid/5a1180062a826673, BSD)
GEOM_PART: integrity check failed (diskid/DISK-4C530302741216116074s4, BSD)

dmesg on

January 20, 2018 12:00 AM

January 02, 2018

Robert McWilliam

Save chrome eating battery life

I seem to collect chrome tabs. I usually have a few dozen open, often many more if I haven't cleaned them out for a while. Once upon a time reboots would clear them out but these days I reopen the previous session when I boot so tabs don't go away unless I actually tell them to. Lots of them do stuff in the background so chrome ends up using a decent chunk of CPU time. It is almost always at the top of the list in powertop.

Most of the time I don't care about this. If my computer is plugged in then it's fine. When I'm running on battery though I care a lot more. Then when I'm doing something that I don't need the web I put chrome to sleep with killall -STOP chrome and then when I want it back: killall -CONT chrome. Bind those two commands to keys and I can stop and start chrome as needed, and when I don't need it it doesn't get to eat my precious battery life.

January 02, 2018 12:00 AM

November 07, 2017

Iain R. Learmonth


Mastodon + XMPP + SIP

This is an idea. I haven’t looked at actually doing it yet, but I might.

Mastodon needs complimentary instant messaging and I’ve been thinking about how this might be achieved. XMPP and SIP are great federated protocols and it’s possible to use the same domain used for Mastodon for these through SRV records.

Authentication for XMPP and SIP is based on passwords. Mastodon could be extended to write out password hashes to a database to have one password for each service per device. You could then have those servers query the database and check password hashes. I’m not sure what the security properties of this would be compared to OAuth, but I think it’s similar just without the in-band setup.

I’m told there was previously an attempt to build out a social network on top of XMPP which sounded interesting, but OStatus seems to have won in this space. Still, if it’s possible for Mastodon to control authentication for the XMPP server, temporary passwords could be created for access from a web client embedded in the Mastodon frontend to provide federated real-time chat.

Adding users to your roster would likely need to be a seperate step (which would perhaps be beneficial to those that don’t want to chat with everyone they follow). The actual level of integration may vary between instances and that’s perfectly fine, implementations would need to consider this.

Presence information (online/offline status) would perhaps raise privacy concerns and so information would need to be conveyed to users about possible implications.

I’m not sure whether to start off with the backend work or the frontend work either. It would be possible for one to exist without the other entirely, you could link an XMPP account to your Mastodon account and use an external service, or you could only create the XMPP account from Mastodon and use only external clients.

If this is something that interests you, I’d be happy to have a discussion about it. On Mastodon I am

November 07, 2017 03:00 PM

November 06, 2017

Iain R. Learmonth


Talking to Hackers

Yesterday Ana finished setting up FreePBX for our house, and revived the Cisco SIP phones to make them useful again. Eventphone provides SIP, DECT, GSM and other telephony technologies at hacker events like CCC and also runs a long-running SIP service, known as EPVPN to connect hackerspaces and hackers between events.

We set up our extension as a trunk in FreePBX and could easily test outbound calls, but it was a little more difficult to test inbound calls. There was no system to queue up a test call (at least that I could find) so we needed to find someone to call back manually.

SpaceAPI provides a JSON document that lets you know if a hackerspace is open or not. It was 11pm in the UK so I wanted to make sure whoever I was calling wouldn’t mind the call. Once I found a hackerspace (Hackspace Marburg) that was open I placed a call and someone answered, but the hackerspace was in Germany and the call was answered in German. Luckily, they also spoke English.

After looking up the documentation of how to call Eventphone extensions using their hackerspace PBX, I got a call back and confirmed that I could receive incoming calls.

Some next steps:

  • Add extensions for the DECT phones which live downstairs
  • Set up a SIP phone for 57North Hacklab for which I have registered extension 1057

November 06, 2017 11:00 PM

November 03, 2017

Iain R. Learmonth


Free Software Efforts (2017W44)

Here’s my weekly report for week 44 of 2017. This has been a quiet week.

Tor Project

In this week I have looked at metrics-bot being compliant with the Tor metrics team’s Java style guide (#24080 ) and integrating it into a unified package naming scheme (#24036 ).

There has been a lot of refactoring in metrics-bot this week as components are starting to mature. I have started work on using metrics-base, the metrics team directory structure for Java projects and also formatting, but this still needs more work before it is completed.


I believe it is important to be clear not only about the work I have already completed but also about the sustainability of this work into the future. I plan to include a short report on the current sustainability of my work in each weekly report.

I have not had any free software related expenses this week. The current funds I have available for equipment, travel and other free software expenses remains £60.52. I do not believe that any hardware I rely on is looking at imminent failure.

November 03, 2017 10:00 PM

October 29, 2017

Iain R. Learmonth


Free Software Efforts (2017W43)

Here’s my weekly report for week 43 of 2017. This has been a quiet week.

Tor Project

In this week metrics-bot has had some issues where Onionoo was disappearing (#23928 ). I have been building in better error handling for requests to external services. I’ve also started to investigate other templates for status updates that might be useful (#23937 ), and have added a configuration framework to allow for credentials for services to be externally provided (#23933 ).


I believe it is important to be clear not only about the work I have already completed but also about the sustainability of this work into the future. I plan to include a short report on the current sustainability of my work in each weekly report.

I have not had any free software related expenses this week. The current funds I have available for equipment, travel and other free software expenses remains £60.52. I do not believe that any hardware I rely on is looking at imminent failure.

October 29, 2017 10:00 PM

October 26, 2017

Iain R. Learmonth



I joined Mastodon today. So did metrics-bot who is now simultooting to the fediverse.

metrics-bot on Mastodon

metrics-bot on Mastodon

Annoyingly, the API for Mastodon is different enough from the API for Twitter that I’ve needed to use a new library in metrics-bot. I’m using the mastodon4j library for now, but I’m really using so little of the API I do wonder if it would be easier to just reimplement the parts that are needed and drop the rest. The only part I’m really worried about is the OAuth authentication and I’m sure that won’t be anywhere near as bad as I think it will be.

October 26, 2017 10:00 PM

October 25, 2017

Iain R. Learmonth


Behringer Xenyx 302USB

I have decided to invest in a USB audio interface. My primary motivation for this is that I might like to produce some screencasts in the near future. My secondary motivation was being able to have a headphone socket on my desk to give me more freedom of movement than I would have plugged into the front of the workstation under my desk.

I went with a Behringer Xenyx 302USB and I’ve been quite happy with it so far.

The 302USB on my desk

The 302USB on my desk

I have heard that some audio interfaces have trouble with Linux as they require DSP implemented in software provided by Windows-only drivers. In the case of the 302USB, as soon as I plugged it into my Debian workstation, PulseAudio had picked up the new interface and I could use it straight away.

I have the main mix output hooked up to my amplifier and this is my default speaker output from the workstation now. The sound quality is great, plus the 2 band graphic EQ allows for me to tweak the sound for my speakers.

There are two mic inputs, although I believe you can only use one at a time. One is a 3.5mm jack next to the headphone jack and will be great for using the headset with Mumble.

The main mic input is a combination 6.25mm/XLR jack that accepts both types of jack. I had no idea such a connector existed, but it does and it means that I have three options for connector for attaching microphones. The main jack also provides phantom power.

For the price (£48), I would definitely recommend this model to anyone thinking of getting a simple USB audio interface.

October 25, 2017 10:00 PM

October 24, 2017

Iain R. Learmonth


Security by Obscurity

Today this blog post turned up on Hacker News, titled “Obscurity is a Valid Security Layer”. It makes some excellent points on the distinction between good and bad obscurity and it gives an example of good obscurity with SSH.

From the post:

I configured my SSH daemon to listen on port 24 in addition to its regular port of 22 so I could see the difference in attempts to connect to each (the connections are usually password guessing attempts). My expected result is far fewer attempts to access SSH on port 24 than port 22, which I equate to less risk to my, or any, SSH daemon.

I ran with this alternate port configuration for a single weekend, and received over eighteen thousand (18,000) connections to port 22, and five (5) to port 24.

Those of you that know me in the outside world will have probably heard me talk about how it’s insane we have all these services running on the public Internet that don’t need to be there, just waiting to be attacked.

I have previously given a talk at TechMeetup Aberdeen where I talk about my use of Tor’s Onion services to have services that only I should ever connect to be hidden from the general Internet.

Onion services, especially the client authentication features, can also be useful for IoT dashboards and devices, allowing access from the Internet but via a secure and authenticated channel that is updated even when the IoT devices behind it have long been abandoned.

If you’re interested to learn more about Onion services, you could watch Roger Dingledine’s talk from Def Con 25.

October 24, 2017 10:00 PM

October 23, 2017

Iain R. Learmonth


Bugs in websites

Reporting a bug in free software is easy. It turns out that everything I thought I knew about bug reporting was turned on its head when I tried to report a bug in the Tesco groceries website.

I was finding some sort of JavaScript problems in that my CPU was held at 100% and the page wasn’t really usable.

As with bug reports, I was expecting to at least have some technical information logged along with my email address so someone can contact me if they want me to try some things out. What I actually got:

Hmm. No. These are not standard fields in bugzilla.

In the end Tesco logged my bug report “anonymously”, claiming something about data protection as the reason.

I haven’t checked today if the issue is solved, but I have been using Tesco’s groceries website without issue for years now, so hopefully this is temporary.

October 23, 2017 10:00 PM

October 22, 2017

Iain R. Learmonth


Free Software Efforts (2017W42)

Here’s my weekly report for week 42 of 2017. In this week I have replaced my spacebar, failed to replace a HDD and begun the process to replace my YubiKey.


Eariler in the week I blogged about powerline-taskwarrior . There is a new upstream version available that includes the patches I had produced for Python 2 support and I have filed #879225 to remind me to package this.

The state of emscripten is still not great, and as I don’t have the time to chase this up and I certainly don’t have the time to fix it myself, I’ve converted the ITP for csdr to an RFP.

As I no longer have the time to maintain, I have released this domain name and published the sources behind the service.

Tor Project

There was a request to remove the $ from family fingerprint on Atlas. These actually come from Onionoo and we have decided to fix this in Onionoo, but I did push a small fix for Atlas this week that makes sure that Atlas doesn’t care if there are $ prefixes or not.

I requested that a Trac component be created for metrics-bot. I wrote a seperate post about metrics-bot.

I also attended the weekly metrics team meeting.


I believe it is important to be clear not only about the work I have already completed but also about the sustainability of this work into the future. I plan to include a short report on the current sustainability of my work in each weekly report.

I have not had any free software related expenses this week. The current funds I have available for equipment, travel and other free software expenses remains £60.52. I do not believe that any hardware I rely on is looking at imminent failure.

I do not find it likely that I’ll be travelling to Cambridge for the miniDebConf as the train alone would be around £350 and hotel accomodation a further £600 (to include both me and Ana).

October 22, 2017 10:00 PM

I operated to provide a map of Debian contributors and mirrors. There were plans to add in Debian events/sprints but I just did not have the time. The service broke one day, and I didn’t find the time to fix it.

I’ve now uploaded the sources of this very simple application to GitHub and perhaps someone else will pick it up. Having given the code a go today, I’ve not managed to persuade it to load any objects onto the map.

The code in will fetch the coordinates of Debian contributors from the website and convert them to a KML file.

The code in html was the webroot, and the KML files were pushed into the data directory there to be used by the embedded OpenStreetMap.

To find a map of Debian mirrors, see:

I believe the KML file for the mirrors was based on the above link, but I do not have the code I used. To produce the KML, the same system of grabbing the list of mirrors and then using GeoIP databases could be used, instead of using the data from that site.

October 22, 2017 11:00 AM