Francis's news feed

This combines together some blogs which I like to read. It's updated once a week.


Albert Wenger

What’s Our Problem by Tim Urban (Book Review)

Politics in the US has become ever more tribal on both the left and the right. Either you agree with 100 percent of group doctrine or you are considered an enemy. Tim Urban, the author of the wonderful Wait but Why blog has written a book digging into how we have gotten here. Titled “What’s Our Problem” the book is a full throated defense of liberalism in general and free speech in particular.

As with his blog, Urban does two valuable things rather well: He goes as much as possible to source material and he provides excellent (illustrated) frameworks for analysis. The combination is exactly what is needed to make progress on difficult issues and I got a lot out of reading the book as a result. I highly recommend reading it and am excited that it is the current selection for the USV book club.

The most important contribution of What’s Our Problem is drawing a clear distinction between horizontal politics (left versus right) and vertical politics (low-rung versus high-rung). Low-rung politics is tribal, emotional, religious, whereas high-rung politics attempts to be open, intellectual, secular/scientific. Low-rung politics brings out the worst in people and brings with it the potential of violent conflict. High-rung politics holds the promise of progress without bloodshed. Much of what is happening in the US today can be understood as low-rung politics having become dominant.

The book on a relative basis spends a lot more time examining low-rung politics on the left in the form of what Urban calls Social Justice Fundamentalism compared to the same phenomenon on the right. Now that can be excused to a dgree because his likely audience is politically left and already convinced that the right has descended into tribalism but not been willing to admit that the same is the case on the left. Still for me it somewhat weakened the overall effect and a more frequent juxtaposition of left and right low-rung poltics would have been stronger in my view.

My second criticism is that the book could have done a bit more to point out that the descend to low-rung politics isn’t just a result of certain groups pulling everyone down but rather also of the abysmal failure of nominally high-rung groups. In that regard I strongly recommend reading Martin Gurri’s “Revolt of the Public” as a complement.

This leads my to my third point. The book is mostly analysis and has only a small recommendation section at the end. And while I fully agree with the suggestions there, the central one of which is an exhortation to speak up if you are in a position to do so, they do fall short in an important way. We are still missing a new focal point (or points) for high-rung politics. There may indeed be a majority of people who are fed up with low-rung politics on both sides but it is not clear where they should turn to. Beginning to establish such a place has been the central goal of my own writing in The World After Capital and here on Continuations.

Addressing these three criticisms would of course have resulted in a much longer book and that might in the end have been less effective than the book at hand. So let me reiterate my earlier point: this is an important book and if you care about human and societal progress you should absolutely read What’s Our Problem.

by Albert Wenger at 2023-04-30 16:39


Mine Wyrtruman (pagan religion)

An Expanded Anglo-Saxon Creation Myth

This is an original myth, written by me. I have written an Anglo-Saxon creation myth before, but this is a much expanded myth. You will notice inspiration from others mythologies (mainly the Norse creation myth), but I also added my own UPG.

by Byron Pendason at 2023-04-27 01:00


Mine Wyrtruman (pagan religion)

Ettin Worship and Ragnarok

Wes hāl!1 It’s been a whirlwind of a week. A lot of accusations have emerged about the Fyrnsidu server. Most of these accusations have been dealt with (the tldr of it is that they were all false accusations, based upon a mix of straight up lies and half-truths lacking context), but there’s one accusation that I haven’t seen addressed. We were accused of believing that ettin worship will cause Ragnarok. Wes hāl and Beo gesund are Old English greetings and farewells that literally mean Be well/whole/healthy. The first seemed to be more common among the Anglian dialects and the second more common among the Saxon dialects. I prefer to use both though, the first as a greeting and the second as a farewell. ↩

by Byron Pendason at 2023-04-25 01:00


Fairphone Blog

Fairphone is the first company to pilot Fairmined Gold credits

Through our Fairmined gold credits pilot with Alliance for Responsible Mining (ARM) we celebrate multiple wins alongside contributing to the social and environmental progress of the Fairmined certified mining cooperative La Gabriela in Colombia.


Win for responsible miners:

Since 2016, Fairphone has been working hard to connect responsible ASM gold to our supply chains. Since then, we have managed to do so for 9% of the gold used in our Fairphone 4 and 10% in the True Wireless Earbuds. Fairphone bought Fairmined credits for the gold used which could not yet be connected to certified sources. Each Fairmined credit represents one gram of certified gold produced under the strict social and environmental requirements of the Fairmined standard. Through buying Fairmined credits, Fairphone compensates small-scale miners with Fairmined premium to maintain high standards of responsible production. This incentive is significant for small certified mines, as they often face higher barriers connecting with the market, have greater difficulties in getting fair compensation for work, and heavily rely on the premium to keep going. Fairphone contributed almost USD 20,000 of Fairmined premium to the certified La Gabriela mine that could not sell their entire production for the Fairmined premium price. 

Win for Fairphone buyers:

Did you buy a Fairphone 4 or True Wireless Earbuds in 2022? Then your past purchase now directly contributes to La Gabriela’s responsible gold production. Fairphone’s purchase of Fairmined credits enables us to account for the gold which was not yet sourced from certified sources. Whereas the gold from La Gabriela did not directly end up in our products sold, our impact on fair mining for our gold footprint is the same, as small-scale miners receive the Fairmined premium to maintain high standards of responsible production.

“This first collaboration is a great achievement for our Initiative as it proves new players in the gold industry can engage with the ASM sector and contribute to its transformation”

Morgane Nzelemona, Head of Sustainable markets at the Alliance for Responsible Mining


Win for the industry:

It takes a lot of time and effort to track down everyone involved from product to mine and convince them to use responsible gold sources. Moreover in electronic products, gold is used in very small quantities, spread across many different components with each having their own suppliers and sub-suppliers. Fairmined credits allow companies to easily contribute to responsible production for their full gold consumption. 

The Fairmined credits model provides a flexible way for the gold industry to make an economic, social, and environmental impact in responsible small-scale mining communities and drive the production of responsible ASM gold, without the need to source the gold physically or to make any changes in the existing supply chains of the downstream brands.

You can find out more about our Fairtrade gold efforts and the material flow behind it here.



Read what the experts have to say:

“This first collaboration is a great achievement for our Initiative as it proves new players in the gold industry can engage with the ASM sector and contribute to its transformation. We hope that the Fairmined credits will help fast-track the engagement of the electronics industry and that more actors will follow Fairphone’s inspiring example.” 

Morgane Nzelemona, Head of Sustainable markets at the Alliance for Responsible Mining. 

“Joining forces with ARM is an important achievement for us. We want to show the electronics industry a different way of creating impact through their material footprint.  Fairmined credits are a way of directly supporting miners and their communities,  and helping to improve the professionalization of artisanal- and small-scale mining. With this, we help to bring more responsible gold on the market, in line with the gold we consume ourselves and cannot yet fully trace or certify. We hope the electronics industry will take note and follow our example to help transform the gold industry.”

Angela Jorns, Team Lead Fair Materials and Mining at Fairphone

The post Fairphone is the first company to pilot Fairmined Gold credits appeared first on Fairphone.

by Julius at 2023-04-13 16:24

Zarino Zappia

Mount a single drive from a two-disk Synology SHR RAID 1 group, on Pop!_OS (or another Ubuntu-like OS)

A number of years ago, I upgraded from my original DS214se NAS to a more powerful DS218+, donating the DS214se to my parents to act as a Time Machine backup drive and video server.

My parents live in the most beautful corner of Herefordshire. The one down-side of this location is very occassional blips in power supply (all the rural dwellers reading this will be nodding right now). Usually this doesn’t cause an issue. But over Christmas my parents told me they’d noticed the DS214se was stuck in some sort of loop, attempting to boot up again and again, but never completing. I figured it had improperly shutdown at some point before, and was now stuffed.

I tried all the usual troubleshooting, nothing worked.

It probably needs a reset and a clean pair of disks. But before I do that, I wanted to get a copy of everything on the existing disks, just in case. I knew this wouldn’t just be a case of plugging the one of the SATA drives into my PC, though, because these drives had been configured as an SHR (“Synology Hybrid RAID”) RAID 1 group.

Synology publishes a guide on mounting SHR disks on an Ubuntu PC, but when I tried it, I got stumped by an error message from mdadm:

root@pop-os:~# mdadm -AsfR && vgchange -ay
mdadm: No arrays found in config file or automatically

I note Synology’s guide says you need all of the disks from your SHR RAID group – but I only had one SATA cable, and I also quite liked the idea of leaving one disk entirely untouched, just in case my attempts to mount the disks also fried them. I wanted to mount just one of the two disks.

(Theoretically, this should work fine, since a two-disk Synology NAS in SHR mode will use RAID 1, which simply mirrors all the same content onto both disks – it should be possible to mount any one of those disks individually.)

But how do you do it?

What you’ll need

  • An Ubuntu-like computer/environment (I used my Pop!_OS gaming PC, but Synology’s guide includes links to setting up an Ubuntu Live USB drive if all you have is a Windows or Mac device)
  • Any one of the two disks from your Synology’s SHR RAID 1 group
  • A way to connect the disk to your computer (I used a USB-to-SATA cable, or you could plug the disk directly into your motherboard – note, 3.5 inch disks will need an external power connection)

As mentioned in Synology’s guide, you’ll need to install mdadm and lvm2 (my Pop!_OS system already had these installed):

$ apt-get update
$ apt-get install -y mdadm lvm2

Mounting the disk

Get into an interactive root shell:

$ sudo -i

Plug in and power up the SATA disk. With any luck it’ll spin up, and Ubuntu will start reading it.

At this point, you could try running the commands that Synology suggested – although, as I say, these didn’t work me:

$ mdadm -AsfR && vgchange -ay

If it doesn’t work, instead try running lsblk to see what partitions are on the disk:

$ lsblk

In my case, this was the output:

sda               8:0    1     0B  0 disk  
sdb               8:16   0   1.8T  0 disk  
├─sdb1            8:17   0   2.4G  0 part  
├─sdb2            8:18   0     2G  0 part  
├─sdb3            8:19   0     1K  0 part  
└─sdb5            8:21   0   1.8T  0 part  
  └─md127         9:127  0     0B  0 md    
zram0           252:0    0    16G  0 disk  [SWAP]
nvme0n1         259:0    0 953.9G  0 disk  
├─nvme0n1p1     259:1    0  1022M  0 part  /boot/efi
├─nvme0n1p2     259:2    0     4G  0 part  /recovery
├─nvme0n1p3     259:3    0 944.9G  0 part  
│ └─cryptdata   253:0    0 944.9G  0 crypt 
│   └─data-root 253:1    0 944.8G  0 lvm   /
└─nvme0n1p4     259:4    0     4G  0 part  
  └─cryptswap   253:2    0     4G  0 crypt [SWAP]

nvme0n1 is my PC’s M.2 SSD drive (with the encrypted root partition on nvme0n1p3 and the Pop!_OS recovery partition on nvme0n1p2).

zram0 is the system swap disk. And sda is empty.

So that just leaves sdb with a total capacity of 1.8T (1.8 terabytes) – looks like my SATA disk! The sdb5 partition, occupying almost all of that 1.8 TB drive, is the one with all the data on, and the one we’ll want to mount. But how do we mount it?

It turns out you can force mdadm to recognise just one of the two RAID 1 disks:

$ mdadm --assemble --run /dev/md0 /dev/sdb5 --force

/dev/md0 there is just a new device name for mdadm to assemble the RAID group into – you can pick whatever you like, but it seems /dev/md0 is traditional. And /dev/sdb5 is the partition we identified in the previous step.

Once you’ve run that, you’ll hopefully get the golden response:

mdadm: /dev/md0 has been started with 1 drive (out of 2).

(Top tip: if at any point you get into a bit of a mess, and run mdadm on a non-RAID partition, giving you mdadm: [blah] is busy - skipping errors, you can tell mdadm to stop with mdadm --stop --scan.)

So, we’ve got the RAID group assembled. Next we need to identify the logical volumes inside it. If you run lvs or lvscan you’ll see all the available volumes on the computer:

$ lvscan
  ACTIVE            '/dev/data/root' [<944.85 GiB] inherit
  WARNING: PV /dev/md0 in VG vg1000 is using an old PV header, modify the VG to update.
  ACTIVE            '/dev/vg1000/lv' [1.81 TiB] inherit

(You’ll also get a warning about “an old PV header”, which you could fix with vgck --updatemetadata vg1000 but I decided not to, because everything seems to work fine without it, and I want to avoid changing anything on the disk unless I absolutely have to.)

Now we know what the volume group is called (vg1000) we can activate all of the logical volumes inside it:

$ vgchange -ay vg1000
1 logical volume(s) in volume group "vg1000" now active

And our volume is ready to mount!

Create a mountpoint for the volume (this could be a new directory anywhere on your computer – traditionally mountpoints go into /mnt, so I created mine at /mnt/hd1):

$ mkdir /mnt/hd1

And then mount the volume, in read-only mode:

$ mount /dev/vg1000/lv /mnt/hd1 -o ro

/dev/vg1000/lv is the logical volume path from the lvscan output above, while /mnt/hd1 is the mountpoint we created earlier, and -o ro sets the “read-only” option, so we don’t accidentally modify anything on the disk.

You can now open up /mnt/hd1 in the file explorer, and copy stuff from it!

When you’re done, you can unmount the volume:

$ umount /mnt/hd1

Then deactivate the logical volume group:

$ vgchange -an vg1000

And tell mdadm to stop:

$ mdadm --stop /dev/md0

With the filesystems unmounted, you can “power off” the hardware device itself (to stop the disk spinning) with:

$ udiskctl power-off -b /dev/sdb

by Zarino Zappia at 2023-04-13 00:00


Adrian McEwen

Weeks 912, 913 and 914 - Drop all the plates

It's Chris dropping all the weeknotes plates, with now three weeks of updates from MCQN in one go. Well in my defence it has been Easter....

We're starting with Adrian this 'week' because, in a break with tradition, rather than work that he can't talk about he's finished something that's on display to the public! The work we've been doing with FACT to resurrect the 20-year-old Metroscopes has been deployed. "Watching the LED dot-matrix displays come to life when the code was fired up was most gratifying. Having walked past them so many times in the past when the original code was running, it's lovely to bring them back to life."

Naturally he's also been very busy with client work we can't talk about....

It's always great to see our boards out in the world and this comet sculpture by Jackie Pease is a great use of My Baby's got LED. Made from recycled materials for a workshop at Convenience Gallery it is illuminated with addressable LEDs controlled by our boards. She describes the development process over on her blog

My three weeks have been much more prosaic, chasing down the problems with the charging circuit on the new My Bike's got LED boards. I'm using the ina219 current sensing modules to log some time series data to try and understand why we're not ever hitting fully charged on the batteries. I'm expecting to see a precharge trickle phase followed my constant current and constant voltage phases before the full charge is hit. Expecting.

Breadboard, Arduino and a nest of wires collecting battery charging data with a ina219 current sensor

I've also been digging into ESP-IDF for a few upcoming projects, including some work on NFC readers. Very much at the roughing out stage but expecting it all to turn into something beautiful very soon. .

by Adrian McEwen at 2023-04-12 06:00


Albert Wenger

Thinking About AI: Part 3 - Existential Risk (Terminator Scenario)

Now we are getting to the biggest and weirdest risk of AI: a super intelligence emerging and wiping out humanity in pursuit of its own goals. To a lot of people this seems like a totally absurd idea, held only by a tiny fringe of people who appear weird and borderline culty. It seems so far out there and also so huge that most people wind up dismissing it and/or forgetting about shortly after hearing it. There is a big similarity here to the climate crisis, where the more extreme views are widely dismissed.

In case you have not encountered the argument yet, let me give a very brief summary (Nick Bostrom has an entire book on the topic and Eliezer Yudkowsky has been blogging about it for two decades, so this will be super compressed by comparison): A superintelligence when it emerges will be pursuing its own set of goals. In many imaginable scenarios, humans will be a hindrance rather than a help in accomplishing these goals. And once the superintelligence comes to that conclusion it will set about removing humans as an obstacle. Since it is a superintelligence we won’t be able to stop it and there goes humanity.

Now you might have all sorts of objections here. Such as can’t we just unplug it? Suffice it to say that the people thinking about this for some time have considered these objections already. They are pretty systematic in their thinking (so systematic that the Bostrom book is quite boring to read and I had to push myself to finish it). And in case you are still wondering why we can’t just unplug it: by the time we discover it is a superintelligence it will have spread itself across many computers and built deep and hard defenses for these. That could happen for example by manipulating humans into thinking they are building defenses for a completely different reason.

Now I am not in the camp that says this is guaranteed to happen. Personally I believe there are also good chances that a superintelligence upon emerging could be benevolent. But with existential risk one doesn’t need certainty (same is true for the other existential risks, such as the climate crisis or an asteroid strike). What matters is that there is a non zero likelihood. And that is the case for superintelligence, which means we need to proceed with caution. My book The World After Capital is all about how we can as humanity allocate more attention to these kinds of problems and opportunities.

So what are we to do? There is a petition for a 6 months research moratorium. Eliezer wrote a piece in Time pleading to shut it all down and threaten anyone who tries to build it with destruction. I understand the motivation for both of these and am glad that people are ringing loud alarm bells, but neither of these makes much sense. First, we have shown no ability to globally coordinate on other existential threats including ones that are much more obvious, so why do we think we could succeed here? Second, who wants to give government that much power over controlling core parts of computing infrastructure, such as the shipment of GPUs?

So what could we do instead? We need to accept that superintelligences will come about faster than we had previously thought and act accordingly. There is no silver bullet but there are a several initiatives that can be taken by individuals, companies and governments that can dramatically improve our odds.

The first and most important are well funded efforts to create a benign superintelligence. This requires the level of resources that only governments can command easily, although some of the richest people and companies in the world might also be able to make a difference. The key here will be to invert the approach to training that we have take so far. It is absurd to expect that you can have a good outcome when you train a model first on the web corpus and then attempt to constrain it via reinforcement learning from human feedback (RLHF). This is akin to letting a child grow up without any moral guidance along the way and then expect them to be a well behaved adult based on occasionally telling them they are doing something wrong. We have to create a large corpus of moral reasoning that can be ingested early and form the core of a superintelligence before exposing it to all the world’s output. This is a hard problem but interestingly we can use some of the models we now have to speed up the creation of such a corpus. Of course a key challenge will be what it should contain. It is for that very reason that in my book The World After Capital, I make such a big deal of living and promoting humanism, here is what I wrote (it’s an entire section from the conclusion but I think worth it)

There’s another reason for urgency in navigating the transition to the Knowledge Age: we find ourselves on the threshold of creating both transhumans and neohumans. ‘Transhumans’ are humans with capabilities enhanced through both genetic modification (for example, via CRISPR gene editing) and digital augmentation (for example, the brain-machine interface Neuralink). ‘Neohumans’ are machines with artificial general intelligence. I’m including them both here, because both can be full-fledged participants in the knowledge loop.

Both transhumans and neohumans may eventually become a form of ‘superintelligence,’ and pose a threat to humanity. The philosopher Nick Bostrom published a book on the subject, and he and other thinkers warn that a superintelligence could have catastrophic results. Rather than rehashing their arguments here, I want to pursue a different line of inquiry: what would a future superintelligence learn about humanist values from our current behavior?

As we have seen, we’re not doing terribly well on the central humanist value of critical inquiry. We’re also not treating other species well, our biggest failing in this area being industrial meat production. Here as with many other problems that humans have created, I believe the best way forward is innovation. I’m excited about lab-grown meat and plant-based meat substitutes. Improving our treatment of other species is an important way in which we can use the attention freed up by automation.

Even more important, however, is our treatment of other humans. This has two components: how we treat each other now, and how we will treat the new humans when they arrive. As for how we treat each other now, we have a long way to go. Many of my proposals are aimed at freeing humans so they can discover and pursue their personal interests and purpose, while existing education and job loop systems stand in opposition to this freedom. In particular we need to construct the Knowledge Age in a way that allows us to overcome, rather than reinforce, our biological differences which have been used as justification for so much existing discrimination and mistreatment. That will be a crucial model for transhuman and neohuman superintelligences, as they will not have our biological constraints.

Finally, how will we treat the new humans? This is a difficult question to answer because it sounds so preposterous. Should machines have human rights? If they are humans, then they clearly should. My approach to what makes humans human—the ability to create and make use of knowledge—would also apply to artificial general intelligence. Does an artificial general intelligence need to have emotions in order to qualify? Does it require consciousness? These are difficult questions to answer but we need to tackle them urgently. Since these new humans will likely share little of our biological hardware, there is no reason to expect that their emotions or consciousness should be similar to ours. As we charge ahead, this is an important area for further work. We would not want to accidentally create a large class of new humans, not recognize them, and then mistreat them.

The second are efforts to help humanity defend against an alien invasion. This may sound facetious but I am using alien invasion as a stand in for all sort of existential threats. We need much better preparation for extreme outcomes of the climate crisis, asteroid strikes, runaway epidemics, nuclear war and more. Yes we 100 percent need to invest more in avoiding these, for example through early detection of asteroids and building deflection systems, but we also need to harden our civilization.

There are a ton of different steps that can be taken here and I may write another post some time about that as this post is getting rather long. For now let me just say a key point is to decentralize our technology base much more than it is today. For example we need many more places that can make chips and ideally do so at much smaller scale than we have today.

Existential AI risk aka the Terminator scenario are real threats. Dismissing them would be a horrible mistake. But so would be seeing global government control as the answer. We need to harden our civilization and develop a benign superintelligence. To do these well we need to free up attention and further develop humanism. That’s the message of The World After Capital.

by Albert Wenger at 2023-04-08 16:11


Albert Wenger

Thinking About AI: Part 3 - Existential Risk (Loss of Reality)

In my prior post I wrote about structural risk from AI. Today I want to start delving into existential risk. This broadly comes in two not entirely distinct subtypes: first, that we lose any grip on reality which could result in a Matrix style scenario or global war of all against all and second, a superintelligence getting rid of humans directly in the pursuit of its own goals.

The loss of reality scenario was the subject of an op-ed in the New York Time the other day. And right around the same time there was an amazing viral picture of the pope that had been AI generated.

I have long said that the key mistake of the Matrix movies was to posit a war between humans and machines. That instead we will be giving ourselves willingly to the machines, more akin to the “Free wifi” scenario of Mitchells vs. the Machines.

The loss of reality is a very real threat. It builds on a long tradition, such as Stalin having people edited out of historic photographs or Potemkin building fake villages to fool the invading Germans (why did I think of two Russian examples here?). And now that kind of capability is available to anyone at the push of a button. Anyone see those pictures of Trump getting arrested?

Still I am not particularly concerned about this type of existential threat from AI (outside of the superintelligence scenario). That’s for a number of different reasons. First, distribution has been the bottleneck for manipulation for some time, rather than content creation (it doesn’t take advanced AI tools to come up with a meme). Second, I believe that the approach of more AI that can help with structural risk can also help with this type of existential risk. For example, having an AI copilot when consuming the web that points out content that appears to be manipulated. Third, we have an important tool availalbe to us as individuals that can dramatically reduce the likelihood of being manipulated and that is mindfulness.

In my book “The World After Capital” I argue for the importance of developing a mindfulness practice in a world that’s already overflowing with information in a chapter titled “Psychological Freedom.” Our brains evolved in an environment that was mostly real. When you saw a cat there was a cat. Even before AI generated cats the Internet was able to serve up an endless stream of cat pictures. So we have already been facing this problem for some time. It is encouraging that studies show that younger people are already more skeptical of the digital information they encounter.

Bottom line then for me is that “loss of reality” is an existential threat, but one that we have already been facing and where further AI advancement will both help and hurt. So I am not losing any sleep over it. There is, however, an overlap with a second type of existential risk, which is a super intelligence simply wiping out humanity. The overlap is that the AI could be using the loss of reality to accomplish its goals. I will address the superintelligence scenario in the next post (preview: much more worrisome).

by Albert Wenger at 2023-04-03 12:32


Zarino Zappia

Running Transmission and ZeroTier One via Docker on Synology DSM 7

Some of the most popular posts on my blog are the ones describing how I set up my Synology Diskstation many years ago. Things like setting up Time Machine, writing to HFS+ drives, and enabling SSH access and installing third-party software through ipkg.

A lot has changed since then! Docker has become the de-facto way to run third-party software on Diskstations, and my setup (automatically migrated from a DS214se to a DS218+, and from DSM version 4, to 5, to 6) was getting increasingly creaky and fragile.

After a frantic few weeks, I finally found myself with a free weekend and figured, hey, what better way to spend it than finally upgrading my DS218+ to DSM 7.1, and replacing any old, unsupported ipkg apps with new Docker-based alternatives. This post documents most of the steps I took, in case it’s useful to anyone else.

(Happily, I’ve been using Docker for a few years at mySociety, so lots of it is familiar to me. I’ll assume any readers of this post are similarly familiar. Good luck!)

Installing and setting up Docker

If your Diskstation supports Docker, it will be listed under “All Packages” in the Synology Package Center (accessible via your Diskstation’s web interface). If your Diskstation doesn’t support Docker, then you’re S.O.L. going to have to try installing it via an unofficial package.

Once you’ve installed it, a new “Docker” app will be available in the DSM Main Menu, and the docker, docker-compose, etc commands will be available to command-line users logged in via SSH (if you’ve enabled SSH access to your Diskstation, which you are definitely going to want to do).

The Docker package installs Docker as root. You can verify this by SSHing into the Diskstation with your usual user account, and attempting to run a simple docker container:

$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

Indeed, if you look at /var/run/docker.sock, you’ll see it’s owned by root:

$ ls -hila /var/run/docker.sock
222631 srw-rw---- 1 root root 0 Apr  1 12:57 /var/run/docker.sock

I didn’t want to have to use sudo for all my docker commands, so I created a new docker user group, and added my normal user account (zarino, below) to it:

$ sudo synogroup --add docker
$ sudo synogroup --member docker zarino

And then made the docker.sock file group-owned by that new docker group:

$ sudo chown root:docker /var/run/docker.sock

Remember to end your SSH session and start a new one, for the change to your user’s group to take effect.

If the command line frightens you, you could probably use the DSM web UI to set up the group and membership, and then change the ownership of the file. But honestly, who has the time for all that pointing and clicking.

Installing and setting up Transmission

linuxserver/transmission is the most popular Docker container for Transmission. You’ll see, from the documentation, that it requires three directories that it will mount inside the container, as shared volumes: /config, /downloads, and /watch.

