2025-12-28

If you care about security you might want to move the iPhone Camera app

There's a quirk in the iPhone Camera app that can drive a security conscious iPhone owner crazy: if you touch your finger on the Camera app icon without actually opening the app, the camera starts operating. That causes the little green dot indicator on the iPhone to turn on and then after a few seconds disappear. This can easily make a security-conscious iPhone user worry that some app is nefariously using the camera.

Because touching the Camera app icon without opening the app is enough, it's easy to activate the green dot while swiping between screens or even just holding your phone. This was driving me nuts and I thought some app was using the camera when I didn't want it to.


I enabled Apple's App Privacy Report (under Privacy and Security) in Settings and, sure enough, it confirmed that the little green dot was happening because the camera was being used by the Camera app. Merely swiping while accidentally touching the Camera app's icon was enough to add an entry in the App Privacy Report.


The solution was moving Camera app away from where I was liable to brush it with my fingers or thumb. That reduced the errant green dots to almost zero and reassured me that nothing untoward was happening.


One of the big problems in security is people get used to odd behaviour they can't explain and end up overlooking a real problem masked be the things that "always happen". The accidental green dots could have been hiding actual nefarious use of the camera. Better to be tidy and eliminate the false positives.

(I previously used the term "hover" for what I was experiencing and that was causing confusion. This happens if you touch the Camera app icon without actually opening the app.)

2025-10-20

A couple of handy KNX gadgets

KNX is a European standard used in home automation. It's primarily based around a twisted pair bus transporting DC power (30V) and data at 9600 bits/second. Devices attached to this KNX bus draw power for their operation and receive and send messages called telegrams. The devices are typically things like switches, relays, dimmers, HVAC interfaces, small displays, and blind/shutter controllers.

If you're working with a KNX bus you connect a computer to it via bus interface. These are commonly either a USB interface or an Ethernet/WiFi connection. Either way the computer is able to send and receive telegrams and monitor the bus for debugging. This interface is also used for programming the various KNX devices on the bus (for example, associating pressing a button on a particular switch with a particular light circuit going on or off).

Sometimes it's useful to program devices "off the bus" (i.e. away from the actual installation). For this purpose I put together the simplest of minimal KNX buses: a power supply to inject the necessary 30V, a USB bus interface, and a dangling KNX connector (the red and black thing in this photo) that can be plugged into the device to be programmed.


Normally the power supply (on the left) would be wired in permanently, but here I am just using a standard power cord for desktop programming. The USB bus interface is in the middle. There's nothing special about these devices, there are hundreds of KNX manufacturers that interoperate; I just happen to be using an ABB power supply and ABB bus interface.

This works great: plug the device to be programmed into the connector on the right and hook the PC running the KNX programming software ETS into the bus interface via USB. And apart from the two ABB boxes, all that's needed is a power cord, three WAGO 243-211 connectors, and some twisted pair. I used random wires that were lying around, in the real world of KNX installations you'd use proper shielded twisted pair cables!

The other gadget I built is this custom PCB (possibly the world's simplest PCB):


It just connects four KNX terminals together in parallel. The pins at the top are the standard WAGO 243-131 pins compatible with the WAGO 243-211 connector. When soldered together it looks like this:


In conjunction with a bus interface it lets you tap into an existing KNX bus if there's no bus interface present. Or if it's just more convenient to connect where you are working. You simply unplug some device from the bus, plug the bus into this PCB and then plug the device into the dangling connector.

The bus will work normally and you'll have access for debugging and programming. (Note: you can do this because the KNX bus can be a tree and so it's acceptable to plug in a spur of a couple of devices to the main bus line).


The PCB design is based on Matthias Kleine's KNX Distributor; my version can be found here. (If you build this you'll also need Matthias Kleine's footprint library).

2025-10-01

Protecting your (my) passport from liquid damage

After an unfortunate incident involving my passport and some alcohol-based hand gel in my bag, I decided I needed some sort of waterproof passport protection. But searching around for "passport wallets" mostly doesn't result in anything waterproof and all the wallets are large, bulky or ugly. But there is a really simple solution.

A 4 mil ziploc bag of the appropriate size. 

