Terence Eden. He has a beard and is smiling.

Terence Eden’s Blog

Theme Switcher:

Better TTS on Linux

· 2 comments · 300 words · Viewed ~1,942 times


GUI showing various British English languages.

The venerable eSpeak is a mainstay of Linux distributions. It is a clever Text-To-Speech (TTS) program which will read aloud the written word using a phenomenally wide variety of languages and accents. The only problem is that it sounds robotic. It has the same vocal fidelity as a 1980s Speak 'n' Spell toy. Monotonous, clipped, and painful to listen to. For some people, this is a feature, not a…

Reprojecting Dual Fisheye Videos to Equirectangular (LG 360)

· 500 words · Viewed ~1,273 times


Dual fisheye photo of us and some elephants.

I still use my obsolete LG 360 Camera. When copying MP4 videos from its SD card, they come out in "Dual Fisheye" format - which looks like this: VLC and YouTube will only play "Equirectangular" videos in spherical mode. So, how to convert a dual fisheye to equirectangualr? The Simple Way ffmpeg \ -i original.mp4 \ -vf "v360=input=dfisheye:output=equirect:ih_fov=189:iv_fov=189" \ …

Gadget Review: Epomaker TH87 ISO Mechanical Keyboard

· 1 comment · 800 words · Viewed ~551 times


A keyboard with a UK layout and lots of colourful lights.

If I'm being brutally honest, I never really got the appeal of mechanical keyboards. There was always someone in the office who made a godawful racket hammering on their keyboard and then waxed lyrical about the merits of various switches. I'd mostly just dismissed them as cranks. I'm in love with my old Microsoft 4000 ergonomic keyboard. What use could I have a mechanical keyboard festooned with …

Installing and Updating Filezilla from a Zip File on Pop_OS / Ubuntu

· 1 comment · 300 words


Screenshot of the Filezilla splash screen.

Notes to myself because I keep forgetting. tl;dr Unzip it into the /opt/ directory. I want to install Filezilla - so I can SFTP files around. Sadly, the Flatpak version is unmaintained and the version in apt is out of date. Luckily, you can download the zipped version. Their Wiki helpfully says: If you have special needs, don't have sufficient rights to install programs or don't like…

Extracting Video from Motion Photos on Linux

· 3 comments · 450 words · Viewed ~539 times


Photo of a wind turbine.

Modern Android cameras can take "Motion Photos". They capture a few seconds of video from before and after you hit the shutter button. You can then either select the bit of the photo where no-one is blinking, or you can send the whole thing as a little movie. Some apps (like WhatsApp) will play the motion photo when the image is selected, others will just show a static image. So how do you…

Gadget Review: Benfei USB-C Video Capture

· 3 comments · 600 words · Viewed ~443 times


A long USB-C cable with a box in the middle.

Want to capture video from your phone or console? You could just point a camera at the screen, but a more sensible way to do it is to capture the video directly via USB-C. The good folks at Benfei have sent me another gadget to review! This is a USB-C Video/Audio capture dongle. Plug one end into a device and the other into your computer - it will show up as a USB video capture device. Notice …

How to *actually* test your readme

· 12 comments · 150 words · Viewed ~4,633 times


List of Linux OSes.

If you've spent any time using Linux, you'll be used to installing software like this: The README says to download from this link. Huh, I'm not sure how to unarchive .tar.xz files - guess I'll search for that. Right, it says run setup.sh hmm, that doesn't work. Oh, I need to set the permissions. What was the chmod command again? OK, that's working. Wait, it needs sudo. Let me run that again.…

A little oddity in the way curl deals with old dates

· 3 comments · 550 words · Viewed ~490 times


The curl logo.

For boring technical reasons, computers think the world began on 1st of January 1970. To keep track of the future, they count the number of seconds since that momentous date. So zero seconds represents midnight on that day. So how do computers deal with dates before The Beatles' Abbey Road was top of the UK album charts? Negative numbers! Most modern computers can deal with dates far in the…

Reading NFC Passport Chips in Linux

· 9 comments · 900 words · Viewed ~38,047 times


A mocked up passport which looks like it has been issued by the fictional country of Wakanda.

For boring and totally not nefarious reasons, I want to read all the data contained in my passport's NFC chip using Linux. After a long and annoying search, I settled on roeften's pypassport. I can now read all the passport information, including biometrics. Table of ContentsBackgroundRecreating the MRZPython code to generate an MRZCan you read a cancelled passport?Cryptography and other…

Convert Shotwell Photo Metadata to Digikam Metadata

· 100 words · Viewed ~233 times


Linux bash terminal icon.

Mostly notes to myself. Shotwell stores most of its information in a database. Which I lost. Because I'm an idiot. But a bunch of metadata is also stored in the image's EXIF metadata! Most importantly is the "Original File Name" which should become the "Description" in DigiKam. Unfortunately, there's no way to copy those values automatically on import. So here's a one-liner which will read…

Opening Compact File Set (CFS) files in Linux

· 4 comments · 350 words · Viewed ~333 times


Unix is user-friendly — it's just choosy about who its friends are.

I was sent some medical images in a password-protected CFS file. Here's how to open them in Linux. You can't. OK, that's a bit of an exaggeration. It's complex, but here's how to do it. The Linux software for the Compact File Set hasn't been updated in years and only works with ancient versions of Linux. Here's how to temporarily install an old version, install the software, and then…

Game Review - World of Goo 2 for Linux

· 1 comment · 500 words · Viewed ~216 times


Screenshot from World of Goo 2. A puzzle with Goo balls.

Remember World of Goo? The hit game that you loved on the Nintendo Wii? It was all the rage in 2009: .social-embed{all:unset;display:block;}.social-embed * {all:unset;display:revert;}.social-embed::after{all:unset;}.social-embed::before{all:unset;}blockquote:not(*){all:unset;}.social-embed a{cursor:pointer;}blockquote.social-embed{box-sizing:border-box;border:.5px…