I already have a Downloads folder at /volume1/files/Downloads, so I’ll use that. But I created the the other two directories like so:

$ mkdir -p /volume1/docker/transmission/config
$ mkdir -p /volume1/docker/transmission/watch

(Note from the future: I found downloads would fail with a “Permission denied” error unless the owner of the /downloads folder inside the container had execute permissions. Since I’d already verified—with stat /volume1/files/Downloads—that the folder was owned by UID 1024 and GID 100, I ran chmod u+x /volume1/files/Downloads to ensure that the owner had execute rights.)

With the folders created, I took their recommended docker-compose file, and put it into /volume1/docker/transmission/docker-compose.yml, modifying the settings as required. I’ll explain some of them below.

(Note: If you need a command-line file editor program other than vi or vim, the third-party SynoCli File Tools package, available under the “Community” tab in Synology Package Center, includes easier editors like nano.)

TZ is the timezone you want the container to use. You can check your current timezone with ls -l /etc/localtime, which should reflect whatever timezone is set in the ‘Regional Options’ Control Panel in the DSM web interface.

The PUID and GUID values are the user ID and group ID of the user you want Transmission to run as – and note, by extension, you’ll also want to make sure this user has access to any of the directories you’re sharing as volumes in the docker-compose.yml file. You can get the IDs for the current user by running the id command at the command line, and pulling out the uid and gid values, respectively:

$ id
uid=1024(admin) gid=100(users) groups=100(users),25(smmsp),101(administrators),65537(docker)

The USER and PASS variables are the username and password that will be used for the HTTP Basic Authentication protecting the Transmission web interface behind a login prompt. I think the old ipkg version of Transmission used to use the username and password of your Synology user account here, but now I guess you could pick anything you like.

In the end, my /volume1/docker/transmission/docker-compose.yml file looked like this:

version: "3.9"

    container_name: transmission
      - PUID=1024
      - PGID=100
      - TZ=Europe/London
      - USER=examplechangeme
      - PASS=examplechangeme
      - /volume1/docker/transmission/config:/config
      - /volume1/files/Downloads:/downloads
      - /volume1/docker/transmission/watch:/watch
      - 9091:9091
      - 51413:51413
      - 51413:51413/udp
    restart: unless-stopped

I could now install and start the container (in detached mode) with:

$ cd /volume1/docker/transmission
$ docker-compose up --detach

Once the container is running, the Transmission web interface will be accessible at http://<your-diskstation-ip>:9091/transmission/web/

Finally, you’ll want to create a Triggered Task, to start the Transmission container automatically when your Diskstation reboots. I did this by selecting “Create > Triggered Task > User-defined script” in the Task Scheduler control panel, and then creating a script with the following settings:

Task name Start Transmission Docker container
User (you’ll want to pick your user account here)
Event Boot-up
Pre-task (none)
Enabled (checked)
Notification (none)
User-defined script
cd /volume1/docker/transmission && docker-compose up --detach

Installing and setting up ZeroTier One

ZeroTier One is a system that puts all of your devices onto a virtual network, a bit like a VPN, meaning you can access one device from another, fairly securely, over the public internet, no matter where the devices are. I have it set up so that I can access my Diskstation and gaming PC from my Mac, even when I’m not at home.

Because ZeroTier is like a VPN, it requires what Linux geekily calls a “persistent TUN/TAP device” in order to hijack network requests on the machine. Your Diskstation doesn’t come with a TUN/TAP device out of the box, so you’ll need to install one, before attempting to run the ZeroTier Docker container.

ZeroTier provides instructions for setting up a TUN device. By the end of that, you’ll have a script at /usr/local/etc/rc.d/ that installs the tun kernel module, and after running it once, you’ll have a TUN device available at /dev/net/tun. Woop!

On to the Docker container! I diverge a little from the recommended /var/lib/zerotier-one file location in ZeroTier’s installation guide, because, as you will have seen above, I’m storing my docker-related files in /volume1/docker instead, like so:

$ mkdir -p /volume1/docker/zerotier-one/data

The ZeroTier guide doesn’t include an example docker-compose.yml file, but you can create one, inspired by their example docker run command. Mine, at /volume1/docker/zerotier-one/docker-compose.yml, ended up looking like this:

version: "3.9"

    image: zerotier/zerotier-synology:latest
    container_name: zerotier-one
      - /dev/net/tun
    network_mode: host
      - /volume1/docker/zerotier-one/data:/var/lib/zerotier-one
      - NET_ADMIN
      - SYS_ADMIN
    restart: unless-stopped

Then, just like with Transmission, you can start the container in detached mode:

$ cd /volume1/docker/zerotier-one
$ docker-compose up --detach

While I was at it, I also created a wrapper script, to make issuing commands into the container a bit easier. I created a new file at /volume1/docker/zerotier-one/zerotier-cli, filled it with the following text, and made it executable:


docker-compose exec zerotier zerotier-cli "$@"

With that script in place, getting the current network status, and joining a network, is easy:

$ cd /volume1/docker/zerotier-one
$ ./zerotier-cli status
200 info cefed4ab93 1.10.6 ONLINE
$ ./zerotier-cli join e5cd7a9e1cae134f
200 join OK

After authorising the Diskstation in the ZeroTier One web panel, I could list the network details:

$ ./zerotier-cli listnetworks

Finally, as with Transmission (above), I needed to create a Triggered Task, to start the docker container automatically when my Diskstation reboots. The details were very similar to before:

Task name Start ZeroTier One Docker container
User (you’ll want to pick your user account here)
Event Boot-up
Pre-task (none)
Enabled (checked)
Notification (none)
User-defined script
cd /volume1/docker/zerotier-one && docker-compose up --detach

Remember backups!

Finally, remember to add your /volume1/docker directory to your backup software’s list. I use Synology’s HyperBackup for this, so it was fairly easy to log into the admin interface, and add a second backup task for /volume1/docker.

by Zarino Zappia at 2023-04-01 00:00


Yuriy Akopov

How I learned to stop worrying and love ChatGPT

How I learned to stop worrying and love ChatGPT

I've been actively using ChatGPT in my work for a couple of weeks now, and can say that it was a good decision for two reasons - not only it made me more productive and allowed me to focus on stuff I really care about, but unexpectedly it also relieved me from the anxiety I was getting when trying to 'play' with the robot before and being intimidated by its capabilities.

Regularly using it as a tool helps to stop seeing a competitor in it, and even if does indeed end up this way, it still allows you to spend the time you still have in a more fun and productive way.

I have tried to put together a few patterns of where I found the robot to be the most helpful - in no particular order, along with some general advice in the end.


  • Say you've got a bunch of inconveniently long legacy shell scripts that were originally short and self-explanatory, but gradually grew into an unreadable mess. That mess, however, works, so it is difficult to justify the effort of rewriting them, and you make a promise to yourself to do it later - until you have to urgently change them and renew that promise again.

    Just feed that code to the robot and ask to re-write it in a more readable language of your choice with tests, and make that switch.
  • Speaking of unit tests - you probably have a lot of them where you don't follow through the chain of calls and just mock everything outside of the specific piece of code tested. While quite often this is a sensible thing to do, sometimes it is not - but who can be bothered with spending a lot of extra time doing something like, e.g. automating a creation of a git repository with test commits and branches to test some of your git-dependent logic (a real situation for me)? Again, now you can ask the robot to do that.
  • Splitting a longer function into logically separated shorter ones along with its corresponding tests? "Purifying" your functions? Optimising some data operation for memory use or for performance? Also easy.


  • There are often multiple ways to solve a problem, and as an experienced engineer you probably have your favourite way of dealing with it every time that problem arises. Sometimes you think that maybe it's worth trying other approaches, but your historical approach works, and you aren't sure time spent on learning the details of the new one would result in a better (faster, cheaper, clearer) implementation, so keep repeating the same pattern.

    Show your solution to the robot and ask it to re-write it using the technology/language/service X you always want to try. Even if you don't like and decide not to adopt the new approach, learning from very practical examples like this is very efficient!
  • Looking at two (or more) seemingly identical libraries for something you're about to integrate? Let the robot present a quick summary of their key differences before (or instead of) diving into documentation, boilerplate code and public discussions.
  • Ask it to criticise or advise on your ideas before making a decision. It's a free second (third, fourth) opinion that is always available.


  • Decoding complex regular expressions into a set of human readable rules and vice versa.
  • Validating syntax where it isn't natively recognised in your editor (e.g. shell commands wrapped in YAML).
  • Standard error messages from various services - just copy and paste them for the robot while you're investigating, sometimes it's something standard it'll crack quickly while you're still reading your first Google link (that is not a SEO spam or is from 2015).

General rules

  • When prompting the robot, try to explain the problem the way it doesn't require additional context ("chisel away everything that is irrelevant"). It is not a very difficult skill to master, but being able to neatly extract a problem so that you can explain it without having to run through the lore first is a very useful communication skill going far beyond prompting the robot.
  • When robot's solution didn't work from the first attempt, tell it that - like when working with a human, it often takes a few iterations to narrow it down. It remembers its previous replies in the same chat so you don't have to repeat yourself, just tell what has changed (or hasn't against your expectations).
  • In general, structure your work as if you have been suddenly assigned a smart intern who you can delegate your tasks to. That intern doesn't know a lot about how your specific business functions (yet), but it had mastered the technical skills at school and is ready to crack a problem that was properly defined.

    There is probably a lot of boring stuff you have to do every day - think about how to consolidate and delegate it, and see if you can achieve more with that extra capacity!

by Yuriy Akopov at 2023-03-27 21:58

Albert Wenger

Thinking About AI: Part 2 - Structural Risks

Yesterday I wrote a post on where we are with artificial intelligence by providing some history and foundational ideas around neural network size. Today I want to start in on risks from artificial intelligence. These fall broadly into two categories: existential and structural. Existential risk is about AI wiping out most or all of humanity. Structural risk is about AI aggravating existing problems, such as wealth and power inequality in the world. Today’s post is about structural risks.

Structural risks of AI have been with us for quite some time. A great example of these is the Youtube recommendation algorithm. The algorithm, as far as we know, optimizes for engagement because Youtube’s primary monetization are ads. This means the algorithm is more likely to surface videos that have an emotional hook than ones that require the viewer to think. It will also pick content that emphasizes the same point of view, instead of surfacing opposing views. And finally it will tend to recommend videos that have already demonstrated engagement over those that have not, giving rise to a “rich getting richer” effect in influence.

With the current progress it may look at first like these structural risks will just explode. Start using models everywhere and wind up having bias risk, “rich get richer” risk, wrong objective function risk, etc. everywhere. This is a completely legitimate concern and I don’t want to dismiss it.

On the other hand there are also new opportunities that come from potentially giving broad access to models and thus empowering individuals. For example, I tried the following prompt in Chat GPT “I just watched a video that argues against universal basic income. Can you please suggest some videos that make the case for it? Please provide URLs so I can easily watch the videos.” and it quickly produced a list videos for me to watch. Because so much content has been ingested, users can now have their own “Opposing View Provider” (something I had suggested years ago).

There are many other ways in which these models can empower individuals, for example summarizing text at a level that might be more accessible. Or pointing somebody in the right direction when they have encountered a problem. And here we immediately run into some interesting regulatory challenges. For example: I am quite certain that Chat GPT could give pretty good free legal advice. But that would be running afoul of the regulations on practicing law. So part of the structural risk issue is that our existing regulations predate any such artificial intelligence and will oddly contribute to making its power available to a smaller group (imagine more profitable law firms instead of widely available legal advice).

There is a strong interaction here also between how many such models will exist (from a small oligopoly to potentially a great many) and to what extent endusers can embed these capabilities programmatically or have to use them manually. To continue my earlier example, if I have to head of Chat GPT every time I want to ask for an opposing view I will be less likely to do so than if I could script the sites I use so that an intelligent agent can represent me in my interactions. This is of course one of the core suggestions I make in my book The World After Capital in a section titled “Bots for All of Us.

I am sympathetic to those who point to structural risks as a reason to slow down the development of these new AI systems. But I believe that for addressing structural risks the better answer is to make sure that there are many AIs, that they can be controlled by endusers, that we have programmatic access to these and other systems, etc. Put differently structural risks are best addressed by having more artificial intelligence with broader access.

We should still think about other regulation to address structural risks but much of what has been proposed here doesn’t make a ton of sense. For example, publishing an algorithm isn’t that helpful if you don’t also publish all the data running through it. In the case of a neural network alternatively you could require publishing the network structure and weights but that would be tantamount to open sourcing the entire model as now anyone could replicate it. So for now I believe the focus of regulation should be avoiding a situation where there are just a few huge models that have a ton of market power.

Some will object right here that this would dramatically aggravate the existential risk question, but I will make an argument in my next post why that may not be the case.

by Albert Wenger at 2023-03-27 01:43


Albert Wenger

Thinking About AI

I am writing this post to organize and share my thoughts about the extraordinary progress in artificial intelligence over the last years and especially the last few months (link to a lot of my prior writing). First, I want to come right out and say that anyone still dismissing what we are now seeing as a “parlor trick” or a “statistical parrot” is engaging in the most epic goal post moving ever. We are not talking a few extra yards here, the goal posts are not in the stadium anymore, they are in a far away city.

Growing up I was extremely fortunate that my parents supported my interest in computers by buying an Apple II for me and that a local computer science student took me under his wing. Through him I found two early AI books: one in German by Stoyan and Goerz (I don’t recall the title) and Winston and Horn’s “Artifical Intelligence.” I still have both of these although locating them among the thousand or more books in our home will require a lot of time or hopefully soon a highly intelligent robot (ideally running the VIAM operating system – shameless plug for a USV portfolio company). I am bringing this up here as a way of saying that I have spent a lot of time not just thinking about AI but also coding on early versions and have been following closely ever since.

I also pretty early on developed a conviction that computers would be better than humans at a great many things. For example, I told my Dad right after I first learned about programming around age 13 that I didn’t really want to spend a lot of time learning how to play chess because computers would certainly beat us at this hands down. This was long before a chess program was actually good enough to beat the best human players. As an aside, I have changed my mind on this as follows: Chess is an incredible board game and if you want to learn it to play other humans (or machines) by all means do so as it can be a lot of fun (although I still suck at it). Much of my writing both here on Continuations and in my book is also based on the insight that much of what humans do is a type of computation and hence computers will eventually do it better than humans. Despite that there will still be many situations where we want a human instead exactly because they are a human. Sort of the way we still go to concerts instead of just listening to recorded music.

As I studied computer science both as an undergraduate and graduate student, one of the things that fascinated me was the history of trying to use brain like structures to compute. I don’t want to rehash all of it here, but to understand where we are today, it is useful to understand where we have come from. The idea of modeling neurons in a computer as a way to build intelligence is quite old. Early electromechanical and electrical computers started getting built in the 1940s (e.g. ENIAC was completed in 1946) and the early papers on modeling neurons can be found from the same time in work by McCulloch and Pitts.

But almost as soon as people started working on neural networks more seriously, the naysayers emerged also. Famously Marvin Minsky and Seymour Paper wrote a book titled “Perceptrons” that showed that certain types of relatively simple neural networks had severe limitations, e.g. in expressing the XOR function. This was taken by many at the time as evidence that neural networks would never amount to much, when it came to building computer intelligence, helping to usher in the first artificial intelligence winter.

And so it went for several cycles. People would build bigger networks and make progress and others would point out the limitations of these networks. At one time people were so disenchanted that very few researchers were left in the field altogether. The most notable of these was Geoffrey Hinton who kept plugging away at finding new training algorithms and building bigger networks.

But then a funny thing happened. Computation kept getting cheaper and faster and memory became unfathomably large (my Apple II for reference had 48KB of storage on the motherboard and an extra 16KB in an extension card). That made it possible to build and train much larger networks. And all of a sudden some tasks that had seemed out of reach, such as deciphering handwriting or recognizing faces started to work pretty well. Of course immediately the goal post moving set in with people arguing that those are not examples of intelligence. I am not trying to repeat any of the arguments here because they were basically silly. We had taken a task that previously only humans could do and built machines that could do them. To me that’s, well, artificial intelligence.

The next thing that we discovered is that while humans have big brains with lots of neurons in them, we can use only a tiny subset of our brain on highly specific tasks, such as playing the game of Go. With another turn of size and some further algorithmic breakthroughs all of a sudden we were able to build networks large enough to beat the best human player at Go. And not just beat the player but do so by making moves that were entirely novel. Or as we would have said if a human had made those moves “creative.” Let me stay with this point of brain and network size for moment as it will turn out to be crucial shortly. A human Go player not only can only use a small part of their brain to play the game but the rest of their brain is actually a hindrance. It comes up with pesky thoughts at just the wrong time “Did I leave the stove on at home?” or “What is wrong with me that I didn’t see this move coming, I am really bad at this” and all sorts of other interference that a neural network just trained to play Go does not have to contend with. The same is true for many other tasks such as reading radiology images to detect signs of cancer.

The other thing that should have probably occurred to us by then is that there is a lot of structure in the world. This is of course a good thing. Without structure, such as DNA, life wouldn’t exist and you wouldn’t be reading this text right now. Structure is an emergent property of systems and that’s true for all systems, so structure is everywhere we look including in language. A string of random letters means nothing. The strings that mean something are a tiny subset of all the possible letter strings and so unsurprisingly that tiny subset contains a lot of structure. As we make neural networks bigger and train them better they uncover that structure. And of course that’s exactly what that big brain of ours does too.

So I was not all that surprised when large language models were able to produce text that sounded highly credible (even when it was hallucinated). Conversely I found the criticism from some people that making language models larger would simply be a waste of time confounding. After all, it seems pretty obvious that more intelligent species have, larger brains than less intelligent ones (this is obviously not perfectly correlated). I am using the word intelligence here loosely in a way that I think is accessible but also hides the fact that we don’t actually have a good definition of what intelligence is, which is what has made the goal post moving possible.

Now we find ourselves confronted with the clear reality that our big brains are using only a fraction of their neurons for most language interactions. The word “most” is doing a lot of work here but bear with me. The biggest language models today are still a lot smaller than our brain but damn are they good at language. So the latest refuge of the goal post movers is the “but they don’t understand what the language means.” But is that really true?

As is often the case with complex material, Sabine Hossenfelder, has a great video that helps us think about what it means to “understand” something. Disclosure: I have been supporting Sabine for some time via Patreon. Further disclosure: Brilliant, which is a major advertiser on Sabine’s channel, is a USV portfolio company. With this out of the way I encourage you to watch the following video.

So where do I think we are? At a place where for fields where language and/or two dimensional images let you build a good model, AI is rapidly performing at a level that exceeds that of many humans. That’s because the structure it uncovers from the language is the model. We can see this simply by looking at tests in those domains. I really liked Bryan Caplan’s post where he was first skeptical based on an earlier version performing poorly on his exams but the latest version did better than many of his students. But when building the model requires input that goes beyond language and two dimensional images, such as understanding three dimensional shapes from three dimensional images (instead of inferring them from two dimensional ones) then the currently inferred models are still weak or incomplete. It seems pretty clear though that progress in filling in those will happen at a breathtaking pace from here.

Since this is getting rather long, I will separate out my thoughts on where we are going next into more posts. As a preview, I believe we are now at the threshold to artificial general intelligence, or what I call “neohumans” in my book The World After Capital. And even if that takes a bit longer, artificial domain specific intelligence will be outperforming humans in a great many fields, especially ones that do not require manipulating the world with that other magic piece of equipment we have: hands with opposable thumbs. No matter what the stakes are now extremely high and we have to get our act together quickly on the implications of artificial intelligence.

by Albert Wenger at 2023-03-25 13:00


Adrian McEwen

Weeks 910 and 911 - Spin All the Plates

Adrian here, with an update on the happens at MCQN Ltd over the past fortnight.

As a tiny company one of the continual challenges is balancing the amount of work to do with the available capacity to do it. The start and end of projects tend not to neatly line up; and even when you think they will then an unexpected bug can still throw your planning out as it's an art as much as it is a science.

The product side of the business—particularly developing new products where there isn't any fixed timescale—helps to smooth that out a little. Filling in any gaps with useful work, and allowing people to be drafted in to help with client work at the cost of a delay to the product work.

The Ackers Bell has definitely suffered from that in the past. At the moment that's not the case. Right now the sticking point is finding CNC services who will give us a quote for making the frames; not helped by the supply chain issues around plywood caused by the Russian invasion. Ross is chipping away at this, and slowly making progress.

Things have been especially congested over the past two weeks. A combination of lots of different things: wrapping up one client project; quoting for a new one; sending out My Baby's Got LED orders; making up some new boards to re-stock the shop after the orders exhausted the existing stock; helping a couple of Museum in a Box customers with some support niggles as they ready boxes for new projects; and more.

Another project I've been closing out is the Metroscopes work for FACT. The code was all written a while back, and we just needed to find a suitable time to check the operation of the Ethernet-to-RS422 bridge which will let the code talk to the Metroscope lampposts. It all went smoothly. So this week had some devops to schedule the code to get new search results to run periodically; and another system service to automatically start (and monitor) the code to send the results to be displayed.

Alongside all that, I've had some more strategic thinking to do. Tbat also involved chatting to the accountant, plus some company structure research. Not the best timing, but there should—fingers crossed—be some exciting news to share if/when it gets worked out.

Render of a 3D model in FreeCAD, an L-shaped part with a few chamfers cut out of it

Chris has been back in FreeCad making a part for Museum in a box. It's an add-on for travelling boxes to hold their Raspberry Pi more securely. Some of our customers have been sending boxes out on tour, to take the collections to the people rather than the other way round. Spending so much time in the post means the boxes suffer more vibration than we'd anticipated. This, we hope, will beef up the connections. Tha's shown an unexpected benefit of working with folk who are 3D printing objects in their museum projects. We can email them a design for a new part, and they can print it out to upgrade their box themselves! It's particularly handy when they're over in the US.

On the My Bike's Got LED front, Chris is working on some data logging. He's setting up an INA219 i2c Current module to gather some data from the battery charging circuits. This will give us a more detail of the charging profile and help us optimise the circuit. And we can use it for some more objective testing of the circuit in its windmill charging form.

by Adrian McEwen at 2023-03-20 05:00


Albert Wenger

The Banking Crisis: More Kicking the Can

There were a ton of hot takes on the banking crisis over the last few days. I didn’t feel like contributing to the cacaphony on Twitter because I was busy working with USV portfolio companies and also in Mexico City with Susan celebrating her birthday.

Before addressing some of the takes, let me succinctly state what happened. SVB had taken a large percentage of their assets and invested them in low-interest-rate long-duration bonds. As interest rates rose, the value of those bonds fell. Already back in November that was enough of a loss to wipe out all of SVB’s equity. But you would only know that if you looked carefully at their SEC filings, because SVB kept reporting those bonds on “hold-to-maturity” basis (meaning at their full face value). That would have been fine if SVB kept having deposit inflows, but already in November they reported $3 billion in cash outflows in the prior quarter. And of course cash was flowing out because companies were able to put it in places where it yielded more (as well as startups just burning cash). Once the cash outflow accelerated, SVB had to start selling the bonds, at which point they had to realize the losses. This forced SVB to have to raise equity which they failed to do. When it became clear that a private raise wasn’t happening their public equity sold off rapidly making a raise impossible and thus causing the bank to fail. This is a classic example of the old adage: “How do you go bankrupt? Slowly at first and then all at once.”

With that as background now on to the hot takes

  1. The SVB bank run was caused by VCs and could have been avoided if only VCs had stayed calm

That’s like saying the sinking of the Titanic was caused by the iceberg and could have been avoided by everyone just bailing water using their coffee cups. The cause was senior management at SVB grossly mismananging the bank’s assets (captain going full speed in waters that could contain icebergs). Once there was a certain momentum of withdrawals (the hull was breached), the only rational thing to do was to attempt to get to safety. Any one company or VC suggesting to keep funds there could have been completely steamrolled. Yes in some sense it is of course true that if everyone had stayed calm then this wouldn’t have happened but this is a classic case of the prisoner’s dilemma and one with a great many players. Saying after the fact that “look everyone came out fine, so why panic?” is 20-20 hindsight – as I will remark below there were a lot of people arguing against making depositors whole.

2. The SVB bank run is the Fed’s responsibility due to their fast raising of rates

This is another form of blaming the iceberg. The asset duration mismatch problem is foundational to banking and anyone running a bank should know it. Having a large percentage of assets in long-duration low-interest-rate fixed income instruments without hedging is madness, as it is premised on interest rates staying low for a long time and continuing to accumulate deposits. Now suppose you have made this mistake. What should you do if rates start to go up? Start selling your long duration bonds at the first sign of rate increases and raise equity immediately if needed. Instead of realizing losses early and accepting a lower equity value in a raise, SVB kept a fiction going for many months that ultimately lost everything.

3. Regulators are not to blame

One reason for industries to be regulated, is to make them safer. Aviation is a great example of this. The safety doesn’t just benefit people flying, it also benefits companies because the industry can be much bigger when it is safe. The same goes for banking. You have to have a charter to be a bank and there are multiple bank regulators. Their primary job should be to ensure that depositors don’t need to pour over bank financials to understand where it is safe to bank. If regulators had done their job here they would have intervened at SVB weeks if not months ago and forced an equity raise or sale of the bank before a panic could occur.

4. This crisis was an opportunity to stick it to tech

A lot people online and some in government saw this as an opportunity to punish tech companies as part of the overall tech backlash that’s been going on for some time. This brought together some progressives with some right wing folks who both – for different ideological reasons – want to see tech punished. There was a “just let them burn” attitude, especially on Twitter. This was, however, never a real option because SVB is not the only bank with a bad balance sheet. Lots of regional and smaller banks are in similar situations. So the contagion risk was extremely high. The widespread sell-off in those bank stocks even after the announced backstopping of SVB underlines just how likely a broad meltdown would have been. It is extremely unfortunate that our banking system continues to be so fragile (more on that later) but that meant using this to punish tech only was never a realistic option.

5. Depositors should have taken a haircut

