Welcome Visitor:


How I cross-compile a fat binary cross-compiler for OS X Big Sur

I have been tasked with creating a new compiler for chipKIT. One of the big things this compiler must do is work on new versions of OS X. That means Big Sur. And that means supporting both x86_64 and arm64e (Apple silicon) architectures.

Now, compiling for x86_64 is not difficult - you just need an x86_64 Apple computer and crosstool-ng. And similarly if you want to compile for arm64e you just need an Apple-silicon based computer and, again, crosstool-ng.

Big List of Arduino Board Manager URLs

I have started compiling a "big list" of all the Arduino board manager URLs.

This is only the beginning - please leave suggestions for more in the comments below.

Power LED Driver Board

To add to the new Pulse Rifle ecosystem I have designed (and ordered from China) a tiny Power LED driver board. This will take the firing pulse output from the pulse rifle or smart gun boards (EX connector) and use it to control a high power LED (the MOSFET is actually rated up to 10A, so kind of overkill, but we don't want it getting hot if we can help it...).

M51 Counter

Assuming my new M41A counter with sound works properly when the prototype boards arrive from China (they have been made and dispatched, I'm just waiting for them to arrive then I can start building and testing) I guess my next job will be to design and build an M51 smart gun equivalent.

On the drawing board: Arrduino Prototype PLUS+

I am just finishing off a new design for a better prototyping system for the Arduino.

You've designed your project, and got it all wired up on a breadboard. You'd like to make it a little more permanent, so you can mount it into your project.

Now, you could take an Arduino and put a prototyping shield on top of it and wire everything in there, but that's somewhat wasteful, and anyway a prototyping shield doesn't give you much room to play with. And it's unprofessional as well.

Pulse Rifle Counter with Sound

I have been spending the past couple of days prototyping up a new version of my Micro Pulse Rifle (uPR) counter board. This one has sound.

I had a brainwave the other day. Instead of designing a two-unit system as I had been planning - a really powerful sound board coupled with the less powerful counter board, I thought "Why don't I try and tweak the design of the existing counter board to make it give sound?" - so I did.

My Pi 4 Experiences

The Pi 4 has been released, found wanting, redesigned, and re-released (in typical Raspberry fashion). And finally I have my hands on one. So, do I think it's any good?

Well, yes and no.

What is it with the ESP8266?

ESP8266EX ChipThe ESP8266 is everywhere now. Whenever you buy some cheap Chinese (or even expensive non-Chinese) IoT device, like a WiFi power switch, a WiFi connected lightbulb, or whatever, you can pretty much guarantee that inside will be an ESP8266.

Xtensa have pretty much got it made.

But what is it that's so great about the ESP8266 that's got everyone using it?

More ESP8266 Hacking - LOHAS LED

LOHAS LED LampYes, I have hacked another ESP8266-based device. This time it's the LOHAS WiFi Smart LED lightbulb.

Common Arduino Errors and Warnings

This is my attempt to collate and explain the most common errors and warnings you get when compiling code for the Arduino and Arduino-like boards.


Expected primary expression before '.' token

This is usually because you used a class name instead of an instance of a class. One example would be if you created an instance of the LiquidCrystal class:

LiquidCrystal lcd(4, 5, 6, 7, 8, 9, 10);

And then used something like:


instead of:

Securing Transmission-Daemon

So you have some large files you'd like to distribute. Maybe you're the author (or compiler) of a custom distribution of Linux. Or maybe you make videos, and you'd like to allow people to download MP4 files to watch off line. What better way than using BitTorrent for this? It's distributed, it's fast, it's easy to manage.

And what better system to use than Transmission, the default BitTorrent client that comes with most versions of Linux?

Windows versions ranked by usability

This is my list of windows versions that I rank by my opinion of their usability and abilities "of their time". That is, not ranked by comparing them to current standards, but comparing them purely by how they operated in their hayday. This is purely my opinion, and you will most likely disagree with it.

Personally I don't have much respect for Windows, but it did have a few highlights during its time. So here goes. I award the number one spot to:

Free, quality, wire

No, I'm not offering you free wire. Just telling you a good source for free wire.

With the whole world going HDMI these days, there are plenty of obsolete SCART cables around. You probably have some in your attic or garage, mouldering away in a box.

Strip them down. That's right - remove the connectors and the outer rubber casing, and bingo - you have a great selection of wire. Lots of different colour wires, usually in the 22-28 AWG range, and usually pretty high quality as well. And on top of that there's normally a good few lengths of shielded cable too! Bargain!

Filtering WiFi Noise

I recently needed to connect an ESP8266 board up to an audio control and processing board I was working on. And as you can guess the noise was horrendous. Kind of like when you leave your mobile phone near a radio and someone calls you. Pop, pop, crackle, pop pop...

So, some filtering was in order. In the end I came up with this circuit:


The values can probably be refined somewhat, but I just used components I had lying around.

Serial test sketch

This is a little sketch that I find useful for testing the serial communication on an Arduino-like board. It not only sends data of its own accord (millis() every second), but also echoes back what it receives. That way it will test both transmission and reception, so if one is failing you can easily see.

Hacking the SWA1 Smart WiFi Power Switch


The SWA1 Smart WiFi sockets are great cheap WiFi controlled sockets that you can get on Amazon. Not only are they very convenient, but they are eminently hackable. Hackable to the extreme.

Converting a Commodore C16 Keyboard to USB

Dave "The 8-Bit Guy" Murray recently bought a whole batch of Commodore Vic 20 motherboards and C16 keyboards cheap. Don't ask why. However, he's selling them off cheap, so I decided to snap up one of the keyboards.

Arrays? Pointers? What the C?

Arrays and pointers are always a problem for newcommers to C and C++ programmers. Especially if they have come from higher level, more "dumbed down" languages like Java or Basic.

You may think that an array is an array, right? And an array in one language works the same as an array in another language, cus they're, like, arrays, aren't they? Well, you couldn't be more wrong. Certainly when it comes to arrays in C and C++, anyway.

I guess you're probably used to working with arrays like this (pseudocode):

Expected } at end of input error

A common problem, and one that can cause a new programmer to pull their hair out.

However, it's a problem that always has a simple solution, and with the right tricks it's also easy to find where the problem lies.

Let's take the following little code snippet, which throws up this exact error: