The W3C has a page with the original WWW proposal from Tim Berners-Lee. One of the downloads says
Microsoft Word
Apple Pages
Apache OpenOffice
![]() |
LibreOffice
CERN PDF
Emulation
![]() |
The W3C has a page with the original WWW proposal from Tim Berners-Lee. One of the downloads says
![]() |
![]() |
I have a couple of fancy Dyson fans that do cooling (or at least blowing air around) and heating. They use a little IR remote control that attaches to the top with magnets. One of the remotes decided to stop working; its failure mode was: consume an entire CR2032 battery in a few days. Apparently, I'm not alone in experiencing this problem.
Before seeing if I could repair it, I made a backup of the IR codes from the remote using my Flipper Zero:
Dyson were good enough to replace the remote but I began to wonder why this was happening and so I opened it. Here's the little circuit board inside. The pads are the underside of the buttons.
Using a multimeter I discovered that the resistance across the battery terminals was 2.5kΩ when I was expecting it to be very, very high or even infinite.
And that the remote control was drawing 1.1mA when doing nothing.
A quick check of Ohm's law gives I = V/R, I = 3V/2500Ω, I = 1.2mA. Close enough.
The capacity of a CR2032 battery varies a lot from manufacturer to manufacturer but seems to be between 150mAh and 250mAh (roughly). At 1.2mA constant current that's between 125h and 208h to drain the battery (about 5 to 7 days).
But why was there 2.5kΩ across the battery? The culprit is the capacitor C1 which is in parallel with the CR2032. It's decided that it would prefer to be a resistor! Sometimes capacitors fail like this.
Aside: why is there a capacitor in parallel with the battery? Almost certainly because it's the capacitor that powers the remote when a button is pressed. Most of the time no button is pressed and the capacitor will sit charged fully. When a button is pressed a load is applied to the battery/capacitor combination and it's the capacitor which will provide the needed current. This will likely prolong the life of the battery as it will slowly charge a capacitor and not have to provide a sudden larger current when a button is pressed.
I didn't have a spare surface mount capacitor around so I simply removed C1. With C1 removed there's no current drain when idle and the remote works fine. Unfortunately, Dyson didn't design the remote to be opened and so the case didn't survive. Also, I'm sure I've shortened the life of the CR2032 battery by removing C1, but at least it'll last longer than a week!
I fixed the remote up so I could use it by printing a picture of what it should look like and taping the paper into place. You may also notice the small felt pad. That's there to make it pleasant to hold prevent you from being stabbed by the mechanism that connects to the +ve terminal of the battery.
I was doing some clean up on my main laptop and realized it had been a while since bought a new computer. Turns out it was a lot older than I thought:
But there is one thing I hate about it: the bloody Touch Bar and its phony ESC key. I thought I'd get used to the Touch Bar but it turns out I didn't.
This is the longest I've ever owned a laptop without upgrading and I think that comes down to a few things. Firstly, I spend most of my time on this machine either in a web browser, or using a terminal to SSH to somewhere else. Secondly, the most powerful program I tend to use on it is Final Cut Pro but my videos tend to me short and not particularly complicated to output.
So, a combination of Apple's hardware and software holding up and a lot of my computing needs being offloaded to the cloud means this old machine is banging along nicely.
PS If you're interested in a really vintage machine, read about my complete restoration of an IBM ThinkPad 701c (the one with the butterfly keyboard).
Eleven years ago I blogged about a solution to the "Never Gonna Give You Up" compression code golf challenge: what's the smallest program that output the lyrics of Rick Astley's phenomenon? My solution was 589 bytes of Perl that looked like this:
$b=<<E;
gÐngÑveÒe >ÓthÔouÕo Önd× yÕØÖloÙiÑ Út's Û(OohÜe'reÝ
YÕÞ knowß,ÐivàÚoá I'm â tÖsãtell ä a× åØ æeåçay it
è äértØêß ëÐonna ì oÔer íæupîmakeæïÛbeen ðëÔÓñÕ'rÓtoÖòeî)
óeÒrìô
We'Òßõ
NôöóÜ÷ôgiÒø howâfeeliÑ
ù
Nøú÷)ú, nø
(Givû
I just wannaéyÕùGotta ïu×ersta×
þü eachífor sÙÑÞr hearðachÚbut
YòshyãèInsidÓwÓboÔëwhaðgoán
WeñgamçwÝìplèýúîöletædownörun arÕ×ådeseêöïcryösayÐoodbyeöäa liçhuê
þWÝ nÖstraÑers tÙÒÞñrulesåsÖdÖI
A full commitmenÛwhatâÔinkáfÞ wÕldn'tÐet Ôis from anyíguyüõnýA×
ifæask meùDon'témÓyòbli×ãee
þþ
Üà÷àûûóõýüþþ
E
map{($a,$b)=split($c=chr,$b,2);$b=~s/$c/$a/g}(208..254);print$b
The $b variable contains a dictionary where the index is made up of ASCII characters above 128 and the single line of Perl code at the end substitutes the dictionary entries until the full lyrics are output.
I wondered about using the same technique on the "12 Days Of Christmas" as there's a lot of repetition but the song is longer. "Never Gonna Give You Up" is 1,872 bytes and "12 Days Of Christmas" is 2,386. Using the same technique results in this 479 byte Perl program that outputs in the "12 Days Of Christmas":
Just over a year ago there was a discussion on Hacker News about the IBM ThinkPad 701c (the one with the lovely folding "butterfly" keyboard). In particular, it was a discussion about the incredible web site 701c.org which gives very, very detailed instructions on how to dismantle, restore and preserve those lovely machines.
In the discussion a chap said: "I have two in non-working condition, pretty beat up. If I can make someone really happy and they want to restore them, feel free to send me an email. I wanted to do it myself for the last 10 years it so but realistically know I won’t. I’m based in NL." And I figured, he's not too far from me, maybe I could get them and create one restored machine from them.
A year later my fully restored (and memory upgraded!) IBM ThinkPad 701c is finished. Here it is:
It was a long journey to get here. I've written before about the painstaking operation to repair a damaged ribbon cable for the pointer.
This blog post is a deeper dive into going from these two machines (see below for representative pictures of the mess they were in) to the picture above. Everything I know about restoring this machine came from the 701c.org website and a couple of emails with its creator. Without him this would not have happened. Thank you!