What's the appropriate size? Well, there's an ICAO standard for machine-readable passports which uses the ISO/IEC 7810 ID3 size for the "passport booklet" (what you and I would call a passport).


So, that's 125 x 88mm. Happily, a pretty common ziploc bag size is 10 x 15cm (or 100 x 150mm, if you prefer). That gives you an extra 12mm horizontally (so the passport will slip inside) and 25mm vertically (space for the passport and the area with the ziploc closure).

I mentioned "4 mil" above. Switching to non-metric measures (which seem common for the thickness of plastic) that's four 1/1000s of an inch (note it's not "millimetres", it's "mils"). You also sometimes see plastic measured in microns (which is 1/1000 of a millimetre). 

4 mil bags have a sturdiness to them that thinner plastics do not have. They are sometimes described as "extra thick". In the UK, these folks (not an affiliate link) sell through Amazon and have a variety of bags of the right size and thickness.

And now my (new) passport is carefully protected.


Aside: it turns out I actually once owned a waterproof passport wallet. I was gifted a SÜLgear passport wallet and lost the waterproof liner. The kind folks at SÜLgear pointed out that the waterproof liner was simply a 4" x 6", 4 mil ziploc bag (or, for those of the metric persuasion, 102 x 152mm).

2025-09-22

Is a movie prop the ultimate laptop bag?

A while back I attended a Cloudflare board meeting and carried my laptop in a brown paper bag from a grocery store. This elicited a few comments about needing a real bag. But I've often carried my laptop in inconspicuous bags. For me, the ultimate laptop bag is one that looks nothing like a laptop bag; it should look like nothing special at all. 

Unhappily, grocery bags are not very strong, but there is a solution.

Movie prop grocery bags like this:

Looks like a classic brown paper grocery bag, but it isn't. It's actually a silent prop made for a film set where the noise from a crinkling paper bag would overwhelm the dialogue. 

Instead of being made from paper, it's made from fabric and is more robust then an actual paper bag. It's also nearly silent (well, much, much quieter than the real thing).

It's also the ideal size for my trusty and vintage MacBook Pro. Especially when it's in its sleeve.


So, is a movie prop the ultimate laptop bag? No, clearly Betteridge's Law of Headlines applies, but it does fit my criteria for discretion and not being ostentatious

2025-09-07

Ex-X

I did have an X.com (username: 6a6763) account and I got bored of it so I deactivated it today. 

2025-07-21

Ode to the anti-Mac: Panasonic Toughbook FZ-40

I own two computers that I use regularly. The first is my main machine, a rather old Apple MacBook Pro, the other is a Panasonic Toughbook FZ-40. They are polar opposites. Where the Mac is designed with tightly coupled software and hardware and is all smooth curves and delicate design, the Toughbook is designed to be used wearing gloves, outside and in rough situations that would damage the Mac. 

Its built-in handle is a sign that this thing is heavy and robust.


And where the MacBook has a feeble port selection, my Toughbook has VGA, Serial, two Ethernet sockets, HDMI, a micro SD card, SIM card, USB-A (SS5 and SS10), head and microphone jack, Thunderbolt and USB-C, and built in GPS. There's also a smart card reader.

It feels like it's designed to do stuff where connecting to the real world is involved. 

The camera has a physical cover and all the ports are protected by locking doors.

There are also some special Panasonic buttons (P1 through P4). P2 drops you into "Concealed Mode" which instantly cuts all the light coming from the machine.

P3 drops you into "Night Mode" for all those moments where your submarine is being hunted by the Soviets and you need to preserve your night vision to be able to see the instruments ready. Sadly there's no "one ping" option.

