💾 Archived View for duncan.bayne.id.au › feed.xml captured on 2024-08-18 at 17:52:53.
View Raw
More Information
⬅️ Previous capture (2024-05-12)
🚧 View Differences
-=-=-=-=-=-=-
<?xml version="1.0" encoding="us-ascii"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>duncan.bayne.id.au</title><link href="gemini://duncan.bayne.id.au/"/><updated>2024-01-07T18:02:01+11:00
</updated><id>gemini://duncan.bayne.id.au/</id><generator uri="https://metacpan.org/pod/XML::Atom::SimpleFeed" version="0.905">XML::Atom::SimpleFeed</generator><entry><title>Why Gemini?</title><link href="gemini://duncan.bayne.id.au/why-gemini.gmi"/><updated>2024-01-07T18:02:01+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/why-gemini.gmi</id><summary type="html">Back in June 2022, I decided that the Web wasn't fun any more. That's not to say that the Web wasn't - and isn't - an amazing place to be. Online gaming, shopping, WebRTC video calls, ... there's so much it can do.
- But* it's now a triopoly. Google (Chrome), Apple (Safari), and Mozilla (Firefox) are the only three games in town. And courtesy the W3C caving to pressue to standardise DRM, you'd better be running on Linux, macOS, or Windows if you want your DRM-encrypted media 🙄.
Gemini feels like the Web of the mid 1990s. Context created by individuals, rich (if occasionally barmy - there's a lot of anarchist / anti-capitalist stuff), and interesting.
=> /.static/images/slashdot.png Slashdot, circa May 1999
## Getting started with Gemini
If you're new to Gemini, the best place to start (IMO) is kennedy.gemi.dev. It features search, archives, and Gemini hosting tools (e.g. capsule health checks).
=> gemini://kennedy.gemi.dev/ 🔭 Kennedy: Search Gemini Space</summary></entry><entry><title>Door Timer</title><link href="gemini://duncan.bayne.id.au/projects/door-timer.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/projects/door-timer.gmi</id><summary type="html">One of the companies on which my family relies has a problem: people keep leaving their front door open. I've offered to make them a simple buzzer to alert them to a door that's been left open for more than a minute.
I'm taking this opportunity to brush off my analog electronic skills, which have almost entirely rusted since I was a child. I could just buy an off-the-shelf item, but think it'd be more fun to build it from scratch :) I'll keep a detailed build log on this page ...
## 2014
### Sat 28 June
I've assembled the veroboard; I'm particularly pleased with my design which fits comfortably on the cut-out board, and also involves no track breaks except for those under the IC.
=> /.static/images/veroboard-assembled.jpg Assembled circuit on veroboard
I used an hacksaw to cut the veroboard to fit the enclosure (and around the piezo buzzer). I then used a fine point on a dremel to clean between the tracks at the point of the cut, as the saw blade had torn the copper about and bridged several of them.
### Wed 25 June
The enclosures arrived today. I'm very happy with the manufacturing quality for such a low-cost item. However, and this is entirely my own fault, the enclosures are too shallow for the 1000µF capacitor I selected for the circuit. So I've increased the resistance from 47kΩ to 470kΩ, and decreased the capacitance to 100µF using a lower-profile axial lead capacitor.
Here is a photo demonstrating the height problems:
=> /.static/images/capacitors-enclosure.jpg Capacitors clearly too tall for the enclosure
... and here is the fifth prototype, featuring the new components:
=> /.static/images/fifth-timer-prototype.jpg Fifth prototype of the timer
I'm fairly sure the replacement capacitor dates back to my Funway 1 days as a child. The leads needed some cleaning up, but the timer tests out at ~ 59 seconds so I presume they're still good.
=> http://web.archive.org/web/20180301075309/https://tronixstuff.com/2010/10/13/australian-electronics-nostalgia-funway-kits/ DSE Funway Into Electronics kids
Some additional good news is that the reed switch magnets are very strong. This means that I can mount the reed switch entirely inside the case, and the door-frame-mounted magnet will still switch the device from more than a centimeter away. This will allow for a much cleaner and more robust assembly.
### Tue 24 June
The reed switches arrived - nifty three-lead units which can be used in either NO or NC mode. Here's the fourth prototype, with the power routed through the reed switch:
=> /.static/images/fourth-timer-prototype.jpg Fourth prototype of the timer
Once installed, this will mean that the unit draws no power at all when the door is closed. When the door opens and the magnet moves away from the reed switch, the switch will supply power to the timer which will in turn start the countdown.
### Tue 17 June
I've ordered two of the enclosures pictured below. It's now a matter of waiting for the enclosures, reed switches and bezels to show up so I can determine how large my veroboard can be. That will in turn determine how I lay out the circuit. I anticipate at least a week's wait at this point.
### Mon 16 June
Found a nice enclosure from plastboxuk.com (now defunct) that should work. It features a separate 9V battery compartment, which is ideal.
Here is the third prototype, complete with flashing red LED to indicate that the timer is running:
=> /.static/images/third-timer-prototype.jpg Third prototype of the timer
I've measured the current at < 6mA when the buzzer is not active, and < 20mA when it is. The readings fluctuate a fair bit due (I think) to the flashing of the LED, but running with the maximum figures I should get > 90 hours out of Duracell 9V, or 29 hours if the buzzer were operating constantly.
=> http://www.electro-tech-online.com/threads/what-mah-value-does-a-standard-9v-battery-have.8873/ A thread on the mAh rating of 9V batteries
That's assuming that the circuit would function normally with a nearly depleted battery. I'm not sure if it would (I doubt the voltage and / or current supplied would remain high enough) but it suggests I'm on the right track by powering it from a 9V battery.
I've also ordered some chrome LED bezels, to make the whole thing look nice. Finally, I've ordered some reed switches to detect whether the door is open.
_Edited to clarify_: Armin has pointed out that wasn't too clear. In this design the power is routed through a magnetic reed switch, so it only draws from the battery if the door is open. So the 90 hours I mention represents 90 hours with the door in an open position, which hopefully will represent at least weeks of operation, possibly months. We'll see.
=> http://www.arminsadeghi.com/ Armin's blog
### Sat 14 June
I've built the first prototype of the door timer, which illuminates an LED after around a minute (58 seconds, actually).
=> /.static/images/first-timer-prototype.jpg First prototype of the timer
It's built from the monostable timer circuit on the 555 Timer Circuits site, but with the LED connected from Vcc to pin 3 (known as sourcing).
=> http://www.555-timer-circuits.com/operating-modes.html 555 operating modes
As it turns out, that green LED was under-rated for the current flowing through it; it started to turn orange as in [this video](https://www.youtube.com/watch?v=foNi-keKGs4). I've subsequently replaced it with a blue LED that works fine.
Here's the second prototype, with the actual buzzer, and an LED indicating that the unit is operating (so you know that it is, for safety reasons):
=> /.static/images/second-timer-prototype.jpg Second prototype of the timer
### Tue 03 June
Found a handy resource full of 555 timer info. Will peruse before continuing. Also want to find out about 555 power usage; would like to power the beastie off a 9V battery but I'm concerned about battery life.
</summary></entry><entry><title>90s Mixtape</title><link href="gemini://duncan.bayne.id.au/projects/90s-mixtape.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/projects/90s-mixtape.gmi</id><summary type="html">I wanted to make a themed mixtape for my brother's third-generation Honda Prelude, called Sayaka. Given the vintage of the car, I thought I'd choose from the Top 40 hits from the 1990 music charts in New Zealand.
I bought an old Sanyo RD 4055 cassette tape recorder and a cassette tape from eBay, and whipped up a label in LibreOffice. The result is a lot nicer than the mixtapes I made in my youth ...
=> /.static/images/mixtape-front.jpg Front cover of the mixtape
=> /.static/images/mixtape-rear.jpg Rear cover of the mixtape
=> /.static/images/sanyo-rd4055.jpg Sanyo RD4055 cassette tape recorder
</summary></entry><entry><title>On AI bullshit</title><link href="gemini://duncan.bayne.id.au/gemlog/2024-08-14-ai-bullshit.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2024-08-14-ai-bullshit.gmi</id><summary type="html">This is an exchange between myself and the latest Zephyr LLM, installed locally with OpenLlama.
$ ,q what is the Intel 8080?
The Intel 8080 is an 8-bit central processing unit (CPU) introduced by
Intel Corporation in 1974.
$ ,q what is the Zilog Z80?
The Zilog Z80 is a 4-bit microprocessor introduced by Zilog in 1976,
serving as a predecessor to the popular 8-bit CPUs like the Zilog Z80
and Intel 8080. It forms the basis for various embedded systems and
retrocomputing platforms due to its simplicity and compatibility with
legacy hardware.
$ ,q what is the Zilog Z160?
The Zilog Z160 is a high-performance, 32-bit RISC microcontroller with
integrated peripherals and low power consumption.
$ ,q which popular systems used the 8080?
The Intel 8080 microprocessor was widely used in popular systems such
as the MITS Altair, IMSAI 8080, and Sinclair ZX80. (Note: The Sinclair
ZX80 actually used a Zilog Z80, which is compatible with the Intel
8080.)
$ ,q which popular systems used the Z80?
The ZX Spectrum, Amstrad CPC, and Game & Watch (selected models)
utilized the Z80 processor.
$ ,q which popular systems used the Z160?
The Commodore Amiga and Atari TT/Fast family of computers utilized the
Motorola MC68020, which is similar to the Zilog Z160 microprocessor in
architecture and instruction set. However, the Zilog Z160 specifically
powered certain models of the Amiga, such as the A1200 and CDTV.
$ ,q which CPU did the IBM PCjr use?
The IBM PCjr used the Intel 80C88 CPU.
how tall is yao ming, former nba player from china?
Of that, what is bullshit, and what is real? Can *you* tell? Also ... I have no idea why it dropped all the newlines and the question about Yao Ming in the last answer.</summary></entry><entry><title>My Gemlog is now built with Halp</title><link href="gemini://duncan.bayne.id.au/gemlog/2024-04-20-halp-gemlog.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2024-04-20-halp-gemlog.gmi</id><summary type="html">After a few hours of work - spread out over many weeks due to other commitments! - my Gemlog is now statically generated by a simple set of Perl scripts called Halp.
=> https://git.sr.ht/~duncan-bayne/halp Halp
It's not that I disliked Kiln, far from it - I think Kiln is a great choice when starting out with a Gemini capsule.
I went through my reasoning on my blog at the time (I migrated my Web content onto Halp first). I'll reproduce it here, as none of it has changed.
The choice to write my own Web and Gemini software might be seen as a little strange, as might my choice of language (especially given my love of Common Lisp). As I explain in the Halp README, I have several goals for the project:
- Long-lived. Ideally, it'll last me for at least a decade, maybe more.
- Highly portable. I don't want to be tied to the "big three" of macOS, GNU/Linux, and Windows - Plan 9 is still on my radar for the future.
- Safe. This means, e.g., not having to roll my own crypto or template libraries.
- Not a Google product.
This led me to a pretty short shortlist:
=> http://doc.cat-v.org/plan_9/programming/c_programming_in_plan_9 The Plan 9 dialect of C.
=> http://sdf.org/?tutorials/Plan_9_rc rc shell.
=> https://www.perl.org/ Perl 5.
Having spent a few years as a professional C coder I'm reluctant to reach for it for any text-heavy task. rc is okay but I don't find it terribly easy to read - I struggled a bit with Werc. That left ... Perl!
</summary></entry><entry><title>Switching from TPG to AussieBB</title><link href="gemini://duncan.bayne.id.au/gemlog/2023-09-10-tpg-to-aussiebb.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2023-09-10-tpg-to-aussiebb.gmi</id><summary type="html">Gareth Edwards has an excellent piece on the phenomenon of the "trust thermocline". I mention this because I've been a (mostly happy) TPG customer since 2008, but have just migrated to another ISP. TPG has crossed my "trust thermocline".
=> https://every.to/p/breaching-the-trust-thermocline-is-the-biggest-hidden-risk-in-business Breaching the Trust Thermocline
> In most cases, though, the only real solution is to avoid crossing the trust thermocline at all. It requires placing emotional engagement and trust at the heart of product strategy, and accepting that the causes of trust failures are non-linear. Businesses need to address their customers’ complaints early and not dilute the value of their product. Informing users that prices are being increased because new features are available can damage trust if those features weren’t asked for to begin with. Just because a consumer swallows a new charge or price increase doesn’t mean they accept it as necessary.
TPG has offered pretty variable customer support, but - unlike Telstra and Optus - remained contactable during COVID. There was a weird time when I was the only one of my friends who could actually get support from a human being from their ISP, because I was with TPG.
However, my recent interactions with TPG have destroyed any trust and goodwill they built during that time.
1. Lying to me in an effort to get me to purchase a new mobile device. I've received many emails from TPG claiming that w.r.t. the 3G shutdown "We [TPG] believe your mobile service may be impacted due to your location and the device you use, so it’s time to start thinking about upgrading to a VoLTE compatible 4G or 5G device as soon as possible to avoid any interruptions to your service.". When I called, concerned, I was told that this email is sent to all customers regardless of their device or location. It's just a sales scam.
2. Continuing to send these marketing emails, and SMSs, despite me opting out in three different ways: by Web, by SMS, and by calling (several times).
3. When I logged in to check what was going on, I saw that TPG plans to stop providing email, and is encouraging customers to migrate to an email provider who won't even provide pricing information on their service (and who has a shockingly lax privacy policy).
That last point doesn't effect me directly because I'm a (happy, paying) Fastmail customer, but it eroded the last dregs of trust and goodwill I had for TPG.
So after asking around, I decided to switch to Aussie Broadband:
=> https://www.aussiebroadband.com.au/customer/ Aussie Broadband
AussieBB has been great - prompt callbacks, knowledgeable support staff (never judge a new vendor solely by their pre-sales), and excellent pricing (slightly more expensive than TPG, but it's true that you get what you pay for).
Of course, TPG has even managed to foul up on the way out the door:
- They did get back to me about the unsolicited advertising. The supervisor took the details of the emails and SMSs I'd received after opting out, but then decided to start arguing with me that the phrase "your mobile service may be impacted due to your location and the device you use" was technically true, because it *may* be the case - they just didn't know, so sent the marketing email to all customers :/
- They messed up porting out my four mobile numbers. One of the three kids ported out correctly, but mine and the other three are still stuck on TPG. AussieBB is chasing this up for me.
There was also an interesting issue with my routing. I had several ports open with TPG – for Web, Gemini, and OpenVPN. Despite asking AussieBB to open the same ports, nothing was working.
It turns out that despite having restarted the TP-Link Archer router, I *also* had to go into the NAT forwarding settings, click Modify on each, then click Save. Doing that fixed things. Again, AussieBB support was great during this time - testing ports from their end, and unblocking things as required (by default they block most inbound ports, but happily unblock them upon request).
</summary></entry><entry><title>Self-hosted Web and Gemini</title><link href="gemini://duncan.bayne.id.au/gemlog/2023-08-10-self-hosted-web-and-gemini.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2023-08-10-self-hosted-web-and-gemini.gmi</id><summary type="html">This capsule has been quiet for a while, because I've been working on a few things:
- Settling in to a new job.
- Revamping my professional Website.
- Moving both my Website and my Gemini capsule off EC2, and self-hosting both.
As of this week, I've (somewhat) achieved the first milestone: my Website is being served by Halp, and both it and my Kiln-generated Gemini capsule are running on a Raspberry Pi in my cabinet:
=> /.static/images/raspberry-pi-halp.jpg Raspberry Pi server racked
Halp itself is in a very hacked-up state - it only serves Web (not yet Gemini), it's running in a tmux session on the Pi, there's no log rotation, there's no caching (just an Nginx reverse proxy), and the Atom feeds are slow and not idiomatically named.
=> https://git.sr.ht/~duncan-bayne/halp Halp
But it's a start :) Next steps are to:
- Continue fleshing out my professional Website, and tidy up my (sparse and ugly) resume.
- Fix up the aforementioned Halp shortcomings, starting by documenting them all in the Halp tracker.
- Upgrade my router.
That last point might need a bit of clarification. I'm currently running the awfully slow (400MHz dual-core CPU) router shipped by my ISP, and it seems to be struggling a bit with even the meagre Web and Gemini traffic it's now handling (most of which seems to be search engines and automated attacks looking for Wordpress and similar).</summary></entry><entry><title>A billing gotcha with AWS Workspaces and Directory Service</title><link href="gemini://duncan.bayne.id.au/gemlog/2023-02-07-aws-billing-gotcha.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2023-02-07-aws-billing-gotcha.gmi</id><summary type="html">[This is a repost from my old Weblog - original publication date 2022-07-17.]
My personal Amazon AWS bill has been unusually high for the past few months, so I broke open the cost explorer to see where the money was going.
=> /.static/images/costs.png AWS costs
Almost of it was expected - EC2 instances, domain registration and renewal, and so forth. Some was due to laziness (hadn't gotten around to purchasing reserved instances for my EC2-based servers).
But one of the costs was completely *unexpected*: a Directory Service cost that appeared in November 2020, and has totalled AUD281.77 since then.
A quick online chat with AWS support provided the explanation: when I created an AWS Workspace back in 2019, a Directory Service resource - a Directory - was automagically created for me. That Directory was free as long as I had a Workspace.
However in November 2020, I deleted the Workspace. That did *not* destroy the Directory, at which point I started being charged for it, to the tune of around AUD35 per month.
Amazon is being very good about it, and winding back *all* of the Directory Service charges since 2020. It's reassuring to know that I'm not being billed for what I see as a UX bug :)
But this is an anti-pattern I haven't seen until now: *destroying* a resource caused me to *start* being billed for another. Something to keep an eye open for in the future :)
</summary></entry><entry><title>Laid off in the latest round of redundancies at Redbubble</title><link href="gemini://duncan.bayne.id.au/gemlog/2023-01-22-laid-off-redundancies-at-redbubble.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2023-01-22-laid-off-redundancies-at-redbubble.gmi</id><summary type="html">Joining the ranks of tech companies laying off people is Redbubble:
=> https://insideretail.com.au/business/redbubble-cuts-staff-to-manage-costs-202301 Redbubble cuts staff to manage costs
> We have decided to reduce the cost base within the Redbubble marketplace to accelerate the group’s return to cash flow positive. These are hard decisions and I am sorry for the impact this will have on our people.
That's bad news for me, personally, as I'm one of the 14% of the staff laid off; my last day with the company was on Friday.
I have quite mixed feelings about this. On the one hand, that means I'll be looking for a job during a recession, which is always harder. But on the other hand, the last few months have been pretty stressful; it's nice to be writing this on a Sunday evening while not mentally planning out my Monday morning.
Next up I'm going to take a few days to spend with the family, and on general "puddling around" - assembling some storage shelving in the carport, cleaning my motorcycle, and generally catching up on the million and one things I've left not done while focusing on work.
I still haven't decided whether to continue on the management track, or spend some time as an individual contributor again - perhaps in a principal engineer role or similar. I have an emotional leaning towards the latter, I think, but it'll partly depend upon what's available :)
=> http://web.archive.org/web/20070930131155/http://www.redbubble.com/ Redbubble in 2007, courtesy the Wayback Machine
I thoroughly enjoyed my time with Redbubble, and I'm optimistic that the people remaining will be able to turn the ship around. Will be keeping an eye on things, and certainly continuing to order a lot of my Christmas and birthday presents from them ;)</summary></entry><entry><title>Experimenting with a public inbox</title><link href="gemini://duncan.bayne.id.au/gemlog/2023-01-06-public-inbox-experiment.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2023-01-06-public-inbox-experiment.gmi</id><summary type="html">I was looking for a sensible way of adding comments to my Gemlog, when I (unrelatedly) stumbled upon Drew DeVault's public inbox:
=> https://lists.sr.ht/~sircmpwn/public-inbox Drew Devault's public inbox
This is such a good idea - a public mailing list that anyone can post or subscribe to, used for questions, comments, and general public discussion about content.
So, I'm trying it out.
=> /contact-me/ Contact me through my public inbox
I'll leave it running for a while, and if anyone uses it, I might look at self-hosting the lists component of Sourcehut on my bayne.id.au domain.</summary></entry><entry><title>Finding and pretty-printing many emails</title><link href="gemini://duncan.bayne.id.au/gemlog/2023-01-04-finding-and-pretty-printing-many-emails.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2023-01-04-finding-and-pretty-printing-many-emails.gmi</id><summary type="html">[This is a repost from my old Weblog - original publication date 2021-09-08.]
Back in 2020, we were one of many customers sold cars with undisclosed defects by a local car dealer.
We’re off to VCAT soon, and so I recently needed to print out a whole bunch of emails. But printing emails from mail clients is slow, and it’s easy to miss individual messages. So I sought to find a solution that used command-line tools to handle the task in bulk.
Unix to the rescue :)
=> /.static/images/unix-licence-plate.jpg UNIX - Live Free or Die
(I’m leaving aside the philosophical question of just how Unixy some of these tools are. I’d argue that despite the odd miss (like --exec options in mail searchers) they have the Unix nature by virtue of being somewhat single-focused, and pleasantly composable.)
Anyway, my approach was to break down the problem into the following steps:
1. Download a local copy of the mail.
2. Search the mail for the individual messages of interest.
3. Pretty-print the messages of interest.
4. Send the pretty-printed documents to the printer.
To download the email, I used mbsync. My email provider is Fastmail; I already use mbsync with mu4e for my own email so this was a natural step. The configuration I used is as follows:
IMAPAccount foo
Host mail.messagingengine.com
User foo@bayne.id.au
Pass REDACTED
Port 993
SSLType IMAPS
AuthMechs Login
IMAPStore foo-remote
Account foo
MaildirStore foo-local
SubFolders Legacy
Path ~/email/foo/
Inbox ~/email/foo/INBOX/
Channel foo
Master :foo-remote:
Slave :foo-local:
Patterns * INBOX
Create Slave
Sync All
Expunge Both
SyncState *
Having synchronised the mail with:
$ mbsync -c ~/email/foo foo
... the next step was to find the emails I was interested in.
This is where the email indexing tool mu came in. I’ve already initialised an email index in ~/email/ with mu init --maildir=~/email as part of my regular email setup, so all I needed to do was to find the files was to use mu along with GNU Parallel:
$ mkdir ~/tmp/mails
$ mu find --skip-dups to:REDACTED or subject:REDACTED --fields=l | parallel -N 1 cp {1} ~/tmp/mails
... where:
--fields=l
... just returns the full path to the email in question.
The next step was to install an email pretty-printer. I chose to use Nick Russler’s email-to-pdf-converter tool, which I installed along with wkhtmltopdf.
This produces pleasant-looking output out of the box, e.g.:
From: Duncan Bayne <duncan@bayne.id.au>
To: dhgbayne@fastmail.fm
Subject: Test 3
Date: Wed, 09 Jun 2021 16:07:32 +1000
Testing, testing, one two three.
--
Duncan Bayne
+61 420 817 082 | https://duncan.bayne.id.au/
I usually check my mail every 24 - 48 hours. If there's something
urgent going on, please send me an SMS or call me.
... becomes:
=> /.static/images/rendered-email.png Email rendered into PDF
Pretty-printing the emails in PDF format was then just a matter of:
$ cd ~/tmp/mails
$ find . -type f -exec java -jar ~/bin/emailconverter-2.5.3-all.jar {} \;
Finally, then, all that remained was the fourth and final step: sending the PDFs to the printer:
$ find . -type f -name '*.pdf' -exec lpr {} \;
The end result is a stack of email hard copies, and a slightly more insistent low toner warning on my printer :)
Thanks to:
=> https://commons.wikimedia.org/wiki/File:UNIX-Licence-Plate.JPG Wikimedia Commons for the Unix licence plate photo
=> https://stackoverflow.com/users/15168/jonathan-leffler Jonathan Leffler for the suggestion to use GNU Parallel.</summary></entry><entry><title>COVID again</title><link href="gemini://duncan.bayne.id.au/gemlog/2022-12-14-covid-again.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2022-12-14-covid-again.gmi</id><summary type="html">Well, this is annoying. Back to bed rest with COVID-19, in 2022 (nearly 2023). Fortunately the symptoms are a lot milder, so I should be back to work (and play) tomorrow - although I'll be isolating until the weekend. It's no longer a legal recommendation but I figure it's at least polite.
Rant time: so many sites and apps I use nowadays are turning into train wrecks.
=> https://akashicseer.com/rants/why-amazon-search-sucks-and-how-it-can-be-fixed/ A somewhat unhinged rant about how bad Amazon search is
=> https://community.spotify.com/t5/Subscriptions/Serving-ads-to-Premium-customers/m-p/5460621#M137335 Spotify keeps trying to foist ads on Premium customers
=> https://www.productreview.com.au/reviews/aeaa4620-ca3c-48c4-a390-fc39d4b8ca7a Gumtree giving not one single, solitary, fuck about spam ads
=> https://www.reddit.com/r/ecovacs/comments/whjsul/are_ads_when_opening_the_app_new/ Ecovacs introduces ads into their Android app
(I should note that Ecovacs is a Bad Companyâ„¢. They have an awful privacy policy, and steadfastly refuse to release APIs (or even document their existing APIs) for interop with things like Home Assistant. When my fleet of DeeBots finally dies I'll be replacing them with something else).
=> https://www.reddit.com/r/ios/comments/w27x6j/uber_does_not_respect_notification_preferences/ Uber enabling push ads again, and making it hard to disable them
So it's delightful to switch to one that isn't :) A while ago I finished migrating all my projects to Sourcehut:
=> https://git.sr.ht/~duncan-bayne/ My Sourcehut account
... and I'm loving it. Fast, simple, ad-free, and works on even simple Web browsers (e.g. Netsurf on Plan 9).</summary></entry><entry><title>Back to Android (for the time being)</title><link href="gemini://duncan.bayne.id.au/gemlog/2022-10-10-back-to-android.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2022-10-10-back-to-android.gmi</id><summary type="html">## what about the PinePhone?
Sadly my PinePhone experiment has - after several months of running one as a daily driver - come to an end for now and I'm back on my Pixel 2.
=> /.static/images/android-screenshot.jpg Screenshot of LineageOS 19 lockscreen
As much as I love the PinePhone (and I really do; I've really developed quite an emotional bias towards it), I've chosen to swap back to my Pixel 2 for a few key reasons:
## poor stability
Even running on the latest Manjaro build, as of September 2019, the phone is just ... crashy. Like, the UI goes away (black screen instead of a lock screen), then a while later the phone reboots. This happens several times a day.
In addition, it'll crash while taking or making calls. I'm not quite sure what's happening here but when it does, the usual effect is that the caller can't hear my audio, and then the phone reboots after the call.
The most recent failure here was a combination of things.
Firstly, the phone wasn't charging properly (or picking up the existence of the external keyboard) because, I think, one or more of the GPIO pins weren't making contact properly. If I flexed the phone in the keyboard case, it detected the keyboard momentarily and started charging.
Secondly, because it wasn't charging (when I thought it was), it shut down spontaneously just when I needed it (in the immediate aftermath of a minor vehicle accident). I opened my phone to take down the other driver's details ... and it powered off. Argh!
Thirdly, and not for the first time, the shutdown left the filesystem in a bad state. Nothing I couldn't fix by popping the microSD card, inserting it into my ThinkPad, and running fsck on it. But ... not great when I'm stuck by the side of the road needing a working phone.
If it were just me, fine - I could deal with all of that. But it's not just me, I need a phone that actually works so I'm reachable when I'm on the support roster at work, and when I need to call the school from the side of the road after an accident.
## inadequate camera
I tried carrying a Canon SX610HS point and shoot with me as a substitute for the PinePhone camera, and the Canon is *better*, but ... it's still nowhere near as good as even an obsolete smartphone camera like that in the Pixel 2. I'd be okay with this, but it turns out I'm really missing being able to take easy high-quality snapshots of the kids.
=> /.static/images/fyfe-pinephone.jpg A photo of our rescue greyhound, Fyfe, using the PinePhone.
=> /.static/images/fyfe-pixel-2.jpg A photo of Fyfe, taken almost at the same time, using the Pixel 2.
Note that this only works as well as it does because Fyfe is, according to greyhound custom, largely immobile. (For athletic dogs they're astoundingly idle - they nap through the day more like cats than dogs). The PinePhone camera is almost completely incapable of dealing with low light or motion, the latter of which is an exceptionally common situation when photographing young children.
Also, there's no video recording capability at all.
(As an aside, it's remarkable to me how much better the Pixel 2's 12 megapixel camera is than the 20 megapixel Canon SX610HS. Subjectively I find the photos from the Pixel 2 clearer and more detailed, and the actual experience of using the camera is far better with the smartphone. Software has, indeed, eaten the world.)
## ... but everything else somewhat works
Other than those two issues, though, the PinePhone *is* a usable daily driver! If I didn't need a highly reliable phone and have kids I wanted to remember when I'm old and senile, I'd still be running it.
The basics work as you'd expect:
- Bluetooth (but for audio playback only; I haven't managed to get Bluetooth headsets working yet)
- cameras (front and back)
- mobile data
- phone calls
- SMS
- the physical keyboard (somewhat; the default keymap is broken on Manjaro so you can't type some symbols like minus)
- Web browsing (albeit slowly; the non-Pro PinePhone is only just capable of running Firefox usably)
- WiFi hotspot
But also, some of the things you *wouldn't* expect to work now do! These include:
- Emacs (though it's not *really* usable with a partially-functional physical keyboard ...)
- MFA (via the excellent Numberstation app)
- Signal (with the actual Signal desktop app; for some reason the camera doesn't work when making video calls though)
- smartwatch sync (to my PineTime using the Amazfish client on the phone)
- Spotify (through the usable but somewhat unstable Spot open source client)
## so what's next?
In the short term I've switched back to my time-worn Pixel 2, running LineageOS:
=> https://lineageos.org/ LineageOS Android Distribution
This will give me a few more years out of my Pixel 2 (and the kids' Pixel 2s, which I'm upgrading to LineageOS on the weekend).
The next step is to replace the PinePhone with a PinePhone Pro :)
=> https://www.pine64.org/pinephonepro/ PinePhone Pro
In addition to being much faster than the PinePhone, the Pro has a much better camera sensor, the Sony IMX258, which offers a similar resolution to the Pixel 2. The Pro is also GPIO pin compatible with the regular PinePhone so will work with my existing physical keyboard.
In principle the IMX258 sensor is capable of very nice images indeed. In practice, it's *very* hard to get this kind of quality out of a Linux smartphone; megi is making some astounding progress towards it, however.
=> https://www.youtube.com/watch?v=fEZ6-AnPqNQ Example video shot using the IMX258 sensor
=> https://puri.sm/posts/cameras-its-complicated/ Cameras: It’s Complicated
=> https://xnux.eu/log/#068 Pinephone Pro camera improvements
So hopefully in another six months or so, I'll be ready to try switching to a Linux smartphone again as a daily driver 🤞
</summary></entry><entry><title>Spotify running on FreeBSD</title><link href="gemini://duncan.bayne.id.au/gemlog/2022-09-25-spotify-on-freebsd.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2022-09-25-spotify-on-freebsd.gmi</id><summary type="html">I'm having a good run these past few days - being on leave has given me the headspace to deal with a few niggling tech issues. This time around - Spotify running on FreeBSD 13.1 :)
=> /.static/images/spotify-1.png Spotify daemon running in a FreeBSD terminal buffer
=> /.static/images/spotify-2.png Spotify QT GUI playing Blues for Ben
The script itself is quite straightforward ...
=> https://git.sr.ht/~duncan-bayne/freebsd-setup/tree/master/item/conf/bin/spotify spotify script
!/usr/bin/env bash
set -euxo pipefail
shellcheck "$0"
for now, spotifyd and avahi-daemon can't coexist ;(
sudo service avahi-daemon stop || echo "Maybe it's already stopped ..."
spotify-qt &
spotifyd --config-path /home/duncan/personal-git/conf/spotify/spotifyd.conf --no-daemon
restart avahi-daemon after spotify is done
sudo service avahi-daemon start
It uses a simple config that decrypts credentials using GPG ...
[global]
username_cmd = "gpg --decrypt /home/duncan/personal-git/conf/spotify/username.gpg 2>/dev/null"
password_cmd = "gpg --decrypt /home/duncan/personal-git/conf/spotify/password.gpg 2>/dev/null"
backend = "portaudio"
And now I can have music wherever I go :)
So long as I keep paying my Spotify family account bill, that is, and as long as I have a decent network connection. I'm okay with that, though - as much as pirating music is more convenient, I prefer mechanisms that actually get money into artists' hands.
</summary></entry><entry><title>My Gemlog is now built with Kiln</title><link href="gemini://duncan.bayne.id.au/gemlog/2022-09-24-kiln-gemlog.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2022-09-24-kiln-gemlog.gmi</id><summary type="html">After a successful evening's messing about, this Gemlog is now built using kiln 🎉
=> https://git.sr.ht/~adnano/kiln A simple static site generator
Here's how it looks:
=> /.static/images/gemlog-deedum-pixel2.jpg Gemlog in Deedum on a Pixel 2
=> /.static/images/gemlog-lagrange-pinephone.jpg Gemlog in Lagrange on a PinePhone
=> /.static/images/gemlog-emacs-freebsd.png Gemlog in Emacs on my FreeBSD laptop
Along the way I found an interesting bug in kiln; after accidentally creating a broken symlink (by moving a file that happened to be in git annex), kiln was reporting that my entire static directory was missing.
This turns out to be a bug. No disrespect to the author of kiln, because I've seen a bazillion variants on this bug over the years: reading more into an error than you can possibly know at the time. In this *particular* case, assuming that a file not found error is always caused by a missing static directory 😇
$ tree
.
├── config.toml
├── content
│ └── _index.gmi
├── public
│ ├── atom.xml
│ └── index.gmi
├── static
│ └── no-such-file -> ../no-such-file
└── templates
└── _default
├── atom.xml
├── index.gmi
└── page.gmi
5 directories, 8 files
$ kiln build
2022/09/24 12:22:36 static_dir 'static' does not exist
So I got to learn how to use the (nifty!) patchset creation UI in sourcehut, and submitted my first (trivial!) bugfix along the way:
=> https://lists.sr.ht/~adnano/kiln-devel/%3C166398735847.26324.1348945356391968373-0%40git.sr.ht%3E [PATCH kiln] Display detailed error message on static build failure</summary></entry><entry><title>Replacing an X250 trackpad destroyed by a Slurpee</title><link href="gemini://duncan.bayne.id.au/gemlog/2022-07-18-trackpad-replacement.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2022-07-18-trackpad-replacement.gmi</id><summary type="html">Our family has a rule (established by precedent) that when you turn three years old, you get your first laptop. Currently that means a refurbished ex-corporate Lenovo ThinkPad X250, running Ubuntu GNU/Linux.
Recently our daughter accidentally poured a raspberry flavoured[1] Slurpee into hers. I took the usual steps (carefully drying it out) but the trackpad was ruined, gummed up and shorted out with condensed sugar water. It was awful to use (the buttons literally felt sticky), and it wasn't registering clicks.
My attempt to clean out the trackpad with isopropanol and compressed air just blasted alcoholic raspberry syrup everywhere.
Replacement time!
=> /.static/images/x250-trackpad-being-removed.jpg The X250 opened, both batteries and SSD removed, ready for trackpad removal.
=> /.static/images/x250-trackpad-destroyed-by-slurpee.jpg A closeup of the old trackpad, destroyed by a Slurpee.
=> /.static/images/x250-trackpad-replaced.jpg Reassembling the X250 with the new trackpad fitted.
It was pretty straightforward.
- Remove the battery.
- Remove back lid screws, then unclip and remove the back lid.
- Remove the SSD.
- Remove the internal battery.
- Remove the screws holding the trackpad in place.
- Slide the trackpad out sideways, being gentle with the thin ribbon cable.
- Unclip the ribbon cable.
- Take the spare X250 trackpad you just happened to have in your workshop, and clip in the ribbon cable.
- Reverse the above steps in order, finishing with replacing the battery.
Note that all of the above can be done with a small Phillips head screwdriver! I'm not sure *what* I'm going to do when I finally need to upgrade the kids from the X-series.
So now said daughter's laptop will be good for at least another year or two, I've saved myself a few hundred dollars on a replacement, plus earned myself some brownie points in her eyes :)
[1] From the scent, I assume that no raspberries were harmed in the production of the "raspberry" Slurpee.
</summary></entry><entry><title>Garden photography</title><link href="gemini://duncan.bayne.id.au/gemlog/2022-07-10-garden-photography.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2022-07-10-garden-photography.gmi</id><summary type="html">A while ago I bought a Canon SX610HS to use for general photography, compensating for the, um, ordinary quality of my PinePhone camera:
=> /.static/images/photos/fyfe-pinephone.jpg A photo of our greyhound Fyfe, taken on the PinePhone
Today - my first day out of the house after 7 days of COVID-19 isolation! - I took a few photos of our driveway and front garden with the Canon. It's not a great camera for low light, but excels in daylight photography:
=> /.static/images/photos/winter-garden-01.jpg Our front garden in Belgrave, during winter (1/4)
=> /.static/images/photos/winter-garden-02.jpg Our front garden in Belgrave, during winter (2/4)
=> /.static/images/photos/winter-garden-03.jpg Our front garden in Belgrave, during winter (3/4)
=> /.static/images/photos/winter-garden-04.jpg Our front garden in Belgrave, during winter (4/4)
On a technical note I'm using S3 and git-annex to store the photos in this capsule, to avoid my git repository becoming huge.
=> https://git-annex.branchable.com/special_remotes/S3/ This special remote type stores file contents in a bucket in Amazon S3 or a similar service.
</summary></entry><entry><title>Gemini, sourcehut, and COVID-19</title><link href="gemini://duncan.bayne.id.au/gemlog/2022-07-06-gemini-sourcehut-covid.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2022-07-06-gemini-sourcehut-covid.gmi</id><summary type="html">Migration from the Web to my Gemini capsule is, um, progressing slowly. This has happened for a few reasons:
Firstly, I've been slightly distracted by the Gemini space itself! It reminds me a lot of the early days of the Web - things are easily discoverable, and the median post isn't trying to track / scam / misinform / enrage me :)
Secondly, I've also been killing off my old GitHub repos, and migrating everything from GitLab to sourcehut. This is probably news to no-one currently involved in Gemini, but sourcehut is amazeballs. Fast, simple, and you don't require an account to contribute to a project.
=> https://git.sr.ht/~duncan-bayne/ My account on sourcehut
Thirdly, this has all been happening while I've been fighting off my first dose of COVID-19. I'm triple-vaxxed so experiencing pretty mild symptoms but the fatigue is a killer. And it's not just physical fatigue but especially mental; I've been deliberately putting off refactoring my Emacs Lisp code that generates this Capsule because I can't think clearly enough for it to be a pleasant job.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣶⡟⢉⠁⠈⡻⠘⠏⠀⠹⢛⣷⠄⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣰⡞⢿⡄⠀⢻⡴⣇⣀⣷⣴⢄⢀⡖⡾⠁⢀⣼⢛⣦⠀⠀⠀⠀⠀
⠀⠀⠀⣠⣄⠈⠙⢦⣿⣶⠞⠋⠉⠁⣀⣄⡀⠉⠙⠻⢦⣾⣵⠟⠉⢠⣄⠀⠀⠀
⠀⠀⢰⣯⣙⠷⣄⡴⠋⣤⣤⣤⠀⢸⡏⢉⣿⠀⣠⡤⣤⡘⢷⣤⡴⣛⣹⣧⠀⠀
⠀⢀⣄⠀⠉⢛⡿⠁⠘⣧⣀⣼⠃⠀⠙⠛⠁⠀⢿⣄⣸⠇⠀⢹⡟⠉⠁⢀⣄⠀
⠀⡾⡙⣛⣳⣾⠁⠀⡀⣀⠉⠀⠀⠀⣀⣀⠀⠀⠀⠉⢁⡀⡀⠀⢿⣶⣛⣋⣻⠀
⠀⠉⠈⠉⠈⡹⠀⠸⠁⠙⣷⠀⠀⢸⡏⠉⣷⠀⠀⢰⠉⠈⣣⠀⠸⡉⠉⠉⠉⠀
⠀⣿⠛⣛⣻⣿⠀⠈⠛⠙⠁⠀⠀⠈⠛⠛⠁⠀⠀⠀⠙⠛⠉⠀⣼⣽⣛⡛⣹⠀
⠀⠘⠟⠉⠁⣘⣧⠀⢀⡶⠛⢶⡂⠀⢀⣀⠀⠀⣴⠟⢳⡄⠀⢰⣏⠀⠉⠙⠛⠀
⠀⠀⢰⡶⢛⣭⠟⢧⡈⠷⠶⠾⠁⢰⡏⠙⣷⠀⠻⢦⠾⢃⣴⠿⢯⣛⢳⡶⠀⠀
⠀⠀⠀⠻⠟⠁⢀⡴⣿⢶⣄⡀⠀⠈⠛⠚⠋⠀⢀⣠⡴⣾⢷⣄⠀⠹⠟⠁⠀⠀
⠀⠀⠀⠀⠀⢺⣏⣴⠏⠀⣸⠟⠝⠓⠶⠶⠖⠛⠛⣯⠀⠘⢷⣙⡿⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠈⠉⠀⣶⣏⣬⠁⠀⣥⢠⠆⠀⣰⣘⣷⠄⠈⠉⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠀⠘⠳⠾⠛⠀⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
monkaW
So progress on all of this has been made in tiny fits and starts, in the few windows of energy I have between general house maintenance and sprog care (three kids at home for the holidays). Actually, speaking of sprogs, only one is testing positive to COVID-19 (well, SARS-CoV-2 antibodies, but). I suspect they all have it though, based on symptoms.
I am very, very, appreciative of having sick / carer's leave right now. Contracting for years has left me feeling a bit emotionally weird about taking sick leave - fortunately having SARS-CoV-2 cheerfully returning every one of my injuries from the past decade to hurting is helping me get over that ;) But not only do I get sick leave right now, I've been contacted by several of my colleagues to check in on me, and ensure that I'm *actually* resting (not something I'm known for doing well).
| \ \ | |/ /
| |\ `' ' /
| ;'aorta \ / , pulmonary
| ; _, | / / , arteries
superior | | ( `-.;_,-' '-' ,
vena cava | `, `-._ _,-'_
|,-`. `.) ,<_,-'_, pulmonary
,' `. / ,' `;-' _, veins
; `./ /`, \-'
| right / | ;\ |\
| atrium ;_,._|_, `, ' \
| \ \ ` `,
` __ ` \ left ;,
\ ,' ` \, ventricle
\_( ;, ;;
| \ `;, ;;
inferior | |`. `;;, ;'
vena cava | | `-. ;;;;,;'
| | |`-.._ ,;;;;;'
| | | | ``';;;' FL
aorta
____
From: aa906@FreeNet.Carleton.CA (Steve Wendt)
(not the ASCII art heart I was looking for; but very much the one it turns out I wanted).
/me departs to cook dinner, feeling weirdly like he's been blogging in the early 2000s
</summary></entry><entry><title>First post</title><link href="gemini://duncan.bayne.id.au/gemlog/2022-06-21-first-post.gmi"/><updated>2024-03-27T23:06:32+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/gemlog/2022-06-21-first-post.gmi</id><summary type="html">As seems to be tradition, this is my first Gemini capsule post!
According to Wolfram Alpha, it's been 5 years, 7 months, and 20 days since the first post on my old Weblog.
I looked but couldn't find anything particularly interesting that happened on 2016-10-01, so instead, here's some ASCII art of fireworks over Toronto :)
.''.
.''. . *''* :_\/_: .
:_\/_: _\(/_ .:.*_\/_* : /\ : .'.:.'.
.''.: /\ : /)\ ':'* /\ * : '..'. -=:o:=-
:_\/_:'.:::. | ' *''* * '.\'/.'_\(/_'.':'.'
: /\ : ::::: = *_\/_* -= o =- /)\ ' *
'..' ':::' === * /\ * .'/.\'. ' ._____
* | *..* : |. |' .---"|
* | _ .--'| || | _| |
* | .-'| __ | | | || |
.-----. | |' | || | | | | | || |
___' ' /"\ | '-."". '-' '-.' '` |____
jgs~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
& ~-~-~-~-~-~-~-~-~-~ /|
ejm97 ) ~-~-~-~-~-~-~-~ /|~ /_|\
_-H-__ -~-~-~-~-~-~ /_|\ -~======-~
~-\XXXXXXXXXX/~ ~-~-~-~ /__|_\ ~-~-~-~
~-~-~-~-~-~ ~-~~-~-~-~-~ ======== ~-~-~-~
</summary></entry><entry><title>Contact me</title><link href="gemini://duncan.bayne.id.au/contact-me.gmi"/><updated>2024-01-07T18:02:01+11:00</updated><author><name></name><email></email></author><id>gemini://duncan.bayne.id.au/contact-me.gmi</id><summary type="html">If you'd like to comment publicly on any of my posts, or ask me a question for public discussion, please send a message to my public inbox. You can do that by sending an email:
=> mailto:~duncan-bayne/public-inbox@lists.sr.ht Post to my public inbox
... or through the Web by visiting:
=> https://lists.sr.ht/~duncan-bayne/public-inbox/ View my public inbox on the Web
If you want to contact me privately, the best way is by email:
=> mailto:duncan@bayne.id.au Email me
</summary></entry></feed>