I have some sympathy for this argument. After all didn’t people know that their deposits above $250K were not insured? Yes that’s true in the abstract but when everyone is led to believe that banking is safe because it is regulated (see #3 above), then it would still come as a massive surprise to find out that deposits are not in fact safe. As always what matters is the difference between expectation and realization. If SVB depositors would take a haircut, then why would anyone leave their funds at a bank where they suspect they would be subject to a 5% haircut? There would have been a massive rush away from smaller banks to the behemoths like JP Morgan Chase.

6. The problem is now solved

The only thing that is solved is that we have likely avoided a wide set of bankruns. But it has been accomplished at the cost of applying a massive patch to the system by basically insuring all deposits. This leaves us with a terrible system: fully insured fractional reserve banking. I have been an advocate for full reserve banking as an alternative. This would let us use basic income as the money creation mechanism. In short the idea is that money would still enter the economy but it would do so through giving money to people directly instead of putting banks in charge of figuring out where money goes. The problem of course is that bank investors and bank management don’t like this idea because they benefit so much from the existing system. So there will be fierce lobbying opposition to making such a fundamental change. I will write more posts about this in the future but one way to get the ball rolling is to issue new bank charters aggressively now for full reserve banks (sometimes called “narrow banks”). Many existing fintechs and some new ones could pick these charters up and provide interesting competition for the existing behemoths.

All of this is to say that this whole crisis is yet another example of how broken and held together by duct tape our existing systems are. That’s why we are lurching from crisis to crisis. And yet we are not willing to try to fundamentally re-envision how things might work differently. Instead we are just kicking the can.

by Albert Wenger at 2023-03-14 14:37


Adrian McEwen

Week 909 - It's a knockout

Back to Chris for this week, still in the singular, we're on a roll.

This week I've mainly still been chasing down the last few quirks on the My Bike's Got LED boards before we commit to getting the new boards made. The changes we've made mainly relate to the battery management and charging. So mainly data sheet rabbit holes and testing. It looks very much like we've ironed out the last of the snags and are ready to go.

We also picked this week to move away from the nightly builds of Kicad and onto Version 7. There's plenty of new features to like, who's not going to get excited about a hierarchical viewer in the schematic editor? Alongside the new functional tools we've got to play with there are a few cosmetic changes too. While rerouting some tracks it seemed like a waste not to play with the text highlighting 'knockout' feature. The difficulty here seems to be knowing when to stop..

A screen shot from kicad version 7 showing the new knockout feature.

As well sending out more My Baby's got LED boards I've also been looking at some little bits for ongoing client work.

As usual, Adrian has been busy doing things he (mostly) can't talk about. One of the client projects is involving a lot of work with the Nordic nRF91 platform - a microcontroller with on-board NB-IoT and LTE-M modems and GPS. So far it's proving a nice, capable set-up if you need some low-power mobile-phone-level communication options alongside the computing.

The software platform that goes with that is Zephyr OS. That's a new one to learn and add to the assortment we already know. Given the variety of hardware it works on, it has some very fine-grained configuration options; almost (as he's been climbing the learning curve with it) to a fault!

This week he's been working through the threading and synchronization to allow the board to (appear to) do multiple things at the same time, and as a result found—and fixed—a bug in the Cucumber testing framework that we're becoming fans of around here.

by Adrian McEwen at 2023-03-08 06:00


Albert Wenger

India Impressions (2023)

I just returned from a week-long trip to India. Most of this trip was meeting entrepreneurs and investors centered around spending time with the team from Bolt in Bangalore (a USV portfolio company). This was my second time in India, following a family vacation in 2015. Here are some observations from my visit:

First, the mood in the country feels optimistic and assertive. People I spoke to, not just from the tech ecosystem, but also drivers, tour guides, waiters, students, and professors, all seemed excited and energized. There was a distinct sense of India emerging as a global powerhouse that has the potential to rival China. As it turns out quite a few government policies are aimed at protecting Indian industrial growth and separating it from China (including the recent ban on TikTok and other Chinese apps). Also, if you haven’t seen it yet, I recommend watching the movie RRR. It is a “muscular” embodiment of the spirit that I encountered that based on my admittedly unscientific polling was much liked by younger people there (and hardly watched by older ones).

Second, air pollution in Delhi was as bad as I remembered it and in Mumbai way worse. Mumbai now appears to be on par with Delhi. For example, here is a picture taken from the Bandra-Worli Sea Link, which is en route from the airport, where you can barely see the high rise buildings of the city across the bay.

Third, there is an insane amount of construction everywhere. Not just new buildings going up but also new sewer lines, elevated highways, and rail systems. Most of these were yet to be completed but it is clear that the country is on a major infrastructure spree. Some of these projects are extremely ambitious, such as the new coastal road for Mumbai.

Fourth, traffic is even more dysfunctional than I remember it and distances are measured in time, not miles. Depending on the time of day, it can easily take one hour to get somewhere that would be ten minutes away without traffic. This is true for all the big cities I went to visit on this trip (Delhi, Mumbai and Bangalore). I don’t really understand how people can plan for attending in person meetings but I suppose one gets used to it. I wound up taking one meeting simply in a car en route to the next one.

Fifth, in venture capital there are now many local funds, meaning funds that are not branded offshoots of US funds, such as Sequoia India. I spent time with the team from Prime Venture Partners (co-investors in Bolt) and Good Capital among others. It is great to see that in addition to software focused funds there are also ones focused on agtech/food (e.g. Omnivore) and deep tech (e.g. Navam Capital). Interestingly all the ones I talked to have only offshore LPs. There is not yet a broad India LP base other than a few family offices and regulations within India are apparently quite cumbersome, so the funds are domiciled in the US or in Mauritius.

Sixth, the “India Stack” is enabling a ton of innovation and deserves to be more widely known outside of India (US regulators should take note). In particular, the availability of a verified digital identity and of unified payments interfaces is incredibly helpful in the creation of new online and offline experiences, such as paying for a charge on the Bolt charging network. This infrastructure creates a much more level playing field and is very startup friendly. Add to this incredibly cheap data plans and you have the foundations for a massive digitally led transformation.

Seventh, India is finally recognizing the importance of the climate crisis both as a threat and as an opportunity. India is already experiencing extreme temperatures in some parts of the country on a regular basis (the opening of Kim Stanley Robinson’s Ministry for the Future extrapolates what that might lead to). India is also dependent on sufficient rainfall during the Monsoon season and those patterns are changing also (this is part of the plot of Neal Stephenson’s Termination Shock). As far as opportunity goes, India recently discovered a major lithium deposit, which means that a key natural resource for the EV transition exists locally (unlike oil which has to be imported). India has started to accelerate EV adoption by offering subsidies.

All in all this trip has made me bullish on India. Over the coming years I would not be surprised if we wind up with more investments from USV there, assuming we can find companies that are a fit with our investment theses. In the meantime, I will look for some public market opportunities for my personal portfolio.

by Albert Wenger at 2023-03-07 01:18


Mine Wyrtruman (pagan religion)

Check Out The Podcast

Wes hāl!1 It occurred to me today they I never created a blog post about my podcast. It’s been going for a little over a month, so I’m overdue for an official announcement, I suppose. Wes hāl and Beo gesund are Old English greetings and farewells that literally mean Be well/whole/healthy. The first seemed to be more common among the Anglian dialects and the second more common among the Saxon dialects. I prefer to use both though, the first as a greeting and the second as a farewell. ↩

by Byron Pendason at 2023-03-04 00:00


Fairphone Blog

Sticking with Cobalt Blue

A call upon the industry to engage more – not less! – in ASM cobalt mining.

Seven years after Amnesty International’s report “This is what we die for”, cobalt mining in the Democratic Republic of Congo (DRC) is again in the headlines, with a focus on the continuous dangers and challenges connected to artisanal cobalt mining, and with companies being pointed out for using cobalt from these mines while not doing enough to support improvement.

Cobalt is a mineral used in our Fairphone battery, and is a crucial material for the global transition to green energy, including in the electronics and automotive industries amongst others. At Fairphone, we are the first to say that the working conditions in artisanal cobalt mining in the DRC are still not acceptable, that miners are still exposed to dangers and don’t have protective equipment, and that there are still children working in hazardous and damaging environments at mine sites. In the last seven years, not sufficient progress was made in addressing these issues.

And it’s precisely because of these extreme issues that we co-founded the Fair Cobalt Alliance (FCA) in 2020. With the FCA, we choose to directly engage at the mines on the ground in DRC – because we believe we have a responsibility to invest in and contribute to improvements that are needed to positively change the conditions for these miners and their communities.

The FCA brings together industry, civil society and government and has been working to improve working conditions and health and safety at the Kamilombe mine site. The FCA also established a holistic program to address and remediate child labor in and around mine sites, and is enabling mining communities to diversify their economic opportunities. 

Beyond addressing these risks and harsh conditions that are still a reality in our sectors’ supply chain, the reason why we engage with artisanal miners in the DRC is also that this sector has a huge potential to help develop the region and reduce poverty. Artisanal miners in DRC produce about 13% of cobalt globally, providing income for up to 100,000 people (depending on seasonality and commodity prices), and the DRC (combining both artisanal and industrial production) accounts for about 70% of global cobalt production in total.

But profound and lasting change won’t happen overnight.

With the FCA, we have set out to support the reform of an entire sector. There are no simple or quick solutions to formalize and improve artisanal mining. Demonizing the miners will harm rather than help because banning or excluding the most vulnerable and marginalized in our industry from global supply chains will push them out of their livelihood.

Instead, artisanal mining is a way for the local population to benefit from the increasing demand of critical minerals such as cobalt, needed for the energy transition. Artisanal cobalt miners can earn a significant income (depending on seasonality and prices), in a context where poverty is widespread and few other gainful employment opportunities are available, especially for those with little formal education or job prospects, those who have lost their land due to climate change or other land uses (including industrial mining), or those who have migrated to the area fleeing from conflict.

At Fairphone, we are therefore convinced that artisanal mining can be transformed into responsible and safe small- and medium-scale enterprises over time, creating a multiplier effect in the local economy.

So, we need to ask ourselves, as an industry: If we distance ourselves from artisanal- and small-scale miners, do we help ourselves, or do we help them? For Fairphone it is clear: we want to engage and be part of the solution, rather than disengage to have a ‘clean west’ – which we believe is akin to greenwashing.

A fair transition to an inclusive and green economy means engaging with and investing in the artisanal- and small-scale mining sector in DRC, and it means sticking to it over the long term. From the start, Fairphone’s approach has been to foster progressive improvement, to take one step after the other, to listen to and bring along everyone. 

This is why things take time, and also why so much more still needs to be done: Artisanal miners need legal status and productive mine sites, expertise and infrastructure to build safer mines, protective equipment, and fair compensation for their labor. Children, youth and their families need a safe space and support to go back to school or to learn a trade that can help them provide for themselves or their families, without being exposed to the hazardous environment of a mine- and not just at one mine site, but across the sector. Communities should be able to save their earnings and invest them into health, education and economic activities, and not only bear the brunt of the negative impacts of mining.

All this can only be achieved in a multi-stakeholder effort, such as the FCA. Businesses along the cobalt value chain have a crucial role to play, and so does the government, by helping to create an enabling legal and political context. And of course civil society, to make the voices of miners and communities heard. We can only achieve a transformation of the sector if it is a joint effort with everyone making a long-term commitment. Only in this way can we make sure that the green energy transition does not lead to further exploitation of the vulnerable, and that local communities and the DRC as a country benefit.

We call upon our industry peers to engage and not look away. Collaborate, invest – and above all, listen to the producers, the miners, and their communities. If we truly want a fair transition, we have to do more and we have to do it faster.

You are still reading and want to know more details about Fairphone’s approach to cobalt sourcing?  Here are the answers to some frequently asked questions:

  1. Where does Fairphone source its cobalt from?

Fairphone does not mine or source cobalt directly – rather, cobalt is used in the Fairphone’s battery. Until it gets into the battery from the mines, there are many actors, manufacturing stages and geographical locations in between: from the extraction point at the mine, cobalt typically goes to a processing plant, then a refiner, to precursor manufacturing, to cathode manufacturing, to battery cell and finally battery packaging, before the finished battery is assembled into our phone. At each of these stages, cobalt from different mines and sources is typically mixed together, making it very difficult and uneconomical to differentiate individual mines and sources. However, we know that the DRC accounts for a very large proportion of global cobalt production (74% of globally mined cobalt in 2021), and within that, artisanal sources alone amount to 13% of global production. Therefore it is safe to say that there is a high likelihood of cobalt from the DRC and from artisanal mines flowing into the electronics supply chain, including into Fairphone’s.

This is precisely why we established the Fair Cobalt Alliance – we want to engage and invest where the issues are biggest and where we can have a positive impact on the livelihoods of many thousands of people. We choose to engage and support rather than exclude and marginalize those who are already the poorest and weakest in our supply chain.

  1. How can Fairphone prove that its cobalt is mined ethically?

A significant share of global cobalt production, about 13%, is produced by artisanal and small-scale miners, mainly in the DRC. This cobalt is refined, mixed and processed with other sources at various stages and through that ends up in global value chains – with a high likelihood also in Fairphone’s. 

This is why from the very beginning, Fairphone has been investigating how to improve the cobalt supply chain and production. Instead of turning away from DRC and artisanal miners because there are high human rights and environmental risks, we want to stay engaged on the ground and be part of a solution. ASM is a very important livelihood in DRC, and we want to help improve it and make it safer. This is why we co-founded the Fair Cobalt Alliance.

The Fair Cobalt Alliance’s work is based on an in-depth assessment of the conditions at ASM sites in DRC – this assessment was done in 2020 and published by our partner The Impact Facility here: Digging for Change. Today, the FCA works directly with an ASM cooperative on an ASM mine site in DRC. Two of the key pillars of the program is to professionalize and improve the mine site and working conditions, and to ensure that child labor is prevented and remediated in a holistic way.

Fairphone and the FCA recognize that current conditions are not acceptable and at the same time are convinced that ASM can be done in a responsible way. That is why we focus on a step-by-step continuous improvement approach and why Fairphone, together with the FCA, developed an ASM Cobalt Framework which provides Environmental, Social & Governance benchmarks to measure the progress and improvements at the mine site over time.

All of this takes time, investment and most of all, collaboration with partners on the ground. We are the first to recognize that the conditions on the ASM mine sites are not yet good. But over the course of the last two years, some first improvements have materialized. This includes the training of health and safety captains at the mine site, a system for the provision of personal protective equipment for the women cobalt washers, and establishing a health and safety committee to monitor incidents. For more detailed information on activities and progress, you can access the FCA’s quarterly and annual report here.

There is still a lot to do and many challenges and difficulties to face. And Fairphone is in it for the long term – because only with long term engagement can we get to a point where ASM cobalt production is safe and responsible.

  1. How does Fairphone check its supply chain of cobalt?

On an annual basis, Fairphone requests its suppliers to provide information on all the cobalt refineries in our and their supply chain. This is done by using the Extended Minerals Reporting Template (EMRT) of the Responsible Minerals Initiative (RMI), which forms part of the Responsible Business Alliance (RBA). We then analyze the data from our suppliers and check the reported refiners against the RMI’s list of certified cobalt refiners. These are refiners that are undergoing or have undergone the RMI’s Responsible Minerals Assurance Process (RMAP) – meaning they have been audited against the RMI’s Cobalt Refiner Due Diligence Standard, which certifies that the refiner has put in place the necessary measures to check, prevent and mitigate gross human rights abuses related to the sources and mines it buys from. Where we find refiners that have not yet undergone an audit, we aim to conduct outreach to convince the refiner to undergo such an audit. Where we find a refiner that has failed an audit, we aim to first engage and request improvement and only disengage from it as a last resort if no improvements are made over time. As a small company, we cannot do all of this outreach alone, and also rely on support from industry associations such as the RMI and industry peers.

We publish the list of our cobalt refiners, their location and their certification status in our Supply Chain Engagement Report, which is published annually. Here the link to the report for 2021; the report for 2022 will be published in April 2023.

  1. Why doesn’t Fairphone just use cobalt from other countries than the DRC?

Our goal is to stay engaged and use our buying power to drive for a positive change where improvements are most needed, instead of walking away from difficult contexts and ignoring the challenges there. Artisanal cobalt mining in the DRC is a crucial livelihood for thousands of people who have little other alternatives, due to poverty and the lack of gainful employment. We recognize that this is linked to a lot of challenges and impacts, but this is precisely why we want to engage and invest in this context. We choose to engage and support rather than exclude and marginalize those who are already the poorest and weakest in our supply chain. It is in contexts like the DRC where Fairphone can have the most positive impact.

  1. What does Fairphone concretely do on the ground in DRC to improve things? What has been achieved so far and what are Fairphone’s goals for its cobalt sourcing?

Fairphone engages and invests on the ground in DRC through the Fair Cobalt Alliance (FCA), which it co-founded in 2020. The FCA works directly with artisanal mining cooperatives and surrounding communities around the city of Kolwezi in DRC, where most cobalt is mined. Fairphone’s goals are aligned with the FCA’s, namely: 

  • to professionalize the ASM sector by investing in and supporting responsible and safe mining practices, creating dignified working conditions, and enabling fair compensation of workers
  • to work towards child-labor-free communities, where the root causes of child labor are tackled in a holistic manner
  • And to enable sustainable livelihoods and economic diversification of mining communities.

This year, we aim to work especially on the integration of artisanally mined cobalt into responsible supply chains, linking ASM producers with responsible markets. Ultimately we want to see an ASM sector consisting of responsible and safe small and medium-sized mining enterprises, contributing to the development of local communities and DRC as a whole.

Details about the FCA’s overall goals, its workstreams and activities, and the progress to date can be found on its website.

  1. Can recycled cobalt be an alternative option?

In general, using recycled materials is a first step towards a circular economy, and is therefore something Fairphone aims towards. While cobalt is recyclable in principle, and industry is using recycled cobalt already, there are a few barriers that we still encounter:

  • First, until now, one of the main sources of recycled cobalt came from consumer batteries (such as in mobile phones). But due to the limited quantity and concentration of cobalt in consumer batteries, the corresponding development of recycling infrastructure to recover cobalt from such batteries has been limited. In other words, the available amount of recycled cobalt that can be re-integrated into new batteries is still small. It is not economically attractive at present, because the collection rate and the amount of cobalt are low.
  • Second, the demand for electric vehicles (EV) is now growing fast, leading to enough incentive for recycling cobalt from these EV batteries. However, along with the huge demand growth driven by the green energy transition and EVs, car batteries may last 6-10 years, and only then are they expected to become a large source of recycled cobalt. And even so, there are still challenges in purification and economic feasibility for recycling cobalt from EV batteries to be used in consumer batteries (such as in Fairphone products). We are currently exploring this with our suppliers. Ultimately, researchers predict that recycled cobalt will only account for 15% of the estimated global demand in 2030. It shows that with rapidly increased demand and relatively long battery life, cobalt mining will remain relevant and in need of our attention.
  • Thirdly, collecting more waste consumer batteries is surely an option. But batteries are classified as a hazardous good and therefore their transport, storage and handling are subject to strict safeguards and standards. This is why our take-back program of e-waste from informal waste dumps in Africa with our partners Closing The Loop does not yet cover batteries.

Overall, we are exploring the use of recycled cobalt in our batteries when and where we can, but we also see the need to accompany this with two other measures: 1) Engage in improving mining, because we will remain dependent on mined sources for some time, and 2) contribute to improving recycling rates of batteries.

The post Sticking with Cobalt Blue appeared first on Fairphone.

by Angela at 2023-03-02 15:20


Adrian McEwen

Week 908 - Cycling Protocol

Adrian here, managing for once to get the weeknotes out while they're still just for one week.

Following last week's clamber into the software stack of protocols and, given the amount of work I've done over my career reading protocol specs and writing code to implement them, probably my most comfortable zone of development; I could crank out the code and got everything working nicely.

As a result, I could use an ESP32 to update the firmware on an Arduino Mega, over the serial line. As the client project happens to contain both of those, it will let the system download new firmware from a USB drive or over the WiFi using those features of the ESP32S2 and then update the code running on the ATMEGA2560 chip with its greater I/O capabilities.

Rows of people sat watching Kirsty presenting the welcome session at the Merseyside Cycling Campaign AGM

On Saturday the Merseyside Cycling Campaign held their AGM at DoES Liverpool. That brought over sixty cyclists along to the space for a series of talks and presentations alongside the formal agenda. It was a celebration of the wealth of community groups getting more people riding and forged lots of new links and friendships.

We were there as attendees, but also took the opportunity to show off My Bike's Got LED. Chris spent some of the week working on the Atuline sound reactive fork of WLED, as we thought it would be good to show off the lights changing in time to some music. Plus we could have a couple of bikes with their lights synchronized over WiFi, making it even cooler!

In the end, the event was too packed to show anything beyond a single bike. You'll have to keep an eye out for when we get it set up and running on one of our group rides instead.

He's also been chipping away at the redesign work for the updated version of My Bike's Got LED. Checking over the fixes to the bugs in the first prototypes and starting to fold that back into a revised design.

by Adrian McEwen at 2023-03-01 06:00


Adrian McEwen

Week 907 - Tracing rainbows

Chris again this week. Less fanfare and sparkly new board photos, more hard slog chasing down bugs on the new boards. The new charging circuit for the boards isn't playing very nicely with the existing battery protection circuit. We think we have traced the issue and will hopefully we'll soon have a version 2 V2 board ready to go.

Connected to this has been the ongoing issue of updating the DoES relfow oven, Florence. Nothing particularly exciting in a technical sense, we added a new temperature sensor and cailbrated the new firmware. It feels weeknote worthy though because these updates to off the shelf kit have relied on the shared work of people I've never met who bumped up against the same problems we were having. It's how we work at MCQN and how DoES is run, and proabably perfectly normal to most people who read these weekenotes. It's good sometimes to remember the wider community we're part of.

I've also been looking at a sound reactive demo of the V1 boards for the Merseyside Cycling Campaign AGM at DoES on Saturday 25th Feb. We've looked at sound reactive uses for My Baby's got LED before, but using signals generated on other machines. With this application we're taking an audio line in and creating the effects on board. Using UDP the effects can then be synchronised across all bikes in the Peloton. Syncronisation is a feature of these boards I'm keen to exploit more. It needs a bike mounted router solution to provide a network to connect devices, but I think it will make for impressive effects.

Logic analayser trace of communication between an ESP and Arduino.

This week Adrian has been getting an ESP32 microcontroller to program an Arduino. That involved a lot more wielding of logic analyzers and oscilloscopes than he'd have liked, thanks to some peculiarities in the particular hardware for this project. Thankfully he's made it out into the sunlit uplands of software and protocol implementation; and he's the sort of weirdo where reading protocol definitions for the STK500v2 firmware procedure is classed as "sunlit uplands".

There's a free MCQN coaster for the first person to correctly identify what's happening in the trace above. Answers on whatever the twenty first century equivalent of a postcard is.

by Adrian McEwen at 2023-02-24 06:00


Paul Fawkesley

The speech I gave at my Just Stop Oil trial

Di, Oli, Alan, Paul, Harley, Jon and I gave testimonies at trial on Wednesday.

Judge Wilkinson responded with an extraordinary speech that’s quoted towards the end of this press release.

Here’s why I disrupted an Esso oil terminal for 11 hours last April.

My daughter Robyn will turn three next week.

But she very nearly didn’t exist.

You might have heard that young people don’t want children because of the climate crisis.

That was me. I agonised over whether it was fair to bring a child into this world.

  • Will I be able to protect them?
  • Will they grow up in an unstable, dangerous world?
  • Will they resent me for having them, despite knowing what they’ll face?

Eventually, and with some uncertainty, we decided to have just one child.

Since Robyn was born we’ve spent every Thursday together.

We spend most days outdoors, collecting leaves, talking to “woof woofs”, and discussing endlessly about “why”.

Why are leaves green? Why does the moon come out at night?

She is a perfect, tiny human.

I love her so much.

She has done nothing to deserve the future that we’re currently all facing with 2.4° of warming.

She does not deserve to live in fear of food shortages and rationing.

But by the time she’s 30, many countries we import food from will be too hot for growing crops. The Global Center for Adaptation forecasts a global yield reduction of up to 30% by 2050. And that’s with a projected additional 2 billion mouths to feed.

She does not deserve to see her home, Liverpool, ruined by rising sea levels and worsening storm floods.

But by 30, the street where we live is predicted to be underwater once a year, according to the IPCC’s 2021 leading consensus model.

Robyn doesn’t deserve a society that’s polarised by the impossible stress of hundreds of millions of climate refugees.

But by the time she’s 30, there will be between 25 million and one billion climate migrants, according to the UN’s International Organization for Migration.

As I watch her little mind growing, I think about her grasping the climate situation like I did.

She’s going to say to me,

“Dad, you knew this would happen. What were you doing? Did you do everything you could?”

I need a good answer.

I gave up my car and spend thousands a year on trains.

I stopped eating beef and lamb, the highest emitting foods.

I spent £1000s and hundreds of hours insulating our home.

I invested my savings in renewable energy co-operatives.

I stopped flying and faced the idea I may never leave Europe again.

I joined the Green Party, I wrote to my MP, went on marches, and signed petitions.

I did all these things, but global emissions kept going up.

The IPCC kept publishing reports, and they kept getting worse.

And our Government kept granting new fossil fuels licences.

That means giving permission to dig up brand new oil and gas from the north sea.

So what’s wrong with that?

Remember how the Government declared a climate emergency in 2019?

We committed, in law, to achieve Net Zero emissions by 2050.

But Net Zero by 2050 is not compatible with granting new fossil fuel licences.

The IPCC and the International Energy Agency are the world’s independent experts. They say that to achieve Net Zero by 2050, there should be no new fossil fuel licences.

So our Government set a goal in law, but is acting in a way that means we will not meet that goal.

At the start of 2022, the Government had approved 40 new fossil fuel projects.

The emissions from those new fossil fuels will be equal to three times that of the whole UK.

As the metaphor goes, the house was on fire, but we just kept throwing on petrol.

I felt guilty for being part of the problem.

I felt bitter that people in our Government must know how urgent the situation is, but are too cowardly to upset the status quo.

I felt anger that fossil fuel companies spend millions of dollars funding climate deniers. Corrupting our democratic process.

But most of all I felt hopeless and I felt despair.

I was watching us lurch towards the edge of the cliff, but was powerless to stop it.

What else could I do?

How could I look my daughter in the eye, and tell her I did what I could?

I heard about a thing called Just Stop Oil.

They had a simple demand of Government.

Stop granting new fossil fuel licences.

This wasn’t a radical or unreasonable demand.

It’s exactly what the IPCC and the International Energy Agency have said is necessary.

So that was Just Stop Oil’s demand.

Their tactics were simple, and borrowed from history.

The same tactics that got women the right to vote, and all races to be considered equal in the US.

Protest in a way that the government can’t ignore.

Force them to negotiate the demand.

Then came the uncomfortable bit