The machine runs Windows 11 (which I don't love) but a lot of industrial software is only available on Windows (along with things like the LEGO MINDSTORMS software which was weak on the Mac and full-featured on Windows). 

I may be the only person in the world programming LEGO on a Toughbook with the option to drop into Night Mode during, uh, LEGO emergencies. But, hey, LEGO worked for Iron Man.

And then there's the red F11 key with a raised bump around it to prevent accidental activation.

2025-07-18

Pimping my Casio: Part Deux

Close to three years ago I wrote about using Oddly Specific Objects' alternate "motherboard" to modify a classic Casio F-91W watch: Pimping my Casio with Oddly Specific Objects' alternate motherboard and firmware. That blog post goes into the detail of swapping out the guts of the Casio and building and uploading the firmware. 

Happily, Oddly Specific Objects is back with a "Pro" version of their alternative Casio internals which now features an accelerometer and an alternative LCD. The original Sensor Watch used the existing Casio LCD display but the custom LCD allows for more complicated text to be displayed on screen. It's not a dot-matrix display so there are lots of limitations but it's still a fun upgrade.

Also, the Sensor Watch Pro, as it's called, requires no soldering (unlike the original version). Here's one I prepared earlier (that is a Casio F-91W with new internals):


You can see the new display in action there showing the day as FRI. As with the original Sensor Watch there's a browser-based emulator that uses emscripten to get the watch running on your computer. This is pretty important because flashing new firmware to the watch requires dismantling it.


Since there's no soldering the process of upgrading your Casio is simply take it apart and put back in the parts that came in the kit (along with a small piece of metal that's transferred from the original Casio watch to make the battery connection):


Since I bought the optional accelerometer add on it's necessary to put in place a little piece of Kapton tape (you can see if covering the five pads on the image above) and the insert the accelerometer board itself:


The five vertical traces at the top are the micro USB interface used for flashing the firmware. 


I modified the firmware to remove Imperial units and 12 hour clock (which I never want) and to choose my own selection of screens (I added the tally, accelerometer and light sensor screens).

The complete sequence of commands needed to build the firmware was:

brew install --cask gcc-arm-embedded
git clone https://github.com/joeycastillo/second-movement
cd second-movement
git submodule update --init --recursive
make BOARD=sensorwatch_pro DISPLAY=custom

And then to upload to the watch you connect the micro USB, click the tiny switch on the back twice very rapidly and a volume called WATCHBOOT appears on your machine. You can copy the firmware over to the watch with make install

To run the emulator you build with emscripten:

brew install emscripten
emmake make BOARD=sensorwatch_pro DISPLAY=custom
python3 -m http.server -d build-sim

And then visit localhost:8000/firmware.html in your browser.

2025-06-25

The discreet charm of the infrastructureless

Early in the morning in a European city, I awoke and wondered for a moment where I was. The room was totally black apart from a small glow from the face of my Casio Lineage watch lying on the bedside table. The luminous dial had absorbed sunlight during the day and was now giving off gentle light in the night; enough brightness to read the time.

Infrastructureless #1: sunlight + chemistry = glow in the dark.

The watch had also absorbed sunlight through its face during the day to recharge its battery. In all the time I've owned this watch I've never seen the battery drop below the what Casio calls HI (there are levels MID and LO but I'd only seen MID once when I took the watch from its original packaging)

Infrastructureless #2: sunlight + semiconductors = electrical power.

Clicking the top right button to illuminate the face further I could see the small LED display showing the local time in the European city (the main hands show my home time zone). And on the LED display a little black rectangle under RCVD indicated that somewhere in the night (it turned out at 02:04) the watch had picked up the signal from the DCF77 transmitter in Germany and set itself.

Infrastructureless #3: radio = correct time.

OK, DCF77 isn't totally without infrastructure, but one of the reasons I became a radio amateur is lack of infrastructure. Sure, you're able to read this because of the Internet but it's an incredibly complex system: layers and layers of technology and cooperating entities just so you can read this. 

On the other hand, radio amateurs just send out electromagnetic waves and talk to each other, no intervening infrastructure (well, ok, maybe you can count the ionosphere as infrastructure allowing long distance reception). And that's what DCF77, and the other five transmitters the Casio can receive in the US, UK, China and Japan, are doing: sending waves into the night to be picked up and decoded by whoever is listening.



Also, I'm just fascinated by radio propagation: my ancient Sharper Image clock sometimes picks up the US WWVB in Portugal.

2025-06-10

Low-background Steel: content without AI contamination

Somehow I forgot to blog my site: https://lowbackgroundsteel.ai/. I created it back in March 2023 as a clearinghouse for online resources that hadn't been contaminated with AI-generated content. 

Low-background Steel (and lead) is a type of metal uncontaminated by radioactive isotopes from nuclear testing. That steel and lead is usually recovered from ships that sunk before the Trinity Test in 1945. The site is about uncontaminated content that I'm terming "Low-background Steel". The idea is to point to sources of text, images and video that were created prior to the explosion of AI-generated content that occurred in 2022.

It currently contains pointers to a Wikipedia dump from prior to the release of ChatGPT, the Arctic Code Vault, Project Gutenberg, and more.

If you know of other sources of non-contaminated content plus submit them!

2025-06-01

It was time for a dim bulb current limiter

One of my Minitels (the one that I modified a few years ago to run new firmware) started having power supply problems: the LED was on but nothing else was working. I suspected that the main power/CRT board needed new capacitors and so I recapped it:


Alas, despite some of the older capacitors measuring poorly compared to their specs, that wasn't the problem and so I need to go deeper. The only problem is there are a ton of nasty voltages on this board. Notably the 230V AC input and then the tens of kilovolts generated for the CRT.

Also the board seems to have a short somewhere.

So, it's time to a dim bulb current limiter. Which I didn't have. So I made one. Here it is:


It's a remarkably simple device which plugs into a standard power outlet (230V AC) and puts a lightbulb in series with one of the connections. The two wires coming in then go to a standard socket. Thus you plug your device (e.g. my Minitel) into the socket and the lightbulb limits the current.

These things were super common in the past for anyone working with mains voltages.

Works great if you have an incandescent bulb at, say, 100W. A 100W bulb on 230V AC would have a current running through it of I = V/P -> I = 100/230 (approximately 430mA). Limiting the current that way means you're less likely to damage the device you're working on if there's a short. Naturally, using a different bulb would give you a different current. 60W would give you around 230mA. 150W around 650mA. 

As the Minitel's input fuse is 630mA, my current limiter will keep things well under its blowing current. Also, if there's a complete short then the bulb will glow brightly. 

Here's a look inside:


Power comes in at the top, and goes to a DPST switch. I'm using DPST because it's not easy to know which input wire is live and which is neutral because the European Schuko/Type F plug/socket is not polarized and I like knowing that when I switch something off, it's off! And the DPST has an integrated lamp that gives me a visual reminder that it's on.


Because local power sockets aren't polarised, the power strip I am using for my bench gear uses DPST switches for each socket. It's relatively hard to find one that does this (and says it does). Thanks, Brennenstuhl!


But I digress.

To make my dim bulb current limiter do the right thing, I need a 100W incandescent bulb. These have been on their way to oblivion in the EU since 2009 and were, I believe, eliminated for home use in 2016. It is still possible to buy them, labelled for "industrial use", from some locations.
 

So, that limits the current and protects the device I'm working on, but what about protecting me? For that, I pair it with an isolating transformer. If you're not familiar with this then here's the basics. In a house the neutral line is connected to ground (typically at the point at which power comes into your house). This means that the 230V coming out the live wire is relative to ground. If I touch it the power will flow through me to ground. 

The isolating transformer eliminates the link between live, neutral and ground. It's still outputting 230V but that voltage isn't relative to ground and so I won't get a shock if I touch one of the wires coming from the transformer's socket. Of course, touching both would send 230V through me.


So, having built that I can go back to understanding why my Minitel isn't powering on.

2025-04-21

Just one more calculator, bro, just one more, I swear it's the last one


I'm not much of a collector of things. Long ago I decided that on the retro-computing front I would not collect any machines that weren't very significant to me. So, my "collection" consists of a KIM-1, Sharp MZ-80K, Research Machines 380Z and 480Z, BBC Micro Model B, an IBM ThinkPad 701C, and a Minitel (well, two).

But calculators are where I come closest to not being able to resist. Calculators are there for you. They don't change UI because of the whim of some product manager. They don't need updating because their underlying OS is on some new, crazy version. Nothing gets in the way of you using them: no popups, enticements to buy some extra thing, no notifications, nothing. In an insane world, they are the sanest choice.

I've written in the past about restoring my Rockwell 8R and Commodore P50 (and a fun discovery that Sir Roger Penrose had the same calculator and wrote the same program as me: mine was faster, his more elegant (which is probably some sort of metaphor)). And I have my Casio fx-3600p which I used extensively at school.

I also have an original HP 16C (the one for programmers).

Some time ago I discovered a company called SwissMicros that makes modern replicas of classic HP calculators. I bought two of them. I have their version of the HP-42S:




But recently they started making a credit card-sized version of the HP-16C and I was unable to resist ordering one. And so, after dealing with Portuguese Customs, I got this:


And now I have full size and card size side by side:


I'll try to stop collecting calculators there.

2025-04-10

The Via Verde Stick

Portugal has an incredibly well executed and efficient system for collecting road tolls called Via Verde. A small transponder in the car either collects a toll at an automated toll booth or, on some motorways, every few kilometres without slowing down at all.

Via Verde can also be used to pay for parking in many locations. 


When entering a car park where Via Verde is an option there are two ways it works: in some car parks it's possible just to wait a few moments for the gate to decide that you've opted for Via Verde and not a ticket, in others you have to press a button.


The parking above has three options: use a card (for residents or people with a subscription), blue button for a ticket, and green for Via Verde. To alleviate difficulty in pressing the green button I created the "Via Verde Stick" from a short length of wooden broom stick handle, some green spray paint, and two felt floor protectors.


The felt floor protectors are on both ends so that it doesn't matter which way the stick is oriented.


I do wonder what the driver behind me thinks when a long, bright green stick appears out the window but...

2025-03-31

Debugging Lotus 1-2-3 by fax

There isn't a lot to this story beyond the fact that in around 1990 I helped debug someone's Lotus 1-2-3 set up via fax. But it's a good reminder of how important the Zeroth Law of Debugging is (see below).

Without some sort of online connection with these folks, and with transatlantic phone calls being very, very expensive (I was in the UK, they were in the US) fax was the obvious answer.

I was reminded of this when I came across the actual fax itself:


What I asked them to do was give me the output of /ppomr. Hitting / in 1-2-3 started the menu system and each letter took you down a submenu until you hit an actual menu item. /ppomr is /Print Printer Options Margins Right (read all about it in the Quick Reference) and so I was asking for the size of the right margin when printing. 


Here's what that looks like in action:


And then I instructed the person on the other end to alter the left margin with /ppoml (/Print Printer Options Margins Left). I also told them if they wanted a change to the page headers I'd need to "send them a disc" (i.e. mail a floppy disc to the US!)

If you are going to debug anything you need to tighten the loop between trying something and observing the output of your change. This should be the Zeroth Law of Debugging: get the smallest/fastest test case so you can iterate.

Worst case send faxes across the Atlantic. 

2025-02-13

I have come to loathe acronyms

Unless they are widely, widely known they make communication worse. And they have a tendency to make the writer seem pompous, or a member of some special clique, while making a reader who doesn't know the acronym feel foolish. 

They are the opposite of clear communication, and are often accompanied by unclear, complex language.

The writer's goal (whether of a book, an email, or whatever the hell we call a tweet now) should be to be understood. Acronyms are an impediment to that and are often more difficult to read or say than actual words. 

And don't fall into the awful trap of defining an acronym in a document and then using it later. That's a substitute for using plain language. Always use plain language.

Unless your goal is to be misunderstood. 

2025-02-10

Archiving hardware projects

From time to time I do some project involving old hardware that requires connecting it to a modern computer. For example,

    Getting the KIM-1 to talk to my Mac

    Resurrecting a Dataman S4 PROM programmer

    Ripping old mini DV video tapes on a Mac

And I've come to the conclusion that archiving the related hardware is important. For example, I got this Dataman S4 talking to my Mac using a few different cables. I bought a set of cables and archived them in a bag for the next time I need to do this.


The Dataman S4 project required three things: a USB-C to USB-A adapter, a USB-A to RS-232 adapter and a 9 pin to 25 pin serial cable. 


These things are fairly inexpensive making it viable to archive them. Now I only have to worry about the drivers being available!