They were asking me to get arrested.

I didn’t much like the sound of that…

It didn’t sound like me!

I’m an Engineering graduate, a business owner, a hands-on dad.

The only brush I’d had with the law was a speeding ticket when I was 17.

This all seemed very extreme.

It wasn’t for me. I said I’d help out with leaflets and “think about it.”

But over time, I met a few more people involved with Just Stop Oil.

They weren’t what I was expecting. They were… gentle, principled people.

Vicars, teachers, nurses.

Doing this because it’s necessary, not because they enjoy protesting.

At one point, I heard someone ask:

“What are you more afraid of, getting arrested or the climate emergency?”

That was a hard thing to face up to.

I was afraid of getting arrested, and the consequences, of course I was.

But if I was honest with myself, there was no comparison.

Of course it’s the climate emergency. It terrifies me.

It’s just easier to ignore because it’s creeping up on us slowly.

Getting arrested is an extreme thing to do.

But we are in extreme danger.

The more I thought about it, the more reasonable and necessary it seemed.

Successive Governments had ignored the protests and the petitions.

The normal democratic process had failed. The situation had become an emergency.

I felt that I had no choice.

I’m not the only one who thinks so. The day after my arrest, UN Secretary-General António Guterres said in a speeech:

…most major emitters are not taking the steps needed to fulfil even these inadequate promises.

Climate activists are sometimes depicted as dangerous radicals.

But, the truly dangerous radicals are the countries that are increasing the production of fossil fuels.

We rely on our Government to protect us.

It’s their most important duty.

But they aren’t doing that.

They are contradicting the IPCC and the International Energy Agency.

By granting new fossil fuel licences, they are destroying our future.

I didn’t want to sit on the road for hours in minus 1 degrees

I didn’t want to get arrested.

I didn’t want to be here today.

But I had to demand that the government protects us.

I had to tell them to listen to the desperate cries of their own scientists and experts.

And I had to demand that they stop granting new fossil fuel licences.

Taking action with Just Stop Oil.

This was something I could do.

This is what I can say to Robyn.

Thank you.

My daughter’s name has been changed to protect her identity.

Other #Esso9 speeches

by Paul Fawkesley at 2023-02-17 00:00

Paul Fawkesley

Paul Barnes' speech from Just Stop Oil trial

Di, Oli, Paul F, Alan, Paul B, Harley and Jon gave testimonies at trial on Wednesday.

Judge Wilkinson responded with an extraordinary speech that’s quoted towards the end of this press release.

Here is the speech Paul Barnes’ gave.

I want you to all think of outer space.

Think about the planets, the moons and all the stars floating in a vacuum of nothingness.

All made from the same gasses and elements that make our planet possible too, but still… a lifeless void of nothing.

What WE have here on OUR planet, OUR earth, is a miracle… Life is a miracle.

The conditions for our very existence here on Earth have worked in perfect balance with all life on our planet for millions of years… and what we have is incredibly precious.

Devastatingly, species decline and extinction rates are accelerating and we are no exception.

We must protect what we have left.

From an early age, around 7 years old, I’ve been scared of dying.

I would routinely ask my parents about what happens when we die, what’s outside the universe, when did it start, how did it start?

At that time our atmosphere had a CO₂ concentration of 350 parts per million. My parents couldn’t offer me any answers to my questions, they comforted me, but ultimately couldn’t help me.

Now I’m a parent and I’ve two young children of my own. Leo is 4 and our eldest, Isaac is now 7 years old himself, and that CO₂ figure is now at 420 parts per million, the highest it’s been in modern human history.

According to Nasa the last time it was this high was around 400,000 years ago.

8 billion people have never faced this before. I’m now scared for Isaac & Leo’s lives and how the climate crisis will impact them.

At this time in history, I have the chance to save my children from the worst impacts of climate breakdown before it’s too late, and as a parent I will do all I can whilst I am able, to protect them.

Before I was a dad, I didn’t care for politics or had any idea there was a looming climate disaster unfolding…

But since becoming a parent my levels of awareness about everything in life has changed.

I feel like I’m more aware than I’ve ever been. Naturally, when we worry about things we’re told to research the facts, and this is what i’ve been doing since Isaac was born and even more so after hearing more about the climate emergency, as highlighted by Extinction Rebellion, the school strikers and many more, including those from the scientific community.

This came just after Leo was born in 2018, and to be honest knowing what we know now, we wouldn’t have had Leo and Isaac wouldn’t have a little brother.

But to think of our 4 year old bundle of joy not having ever existed is heartbreaking. We cherish every second we have with them both.

This is it, it’s all we get… one life….. ‘You only live once’ YOLO.

Make the most of every day we’re gifted.

Why would you not do anything?

Why would you not do everything you could to save what we have? .. what you have? It’s not too late to make a change, to use the power you have to make a difference.

In the plea hearing, you asked us not to labour on the science, but as mentioned that’s exactly what I’ve been doing for years and my conclusion is that we all need to understand just how serious this situation is.

After disinformation and denial campaigns that have lasted longer than I’ve been alive, doubt and confusion is the result, which was and is the exact intention of ExxonMobil and other fossil fuel companies.

There is a stack of evidence proving this… that for over 50 years, ExxonMobil in particular have known the catastrophic risks to life and actively tried to cover this up in a pursuit of profit over people.

I acknowledge that fossil fuels have helped us in many many ways and we should all be thankful for the privileged lives we all lead as a result of that.

But I also understand the reasons why, now, we must rapidly move away from them.

The bottom line is: If we don’t move in the time scale required, dictated to us by the laws of physics, presented to us by the scientists, the Intergovernmental panel on climate change, the UN, the international energy agency and the UK’s own committee on climate, then we may never be able to bring the global average temperature down to safe levels.

We risk multiple climate and ecological tipping points falling like dominos, and could be facing irreversible feedback loops out of human control, and face no way back.

Put bluntly, the effects of what we are currently risking will result in an unlivable world for many many species including humans and could lead to our extinction.

This decade is make or break, we either create the will to save ourselves or we don’t.

When we hear the warnings and know the risks and have learned from history how food and water scarcity result in conflict and war.

It’s easy to see how scenarios could play out in the near future as our global crisis worsens.

I worry about all the obvious things: flooding, extreme heat, wildfires, crop failure and food shortages leading to starvation and death.

But I also worry about public order and societal collapse.

Public order exists to prevent breach of the peace. it’s there to keep the public safe from harm.

It’s there to prevent chaos and danger appearing in our organised societies.

Who protects you when law and order breaks down? When most days are disrupted, not by protests, but by violence as people fight for food, water and medical supplies, and justice itself completely disappears.

All my life I believed the law and justice system protects people from danger.

I now know they are protecting the system.

The system that is directly damaging the people it was supposed to protect and is set to destroy the futures of billions.

I’m protecting myself and my family but also you, everyone in this room and their families….simply because our government, police and justice system is favouring business as usual at all costs, even if that cost is life itself.

And then I learn our own government is literally doing the ‘opposite of what is recommended to keep us all safe’, by issuing consents for 40 new fossil fuel projects…

That was then…now it’s looking like 130 plus..

We all have a choice, either ignore it, bury it deep down and accept that we have no way of changing anything and should then accept that our children face a dystopian hell of a future.

Or we try everything we can to fight to change the future.

Once all lawful means have been exhausted the only thing left is nonviolent direct action as a last and final option.

And due to the unique time scale constraints of this insane situation it is the only option left to those of us facing the truth head on, for those of us who aren’t willing to bury it deep and hide away from the reality.

We’re hoping to get guinea pigs soon.

Isaac and Leo love nature and these will be their first pets.

We’ll be in control of their living conditions and we’ll make sure we look after them well. It’s conceivable and highly likely that our new arrivals will live out their full happy lives with us.

We could choose to neglect our duty of care and subject the animals to certain factors like leaving them with no water & food, or we could leave them outside in the garden under various weather conditions and see what happens.

But we won’t because we’re in control of the situation.

I only hope that my children live a full happy life under the control of our leaders who have the power to decide our fate.

But just hoping isn’t enough.

Those already dead, displaced and decimated by climate change also hoped, but hoping didn’t change anything.

We must all act together for the sake of all those less fortunate than us, for those already in a dystopian hell.

We don’t know how lucky we are to have this small window of opportunity to do something.

But our luck will run out too, and this is the future for my children and yours,

Thank you

Paul’s children’s names have been changed to protect their identity.

by Paul Fawkesley at 2023-02-17 00:00


Mine Wyrtruman (pagan religion)

What I Believe

Wes hāl!1 I’m going to do something a little different today. I’m going to provide the fundamentals of what I believe as far as religion goes. I doubt anyone is going to agree with everything, and some people might not agree with any of it. That’s okay, I don’t base my friendships on agreement, but rather mutual interests and respect. Still, I think it could be helpful to some to see what one version of Fyrnsidu might look like (and again, this is only one version of it). My beliefs are always in flux, so these might not be applicable in a year, but since I’m providing the fundamentals upon which I have built my religion, I doubt any of these will change any time soon. Wes hāl and Beo gesund are Old English greetings and farewells that literally mean Be well/whole/healthy. The first seemed to be more common among the Anglian dialects and the second more common among the Saxon dialects. I prefer to use both though, the first as a greeting and the second as a farewell. ↩

by Byron Pendason at 2023-02-15 00:00


Adrian McEwen

Weeks 905 and 906 - Get on Board

Adrian here. I'm typing this on my long-awaited new laptop. It's a StarBook. I ordered it last March(!) and after a bunch of chip-shortage and supply-chain delays it finally turned up a few weeks back.

Switching over—given how many bits of software, and project environments I have on my computers—has taken a few weeks in itself. There are still a couple of projects which haven't fully migrated, but I moved my email-and-RSS across last week, which feels like the true marker of which is my main machine.

I'm enjoying the new screen lots. The keyboard is nicer than on my old Thinkpad (I think the fold-back-on-itself tablet mode of that meant the keyboard design suffered), but I'm still retraining my muscle memory for the new position of the ancillary keys. I'm not a huge fan of the trackpad; it's missing a middle button, and it's a bit wide, so I keep catching the right edge of it when scrolling around. I'm sure I'll get used to it.

Aside from commissioning a new laptop, I've been busy with client work. There's been rather too much re-jigging the build system for an ESP32-plus-Arduino project for my liking, but I do now have a better understanding of how those different parts can be configured.

A collection of cardboard boxes containing lots of bags of electronic components, some PCBs and a stainless steel stencil

Chris has been cracking on with more photogenic work.

Green circuit board plugged into a USB supply with perhaps more components than is justified for the single lit red led

The bare PCBs and all the components for the test samples of the version 2 My Bike's Got LED boards arrived. Chris got a couple soldered up in the reflow oven and has been working through getting code on them and testing the various areas of functionality.

It's looking like we might need to tweak things, but this is why we got a few boards to test first. However, as you can see, we have got lights from it!

by Adrian McEwen at 2023-02-13 06:00

Adrian McEwen

Week 904 - Always look on the bright side of life…

Chris here, picking up the baton, and getting on with weeknotes early to keep up the streak. I’m aiming for cheerful, upbeat positivity. Those who know me well can stop giggling, I see you. Days are getting longer, the weather is getting warmer, we can put the long cold winter behind us and look forward to sunny days ahead.

Last week was definitely a setback, we’re working on some great products and thought we’d solved all the difficult technical problems. Leaving just the difficult marketing problems, but the improvements to My Bike’s got LED should mean it’ll sell itself. Right? I know the ever growing Friday night ‘Folk riding bikes’ will have plenty of ideas for the solar battery charging option.

With a bit of rejigging from Adrian, we’ve found a way through to get closer to production. Test PCBs are ordered and components coming, so we’re not much more than a re-flow away from having version two boards for testing.

Part of the process of has introduced me to a couple of Kicad hacks that I think are worth documenting here. If nothing else so I don’t forget them myself.

Alt-3 in the Kicad PCB editor jumps to the 3d viewer. Really nice to look at and remind you of what you’re working towards as you wrestle with rats nests. It’s also a very useful way to help nudge the silkscreen design without losing things in the complexity of all the pcb layers in design view. Then clicking on raytracing in preferences moves things on to a whole new level. (and why for the second week in a row we’ve got a render of an as yet unmade board at the top of the post.)

1 click BOM is all the way down the other end of the utility scale, unless csv lists of components and where to buy them is your idea of beauty. It can be integrated into Kicad and used to generate a list of all the components needed for a board. This can be sent to manufacturers or, via a browser extension, used to fill shopping carts from component suppliers.

The client work continues to move forward, as code is written and logic analysed. Hopefully by the next time weeknotes are being written there’ll be more good news on the products side to talk about. Ideally a video or two with some interconnected bike boards to show off.

So while it might feel like we’re still pushing rocks uphill I’m going to try to follow the advice of the wisest of philosophers. “Don't grumble, give a whistle, and this'll help things turn out for the best.”

by Adrian McEwen at 2023-01-30 06:00


Adrian McEwen

Weeks 897-903 - Completed Designs and Testing Times

Adrian here. Lots to catch up on as it seems it's been seven(!) weeks since we last reported on things. Some of that was the festive break, but still. Happy New Year and all that.

I'm in a mixed mood writing these weeknotes to be honest. But, working in the open means sharing the downs as well as the ups. And these aren't big downs, just the regular bumps of business life. Onwards.

Chris has been splitting his time between some early exploratory development work that we can't talk about yet, and getting the updated version of the My Bike's Got LED boards finished.

He's had the big chunks of functionality laid out for a while, and has been (re-)learning that the last 20% takes 80% of the time. However, this week he got it over the line and sent out for quotes for production.

I've been getting to grips with testing frameworks, and working out how to use Cucumber with embedded systems and microcontrollers. I've dabbled with it in the past on small web projects, but the approach has never quite stuck. I think part of that is because the projects have been smaller, with me as the sole developer; when I can (mostly) keep how it all works in my head at once, it hasn't seemed worth the extra up-front work to build the test scaffolding.

Now that I'm working more in teams again, that calculus has shifted. While looking for something suitable for testing in the embedded world I came across this project to bridge between Cucumber and microcontrollers over a serial connection. We've been using it on a couple of projects and I'm liking it so far. The more human-readable test cases of behaviour-driven development (BDD) are useful; and the ability to mix native Ruby-scripted steps with others on the target hardware lets us set up parts of the test on a companion PC to check that, for example, transmitted data has made it out to the "cloud".

The initial codebase was targetting the nrf51 platform, but it was fairly simple to port to nrf91 and ESP32—they're the platforms our current projects are using. We've also been extending it to add more features and other improvemens. All of which is available in our fork on Github.

I've really enjoyed getting my head down and cranking out some code for that. I've also started to appreciate laying out the edge cases and general functionality of code I'm developing in the test cases before the code is written. Hoping that's a habit that starts to take root.

Outside of the "proper" work, the other work has been getting me down this week. One of our clients is dragging their heels a bit paying invoices. I expect it will get sorted, but the background concern and chasing adds some drag to the work of the company. Including to the work that this client wants to be finished.

On top of that, we had an initial quote back for the My Bike's Got LED production run and it's a fair bit more than I'd expected. It's probably just a mis-match in comms between us and the supplier—usually they're really good—and it should be something we can work out. But I could have done without the extra admin and working-through-the-issue that results. What seemed like a milestone passed mid-week, turned out to not quite be the case.

The joys of a small indie hardware manufacturer, eh?

by Adrian McEwen at 2023-01-23 06:00


Mine Wyrtruman (pagan religion)

The Cardinal Virtues

Wes hāl!1 One of the things that Heathenry lacks is a definitive cohesive theory on ethics. The reason for this is due to its tendency to be based upon reconstructionist methodology, and the fact is that no records from the pre-Christian Heathens survive. The closest we have is parts of the Poetic Edda, but even that comes to us from the Christians that wrote it down and probably modified it to better fit their worldview. Wes hāl and Beo gesund are Old English greetings and farewells that literally mean Be well/whole/healthy. The first seemed to be more common among the Anglian dialects and the second more common among the Saxon dialects. I prefer to use both though, the first as a greeting and the second as a farewell. ↩

by Byron Pendason at 2023-01-22 00:00


Albert Wenger

Termination Shock (Book Review)

Over vacation I read Termination Shock by Neal Stephenson. Unlike many other recent books tackling the climate crisis, it is entirely focused on the controversial issue of geoengineering through solar radiation modification (SMR). The basic idea of SMR is to let slightly less sunlight into the Earth’s lower atmosphere where it can heat things up. Even a tiny decrease in solar radiation will have a big impact on global warming.

To put upfront where I stand on this: I first wrote about the need to research geoengineering in 2009. Since then Susan and I have funded some research in this area, including a study at Columbia University to independently verify some chemistry proposed by the Keith group at Harvard. The results suggest that using calcite aerosols may not be so great for the stratosphere which includes the Ozone layer that protects us from too much UV radiation. That means spreading sulfites is likely better – this is what happens naturally during a big volcano eruption, such as the famous Mount Pinatubo eruption.

Artificially putting sulfur into the stratosphere turns out to be the key plot device in Termination Shock. Delays by governments in addressing the climate crisis have a rich individual start to launch shells containing sulfur into the stratosphere. In a classic life imitating art moment, Luke Iseman, the founder of Make Sunsets, is explicitly referring to reading Termination Shock as an inspiration for starting the company and releasing a first balloon carrying a tiny amount of sulfur into the stratosphere.

Termination Shock does a good job of neither praising its lone ranger character for attempting to mitigate the climate crisis, nor condemning him for kicking off something with obviously global impact. Instead, the plot extends to several nation states that might be positively or adversely affected and the actions they take to either support or interfere with the project. While these aren’t as fully developed as I might have liked (the book still clocks in at 720 pages), they do show how different the interests on SMR might wind up across the globe.

In that regard I loved that India gets a starring turn, as I believe we are about to see a lot more of India on the global stage. I only wish Saskia, Queen of the Netherlands, played a more active role, like the female protagonists of Seveneves do. To be fair, she is a very likable character, but mostly with events happening to her. As always with books by Neal Stephenson, there are tons of fascinating historical and technical detais. For example, I had no idea that there were tall mountains in New Guinea.

Overall Termination Shock is a great read and an excellent complement to Ministry for the Future in the climate crisis fiction department (can’t believe I didn’t write about that book yet).

by Albert Wenger at 2023-01-21 16:34


Mine Wyrtruman (pagan religion)

Stoicism and Heathenry

Wes hāl!1 I have recently become a student of Stoicism, but as I said in my last blog post Stoicism is not a Germanic philosophy. It was born in the Hellenic world, and was later adopted by the Romans. In this blog post, I want to discuss the relationship between Stoicism and Heathenry. What are the similarities, the differences, and are they even compatible? So let’s dive in! Wes hāl and Beo gesund are Old English greetings and farewells that literally mean Be well/whole/healthy. The first seemed to be more common among the Anglian dialects and the second more common among the Saxon dialects. I prefer to use both though, the first as a greeting and the second as a farewell. ↩

by Byron Pendason at 2023-01-15 00:00


Fairphone Blog

An Update on Fairphone 2

Well friends, it is time. *Cue the music* After an unprecedented seven years of supporting our beloved Fairphone 2, we will finally stop software support for the Fairphone 2. After March 2023, we will no longer deliver software updates for the Fairphone 2.

This is an incredibly bittersweet moment: the Fairphone 2 has far surpassed our initial hopes to offer three to five years of software support, but in an ideal world, we would be able to support our devices indefinitely. The Fairphone 2 makes it clear how far we have come, and how far we still have to go.

 But let’s jump to the recipe: what does this mean for Fairphone 2 owners? It’s important to us that you are all informed of possible impacts well ahead of time.


What does this mean for active Fairphone 2 users?

 In March 2023, we will share a final Fairphone 2 software update for Android 10. After this is installed, users can continue to use their device as normal. However, in terms of software support, that will be the final update. If there is a bug that users hope will be fixed, that won’t happen anymore. 


Will it be safe to continue using the Fairphone 2?

From March 2023 onwards, the device will start lagging behind in terms of security updates, so the device will become more insecure over time. We recommend that you avoid using apps that access sensitive data after May 2023; if there is a severe vulnerability that the Fairphone 2 is susceptible to, we won’t be able to fix it. 

Some security-critical apps – like banking apps – will, over time, view the device as out of date and stop running entirely. This is likely to be a few years away, but it is app dependent, so hard to know when it could happen. Regular apps will continue to run for years to come. 


Will spare parts for the Fairphone 2 still be available?

 We have a limited supply of some spare parts available in our webshop, including display modules. These will help to keep your Fairphone 2 going even longer. We expect to be able to continue offering this hardware for as long as supplies last or as long as we have a reasonable amount of active users.

Some spare parts are no longer available to purchase, such as the bottom module, which are only available for devices still in warranty.

 Obviously, in our ideal, indefinite-support world, we’d have spare parts for as long as needed, without running into electronic waste or supply chain issues, but we’re not quite there yet!


What options do Fairphone 2 owners have now?

This doesn’t have to be the end of your Fairphone 2. After March 2023, you’ll have a few options of what to do with your Fairphone 2:

Keep using the device

You can keep using the Fairphone 2 as normal, but at your own risk. Or, if you’re an experienced user interested in installing an Android alternative, we would recommend you learn more about alternative operating systems like /e/OS and LineageOS, which are still actively supported.

 Use it in offline mode

Switch your Fairphone 2 to flight mode to make sure it’s safe from security concerns that come with being online, then continue enjoying the remaining services the device can safely offer – like the camera, music player, offline games and photo gallery.

 Send your Fairphone 2 to our Reuse & Recycling Program

 If you decide that now is the time to wish your Fairphone 2 a fond farewell, you can send it to our Reuse and Recycling Program. As a thank you for returning your device to the circular loop, if you register your device with our program 31 March 2023, we’ll gift you a 50EUR voucher for the Fairphone webshop.


Recycle your Fairphone 2


How can you keep your Fairphone 2 going?

Do you want to keep your phone going for as long as possible? Fairphone users are pretty amazing (as you would know!), and our online community is a great resource for tips. Go to our marketplace and forum to learn what our community has to say on increasing the longevity of your phone. We’ve also shared some tips on how to make your Fairphone 2 last longer in a blog post here.

 And to all of you…

 This is just the beginning in a long line of farewells to active support for the Fairphone 2; we hope you’re comfortable receiving compliments, because over the next few months a lot of them are coming your way – starting now!

 Fairphone 2 users have been through it all with us: huge successes (Modularity! Seven years!) and real failures (Supply issues with spare parts, hold the exclamation point). You have repaired and replaced, upgraded and updated, and lived the Fairphone vision in your everyday life for seven years.

You made the ordinary extraordinary, proving that product longevity is a real, viable choice that is better for people and planet. Thank you. Thank you for being a part of the Fairphone journey, and for choosing Fairphone to be a part of yours. 

If you would like to bid adieu to your Fairphone 2 and send it for recycling before 31 March 2023, we’ll gift you 50EUR for our web shop – where you can get a new Fairphone to replace your well-used Fairphone 2. Let’s continue to build a fairer future together.


Get your 50EUR voucher



The post An Update on Fairphone 2 appeared first on Fairphone.

by Agnes at 2023-01-09 09:08


Albert Wenger

A Philosophical Start to 2023

We are once again at a transition moment in history. Where our journey goes from here could be exceptionally good or absurdly bad. This mirrors past moments, such as the transition into the Agrarian Age, which gave us early high cultures but also various dark ages. Or more recently the transition into the Industrial Age, with democracies flourishing, but also fascism and communism killing tens of millions.

In the past few years we have had incredible unlocks across many fields. To name just a few, in computation we are making real progress on artificial intelligence; in biology, we can now read and write genetic code; in energy, we are closing in on nuclear fusion.

At the same time we are facing unprecedented threats. The climate crisis is accelerating at a pace faster than most of the dire predictions. Our democracies are moribund with bloated and risk-averse bureaucracies. With social media and easy image/video manipulation and creation we live in post-truth world. Russia’s invasion of Ukraine has edged us closer to the possibility of nuclear war.

The threats are truly scary and I completely understand why some people find it hard to get out of bed. The opportunities can be anxiety inducing in their own ways, even if you don’t think a superintelligence will wipe out humanity any day now. At all times there are people seeing that opportunity is elsewhere, finding themselves trapped in stagnant fields. Personally I am excited by the opportunities. But even excitement carries potential failure modes with it, such as “all work and no play.”

So where does this leave me? Aristotle was wrong about a lot of things, but I quite like his conception of virtues as intermediates between too little and too much of something. For example, courage sits between cowardice and rashness. In a similar vein I try to find middle paths between ignoring threats and despairing about them, between dismissing opportunities and glorifying them, and between asceticism and hedonism.

Finding these balance points is an ongoing process as it is easy to be drawn away to either extreme. The story of Odysseus needing to navigate between Scylla and Charybdis can be read as a metaphor for this challenge. As an aside, the same is true for making choices in startups and I have a series of blog posts about that.

I am sharing this framework in the hope that it may be helpful to others. Also if more people start thinking and operating this way, maybe we can get past the current state of discourse which favors extremes.

May you all find the right middle paths in 2023!

by Albert Wenger at 2023-01-02 15:47


Nicholas Tollervey

8-Bit Archaeology: Part 1

This is the first in a semi-regular series of posts about digital archaeology relating to 1980s era 8-bit microcomputers. In a strange turn of events, not only am I the archaeologist, but it is my own code that is to be uncovered and interpreted.

The aim was to democratise computing. We didn’t want people to be controlled by it, but to control it.

~ David Allen, Project Editor, BBC Computer Literacy Project.

As a child, the first programming language I learned was Sophie Wilson's BBC Basic, written for Acorn's BBC Micro. Without this formative experience, I wouldn't have become a professional software engineer.

Most of my childhood was spent in the 1980s, and in 1982-ish the UK Government ensured every school in the UK had a BBC micro.

A BBC micro from the 1980s
A BBC Micro from the 1980s. Source: StuartBrady, Public domain, via Wikimedia Commons.

My father was headteacher of a school, and so brought his newly arrived computer back home one holiday to figure out how to use it. It didn't take very long to prize the device away from him, and so I started to explore the "Welcome" software, loaded from a tape via a sequence of squeaks and growls (representing the bytes to load into the computer's memory). Since I would have only been eight at the time the user guide was beyond my understanding, so a trip to the local library furnished me with a new book aimed at kids who wanted to play games on their computers. The book in question was Computer Spacegames published by Usborne, a title in their famously brilliant series of colourful and engaging books about coding.

The first proper program I ever typed into the BBC can be found on page 5. It's a sort of text based rocket pilot game... you have to take off before the aliens get you:

10 CLS
30 LET G=INT(RND(1)*20)
40 LET W=INT(RND(1)*40)
50 LET R=G*W
80 FOR C=1 TO 10
120 IF F=R THEN GOTO 190
140 NEXT C
180 STOP

I have a vivid memory of my aunt, uncle and cousins visiting at the time. My cousin Michael (five years older than me) shared a fascination with computers. As a teenager he was clearly at a more advanced level of understanding, and it was from him that I got lots of tips, tricks and encouragement to goof around.

So I did.

I changed line 160 to read:


Then I persuaded my unsuspecting Uncle Colin to play.

Since he's an engineer I think he got the impression there was some sort of simulated Newtonian mechanics going on and took it quite seriously. Of course, if you read the code, it's just a glorified guessing game. When he inevitably failed to take off, I remember he exclaimed "how rude", muttered something about the computer being broken then wandered off to escape any further computer-related space piloting catastrophes. But my eight-year-old self was delighted. I spent the next ten minutes laughing like a maniac at having hoodwinked an adult with my modified code.

Emboldened by this turn of events (and Michael's mischievous teenager-y encouragement) I soon graduated to a new form of entertainment when dragged shopping by my parents. I'd wander off on my own to find the computer stands in retailers. Being a kid, I was mostly ignored as I typed code into the demonstration machines.

Code like this:

10 CLS
30 GOTO 20

I'd walk away (after typing RUN) and surreptitiously observe the next person to encounter the demonstration machines... all telling them they were an idiot ad infinitum. I soon realised the shop assistants could clear my school-boy silliness by pressing the ESCAPE or BREAK keys. Yet I also realised it was possible for the function of such keys to be modified: some of the code ran on my school's BBC micro clearly made sure any accidental or deliberate use of ESCAPE or BREAK didn't interfere with whatever software the teacher had set up for us to use.

I had to wait for the next visit of my cousin Michael to learn how to "improve" my code so it defeated shop assistants. To cut a long story short it's possible to rebind the ESCAPE and BREAK keys to the extent that the only way to stop the machine from doing what it's doing is to switch it off and on again. My cousin pointed out that the answers to such problems could be found in the (afore linked) user guide. In fact rebinding BREAK was explained on page 143 and disabling ESCAPE involved this magic incantation at the start of your source code:

10 *FX 200,3

I was off!

Most importantly, I realised the user guide wasn't a boring manual for adults but, if approached in the right way, it was the source of all sorts of useful knowledge and information and I merely had to figure out how to find it. I was also helped by yet-more-computer-books from Usborne and my local library, a subscription to Acorn User Magazine and various aspects of the BBC's magnificent Computer Literacy Project, including TV programmes like this one:

You can watch all the original 146 programmes online.

But in the end I learned an important ethical lesson.

After leaving my unstoppable and mildly insulting code running on a BBC micro at the Mansfield branch of WHSmith, I was horrified to see one of the retail assistants reprimanded by their supervisor. My joke wasn't funny and I realised my code had consequences for others. A lesson that stays with me to this day.

I also learned that revealing technical skill and knowledge can be tricky and, at times, intimidating to others.

I remember getting a severe telling-off after I tried to help one of my parent's teaching colleagues, the subject matter specialist for computing. I was still at Primary school (probably around ten years old) and the ensuing conversation, in front of my class mates, revealed the teacher's ignorance of some aspect of how the BBC micro created sounds.

The conversation went something like this:

TEACHER: "You can only make sounds like this."
ME: "But Mrs.S, it's easier to make sounds like that."
TEACHER: "You're wrong Nicholas. That simply won't work."
ME: "Oh yes it will."
(I demonstrate the damn thing working.)

In my enthusiasm to share a cool hack, I undermined the teacher and paid the price with a bollocking.

To be clear, I wasn't rude. But I was certainly a confident enough ten-year-old to know I had an easier way to make things work, while being naive to think this would be welcomed. To be fair, I don't think they did themselves any favours by telling me it simply wouldn't work. A more open minded teacher would have said something like, "OK Nicholas, show me your way and let's compare notes", and used the situation as an opportunity for learning. Yet, as a former teacher myself, I know that it's often impossible to go off piste in a tightly structured or time constrained lesson.

Such reminiscences are a prelude to the real digital archaeology.

Last year I found my old BBC micro, and a box full of floppy disks, in my parent's loft. With their permission I took my finds to the UK's National Museum of Computing (based at Bletchley Park ~ a mere 15 minute drive from where I live). I'll describe the details in a follow-up post, but with the generous help of others, I was able to extract the content of the disks.

By way of preview, this link takes you to an online BBC emulator running a sort of "greatest hits" compilation of programmed musical performances.

I put together the disk from various sources floating around my friendship group, and included some of my own code too. The disk's menu system is of my own creation but based upon two other fragments of code I found in a magazine: one for driving a disk menu, the other for using arrow keys for selecting items. I'm also responsible for the rather awful renditions of "The Swan" and "The Road Goes Ever On" (a musical setting of some of J.R.R.Tolkien's poetry from the Lord of the Rings, by Donald Swann). If I remember correctly, I was thirteen years old (in year 9, 1987) when I put this disk together. As we'll see in future posts, it was a significant year for me in terms of coding and music.

Use the up and down arrows on your keyboard to navigate the menu. Keys like RETURN (to make a selection) and ESCAPE (to stop a piece and return to the menu) will behave as usual. However, I'm sorry to report I used the *FX 200,3 trick with "The Swan" ~ you're just going to have to sit through that monstrosity in its entirety without the use of the ESCAPE key.

"You're welcome", says my thirteen year old self. ;-)

This is but a small example of some of the fascinating things I've found.

In future posts I'll reveal more about my programming, dive a little into the technology I was using and try to place it all into the context of my life at the time. As some of you already know, I'm actually a classically trained musician, and this has some bearing on what I've managed to find... or more accurately, what I've managed to find has some bearing on why I'm a classically trained musician, who works as a software engineer with a passion for computing education.

Finally, it turns out that the BBC micro didn't create a legacy of fond memories and technical skill just for me. There are many folks of my age who have similar stories to tell.

Happy new year! More soon...

by Nicholas H.Tollervey at 2023-01-01 20:00


Yuriy Akopov

My theatres and museums of 2022

My theatres and museums of 2022

This year was eventful in a very bad way, and so this is an attempt to look at what still feels like good spots in it. I have written about books, music, films and video games on similar occasions before, but this time the physical experiences, for the lack of the better word, somehow feel more memorable.

I was inspired to write it by this Francis Irving's post which you also might want to read, so I am starting with the event both of us have attended.

History exhibitions

The world of Stonehenge (British Museum)

Alongside with Madame Tussauds museum, Stonehenge is known as perhaps the most overrated tourist trap, so I am glad I still decided to go as this was about so much more than Stonehenge despite the naming (guess it was still luring in more people that way).

The eerie combination of some items produced with such great skill and attention to detail, and yet their application or true meaning of carvings remaining a mystery was very impressive. It was like visiting an alien space ship.

Hieroglyphs: unlocking ancient Egypt (British Museum)

This one was interesting because it was arranged with a clear educational spin - there is a lot of material explaining the theory behind hieroglyphs and their evolution into more familiar forms of writing, and yet you still felt like to properly enjoy it you had to do your homework. The artefacts themselves somehow felt less 'self-contained' and I felt like I wasn't getting everything I could from looking - and unlike with the Bronze age exhibition above, I also knew the answers were out there, but I just didn't bother to learn them.

You can still visit in the new year before February 23.

Art exhibitions

This is so good I went twice. Lucian Freud is one of my favourite artists and I think didn't miss a single exhibition of his in my time in London - and yet I can say this one can easily be the best so far. It has a lot of pieces from private collections that are a rare sight otherwise, and while it isn't too heavy on his early works, it is still very very good.

And it's still open until January 22.

This wasn't on my radar and I only went because of my friend's invitation, so I experienced that special kind of joy when you don't expect much and then get overwhelmed.

A very good painter, with many scenes feeling very contemporary in their composition and dynamics. It is also on in 2023, but you only have until January 8.

Khoren Ter-Harutyunyan (permanent collection)

An honorary mention of something that impressed me outside of London - a small museum next to a cathedral complex in Armenia (that enjoys much more tourist traffic) full of sculptures in a very recognisable mid-century style usually associated with Barbara Hepworth and Henry Moore, and yet showing enough individuality (Ter-Harutyunyan had his first exhibition at 1945 in the US).

If you happen to visit Armenia in the future, put this on your list as it is otherwise easy to overlook.


I am not a sophisticated theatre-goer and so have to admit my choice is primarily driven by the presence of familiar Hollywood faces. That said, while I am likely missing out on a lot, the chance of not enjoying the play is also fairly low that way.

Straight Line Crazy (Bridge Theatre)

My theatres and museums of 2022
More at the Bridge Theatre website

I loved this one because it felt very contemporary with cities like London experiencing the same planning problems I'm trying to follow closely. That could be the reason why the main character felt less one-sided to me than it was probably intended. Some of the arguments he made in favour of his vision were really good and sound, and the flaws laid bare in the final act felt to me like a change of his own spirit (the timeline of the play stretches across s few decades) rather than a proof of why he was wrong from the start.

The conflict between the visionary implementing bold ahead of the time ideas despite the resistance from the public vs. the public organising to stop the selfish and ignorant outsider from wrecking their lives? This will never get old.

The Seagull (Harold Pinter Theatre)

My theatres and museums of 2022
More at the Harold Pinter Theatre website

The play was well edited with parts of the original Chekhov's plot removed but leaving no holes in the flow and the main conflict only becoming more prominent. I actually prefer it that way, I think.

The chemistry between Nina (Emilia Clarke's West End debut) and Trigorin was really good, which I realised many other performances were lacking. This was really important as her decision to follow him is what eventually ruins everything - so making it clear it didn't just happen randomly or because she was bored or silly was a thoughtful accent.

by Yuriy Akopov at 2022-12-31 13:50

Paul Fawkesley

Adding a minimal Go backend to my Hugo static site

Go code showing an HTTP handler returning the result of a function called random email

This site is built with Hugo, a static site generator. The site lives on a tiny VM as a bunch of HTML files. I use nginx with Let’s Encrypt to serve the directory of files.

The site doesn’t have a backend: there’s no server-side rendering and no API calls. Any dynamic functionality must be implemented with Javascript.

This has served me well for a decade. But recently I’ve wanted to try out a few ideas where a backend would be helpful.

I had a spare hour and I wanted to throw up a minimal backend written in Golang. Speed and simplicity were the most important thing.

Here’s how it works

Idea: randomly generated contact email address

I’m minorly tired of all the spam I get to the email address I used to publish on the site’s contact page.

I thought it would be fun to try two things:

  1. hide the email address until the visitor clicks “reveal”
  2. generate a random email address for every site visitor (and log their IP and user agent)

I hope that 1. will thwart basic scrapers and bots. I’m assuming most bots won’t click “reveal”.

When I do get a spam email, I can look up the random email address in my logs and find the IP address that scraped the page. Then I’ve got the option to send an abuse report to the administrator of the IP address.

Frontend code to reveal the email address

This year I keep coming across HTMX. I love its simplicity and the associated book, Hypermedia Systems is an interesting technical read.

With HTMX, the frontend code is extremely simple:

<a hx-get="/email" hx-trigger="click" hx-swap="outerHTML">
Click to reveal email address

Translated, that means, “when the <a> tag is clicked, fetch /email and replace the <a> tag with the result.”

Here’s how that renders:

Click to reveal email address

Go server to generate email addresses

I wanted the email address to be consistent for a given User Agent, IP Address combination. This way, a user will normally see the same email address if they reload the page.

To achieve this, the codes takes the SHA256 hash of the User Agent and IP Address. It uses the first 8 bytes as the seed to Go’s random function. It then generates an email address with 10 randomly picked characters, e.g.

Here’s the code:

// main.go

package main

import (

func main() {
	http.HandleFunc("/email", func(w http.ResponseWriter, r *http.Request) {
		ip := r.Header.Get("x-forwarded-for")
		ua := r.Header.Get("user-agent")
		eml := randomEmail(ip, ua)

		fmt.Printf("%s|%s|%s|%q\n", time.Now().Format(time.RFC3339), eml, ip, ua) // log to stdout
		fmt.Fprintf(w, "<a href=\"mailto:%s\">%s</a>", eml, eml)

	log.Fatal(http.ListenAndServe(":8081", nil))

func randomEmail(ip, userAgent string) string {
	hasher := sha256.New()

	sha := hasher.Sum(nil)

	fmt.Sprintf("hash: %s\n", string(sha))

	seed := int64(binary.BigEndian.Uint64(sha))

	chars := make([]string, 10)

	for i := 0; i < 10; i++ {
		randi := rand.Intn(len(letters))
		chars[i] = letters[randi : randi+1]

	return fmt.Sprintf("", strings.Join(chars, ""))

var letters = "abcdefghjkmnpqrstuvwxyz23456789"

Building and deploying with make and scp

I used a simple Makefile to build and deploy the Go code:

# Makefile

randomemail: main.go
	go build -o randomemail main.go

.PHONY: run
run: main.go
	go run main.go

.PHONY: deploy
deploy: deploy_binary deploy_supervisor_config

.PHONY: deploy_binary
deploy_binary: randomemail
	scp randomemail
	ssh 'mv /opt/randomemail/ /opt/randomemail/randomemail && sudo supervisorctl restart randomemail'

.PHONY: deploy_supervisor_config
	scp config/etc/supervisor/conf.d/randomemail.conf
	ssh 'sudo supervisorctl reload'

Running the server with Supervisor

I used supervisor to start the server and keep it running if it crashes.

This took a single config file:

# /etc/supervisor/conf.d/randomemail


Reverse proxying the server from nginx

Requests to /email need to be directed to the backend rather than from static files.

I added a location rule to the server section of my nginx config:

# /etc/nginx/sites-available/paul.fawkesley.com_HTTPS

server {


    location /email {
        # forward to the `randomemail` service located at /opt/randomemail/randomemail
        proxy_pass http://localhost:8081;
        proxy_set_header X-Forwarded-For $remote_addr;

And that’s it… have a play and let me know what you think!

Click to reveal email address

by Paul Fawkesley at 2022-12-31 00:00


Mine Wyrtruman (pagan religion)

Accepting Fate

Wes hāl!1 As I mentioned in a previous post, I’ve been studying philosophy lately. Stoicism, to be precise. An important concept of Stoicism is the idea of accepting one’s fate and not fighting against it. People familiar with Heathenry may know that in Heathenry, it is generally thought that our Wyrd (the Heathen concept of fate) is not predetermined nor is it pre-ordained by some god. So, how can we translate this idea of accepting fate to Heathenry? Wes hāl and Beo gesund are Old English greetings and farewells that literally mean Be well/whole/healthy. The first seemed to be more common among the Anglian dialects and the second more common among the Saxon dialects. I prefer to use both though, the first as a greeting and the second as a farewell. ↩

by Byron Pendason at 2022-12-30 00:00


Mine Wyrtruman (pagan religion)

Video Review: Why Are We Afraid to be Pagan?

Wes hal!1 An ally recently posted^4 a video to her YouTube channel entitled Why Are We Afraid to be Pagan? She poses some interesting questions, in an attempt to start a conversation on the matters in the video. Before getting into the video itself, though, let’s talk about the author a little bit. Wes hāl and Beo gesund are Old English greetings and farewells that literally mean Be well/whole/healthy. The first seemed to be more common among the Anglian dialects and the second more common among the Saxon dialects. I prefer to use both though, the first as a greeting and the second as a farewell. ↩

by Byron Pendason at 2022-12-23 00:00


Fairphone Blog

A message from our CEO

Dear all,

I’m reaching out to share some tough news with you. It’s something that’s been weighing on my mind, and – led by one of our core values – it’s important to be transparent about it. We recently discovered that two employees privately received commission payments from a third-party supplier and, with that have disadvantaged Fairphone. An external whistleblower tipped us off, and our thorough investigation confirmed the allegations.

Needless to say, we have a clear zero-tolerance policy against any form of misconduct, deceit, or dishonesty. This guides our team and procurement policies; it’s implemented in contracts and guidelines, and it is deeply embedded in the culture of Fairphone’s day-to-day interactions. As you can imagine, this came as an incredible shock to all of us at Fairphone. Since day one, we’ve been all about creating a value chain based on care, fairness, trust, and transparency, so we’re definitely feeling let down right now.

There was no impact on our business or any significant financial consequences. Instead, we are dealing with a cultural impact. It has opened our eyes to vulnerabilities in our internal organization, which we’re improving and stepping up on. Also, we’ve stopped working with the supplier in question and the two employees are no longer with the company.

Despite everything, I don’t believe their mistakes define who they are as people, but they did make several wrong decisions that they – although in hindsight – also regret taking.

This incident has tested our faith, yet we will not let it limit our beliefs in the importance of trust. Trust in what unites us, our mission, and our core beliefs. While this situation has been disheartening, it will not change Fairphone’s guiding values – and it will not change our deep-rooted trust in people. We’re committed to learning from this and staying true to our focus on humanity in business.

I appreciate your understanding and want to give a special shoutout to all the other Fairphone employees who collectively took a stand and have been incredibly supportive through it all.

Take care,

The post A message from our CEO appeared first on Fairphone.

by Eva at 2022-12-22 10:46


Mine Wyrtruman (pagan religion)

Farewell, Twitter! How to Follow Mine Wyrtruman

Wes hāl!1 Some of you who follow me on Twitter may have noticed my conspicuous absence. Twitter has become so toxic. Part of it, I’m sure, has been Elon Musk’s acquisition of the platform. But to be honest, it’s been this way for a long time. I’ve just failed to see it. Being betrayed by a couple of people I considered allies really opened my eyes to the way Twitter operates, and I don’t want to have any part of it any longer. I’ve been a lot happier since deleting the app, and my mental health has gotten a lot better! Wes hāl and Beo gesund are Old English greetings and farewells that literally mean Be well/whole/healthy. The first seemed to be more common among the Anglian dialects and the second more common among the Saxon dialects. I prefer to use both though, the first as a greeting and the second as a farewell. ↩

by Byron Pendason at 2022-12-20 00:00


Albert Wenger

The Eutopian Network State

If you are not familiar with it, I encourage you to check out the Network State Project. The basic idea is to form new states online first, with an eventual goal of controlling land in the real world. While I disagree with parts of the historic analysis and also some of the suggestions for forming a network state, I fundamentally believe this is an important project.

In my book The World After Capital, I trace how scarcity for humanity has shifted from food to land (agrarian revolution), from land to capital (industrial revolution), and now from capital to attention (digital revolution). The states that we have today were first formed during the Agrarian Age and were solidified during the Industrial Age. As a result they carry the baggage of both of these periods. When it comes to states we have serious issues of “technical debt” and “cruft.” One way to tackle these is through gradual rewrites of existing laws and constitutions. That’s a slow process under the best of circumstances and in an age of increasing polarization likely an impossibility. Another mode of change is to create a new system elsewhere, with the goal that it might eventually replace the existing one. Given that pretty much all the habitable space on Earth is taken up by existing nation states, the best place to get started is virtual.

Now what would a Eutopian network state look like? I am still trying to figure a lot of that out but fundamentally it would seek to embrace the values described in The World After Capital in order to build a state for the Knowledge Age. As such it would aim to recognize how much progress has been made since most states were first established and how much more progress lies yet ahead of us. It would take into consideration that the right to bear arms or the functioning of free speech should likely be different in an age of nuclear bombs and global social networks than when we had muzzleloaders and town criers.

I am particularly interested in the idea of a “minimum viable state.” What are the core concepts that need to be in place to get going and what can be filled in over time or maybe omitted entirely? For example, does a Eutopian Network State, have to define what constitutes a family? What is the minimal set of rules? I am currently reading the fourth book in Ada Palmer’s Terra Ignota series. In the series humans voluntary join Hives but even those who don’t, the Hiveless, must follow eight universal laws.

There are many other fascinating questions. For example, what does it take to become a Eutopian? Does one simply declare membership or is there some application process? Is there a pledge of some kind? Does Eutopia need to have fees or taxes to support itself financially? Once members have joined how are decisions made? And so on.

So far the Networkstate Dashboard is tracking 26 startup nations. I am curious to see how they have been answering some of these questions. I believe getting the answers to some of these baseline questions right is essential as they will determine who feels initially attracted to the state. And these core concepts should intentionally be difficult to change as they speak to the foundational nature of the society.

If you have thoughts on a minimum viable Eutopian state, I would love to read them in the comments!

by Albert Wenger at 2022-12-12 00:52


Adrian McEwen

Weeks 895-896 - Bells, Bikes and Lots of LEDs

Chris here this time. Two weeks worth of notes in one week but plenty to talk about.

Acrylic prototype of ackers bell frame, a pentagonal base with curved upright struts supporting a brass bell..

Ross has made great progress with updates to the Ackers bell design. Pictured is the prototyping in acrylic plastic via Freecad, to help fine tune the design clearances. The final build will still be wood, we've had some postive chats with a local manufacturer, and along the way learned about the growth (literally) of local bamboo sheet. Although the transparent acrylic may have set some of us wondering if there is room for a cross over internet connected colour changing bell?

The client work we can't talk about even though we'd really like to continues, adding SD card reading to the ESP32S2 microcontrollers USB reading capability. Adrian also visited a PCB manucaturer in the midlands. We don't really need any excuses to post photographs of production line tools. I'm not sure, but I suspect these three pcb drills are called Mick, Ron and Nick.

PCB tool on a production line, three drills used to make holes in pcbs

My Bike's Got LED

We're well into dark nights and that means more (and more) My Bike's Got LED boards.

The V2 board design is very nearly complete, the next version will have on board charging via USB, or the option of solar charging. The board connectors have been reworked as well to reduced the overall size and still make it easy to plug and unplug lights. We've also made some updates to the onboard circuitry to make everything a bit more battery efficient. We're also mulling over ideas for some new effects, hopefully more news on this very soon.

Thanks to the good folk over at Peloton there are plenty of chances for folks riding LED equiped bikes to get out for a Joyride On the end of season finale there was a child focused ride that met up with a group of regulars for a ride around Sefton Park, accompanied by DogShow on the disco cargo bike.

And we broke out a My Baby's Got LED board and a string of LED lights for the DoES Liverpool Christmas tree. Of course, it's connected over the Internet to Cheerlights, so you can tweet #cheerlights and a colour to change the lights here in the studio.

by Adrian McEwen at 2022-12-07 06:00


Albert Wenger

Not-Yet-Full Self Driving on Tesla (And How to Make it Better)

We have had Full Self Driving (FSD) Beta on our Tesla Model Y for some time. I had written a previous post on how much the autodrive reduces the stress of driving and want to update it for the FSD experience. The short of it is that the car goes from competent driver to making beginner’s mistakes in a split second.

Some examples of situations with which FSD really struggles are any non-standard intersection. Upstate New York is full of those with roads coming at odd angles (e.g. small local roads crossing the Taconic Parkway). One common failure mode is where FSD will take a corner at first too tightly, then overcorrect and partially cross the median. Negotiating with other cars at four ways stops, which are also abundant upstate is also hilariously entertaining, by which I mean scary as hell.

The most frustrating part of the FSD experience though is that it makes the sames mistakes in the same location and there is no way to provide it feedback. This is a huge missed opportunity on the part of Tesla. The approach to FSD should be with the car being very clear when it is uncertain and asking for help, as well as accepting feedback after making a mistake. Right now FSD comes off as a cocky but terrible driver, which induces fear and frustration. If instead it acted like a novice eager to learn it could elicit a completely different emotional response. That in turn would provide a huge amount of actual training data for Tesla!

In thinking about AI progress and designing products around it there are two failure modes at the moment. In one direction it is to dismiss the clear progress that’s happening as just a parlor trick and not worthy of attention. In the other direction it is to present systems as if they were already at human or better than human capability and hence take humans out of the loop (the latter is true in some closed domains but not yet generally).

It is always worth remembering that airplanes don’t fly the way birds do. It is unlikely that machines will drive or write or diagnose the way humans do. The whole opportunity for them to outdo us at these activities is exactly because they have access to modes of representing knowledge that are difficult for humans (eg large graphs of knowledge). Or put differently, just as AI made the mistake of dismissing the potential for neural networks again and again we are now entering a phase that is needlessly dismissing ontologies and other explicit knowledge representations.

I believe we are poised for further breakthroughs from combining techniques, in particular making it easier for humans to teach machines. And autonomous vehicles are unlikely to be fully realized until we do.

by Albert Wenger at 2022-12-05 12:45


Adrian McEwen

Weeks 892-894 - Goodbye Nikki, More Bike LEDs, and a New Mastodon

Adrian here. Lots to update you on from the past three weeks.

First off some sad news. Nikki left us for pastures new at the start of November. It's a shame to see her go, but we wish her all the best in her new job! That leaves just Chris and me for now. We will, I'm sure, look to recruit a replacement, but I'm also taking this opportunity to zoom out a little and think through what we need now before kicking off the search.

The client work has continued ticking along. Not much we can report on it, as ever, but we have been getting to grips with USB host support on the ESP32S2 microcontrollers—it's cool to be able to read data off a USB stick from a micro!

My Bike's Got LED

Chris has been busy working on the My Bike's Got LED boards.

We'd switched the type of solder paste for the latest batch of soldering, and ended up with a reflow profile (how the oven heats up to melt the solder to connect all the components) that wasn't properly dialled in; so some of the boards weren't working properly and needed some rework by hand.

Blue instrument control panel screen for reflow oven.

We've been steadily working through them, and only have a couple left now. Chris has updated the frimware on the reflow oven to the Unified Engineering open-source firmware, which will allow us better control over the profile in future.

And he's been getting on with the design work for the next version of the boards. We've already mentioned the redesign of the 5V boost circuit and he's added a charging circuit so you can just plug in a USB cable to recharge the battery. The design for that is based on the one we made for Laura Pullig.

We've been getting good feedback from the new batch of illuminated cyclists, after kitting them out for the parade, and getting new enquiries from folk wanting to buy a kit themselves. It's going to b great when the V2 boards land!

More Sociable on Mastodon

There's been a lot of activity (and talk) over the past couple of weeks on Twitter with lots of folk deciding to move on from there, mostly over to Mastodon and the Fediverse. Mastodon is the most Twitter-like, but the Fediverse includes other options: Pixelfed is more like Instagram; PeerTube is for video sharing; and there are others. The great thing about them all is that they talk to each other! It's like being able to follow someone's Instagram account from your Twitter account and just having their posts show up in your feed.

I've been on Mastodon since 2017, and it's something we've occasionally talked about here since.

Last year we gave some thought to how MCQN Ltd should approach it. We decided that the best approach would be for us to host our own instance (the term for a Mastodon server), which would be on our own domain; just like we do for email. Then folk would know that it's the official MCQN Ltd account, because it had an address; and, just as importantly, any folk who didn't want to engage with commercial accounts could decide not to federate with the entire instance. I expect we're not at a level where anyone would care one way or the other, but it's us playing our part in helping to set the culture of the Fediverse to help nudge larger brands to do the right thing.

The recent uptick in activity gave us the final push to put the plan into action and so there's now a MCQN Ltd Mastodon server at!

There is only one account so far: As is the convention on the Fediverse, we posted an #introduction to let folk know what we're about and interested in.

Hello 👋 An #introduction. We are #MCQN_Ltd, an #IndieMfg company in #Liverpool. We make (and sell) gentle, Internet-connected objects, and help others build their #embedded and #IoT projects. So expect anything from Internet-connected bubble machines to sensors on wave-energy #prototypes. We're strong believers in #OpenSource; both #firmware and #electronics/#PCB. #OpenHardware #OSHW. And we work with many #microcontrollers including #ESP32 #ESP8266 #Arduino and #RaspberryPi.

If you're on the Fediverse then give us a follow. And if you're Fedicurious, this guide will help you get started.

by Adrian McEwen at 2022-11-21 06:00

Paul Fawkesley

Reducing gas reliance with a solar diverter

Image of a white plastic box with an electronic screen and a picture of solar panels in the background

In September 2021 we installed a solar diverter called iBoost as a measure to reduce our gas consumption.

One year on I looked at the figures to review how effective this gadget has been.

Spoiler: in 14 months it displaced 1.89kWh per day on average, around 18% of our total gas usage. We might be able to improve this with a new hot water tank.

What’s a solar diverter?

A solar diverter detects when our rooftop solar panels are generating more than we are using.

Rather than sending that excess to the grid (called “exporting”), it “diverts” it to an immersion heater in our hot water tank.

By heating the water in the tank, we don’t need to use gas to heat that water. The idea is that the excess solar displaces some gas usage by pre-heating the water.

Gas reduction so far

In the 422 days since installation (22/09/21 to 18/11/22), the unit has displaced 797 kWh of gas energy with solar electrical energy.

Extrapolating gives a daily, yearly and lifetime estimate:

Period Gas reduction (kWh)
22/09/21 to 18/11/22 797
per day* 1.89
per year* 689
10 year lifetime* 6,893

*Estimated based on 422 day period. It’s probably a bit better since that period contained two October and November months which are overcast.

From smart meter readings, I estimate that the tank takes about 5 kWh per day to heat. We’ve therefore reduced the gas usage for water heating by a bit over a third.

Return on investment

This project wasn’t about money, it was about reducing gas reliance. But it’s useful to understand the cost of different measures. Let’s take a look at the numbers and see how it works out.

There are two costs to consider: the installation and the running cost.

Installation cost

It cost £450 to install the unit. That includes a morning’s work of an electrician.

Running cost (or income)

When we export excess energy to the grid we get paid around £0.05 for every kWh (called a “unit”).

At the time of installing, it cost £0.04 to buy gas from the grid.

So back then it would effectively cost us £0.01 per unit to heat the hot water using the excess solar rather than buying gas. (But don’t panic, that only works out £9 / year.)

However, since installing, gas prices shot through the roof. At £0.07 per unit, we now make £0.02 per unit for saving gas. Great!

Lifetime cost

Assuming the device works for 10 years and displaces 6,893 kWh over its lifetime.

Scenario 1: Gas prices stay high, averaging £0.07 over the 10 year lifetime. The saving of £0.02 becomes £0.038 per day, £13.79 per year, £138 over the lifetime. That subsidises the £450 installation cost to a lifetime cost of £312.

Scenario 2: Gas prices drop again. It seems unlikely they’ll drop below their previous value, so let’s say an average of £0.05 over the 10 year lifetime. That means the gas unit rate versus export unit rate is neutral. The lifetime cost is therefore £450.

Cost per tonne of carbon saved

Again, assuming a lifetime gas reduction of 6,893 kWh.

According to this website, the carbon intensity of burning domestic gas is 0.23314 kg CO2e per kWh.

That’s a carbon saving of 1.60 tonnes over the 10 years.

That works out as £195 to £285 per tonne of carbon for the two gas price scenarios.

For comparison, it currently costs Climeworks about £900 to permanently remove a tonne of carbon from the atmosphere. So at today’s prices, this measure is about 3-5x cheaper than burning gas then sucking back up the carbon it releases into the atmosphere. (Lesson: don’t think carbon capture gives us an excuse to carry on burning stuff.)

Note that this doesn’t take into account the carbon cost of manufacturing the iBoost device, solar panels, inverter and so on. I’ll try to improve this.

Possible improvements

Replace the hot water tank?

Even on very sunny days, the iBoost never diverts more than 2.5 kWh. The gas kicks in to heat the water even after these days. I believe the water tank takes about 5 kWh to heat, so the iBoost is only heating about 50% of the water.

My best theory is that the immersion heater is not long enough to heat the bottom of the tank. This is a bit strange as it’s a 32” immersion which matches the tank’s documented maximum. But perhaps the tank designers intended that an immersion is only a backup so doesn’t need to heat the whole tank?

More investigation required, but if that’s the case, we could upgrade to a tank with two immersion heater positions. The iBoost supports this configuration, heating one first then the next. The tank would also have to have a primary coil, so it would be quite cramped. Need to look into this.


Saving 0.16 tonnes of carbon per year is great and it’s nice to be moving towards full electrification.

But how much of our entire gas usage has that knocked out?

In the same period (22/09/21 to 18/11/22) that we diverted 797 kWh, we still consumed 3,535 kWh of gas.

Assuming the iBoost measured correctly, we would have consumed 3,535 + 797 = 4,332 kWh without it.

(As a sanity check, this roughly tallies with a comparable period, 22/09/2018 to 18/09/2019 in which we consumed 4,821 kWh of gas.)

18% gas reduction so far

So the iBoost reduced our gas consumption by 797 / 4,322 = 18%

I’m pleasantly surprised how large that reduction was.

Insulate first…

For the remaining gas usage, I’m going to take fabric first approach. That means improving the insulation of the building before installing renewables. Despite subscribing to this approach, I got distracted by cool shiny technology (solar, battery, iBoost) when I should’ve started with the building.

In summary, if you already have solar PV, a hot tank with an immersion, and you’re exporting lots of electricity, a solar diverter is a good option (but sort out your draughts, loft, windows and doors first!)

by Paul Fawkesley at 2022-11-21 00:00


Yuriy Akopov

"What do you know about fear?"

I have translated the last post of a recently killed Ukrainian soldier, who used to be a fairly well known restorer and photo blogger in Kyiv before the war. The original, written in Russian, is truly harrowing:

What do you know about fear?

The whistle of bullets overhead. The muffled thumps as they hit the ground next to you. The ricochets from the branches of an old black locust tree.

The rumble of the afterburner of a plane that comes at you to launch missiles.

The sound of a diesel engine of the tank, which has long been maneuvering somewhere 600 meters away, in the milk of thick fog, preparing to fire. And it sees you in its powerful thermal imager, it knows where you are. And you hear the clanging of its tracks, the rumble of the engine ... then deathly silence and an explosion. Just explosion, because you don't hear the sound of a shot.

The vibration of the air from the helicopters, which, invisibly to you, assume the position for a rocket strike from behind the trees.

Someone spotted red dots in the grove in front of us, in their shitty thermal imager. To shoot or not to?

The long whistle of a 152 mm that flies along an elliptical trajectory in your direction, and all you can do is fall to the ground and pray.

The noise of incoming Grad missiles - one-three-five-twelve; roughly 20 km away from you. Then, explosions. One-three-five-twelve. Got lucky this time. What about the next one?

The abrupt smack of the mortar and the whistling before that - so short you don't always have time to fall to the ground.

The hissing in your radio, incomprehensible word fragments can be barely picked out. You have to climb out of the foxhole and stand fully up for a better reception - what if you have to be running away already?

Explosions are getting closer and closer. More and more dirt poured on your head. Fragments whistle by increasingly louder. The artillery correction drone floats in the sky over you day after day, simply doing its job. Every next blast can be your last, but what can you do? The luck of the draw.

The rustle of bulrush in front of you. The crunch of branches a few meters from the parapet of a freshly dug and such a shallow foxhole. The ghostly silhouettes in the shimmering moonlight that you see because you haven't slept for two days while being shot at from everything that shoots. Your swollen eyes, still veiled after the thermal imaging camera. Your buzzing head, full of terrible, fearful thoughts. The stare of your brother in arms, in which, as in the mirror, you see the animal fear of dying in this damned mud of goddamn Donbas.

And what do you know about fear?

The top comment under his post is by his Russian friend from St Petersburg - she says that in grief she went through their whole message history, and that he always wanted to visit.

Just some WWI level shit harmless peaceful people get sucked into. It was supposed to remain in Remarque's books.

A black and white photo portrait of Serhiy Mironov, the author.
Serhiy Mironov (source)

Rest in peace.

by Yuriy Akopov at 2022-11-18 09:23


Mine Wyrtruman (pagan religion)

Lost in Translation- Ettins in Old English

I came across a blog post recently, alleging to reevaluate ettins in Old English literature (Moniz, 2022). I read it with interest, because I’ve interacted with the author on various Discord servers and have had nothing but positive experiences with them. I feel that their argument in this case, though, is unconvincing. It takes most every instance in Old English literature that is translated as giant in modern English, and proposes that it is talking about ettins. This reflects a problem that is not entirely new, the conflating of all giants in Old English literature. However, there isn’t enough evidence to say with the kind of certainty that the author uses that this is the case.

by Byron Pendason at 2022-11-08 00:00


Adrian McEwen

Weeks 889-891 More Bikes got LED

Chris here and getting this one in today before it has to become month notes. The last three weeks have flown and there hasn’t really been much time to reflect and record what we’ve been up to. Alongside the regular client work we have been getting ready for a special Halloween parade wiith our friends Katumba Drumming and Peloton

A group of regular Joyriders lead by Danny on the DogShow trike paraded down Bold Street for a post-apocalyptic bike ride. MCQN provided the lights with My Bike’s Got LED kits. Along with a fire breathing bat and the Katumba drummers we paraded down Bold Street, Church Street and Paradise Street. Finishing outside John Lewis for a drumming and dance finale.

As well as the lights on his bike Adrian was sporting this excellent light up suit for the event. Using more flexible LED strips, expertly sewn by Robotorium and a MbiGL board he had a boiler suit suitable for any post-apocalyptic occasion.

Special mention to Jackie who created some additional effects using segments to create this spectacular effect.

At the heart of this light show was the My Bike’s Got LED board. An ESP8266 running WLED with onboard power management for use with Li-Ion/LiPo batteries.

In keeping with the advice from the wise Giles Turnbull, I thought it would be useful to record a little bit of what didn’t go quite as well too.

“The best way to write weeknotes is as a genuine personal reflection of the week. Allow them to be personal. Allow thoughts and feelings to creep in, alongside news. Be open, be candid, be the sort of refreshing honesty that most colleagues are yearning for. That will result in excellent weeknotes” - Tips for writing good weeknotes

So, all the above turned out really well and was well received but it’s worth capturing a little of the frantic paddling by MCQN beneath the surface. We had sufficient boards and components to make up all the kits we needed. We used a new brand of solder paste and hit some snags with the reflow process leaving a lot of reworking to squeeze in.

Lessons learned for me were, if you’re using a new brand of solder paste don’t assume the heating profile for reflow, and complete a single test board committing all the available stock.

by Adrian McEwen at 2022-11-02 05:00


Albert Wenger

My Super Short Twitter Wishlist

Elon Musk has successfully acquired Twitter. Many people seem convinced he will ruin it in short order. And while that’s of course conceivable, it is also possible that he will fix some long running problems. It’ s not like Twitter had been a well-run company. So now seems like a good time to resurface what I had tweeted in April.

Restoring full API access would dramatically shift power back to endusers. We could run apps other than the official Twitter client for interacting with Twitter, which would enable, among other things, a proliferation of different timeline algorithms. I first started speaking about this seven years ago and have an entire section on it in my book The World After Capital.

Fixing the blue check mark mess is something I first wrote about in 2017. Here is a quote from that post:

The net result of all of these mistakes was that the verified checkmark became an “official Twitter” badge. Instead of simply indicating something about the account’s identity it became a stamp of approval. Twitter doubled down on that meaning when it removed the “verified” check from some accounts over their contents …

Twitter had conflated identity verification with this account is “important” or “good” in a completely arbitrary fashion. And yes this has been allowed to fester for five years which is a perfect example of the failure of prior management to address basic problems in the service. I sure hope this gets fixed quickly and my post makes some suggestions. Since then a number of crypto-based self sovereign identity systems have started to come up, such as Proof of Humanity, and it would be great to see support for those.

So I for one am taking a bit more of a “wait and see” attitude with regard to what changes to Elon Musk will bring to Twitter. And if these two changes were to be implemented, I could see Twitter becoming a fertile ground for badly needed innovation in the relationship between endusers and networks.

by Albert Wenger at 2022-10-28 12:53


James Smith

Yours Disgustedly

I wrote to my MP again…

Dear Jeremy Quin,

I’ve been disgusted in the actions of the Government in which you serve for years now, and yet your party keeps finding more scrapings at the bottom of the barrel, and keep finding new depths of ineptitude and mendacity.

How can you be OK with all this? Boris’s disdain for the law and consitution was bad enough, but then to elect undoubtedly the most incompetent leader we’ve ever had, and finally finish off the UK’s standing in the world? What are your party thinking? What are YOU thinking? How can you stand with these people, how can you take their instructions and toe the party line when that party line is set by obviously completely inept people who seem to have wandered into Westminster by accident and are mainly just confused about where they are.

You have a job to do. You are failing. Your constituents deserve better, and your country deserves better.

I was going to ask politely, but the time has passed for that. There are three things you need to do to salvage some semblance of integrity:

  1. Publicly support calls for a General Election - you may not want it, but the country demand it. I’m sure your seat will be safe anyway.
  2. Do not let Boris Johnson anywhere near the leadership of the Conservative Party.
  3. Resign the whip and sit as an independent. You should be ashamed of your party and if you have any integrity, I’m honestly not sure how you could remain part of it.

I have stepped back from active politics in the last few years, because truth and reason have been completely undermined and honestly I don’t know how to operate anything I believe in in that environment. But I’m reconsidering; if there’s a General Election, I’m sorely tempted to stand again just so I can be on stage with you at a husting and say all this to your face in front of hundreds of people, and demand an answer for them.

Yours in severe disappointment and anger,

James Smith

If you’re as angry as I am, maybe do the same.

by James Smith at 2022-10-21 10:00

Zarino Zappia

Learning design: resources for non-designers

Every now and then, a programmer, product manager, or marketing person will ask me how they can “learn design”.

It’s understandable that they think I can help. The problem is, I learned the principles of visual design through osmosis, growing up in a household with two graphic designers as parents. I learned front-end web development through a decade of experimentation, back when “web 2.0” was just becoming a thing. And I learned user research and UX design on the job, first at ScraperWiki, then at mySociety.

But I appreciate “spend 20 years doing it” isn’t a very useful answer to people asking me how they learn. So here’s a list of resources that might actually help. Some of them I’ve used myself, but most are just resources I’ve seen recommended by people I trust. YMMV!

This list is by no means exhaustive. I’ll try to keep it up to date with new resources as I discover them. If you know of something that helped you learn design, and you think I should add it to this page, drop me a line on Twitter.

All-round guides

  • Hack Design – a free, 50-lesson, self-paced course for “hackers” learning design, that touches on everything from visual design principles, to UX research, UI design, and some basic front-end skills.
  • Ben Brignell’s archive of third party Design Principles – the guides that other organisations use to guide their product decisions, covering ethics, accessibility, performance, user research, and everything in between.

Visual design


There are a few foundational texts here, that are well worth your time, if you don’t mind a more theoretical introduction to the way designers think:

There’s a small cottage industry in Tumblr-like microblogs poking fun at poorly designed experiences online. These are two I follow in my RSS reader:

Modern web technologies

Things move fast here, so it’s hard to recommend specific resources!



by Zarino Zappia at 2022-10-21 00:00


Nicholas Tollervey

PyCon Ghana 2022

It was an extraordinary privilege to be one of the keynote speakers at this year's PyCon Ghana. I was also very lucky to have the support of my employer (Anaconda) who covered the costs associated with the trip for myself and my colleague, Cheuk.

While this was my first trip to Ghana (actually, it was my first trip to Africa), this was not my first Ghanaian interaction.

I can't begin to describe how important and nourishing the stimulating interactions I've had with Ghana based friends Mannie and Michael have been. Two years ago we were introduced by our mutual friend Conrad Ho, and since then have met every month, in video calls, to discuss Python in education. The work done by the Ghanaian Python community to engage in educational activities is truly inspiring, and you can find out more here.

That both Mannie and Michael are part of the PyCon Ghana organising team, and this year's focus was on Python in education give a clue as to how I got invited.

A view from our accommodation
The view of Accra from our accommodation.

After an eventful flight to Accra, both Cheuk and I went exploring during our first full day. Adjacent to our accommodation was Oxford Street, containing lots of shops, banks and other useful things we needed to visit. My immediate impression was very positive... the Ghanaian folk we met were all friendly and welcoming. "Good morning", "Hello", "Welcome to Ghana" and other such greetings were common as we walked through the streets.

We also met the PyCon Ghana organisers at the venue. Having been involved with community organising for well over a decade, I looked on in sympathy and (where possible) got stuck in trying to help get everything set up. Like most aspects of the Python community, PyCon Ghana is run by volunteers, and I'd like to acknowledge their strength of character, friendliness and can-do attitude, led by their chair, Francis. I saw first hand, that the Ghanaian Python community is in good hands.

Sadly, I was ill on Thursday's tutorial day. My son had shared his cold with me and it meant I had to stay home instead of attend Cheuk's amazing humble data workshop. But the enforced day of rest meant I was ready for Friday and Saturday at the conference.

I was honoured to meet Nii Quaynor a Ghanaian gentleman who is often described as the father of the African internet and an inductee to the Internet Hall of Fame. Nii eloquently spoke with considerable experience and authority of the challenges and opportunities for working with governmental and international agencies. I hope folks were paying attention since the Python community in Ghana could be a significant contributor and collaborator in the technical growth of the country.

There were also many other interesting talks, panels and workshops happening at the event which made it feel like a typical Python conference found anywhere in the world.

My first proper contribution to the conference was to run a two day workshop on MicroPython on the micro:bit for young people. I have to say this was an absolute joy and, assisted by Anthony and Joanna, we were also joined by a collection of teachers, tech folk and IoT curious. The vibe was friendly and the young people brought lots of energy and enthusiasm.

Here's a video, shot on the second day while folks were building a project with their micro:bit, to give a flavour of what went on.

Many thanks to the MicroBit Foundation for supporting PyCon Ghana via the donation of 20 devices for participants to use and then keep. Every device found a safe home, with many asking where they can be obtained in Ghana..!

My keynote, on the subject of Python in Education, went well and as usual, I especially enjoyed answering the questions at the end.

I was especially pleased to channel my "inner teacher" by (half jokingly) setting the conference some homework.

I pointed out that somewhere will become known as a place of African technical innovation. Somewhere will be lauded as having the most accessible and creative coding education programme in Africa. Somewhere will famously contribute a uniquely African story to our global technical community.

I asked, "why not you..?".

My homework task to the audience was to discover and become their own unique, colourful and extraordinary community. They already have a small but strong, vibrant and close knit nucleus from which to grow.

I hope, in ten years time, to visit Ghana again and have some of today's community say to me, "see what we did, and look where we're going...", and for me to be amazed.

Ghanaian friends.
Ghanaian friends.

Another aspect of the conference was its friendliness.

During the breaks I spoke to many different people, from all over Africa, and drew energy from their passion, enthusiasm and openness.

I also enjoyed the warmth of their conversation and willingness to share games with me... I especially appreciated learning how to play Oware from PyCon Ghana organiser, Hillary. I enjoyed it so much I managed to buy a board in a market in Accra and have taught my kids and wife how to play..! It's a big hit in our house.

The amazing view of a beach from the old presidential residence.
The amazing view of a beach from the old presidential residence.

On my final day, the day after the conference, we hung out with the conference organisers and visited tourist sites in Accra. It was wonderful to see non-Pythonic aspects of Ghana... its cultural spaces, historic monuments, the university and glimpse some of its natural beauty.

Through the course of my stay, I saw the twi word "akwaaba" in many places.

When I asked what it meant I was told it was a sort of very hospitable form of "welcome".

"Akwaaba" is a pretty good word to describe my experience of PyCon Ghana.

Long may the Ghanaian Python community flourish and I look forward to 2032. ;-)

by Nicholas H.Tollervey at 2022-10-20 14:30


Adrian McEwen

Week 888 - Cargo bikes and some Ackers Bell Updates

Nikki doing the weeknotes this week! There’s not much for me to show as marketing strategies aren’t very interesting.

Adrian hasn’t too much he can share publicly, but did spend some time test-driving a couple of electric-assist cargo bikes. Agile Liverpool loaned them to Aeternum to see how well they’d work for getting out and about round Liverpool to install and maintain their fleet of air quality sensors. They’re great fun to ride!

Meanwhile Chris has been milling copper boards to test a new boost convertor chip for My Bikes got LED. The test circuit was designed in Kicad and then exported to jscut to create a tool path for the milling machine. Hand soldering smd resistors has given him a renewed appreciation of reflow soldering.

He also met with Ross Dalziel who we’ve drafted in to help out with the Ackers Bell. He’s working out how to standardize the production and looking for manufacturing partners for the CNCing work on the plywood frames. Drop us a line if you’ve got any good leads on that!

They also discussed making some final tweaks to the Acker’s Bell design to get ready for the first production run.

by Adrian McEwen at 2022-10-12 06:00


Adrian McEwen

Weeks 885-887 - ESP USB, CNC PCB

Adrian here. I'm cycling in the dusk and dark now, so my My Bike's Got LED setup is on and people are asking about it.

We sold an initial bunch of boards last winter—in the Disco Breastplates for Peloton Co-op, plus a couple elsewhere—but I wanted to revisit the 5V boost circuit before making them generally available. Other work took priority while the nights were light, but now is the time to get back to it.

Chris has been laying out the test PCB he was working on last week. We'd ordered some samples of a different chip to use for the 5V boost circuit, and this will let us try them out. It should provide more current to allow MOAR LEDs!

With the test PCB designed, he moved on to bringing it into the real world—milling the PCB out with the CNC router. Next step is to solder it up.

A sheet of copper-clad board with an intricate pattern carved away in the copper

While Chris is the only one of us with something to show off, Nikki and I have still been busy.

There's continued client-confidential contract work, which has seen me getting to grips with the USB stack on some of the newer ESP32 modules.

And in addition to the bike-light season arriving, the main LED season is looming. There's Halloweed at the end of this month and Christmas won't be too far behind that. Nikki has been making sure we're ready and we've ordered a cornucopia of LEDs to make sure the shop remains well-stocked. (We've also got a few new types and are looking forward to sharing details when they land.)

by Adrian McEwen at 2022-10-07 06:00


Albert Wenger

Burning Man: Experiencing Rationing

Susan and I went to Burning Man this year for our first time. We had a wonderful experience together with our friends Cindy and Robin (who is an experienced Burner and acted as our guide). There are many justified criticism of Burning Man and the festival will likely to have to change substantially over the coming years (a subject for a future post).

Today I want to write about the absence of prices at Burning Man. Once you get to Black Rock City, everything is free (well, not everything, as ice was $20/bag – more on that shortly). People have written about hopes and aspirations for a gift economy before but my key takeaway was about the importance of allocation mechanisms.

Without prices at Burning Man everything is rationed. You can go have a free drink at any of the bars (remember to bring your own cup and your ID – yes, that’s strictly enforced). But the bartenders will pour you a limited amount and then send you on your way. Same goes for all other goods and services. There are defined quantities available and that’s what you get.

Now “rationing” has a negative connotation but it isn’t inherently bad. It is a different allocation mechanism that has pros and cons when compared to the price mechanism. One advantage is that rationing treats people equally independent of their financial means, which can be desirable from a social cohesion perspective (well, rationing does that at least in theory – back to that shortly). A disadvantage is that the signal of demand relative to supply are inventory and queue based. If you run out of stuff and have long queues, demand clearly exceeds supply. That is a lot harder to track than price and unlike price doesn’t provide any inherent incentives for changing the supply (high prices usually provide high profits, which in well-functioning markets results in expansion of supply – important note: we don’t have a lot of well functioning markets these days due to concentration).

Now ice, one of the most important items given the extreme heat, did have a price of $20/bag. But because that price was fixed at $20 rationing was still needed. One day for example the ice trucks were only giving out three bags per person, which turns out to be a challenge if you are trying to pick up ice for your entire camp.

Keeping money out of the system entirely is actually quite hard. Why? Because rationing and queuing make a fertile ground for favoritism and bribes. If you know someone who can let you in the back door or you come “bearing gifts” you may be able to skip a line and obtain far more goods than you would be entitled to under the official rationing scheme. Susan and I were at Burning Man for five days and witnessed quite a few instances of this.

Experiencing all of this firsthand is exciting because it turns allocation mechanisms from a dry subject into a lived reality. Many discussions of the trade-offs involved in social and economic systems would be more honest if people had access to more diverse experiences (e.g. through travel).

Consider for example the discussion around higher education. To be clear upfront, I believe the US system of higher education is fundamentally broken and badly needs deep reforms. Still, too many people who advocate for free higher education seem to have given zero thought to the allocation questions that arise. In places where higher education is free, there are rationing schemes in effect. Some of these schemes are based on prior grades and admission testing, such as in Germany. Others, such as Switzerland, put up gating classes where early on a large percentage of students are failed.

Again, I am not saying these systems are bad and the US system of outrageous tuition and fees is good (especially because it still includes rationing). I am arguing that you cannot get around having some kind of allocation mechanism for limited resources (such as lecture halls and professors’ time). That is of course why I am a huge proponent of making as much human knowledge digitally accessible as possible in my book The World After Capital, because with zero marginal cost we can in fact let everyone have access. I am also not advocating for attempting to use the price system everywhere because some of the most important things cannot have prices.

Instead my point here is as follows: (1) for limited resources when you don’t have prices, you need rationing. And (2) rationing is hard to get right, which means you need to put a lot of thought and effort into it, including considering capacity signals and avoiding corruption. This is worth keeping in mind whenever you propose that something should be free.

by Albert Wenger at 2022-10-02 19:50


Mine Wyrtruman (pagan religion)

The Essentials of Fyrnsidu

It’s all too easy to lose sight of why you’re doing something. I started this blog almost three years ago when I was still a baby on this path. My intention was to take what I was learning and put it into my own words in order to help fellow newbies learn about Fyrnsidu. Since then, it has become my passion to promote and contribute to Fyrnsidu, in order to help it grow. But sometimes, you have to return to the basics. So in this post, I want to outline what the essentials of Fyrnsidu are, and link to resources to help those interested in learning what Fyrnsidu is all about.

by Byron Pendason at 2022-09-24 01:00


Mine Wyrtruman (pagan religion)

Fyrnsidic Cosmology- Wyrd and Orlæg

My first post on this blog was about wyrd. Like most Heathens, I looked at it on the personal level. We each have our individual wyrd, and this should probably be our basic understanding of it. But the universe itself also has a wyrd, and I think we’ve reached the point in this series on Fyrnsidic cosmology that wyrd is the next logical concept to address. Before we dive into that, though, let’s recap what wyrd is on a personal level.

by Byron Pendason at 2022-09-20 01:00


Mine Wyrtruman (pagan religion)

Giants in Fyrnsidu

One of the big differences between modern Norse Heathens and Fyrnsideras is our views on ettins/Jotnar1. The two are cognates, but understood very differently. They are both generally translated as giants, but this can be misleading because they aren’t necessarily always large. Modern Norse Heathens tend to look at the Jotnar as a third tribe of gods, albeit at war with their main gods the Æsir and Vanir. Fyrnsideras tend to look at ettins as god-like beings, but are not gods because they don’t maintain the cosmic order. They are best avoided because they are not bound by the cosmic order that requires the gods to honour reciprocity. This is speaking in general terms, of course. You will probably find exceptions in both groups. ↩

by Byron Pendason at 2022-09-18 01:00


Adrian McEwen

Weeks 882-884 - Dark nights are drawing in, time for LEDS!

It's Chris on weeknotes this week, and last and...

Apart from a few little tweaks the Cathedral donation project is up and running. There's a few weeks left if you want to interact with the Peter Walker installation and make a donation to the cathedral. If you want to try it out, send a message including the word "cathedral" and your choice of colour from red, pink, blue, green, orange, yellow, purple, or cyan to 70152.

On product development I am still looking for local CNC manufacturers who can produce the frame for Acker's Bell. It's proving harder than we had anticipated and not helped by a shortage of plywood.

Circuit schematic showing an FB6276B boost circuit chip.

I am also looking at some potential development work to allow Museum in a Box to produce a new batch of devices. The current design uses hardware that is not easily available with current shortages so we're investigating alternatives.

Nikki is continuing to work on the marketing plan and looking at ways to reach new audiences for our products. With the dark nights drawing in attention is turning to the LED projects, My Baby's got LED and the portable version for cyclists, My Bike's got LED. We're also busy thinking about other ways we might apply internet connected lights.

Adrian did some long-overdue maintenance on our Gitlab server (where our projects are stored). It's got more memory now, so is running much more smoothly. That also prompted some housekeeping to tidy up old tasks and priorities and do some thinking about where we are on the product roadmap.

by Adrian McEwen at 2022-09-12 06:00


Mine Wyrtruman (pagan religion)

The Human Era

In 1993, the Italian-American scientist Cesare Emiliani proposed the Holocene Calendar, a simple reform to our current calendar: adding 10,000 years to the Common Era (also known as the Gregorian Calendar) year that is the dominant calendar of the world. The reason is that the vast majority of Human development and civilization took place before the beginning of the Common Era. It’s difficult to grasp the scale of this history- actually stretching back into prehistory- with our current system. Take the famous city of Jericho, for example. It’s history stretches back to about 9,000 BCE. To figure out how long ago that was, you have to add 9,000 to our current year (2022), and then subtract 1 (because there is no year 0 in the Gregorian Calendar). Let’s now take that same year and convert it to this calendar, and we get 1000 HE1. Consider that it’s currently 12,022, and it’s easy to figure out in an instant that’s about 11,000 years ago. Our brains are likely to do the math for us subconsciously, whereas with the Common Era most of us have to consciously do the math to figure out how long ago it was. Actually, 9,000 BCE translates to 1,001 HE, but since it’s a rounded number anyways, 1,000 HE will do to demonstrate the point. ↩

by Byron Pendason at 2022-08-30 01:00


Adrian McEwen

Week 881 - Better Transitions and other updates

Nikki on the weeknotes this week! Now that we’re back on track with them.

Genrally quite short notes this week!

It has seen me mostly doing research in order to help us build a general company marketing plan, as well as looking at some potential tools for use to maybe start using. Obviously there’s the general social media posts and figuring out what other places might be a good way to get us known to a wider audience.

Chris spent some time tidying up the last few pieces of the cathedral Being Human project. We were having some issues around transition using a MAX485 based Arduino shield. This was swapped out for a more substantial and robust Enttec device. The local pi in the cathedral communicated with the lights via a serial connection to an Arduino. In the new setup we are able to communicate directly with the device. As part of this change we switched the Node red flow for a python script using the DMXEnttecPro library. Included with these changes was the addition of transition effects. Previously we swapped directly to the new colour chosen, now we convert RGB colours to HSV and increment a complete lap of the colour wheel before settling on the new colour choice. This gives a more impressive response from a donation and will hopefully drive more interest in the project for the cathedral.

Chris has also been chasing up potential suppliers who could manufacture the Ackers Bell for us, while Adrian has been working on some Bluetooth work with an ESP32.

by Adrian McEwen at 2022-08-22 06:00


Albert Wenger

The Low Energy Trap

I recently read Joseph Tainter’s outstanding book “The Collapse of Complex Civilizations,” which I recommend. It should be required reading for all politicians. Tainter’s theory is one of diminishing returns to bureaucracy, which we are clearly experiencing across many societies today. He also proposes one historic escape mechanism from such a collapse: a big energy unlock. We had a shot at that in the 1960s when we started building nuclear power plants, but then starting in the 1980s we instead chose to focus on energy efficiency. That has us now caught in a low energy trap.

It is extraordinary to see energy prices spiking in many parts of the world at the same time. Yes, there is the Russian invasion of Ukraine. And we are experiencing a big heat wave as part of the accelerating climate crisis. But these are ultimately just excuses. We should have built an energy system with so much capacity that these events would just be blips that barely go noticed. Instead we are facing brownouts and blackouts and prices at ruinous levels for individuals and companies.

Degrowth advocates would have you believe that the answer is less. Less consumption. Less production. Less energy. I suppose that all of that is fine if you want to go backwards. If you advocate for that you should be required to spell out what human carrying capacity you believe is sustainable under degrowth, because it certainly isn’t 8 billion people. If a degrowth advocate came out and said point blank that under their proposals it would be only say 2 billion people, at least that would be intellectually honest and I would respect that as a coherent point of view.

Personally though I believe in going forward instead. As I have pointed out in The World After Capital, that doesn’t necessarily mean an ever growing population, as we are well on our way to peak population. But to avoid killing off billions along the way through societal collapse we need a lot more energy and we need it fast.

What does having a lot more energy let us do? For starters we can avoid the worst of the climate crisis by aggressively shifting to electrification of transportation, heating and cooling, production and so forth. We can also deal with water shortages through desalination. We can produce food in climate controlled environments. And we can fortify and upgrade our infrastructure to deal with more extreme weather. When we are done we will have extra energy for all sorts of amazing activities, like building great housing for everyone.

Now pessimists and defeatists will say: it is too late, we missed our chance and there’s nothing we can do at this point. And of course if we continue to operate at present course and speed they would be right. But this is not a physical or labor resource issue. This is entirely a question of political will. Because if we make a hard shift now we could build our way out within a decade. Extraordinary things become possible when we activate human attention and resources at scale, as we saw firsthand during the World War II production effort.

I wonder who will be the first politician to run on a wartime platform. For once not war against another country, but war against the low energy trap and the collapse of civilization that it leads to. I realize that we have abused the war metaphor with the war on drugs and other ill advised policies. But in this context it is called for because the level of mobilization required to escape the low energy trap will have to match that of World War II, which was roughly 50% of all economic activity.

With that level of resource deployment we could build massive energy capacity quickly (and would ideally do so globally). We should aggressively build out wind and solar further, but at the same time make massive investments in geothermal and nuclear power plants. Let’s get out of the low energy trap!

by Albert Wenger at 2022-08-19 23:42


Nicholas Tollervey

Great Code Reviews

As I've mentioned elsewhere, I've just started a new role at Anaconda.

A week after joining I was asked to contribute an article to an internal newsletter called "Consider This!". The format is simple: write something thoughtful on a subject of interest to folks within the company, and, at the end, curate a list of questions to prompt further thought and reflection.

I was invited to explore what I considered important aspects of great code reviews. Thanks to Anaconda, the article is reproduced below. Additional thanks to my colleagues Elise and Dan who provided invaluable and stimulating feedback to significantly improve my first draft.

Ask a room of engineers what makes a great code review, and you’ll have as many different opinions as there are engineers. Yet, in my experience, common themes and archetypes emerge from the gloriously colourful and diverse descriptions of a great code review. This article aims to explore what they might be.

At its core, a code review is exactly what it says: asking another to review code.

Why might one do this? Often the simple answer is, “because I have to”.

Code hosting sites, like GitHub, make it easy for code reviews to be part of the development process through concepts like pull requests (PRs for short). Simply make a change to the code, bundle your changes into a PR, submit it and wait for feedback from maintainers or colleagues. Sometimes you have to submit code for review because of corporate governance, your employer or the open source project to which you’re contributing may have an existing review process for all contributions. Or it may simply be habit or herd instinct to follow so-called “best practices”... folks do code reviews because everyone else does code reviews and so they’re living up to expectations.

A code review could be an assessment to overcome, where someone in authority accepts or rejects your changes. It might involve checking your changes to ensure you’ve followed stylistic and technical conventions for a project, like a teacher correcting work with a red pen. Furthermore, opinions about the approach taken, methodology used or even the intention behind the change might be offered, like a critic describing a restaurant, film or concert.

But there’s another, more engaging reason to participate in code reviews: if done well, your world as a coder is enlarged by the process, be that as a reviewer or contributor. In so doing, engagement with the project is a process of growth, and the quality of the codebase is improved to reflect the shared goals, ideas and aesthetic of those bringing the project into the world.

If a code review is used as a means of exercising authority then it’s no better than pandering to another’s ego. Many projects have stylistic and technical conventions, and checking such things can be easily automated so contributors are confident their changes meet such minimum requirements before ever submitting their code for review. Finally, if a critique of the approach, methodology or intent is offered as part of a code review, then it’s happening too late; such things should be discussed before code is submitted for inclusion in the project, perhaps in early drafts (so called “code spikes”) or exploratory proofs-of-concept.

From the contributor’s point of view, a code review is an opportunity to share their work so others understand and see what they are offering. In other words, a code review is an exercise in education as others encounter and explore new aspects of the code base. From a reviewer’s point of view, a code review is an opportunity to explore, internalise and offer constructive feedback of another’s contribution. Once again, it’s an exercise in education as the contributor is invited to explore their own work through the fresh eyes and constructive commentary of the reviewer.

Earlier, I deliberately used the word “enlarge” when I said a code review enlarges the world of those who participate. Enlargement is not synonymous with “fun”, “positive” or “easy”. The process of enlarging one’s view of the code might feel uncomfortable (perhaps you’re trying to get your head around a difficult or unfamiliar concept), negative (you feel frustrated with yet another bug in a hard-to-fathom part of the project) or difficult (the task at hand is complex and requires much effort simply to engage effectively).

Yet, enlargement implies growth, understanding and progress, and I’m reminded of the types of fun mountaineers use to categorise climbs.

A climb that is type one fun is fun because it’s fun to do, type two fun is not fun at the time but fun to recollect afterwards because of the achievement gained or lesson learned, and type three fun is not fun at the time, nor fun to recollect because you realise you never want to be in that situation ever again. Given a receptive spirit of learning, a mountaineer’s view of the world is enlarged through a mixture of both positive and affirmative, as well as negative and difficult, experiences.

So, how do we foster a spirit of enlargement in code reviews?

I believe mutual respect is key. Respect involves showing empathy, gratitude and acknowledgement that, when difficulties arise, folks involved are acting with the best of intentions. Another key factor is trust, an attribute of a team that only comes through working together over time, making mistakes together, and seeing evidence that folks support each other. I’d add that compassion (an awareness of and sympathy for another’s feelings and situation, mixed with a proactive desire to engage) is a great way to show support. When things inevitably become difficult, then compassion for each other is a way to embody mutual respect and build trust.

In the context of code reviews, such attributes help our judgement to become deeper, more refined and aware of the wider context of the project and its participants. A code review is no longer just an arbitrary measurement of “quality” (have you followed our code conventions?), but becomes an exercise in mutual learning and improvement that encompasses both enjoyable and challenging aspects of participating in a coding project. At the heart of this process is a strangely humorous paradox, as demonstrated by this old joke:

STUDENT: O Guru, what is the secret of success?
GURU: Good judgement.
STUDENT: How do you get good judgement?
GURU: Experience.
STUDENT: How do you get experience?
GURU: Bad judgement!

Only when folks feel safe to exercise potentially bad judgement (through the code they offer or the feedback they give), will they be able to gain experience and learn good judgement. The code review is a place to pay attention to each other’s contributions to facilitate mutual learning and growth. This will, ultimately, improve the project as a whole, and help its participants better engage with the tasks at hand.

“But”, I hear you ask, “what things should one do in a code review?”

If you’re expecting a “top ten interventions to make in a code review” type post, you’re in the wrong place. In fact, such naive shopping lists demonstrate a rather transactional and limited view of the process of a code review, while completely missing the point I’m trying to make. I hope you focus on embodying and passing on the sort of attributes that make a project an enlarging place in which to contribute: mutual respect, trust and compassion.

Perhaps we could learn by examining what other disciplines do when something is offered and feedback is given. For example, such a process is at the heart of musicians rehearsing (no matter the genre of music).

This short fragment shows Leonard Bernstein rehearsing an orchestra. Clearly the triangle players are not playing to the high standard he expects.

I want to draw your attention to the relationship between the musicians involved. How do Bernstein and the percussionists appear to you?

Folks might think Bernstein is condescending, sarcastic and not particularly supportive. Others might see him as setting clear (and very high) expectations through humour. Others might focus on Bernstein’s clear ignorance of triangle playing and the resulting laughter from the percussionists. That we see the same thing in different ways is itself an interesting and important outcome of our diverse and multifaceted backgrounds (and it’s important to acknowledge and recognise such differences).

The important relationship, upon which I want us to focus, is that between Bernstein and the musicians. Only when there's mutual respect, a feeling of safety and trust can such potentially difficult conversations, involving the giving and receiving of constructive criticism to fulfil some important end, take place. How such discussions unfold will reflect the unique relationship cultivated between the participants. So long as both parties share a bond of trust and respect, and we recognise and respect such a bond reflects their unique relationship with each other, then we can engage with and learn from the feedback and what the outcome tells us about the endeavour. In other words, our world is enlarged by observing their interactions.

Questions to Explore:

  • How has your world been enlarged through a recent code review?
  • Remember a time when you received valuable feedback or an important lesson that enlarged your world; how was it revealed to you?
  • What is your team’s approach to code reviews?
  • How do you and your collaborators cultivate a place of mutual respect, trust, and compassion?
  • Put yourself in Bernstein’s shoes, what would you say to the percussionists?
  • Imagine you’re the percussionists, how would you respond to Bernstein’s feedback?
  • Think of a recent PR submitted for you to review. How did you help enlarge the world of the author? How was your world enlarged?

by Nicholas H.Tollervey at 2022-08-17 16:00


Adrian McEwen

Weeks 877-880 - Choose Your Own Colour By Text Adventure

Adrian here, lifting us back onto the weeknote wagon because it was my fault we'd fallen off it. Basically a month to catch up, so let's get cracking...

Chris had been getting well-acquainted with the MQTT support in WLED, the software we use on the My Baby's Got LED boards. That lets you control the board over the Internet or a local network so that you can hook it into other services and events.

We use that here in our office at DoES Liverpool to monitor the coffee pot (as is the networked device tradition). A sensor on the coffee pot watches its power consumption, and some software uses that information to spot when a fresh pot is being brewed. Thanks to Chris' work, the Liverbird on the wall slowly fills up with colour while the brewing happens; then once the coffee is ready it celebrates with a colourful pattern. One of our Ackers Bell production prototypes also rings, triggered by the same software. No-one in the office then misses out on fresh coffee.

Chris wrote up a brief how-to guide, Controlling WLED using a public MQTT server, for anyone who wants to get started doing something similar.

Speaking of the Ackers Bell, Nikki has been sketching out some business canvases to work out who we should tell about it when it's on sale, and how we might reach them. Would you, or someone you know, like an Internet-connected bell? What would you connect it to? Which events would your team want to be alerted to, or to celebrate? We'd love to hear from you.

The rest of our time has been focused on client work. It's been a busy couple of weeks for that, although as ever, some of it we can't talk about.

We can talk about the sessions we've done with artist Laura Pullig. A while back we designed a wind- or solar-powered battery charger circuit. We've had a handful of test PCBs made for it, and Laura came in for an afternoon to learn how to use the reflow oven to solder them up. She's also been back for us to do some testing on it. The combination of wind and solar as power options plus the very varied power supplied by the wind resulted in a pretty broad set of design parameters; our tests so far have been inconclusive. The next step will be to put together a datalogger to allow some more methodical exercising of the boards.

The client job that Chris has been working on has also been unveiled to the public.

The inside of a large sandston cathedral.  A sculpture is centre-stage of two huge female hands with their forefingers reaching towards each other to make contact.  The scene is lit with a wash of purple light.

Liverpool Anglican Cathedral have a new exhibition of work by sculptor Peter Walker: Being Human. The centrepiece of the work is Connection—two 2-metre tall hands situated under the Dulverton Bridge and is lit with an array of spotlights.

We have integrated a text-to-donate system with the sculpture lighting, so visitors (or anyone else...) can send a text message to change the colour of the artwork to one of their choice. The text costs your standard message rate plus £2, which is donated to help fund the upkeep of the cathedral. If you want to try it out, send a message including the word "cathedral" and your choice of colour from red, pink, blue, green, orange, yellow, purple, or cyan to 70152.

by Adrian McEwen at 2022-08-15 06:00


Fairphone Blog

Five years of responsible gold

For the past five years, Fairphone has been an active participant in a broad coalition within the Dutch gold sector aimed at ensuring greater respect for human rights, the environment and biodiversity in the gold value chain. This “gold covenant” was spearheaded by the Dutch Ministry of Foreign Affairs and co-signed by a variety of groups with an interest in the gold sector, including HIVOS/Stop Child Labour, Philips, Closing the Loop, and the Dutch Gold and Silver Federation (FGZ), as well as other parties like trade unions, importers and recyclers. Fairphone chaired the Gold Agreement task force on improving artisanal gold mining and responsible supply during the duration of the initiative. In June, this covenant came to an end; now comes the time to apply the lessons learned and make responsible gold the norm.


Increased transparency: the first step towards fairness

Transparency has always been a core Fairphone principle; it is an important first step towards fairer supply chains. The gold covenant was well aligned with this principle by requiring annual due diligence reports from its signatories and then rating their quality. These reports enable companies to openly explain their due diligence approach and share a map of their supply chain. The gold covenant awarded Fairphone the highest possible score for our last rated due diligence report 20/21.
Our mission, however, drives us to go beyond due diligence; to develop scalable solutions that can drive real impact for the people in our supply chain. We do this by, for example, investing in suppliers who are most marginalized, building their capacity to reach required quality and sustainability standards, and connecting them to our supply chain. This comes with higher risks, of course, but with greater positive impact, which we hope inspires others in our industry to do the same.

You can read more about how we are driving impact in our material supply chains and beyond in our recently published 2021 Impact Report.

Sharing lessons learned from our child labor project

Between 2017 and 2021, Fairphone led a consortium of companies and organizations in a project in Busia, Eastern Uganda. Our aim was to improve and support the artisanal and small-scale mining (ASM) communities in the area by eradicating child labor and establishing a sustainable gold supply chain that creates a better future for miners and their families.

Together with our partners, we piloted a holistic landscape approach, in which all key stakeholders — including community members, mining groups and supply chain actors — joined efforts to address the root causes of child labor. The project provided valuable lessons on how to best engage with mining groups to improve and sustain safer production methods, while introducing these miners to the international supply chain of minerals. These lessons were shared broadly with the gold covenant members, and are being adopted by the second phase of this project in the form of Project Access.

Leveraging feedback of gold covenant members

One key aspect of Project Access—developed by Fairphone and our partners—is a route-to-market model aimed at improving artisanal gold from East Africa through sustainable investment and market access.

Using feedback we received from members of the gold covenant, we have chosen to develop a book and claim model, where companies can purchase credits for their gold consumption and this money is invested in improving the sustainability of artisanal gold mines. Government representatives of the gold covenant have endorsed the model and one member, Diamond Point, has already committed to purchasing credits to contribute to improving artisanal gold mining!

This is a great milestone and raises the bar for the other gold covenant and industry members to follow suit. Don’t hesitate to get in touch if your company is interested in improving the sustainability of artisanal gold mining too!

The post Five years of responsible gold appeared first on Fairphone.

by Monique at 2022-07-22 16:54

Nicholas Tollervey

EuroPython 2022

I had a wonderful time at EuroPython, last week, in Dublin.

The most important aspect of the conference, for me personally, involved giving my talk entitled "Music and Code". It was an opportunity for me to reveal and explore how I feel about programming, teaching and learning and the place of tech in our wider culture. I've wanted to give a talk like this for over ten years, but only recently have I figured out how to express what I wanted to say through music as a metaphor.

Another important aspect of the conference was friendship and it was a huge pleasure to be a small part of the organising team.

I especially want to highlight collaborating with Vicky (a remarkable friend who embodies so many of the wonderful aspects of our Python community: a pro-active "can do" attitude, an inclusive and compassionate outlook towards others, and a formidable determination to thoughtfully do "the right thing" for the benefit of the whole community). The two of us flapped and faffed to fulfil a Maker space within EuroPython. Given the amount of positive engagement from attendees, I hope this becomes a regular feature of the conference. A case in point being the DIY robots competing to solve a maze in the fastest time, organised by the energetic and enthusiastic folks at the Northern Ireland Jam:

I also want to mention Raquel, who chaired this year's EuroPython. Her clear leadership, from the front, her apparently infinite energy, displayed through her considerable efforts, and her humane connection with folks, embodied by her patience, friendliness and compassion are generous gifts she has shared with us all. I sincerely hope she's taking some post-conference time off, and I want to thank her for reaching out to me, all those months ago, to become a part of organising EuroPython. And I have to say all my fellow organisers were an absolute joy to work with. Their collective courtesy, hard work, enthusiasm and friendliness is a very rare and special thing that I hope we can sustain, nourish and cultivate.

One other group of friends deserves a mention - my fellow maintainers of the Mu code editor. It was a huge amount of fun for us to be together in the same place for the first time ever. I was especially delighted to meet Vasco, face to face, for the first time.

The final part of EuroPython were two days of "code sprints", where open-source collaborators work together on their projects, meet to discuss technical and other aspects of our collective work, and welcome new collaborators and friends to our efforts. We, the maintainers of Mu, had a wonderful time focusing on Mu related things, and collaborating with new contributors who have made welcome enhancements to Mu.

Here's a picture of all the Mu maintainers at EuroPython:

The five core Mu maintainers
The five core Mu maintainers: Tim, Tiago, Carlos, myself and Vasco.

Of course, I heard many wonderful talks, enjoyed the conversations with many friends old and new in the famous corridor track and took part in some really stimulating workshops (with my amazing daughter, who was attending her first PyCon as a proper attendee with an interest in data science - she especially enjoyed both Django Girls and Humble Data).

I love EuroPython's culturally cosmopolitan feeling, something that's hard to recreate at a national PyCon. I love how folks keep coming back to EuroPython, there are people who mean a lot to me, who I only ever see at this conference. I also love EuroPython's peripatetic nature, as a community we are welcomed to all sorts of fun places and have an opportunity to soak up the vibe of different countries and cultures.

Long may it last, and I hope to see you at next year's EuroPython.

by Nicholas H.Tollervey at 2022-07-22 14:20


Adrian McEwen

Controlling WLED using a public MQTT server

A while ago now we linked a My Baby’s Got LED board to twitter using Node-RED for the Love to Play festival In this post we are looking at another way to get playful using MQTT with a My Baby’s got LED board. MQTT is a simple transport protocol, now commonly used to communicate in IoT. We’re going to set up a board to listen to a public MQTT broker and change the lights whenever a message is published. This will mean anyone can change our lights and any other My Baby’s Got LED boards connected in the same way will also change,

MQTT works by allowing devices to publish messages on topics and/or subscribe to topics to see what has been published. There’s a lot more information about this protocol here. MQTT connections are handled by a broker which revives and directs messages appropriately. It’s often desirable to run your own broker, and there are a range of options available. However, to create our MQTT ‘playthelights’ example we are going to bypass the overhead of running a broker ourselves; we will use one of the publically available brokers instead. In this case we want other people to be able to control our IoT device so we need our messages are public.

There are only really two steps needed to set this up. First we are going to configure the board to subscribe to a broker and then publish messages to the appropriate topics on that broker.

Connecting to the MQTT broker

If you have configured your board to connect to your network, go to the address you gave it during the setup. We will need to connect to the internet to access the broker so if you haven’t configured wifi and are connected to the board as an access point, or if you don’t know what this means, see the setup documentation.

  • Click on ‘Settings’ and then ‘Sync interfaces’ Scroll down until you find the ‘MQTT’ settings.
  • Click the checkbox to ‘Enable MQTT’
  • Set the broker to and the port to 1883
  • For ‘group topic’ use ‘wled/playthelights’, this is the MQTT topic we are subscribing to for messages with information about changing the lights.
  • Scroll down to the bottom and click ‘Save’, the board will need rebooting for the changes to take effect.

MQTT settings on WLED showing, port:1883 and group topic:wled/playthelights

We have now set up our board to connect to the hivemq broker and listen for messages on wled/playthelights

Publishing messages to the topic

Now that the board is subscribed to the topic the next step is to publish messages to it, for this you will need an MQTT client. There are many options available for different devices. In this example I’m using an online tool from the same organisation that provide the public broker we are using.

Change the address in ‘Host’ to and click connect.

MQTT websocket client settings

Now we are ready to start publishing messages to the topic to control the lights. Use the double arrows to exapnd the ‘Publish’ section and set the topic to ‘wled/playthelights’ In the ‘Message’ box type ‘ON’ and click publish. Now try publishing the message ‘OFF’. This should turn on the lights and then turn them off again. Sending ‘T’ toggles the On/Off state of the lights, try publishing the message ‘T’ a few times.

MQTT websocket publish to wled/playthelights topic settings

WLED also allows for changing colour over MQTT using the topic [mqttGroupTopic]/col by sending hex colour values. So change the ‘Topic’ to wled/playthelights/col and then publish a message containing a hex colour value Eg. publishing #ff0000 will turn the lights red.

The WLED interface also responds to messages posted to the topic [mqttGroupTopic]/api This responds to any of the HTTP API commands and gives a lot more control over the lights.

So, for example, publishing the message “FX=73” to wled/cheerlights/api will set the lights to the rainbow chase mode (Effect 73) A full list of WLED API effect settings can be found here.

The [mqttGroupTopic/]/api will also accept messages in the JSON api format. So, for example, publishing the message “{"seg":[{"col":[[0,255,200]]}]}” to this topic is another way to change the colour of the first segment.

Remember your board is set up to accept all messages published on these topics on a public server, so anyone else from anywhere can also publish messages that change your lights. Equally messages that you publish will change the settings of every other My Baby’s got LED board that is subscribed to this broker.

An alternative to the web based client used there are apps available for mobile phones that can provide the same function. One example for Andriod is MQTT Dashboard

by Adrian McEwen at 2022-07-20 06:00


Adrian McEwen

Week 876 - WLED now in kit form

Chris on weeknotes this week, largely working on applications for My Baby’s Got LED. Which feels like a reasonable opportunity to mention we’ve just added MBGL kits to our store. So you can buy everything you need in one place to recreate these projects at home*.

*(Liverbird not included)

Apart from work for a client the two projects I’ve mostly spent time on this week have both used MBGL. One an interactive sign for a Bar/radio station and the other testing WLED mapping to give an new look to the DoES Liverpool coffee monitoring liverbird.

Melodic Distraction is a radio station and bar based in the fabric district. They were looking to improve the look of their street sign, and bought a My Baby’s Got LED kit to liven it up. They removed the old strip lighting and connections and replaced it with a strip of RGB Leds around the circumference. To prevent noise on the data line, we used twin core cable for the power and a seperate shielded line for the data to the lights. Now it’s up and running, the next job is to link it their music output.

In DoES Liverpool, the coffee machine is hooked up to a SONOFF, which publishes an MQTT message whenever a fresh brew is started. Also connected to the DoES network is a large liverbird sign, formerly on the side of the Liverpool Echo building. It’s now full of LEDs controlled by a MY Baby’s Got LED board. Usually, the liverbird flashes a different colour when the coffee is ready, I wanted to see if we could use the lights like a progress bar, to show how long it would be before the coffee was brewed.

By default, WLED expects the addressable lights to be sequential, starting at address zero and working up. In the liverbird the lights are threaded around the frame, up one leg and down the other. As a result the order of their physical addresses doesn’t fit a neat pattern of rows. Luckily, WLED has a mapping trick to get round this. It’s possible to add a JSON-formatted map which lists the physical address of each led in the order you’d actually like them to be used.

With this setup we can use Node-RED to trigger an event when the SONOFF publishes a message to let us know the brew has started. In this flow we can also calculate the time elapsed from when this notification is received. We happen to know that it takes 270 seconds for a pot of coffee to brew, so we can calculate the percentage of brew time elapsed. With the leds in a sensible order it is really easy in WLED to display this using the ‘Percent’ effect, with the percentage we want to visualise as the ‘Intensity’ value.

      "col": [[255, 0, 0],[0, 0, 0]]

This example JSON sets the effect to ‘Percent’ (fx:98) and uses the payload value to set the intensity (ix:).

Nikki’s week consisted of filming the liverbird filling up with the coffee pot and editing the video to make it social media friendly, which took more steps than she’d like to admit and had some minor technical difficulties in the form of a dodgy cable when trying to get the laptop to read the camera. But despite that, it’s now up on Twitter!

She’s also been looking at canvas models for the Ackers Bell and trying to make some headway with that, though progress is slow. The big thing was sorting out the pricing for the My Baby’s Got LED starter kits, and finally getting those on Tindie ready to be sold!

And finally, Adrian is continuing with some really exciting client work, but nothing that can be discussed here yet. You’ll have to trust us for now, and find out more as soon as we can share!

by Adrian McEwen at 2022-07-18 06:00


Adrian McEwen

Week 875 - Brainboxes

This week saw us all visiting Brainboxes with the IoT Liverpool meetup group They are a Liverpool based company that develop and manufacture communication devices from their base in Speke. It was great to see an example of local tech industry, boards designed and manufactured in Liverpool, used throughout the world. The British Antarctic Survey have sensors connected to Brainbox analog input boards gathering data all year round. When decision makers are talking about new tech businesses in the city region, this is surely the kind of model we should be looking to have more of.

The MCQN team in blue lab coats on the factory floor of brainbox, where they manufacture their circuit boards.

I was particularly taken by their Pick and Place machines in action, and look forward to the days when we’re operating similar with MCQN to turn out My Baby’s Got LED boards in high volume. While I was asking many questions about the processes involved in placing components the rest of the group moved on to see a robot arm printing cases.

Away from our trip I spent the week continuing a project for a client that is still at the development stage. I’m also still trying to find a local CNC manufacturer who can create Ackers Bell bases at volume for us. A shortage of plywood is working against us. For Liverpool Makefest we installed a My Bike’s got LED board into the 3d printed ‘DoES Tower’. That led to some work sending instructions to WLED over MQTT using a public broker. A blog post is coming soon, if you’d like to try it yourself!

Nikki has been putting videos together, organising meetings to move the Ackers Bell forward and working through various ideas Arthur had been working on. She’s also looking at business canvases, which has required some delving into the DoES wiki to get printers working.

Adrian was busy with client work, that sadly he can’t talk about. He did, however, manage to track down and fix a particularly elusive bug, which had a small chance of occurring once every 49 days. Folk who know how many milliseconds you can fit into a 32-bit number may have an idea of where the problem lay…

by Adrian McEwen at 2022-07-13 06:00


Albert Wenger

The Meaning of Machine Creativity

For a long time there was a narrative that computers would only be good at automating routine tasks, leaving creativity to us humans. I never believed this because creativity isn’t some kind of magic but rather much of it is based on exploring variations either based on known rules or based on precedents. For example, I titled a post in 2016 “Machine Creativity: Possibly Sooner than Anticipated.” Also in my book The World After Capital, I have a section on the universality of computation that includes a few paragraphs on creativity.

Recently we have had several breakthroughs, first starting with large language models that can tell stories, and now with DALL-E2 and midjourney, two models that can generate amazing imagery based on textual input. For example, here is an image “imagined” by midjourney based on the prompt “Sailing across the alps”

It is mind-bending to sit with this image for a while. A machine created it and did so within a space of minutes, yet it is full of imagination and detail and could easily be on the cover of a book or the walls of a museum.

So what does it mean that we now clearly and demonstrably have creative machines?

First, more than ever it means that we need to come up with a new social contract. People who have earned a living with logo design, or illustration, or music composition, or code authoring, or any number of other creative pursuits are suddenly facing stiff competition from machines (related: here is another 2016 post on “Programming without Programmers”). In The World After Capital I have an section on the “lump of labor fallacy” versus Leontieff’s argument that humans are just a factor of production, much like horses were at one point. I am firmly in the camp that the central building block of a new social contract needs to be some form of Universal Basic Income.

Second, while I don’t believe that artificial general intelligence is imminent, we are definitely now finding ourselves on an accelerated timeline, relative to just a few years back. Humans still have a unique capability to reason and be creative over “open domains” or across vastly different domains. Also we humans can base our creativity on a deep understanding as opposed to the shallow approach taken by the models. But it would be silly to dismiss these latest models as just a parlor trick, as some have argued. What we are seeing now is profound. It is high time that we start getting serious about what it means to be human and how we should be treating other humans.

We are experiencing an extraordinary expansion of technological capabilities. If we can figure out how to get past our industrial age thinking, what comes next could be truly amazing. If you want my thoughts on that, I have pulled them together as a book: The World After Capital.

by Albert Wenger at 2022-07-11 11:59


Albert Wenger

Progress vs. Categories

As humans we like to put things into categories. It makes communicating and thinking easier. Scratch that. It makes communicating and thinking possible. Categories go hand in hand with words as providing us with crucial compression of reality. Just like a 1:1 map is completely useless (it is the terrain itself), so would be a need to describe every detail of every person or object before being able to make a point. We would never get anywhere.

Not surprisingly then, categories are everywhere. For instance in venture we tend to put things into boxes such as “B2C” or “enterprise software.” Or in academia people study a discipline like “physics” or “chemistry.” The government classifies workers as “contractors” or “employees.” But here’s the tricky part: the world isn’t static and progress undoes categories.

The admonition to “think out of the box” when it comes to innovation is apt. Such thinking is both a source of progress and necessitated by progress. Here are just some examples. As we have deepened our understanding of what matter consists of, some of the historic boundaries between chemistry, physics and biology have stopped making sense. With computers dispatching labor we have erased many of the distinctions between contractors and employees. Self-service consumer grade software is taking over the enterprise market with product-led growth companies outperforming sales-led companies.

If you are trying to invent the new (or fund it), it helps to let go of existing boxes, instead of trying to jam innovative ideas into them. One of the reasons really disruptive startups often have a hard time raising money is because they often don’t fit an existing category. At USV we have benefited greatly from having a thesis-based rather than category-based approach for that reason.

People and institutions who derive their power from controlling one of the existing categories will fight progress that might undo the importance of the category. For example, in academia the chairs of existing departments resist the creation of “inter-disciplinary” degrees (a coinage that by itself is meant to appease the existing disciplines). They also resist the creation of new departments that represent categories that make more sense on a go forward basis. For example, Information Theory, despite its importance, tends to be spread out and shoehorned into math, economics and physics departments.

The bigger and more important the categories, the more vicious the fights to protect the status quo at all cost. And that is at the heart of the gender and sex wars we are now finding ourselves in. With progress we have started to understand that these categories don’t have the clear dividing lines we imagined – for example, the biology of sex in humans is far more complex than simply what chromosomes you have. And progress allows us to make profound changes, whether that’s hormone therapy, cosmetic surgery, or reproductive technologies. Even without these changes, technological progress has often rendered historic reasons for the category distinction mute. For example, soldiers used to rely on brute strength a lot, but that matters not one bit if you are remotely flying a drone.

The ultimate intervention here will be based on technologies such as CRISPR that allow us to manipulate the genome. It is only a question of time before athletes will show up crushing it in various sports who have been designed to be dominant at those sports (e.g. lung capacity for swimming). If you don’t think that will happen, I suggest reading up on the sordid history of “performance” sports programs anywhere in the world. Any edge that could be had has been exploited in the past and that won’t be any different going forward (especially when the interventions will be extremely hard to detect).

There are people and institutions who derive their power based on a clear distinction between the male and female categories today. They will fight progress all the way. That’s why change will be hard and take a long time. Categories everywhere persist far past their usefulness because of vested interests. Anyone interested in inventing the future instead of clinging to the past will need to overcome that. The work of establishing new categories is hard and success in doing so a huge accomplishment that moves all of us forward.

PS Someone asked me how we could have new categories in sports. To answer this it is important to recognize that we already have some sports that have a single field, such as dressage or ocean sailboat racing. It is equally important to note that other sports have categories in addition to sex, such as weight classes in boxing and wrestling. We simply need to be willing to experiment with categories in other sports as well. One approach could be to have classes based on direct measurement of a key attribute. For example, I love tennis. We now have the tools to measure the speed of balls at all times. Imagine tournaments based on speed classes. Slow, Medium, Fast. If you want to compete in a class you have to stay within the speed limit of that class. It’s just another rule, not really different from that you have to stand behind the baseline to serve. I believe we would have many more interesting matches with these categories than we have today!

by Albert Wenger at 2022-07-06 00:33


Albert Wenger

Happy 4th of July: Think Independently!

Every 4th of July I like to reflect on what it means to be independent. Today I wrote nearly an entire post on production independence, starting with energy independence. But I have decided to post that another day because there is a different type of independence that I have decided is more important at this particular moment in time: independent thinking.

It has never been easy to be an independent thinker but it has become considerably more difficult in our always online, always connected world. There are several reasons for this. First, we are surrounded by suggestion algorithms that drive us ever deeper into clusters. One really has to make a strong conscious effort to follow people of different views, or one will not see those views as at all. I have long argued for what I called the “Opposing View Reader” and would happily use that if it were available as a product. In the meantime, I have added people to my Twitter feed who I strongly disagree with on almost everything.

Second, whatever we post ourselves is scrutinized and deviation from what the bulk of one’s followers think takes an extra level of conviction. So often people will stay silent on a topic rather than express their opinion for fear of having to deal with an online backlash. And of course when one does post something there are also the other type of comment (mostly from non-followers) that tries to for “guilt by association” through throwing out a label such as “liberal” or “racist” instead of engaging with the substance of the comment.

Third, with more and more time spent online, people are suffering from loneliness. And unlike IRL, where people can get to know you over time in your fullness, online we tend to have just a relatively narrow representation of ourselves. So the pressure to conform to a group and its views is growing for fear of being excluded and feeling even more lonely. Having strong real world friendships is one good antidote to that. Not giving a shit is another.

In the early days of Union Square Ventures we were often asked if we could be successful being in New York and not in Silicon Valley. Our answer was that we prefer to think independently and that’s a lot easier when you are somewhat geographically separate. It is also the reason we spend very little time with other investors, rarely going to VC conferences. It turns out that independent thinking is extremely powerful when it comes to investing (likely also one of the reasons for Warren Buffet’s success, although I have been meaning to write a post about how I think he’s a hypocrite).

So on this 4th, maybe take a few minutes to add people you strongly disagree with to your feeds. This is a great first step towards thinking independently. As a second step set aside time, ideally every week, to query which of your beliefs are ones you have spent time considering independently and which ones have you adopted simply by virtue of being part of a group. For inspiration on independent thinking I suggest following Aella, who recently had a good thread on how challenging it can be.

Happy 4th of July! And happy independent thinking!

by Albert Wenger at 2022-07-04 19:09

Adrian McEwen

Weeks 873 - 874 Makefest!

Hey all! Nikki doing week - well fortnight - notes this week.

Adrian has continued work on the EV charger project but there’s not much we can talk about publicly there. He’s also been working with Snoof from STEAM Engineers on the design for the new Factoree website, working out how to open up the sensor graphing dashboard to let people see part of it without logging in.

Chris spent most of the last two weeks doing client work and doing preparations for makefest; Including adding a MBGL board to the DoES Tower and setting up a Node-RED flow to listen for tweets, and send MQTT messages to change the colour of the lights, as well as setting up the Acker’s bell with the new design.

He also looked at the WLED interface to communicate with MBGL over MQTT using a public broker in order to write up a blog post that’ll be up soon, and had a less successful experiment with LEDFx.

A table featuring several MCQN projects including Museum in a Box - a pink box with a volume dial, surrounded by post cards and 3D printed objects which can be used with it and the Ackers Bell - a brass bell in a pentagonal housing. There is also a screen showing video and the edge of the Peleton MBGL disco breastplates can be seen on the edge of the frame.

The main event of everything of course was Makefest this weekend over in Liverpool Central Library. We had an amazing time and can only extend a great amount of thanks to the organisers and everyone who came out to the event.

It was a wonderful day and it was a lot of fun to get to share the things we do and what we’ve made with everyone who came out. Seeing everyone interacting with things, asking questions and being excited about the things we make the same way we are is always the best part of making.

So what did we take away from it? Well Museum in a Box seemed to be a particular favourite and there was also a great deal of interest specifically in the My Bike’s got LED/ Disco breastplates, a community project that Jackie Pease and others worked on for Peloton Liverpool. Apparently wearable lights are very popular, Who knew?!

It’s all given us a good idea of what things we should be focusing our energy on in the future which is good and allowed us to connect with many other makers throughout liverpool which is always a joy. Overall we had a lovely time and we’re looking forward to next year and hopefully by then we’ll have even more new, cool stuff to show off to all of you.

by Adrian McEwen at 2022-07-04 06:00


Adrian McEwen

Weeks 871-872 - Probing and Charging Ahead

Adrian here, as you'd probably guessed from this being fortnight-notes rather than week-notes.

It's been a fortnight full of client work, on a variety of projects.

I've been bringing up a new hardware board. Working out how to get software loaded onto it and getting it to parity with the version we've been developing on a dev-board while waiting for the hardware design to be ready.

A red PCB on a white table with two probes placed onto points on the PCB.  The probes are held in place with gooseneck connectors which arch over to magnetic bases which are held steady on a steel ruler

As part of that I got to try out the new hands-free probes I bought a while back from Sensepeek. They made it much easier to test things out (these photos I staged afterwards with a My Bike's Got LED board as I can't show the actual hardware)

Zoomed in version of the previous photo showing a closer view of the probe pins connecting to points on the ESP8266 on the board

The real hardware is using an ESP32-SOLO-1 module, which only has a single-core unlike the more common (including our development hardware) two-core ESP32. Despite not needing a second core, running on single-core ESP32 modules is a path far less travelled and so getting it all building and running was more of a slog than we'd anticipated. We're through to the other side of that now, thankfully, and can crack on with developing further features.

Chris wrapped up the work on the charging station for Peloton Liverpool Cooperative. That will let them recharge the batteries for the My Bike's Got LED boards in their Disco Breastplates.

We dropped it off at their workshop, and it slotted neatly onto their repurposed-shopping-trolley mobile charging point as intended.

With that done, he's moved onto a new client project, learning how to mint a new ibal number in the process. Hopefully we'll be able to talk more about it as we get further along with it.

Among the client work we did find time for an update to My Baby's Got LED.

The WLED software that powers the board has an active community and there are regular new releases withh bug fixes and new features. The stock WLED software will work on our boards, but we have a couple of additional features (usermods in the WLED parlance) to provide better feedback. We hadn't updated our version for a little while and there was a new release — v0.13.1 — available, so we pulled the new code into our version and made a new release to use on the boards we're shipping out.

The new release has also fixed an issue with the older version where the OTA updater ("over the air", where you upgrade the software over the WiFi) wasn't working; so now you'll be able to upgrade your My Baby's Got LED software without needing a serial cable. And if you've got an older board that you'd like upgrading, but don't have a serial cable, drop us a line and we can help out.

by Adrian McEwen at 2022-06-22 06:00


Nicholas Tollervey

Pastures New

I have been a freelance software engineer for almost 17 years. In that time, as is usual for a freelancer, I have changed roles every 18 months to two years. Often I took time off between gigs to work on personal projects, write, reflect or learn something new. For instance, in 2008 I left my role as a senior .NET developer for an investment bank in London to learn Python, then reset my career as a junior Python coder three months later and never looked back.

I've relished my freedom and independence, and it has been a privilege to work on a huge variety of projects for a diverse range of companies in many different sectors. I have been enriched by my colleagues, made many wonderful friends, and learned a huge amount from folks.

Thank you everyone.

Yet change is in the air... Since January I've been in discussions with Anaconda and from today (the Northern Hemisphere's summer solstice no less!), I'm delighted to reveal I'll be joining them as a principal engineer. Long may the sun shine on this endeavour. 🌞

The very big change for me and my family is that I'm an employee rather than freelancer.

A big factor in persuading me to step away from freelancing were the folks I met in interviews and the company culture I encountered leading up to my offer of employment.

Another important factor was the nature of the work I'll be doing. I can't go into details, but I'm very excited to work with an exceptionally talented group of folks, on something that I'll relish getting my teeth into. Importantly, it is an opportunity for me to bring together and use skills from many different aspects of my background.

Finally, Anaconda understand what motivates folks passionate about creative coding: I'll still be active as an open source contributor and will continue to develop projects such as CodeGrades in my own time, as has been the case so far.

Here's to new adventures.

by Nicholas H.Tollervey at 2022-06-21 08:00


Fairphone Blog

Fairphone Easy: a smartphone subscription for a fairer future

The world needs a new business model. The electronics industry focuses on selling new devices as often as possible to make a profit, driving rapid product life cycles, overconsumption and waste. Fairphone knows that while profit is important, a fairer, cleaner future is most important of all; we must move towards a circular economy that makes the most of the resources we have. That’s why we love longevity and design longer-lasting, easily repairable smartphones – while encouraging others to embrace longevity too. After all, the longer you keep your phone, the lower its environmental and social footprint. That’s where our new business model comes in.

Introducing Fairphone Easy

We are proud to announce the launch of Fairphone Easy, a smartphone subscription service that takes our circular ambitions to the next level. We’re giving users in The Netherlands the option to use our most sustainable and modular phone yet, the Fairphone 4 (in green, with 8GB/256GB), for a fixed monthly fee, rather than buying it.

Fairphone Easy subscribers don’t need to worry about replacing their phone or about fixing it when something breaks. We take care of any maintenance or upgrades needed. Users are also rewarded with lower monthly fees if they take care of and use their phone for longer: for every year the phone stays damage free, the monthly discount increases, rewarding users for taking part in our mission for smartphone longevity.


Is Fairphone Easy more sustainable?

How is a subscription service more circular and sustainable than simply buying a phone, you may wonder? The current business model of our industry sees about 1.4 billion mobile phones sold globally. Users keep their phones for an average of 2-3 years, yet only 15% of discarded phones are collected for recycling. This adds to the growing world’s e-waste problem – and increasing CO2 emissions, as 70% of a smartphone’s lifetime emissions occur during production. The more new phones, the larger the environmental impact. These rapid lifecycles not only have a negative impact on the planet, but also on the people working in the supply chain. The longer a phone (and all its materials) are in use, the lower the impact on people and the planet. Fairphone Easy maximizes the lifetime of our phones and their materials, while ensuring a great user experience and providing a more sustainable business model for the smartphone industry.

What makes Fairphone Easy circular?

Fairphone Easy encourages subscribers to increase the lifetime of their phone by ensuring they enjoy keeping their phone in use longer. If the subscriber stops, Fairphone ensures the phone ‘lives on’ by refurbishing it and giving it to a new subscriber, or re-using the parts to repair another phone. At the end of the phone’s life, Fairphone will make sure it is properly recycled. This way it won’t become e-waste, or end up in a drawer where its valuable materials cannot be utilized.

This business model has been a long-time wish of ours; until now we’ve mostly been working on making the process of designing and producing a phone fairer for people and planet. But, after the customer buys the phone, the process is out of our hands. With Fairphone Easy’s service model, we can now make the phone’s entire life cycle fairer and more sustainable, by encouraging longer use and ensuring its re-use and proper recycling.


Want to know more about Fairphone Easy? You can find all the details here, and if you’re in the Netherlands and in need of a new phone, join us, and become part of the circular solution!

The post Fairphone Easy: a smartphone subscription for a fairer future appeared first on Fairphone.

by Ronald at 2022-06-15 09:00


Adrian McEwen

Week 870 - Generating toolpaths for milling circuit boards

Somehow it’s come back round to Chris for the weeknotes again already, those three (and a half) weeks have flown.

I’ve mainly been working on a battery charger for our friends at Peloton. We needed to connect ten 4056 charging chips to a PSU so they could charge all their My Baby’s Got LED power lights.

As it is a one off, MCQN had a lot of copper board and DoES Liverpool has CNC mills it made sense to mill a circuit board for this.

A CNC milled copper circuit board with a 4056 charging circuit and a JST connector

For the next time I need to, and possibly to help other members of the DoES community make woodcut prints, I thought it would be useful to record the various options I looked at to generate the toolpath.

For each I’m starting with an SVG of the tracks generated in Inkscape, with a footprint for the JST socket exported from Kicad.


Naturally my first approach was FreeCAD, why wouldn’t it be? I’ve written a quick overview on crearting 3d models from 2d SVG files for DoES here

It’s a work in progress and will probably need a refresh after Friday’s(?) release of v0.20.

With a 3d rendering the Path workbench can create and export the toolpath. This approach works and I’d never discourage using FreeCAD but for a job like this which is essentially only a 2d path it’s probably a little overkill.


JSCut is an online toolpath generator that imports an SVG and then has options to select the shapes within this file to generate tool operations.

By drawing a perimeter rectangle around the board it’s possible to generate a path that engraves away all the copper that isn’t track.

The trick here is to select all the internal path objects first, and then the bounding rectangle. In the drop down menu for the engrave operation is a ‘Combine’ property. Setting this to ‘XOR’ gives the desired result.

I’ve found selecting objects is a little tricky, reminiscent of the pixel perfect precision needed to complete a ZX Spectrum platformer, but with patience it can generate useful results.

Also you are probably going to need to edit the resulting Gcode in a text editor, in our case adding the leading and trailing “%” character and stripping out comments.

Krabzcam and Kiri

Krabzcam and Kiri offer a similar approach to Jscut and both have their strengths, I guess it’s down to personal preference here.

I ended up using Krabzcam but I've included them so we have the links.

On this project I decided against etching away all the copper as described above with Jscut and just profiled the paths using Krabzcam.

One eccentricity I spotted with this tool was the creation of some extra drilling operations when I added the operations for the through hole components.

I suspect it was adding a drill operation into every enclosed shape found and not just the circular holes I’d intended.

I am very prepared to admit this was user error and not a fault in the software, but I couldn’t find the solution. This was easily fixed in NC Viewer though.

HT to Jo Hinchliffe for the steer on the various web CAM tools.

Ten 4056 charging circuits connected by a milled copper board recharging batteries

Along with client work Adrian took part in an epic biking expedition in North Wales.

Nicki will be back to weeknotes after her European festival adventures.

by Adrian McEwen at 2022-06-07 06:00