Measuring propagation using FT8
One obvious thing that you can do after putting up an amateur radio antenna is to operate a bit on FT8, to see how the propagation goes. Just transmit on all bands and see how for you get.E.g. this map...
View ArticleMore FT8 propagation
Last month I graphed the distance to remote stations as a function of time of day.Today I plotted the gridsquare locations on a world map:Ignore the top right one. That’s “RR73”, and not a real grid...
View ArticleThe uselessness of bash
The way I write automation for personal projects nowadays seems to follow a common pattern:A command line, that’s getting a bit longA bash scriptRewrite in GoOccasionally I add a step between 2 and 3...
View ArticleAX.25 in user space
The Linux kernel AX.25 implementation (and user space) is pretty poor. I’ve encountered many problems. E.g.:you can’t read() and write() from the same socket at the same timeDGRAM receiving just plain...
View ArticleUnifi docker upgrade
This post is mostly a note to self for when I need to upgrade next time.Because of the recent bug in log4j, which also affected the Unifi controller, I decided to finally upgrade the controller...
View ArticleLinux sound devices are a mess
It started with a pretty simple requirement: I just want to know which sound card is which.Background about the setupI sometimes play around with amateur radios. Very often I connect them to computers...
View ArticleVirtual audio cables
This is another post about the mess that is Linux audio. To follow along you may want to read the previous one first.The goal this timeThis time I want to create a virtual audio cable. That is, I want...
View ArticleRaspberry Pi bluetooth console
Sometimes you want to connect to a bluetooth on the console. Likely because you screwed something up with the network or filewall settings.You could plug in a screen and keyboard, but that’s a hassle....
View ArticleSSH over bluetooth
Yesterday I set up a simple serial console over bluetooth as a backup console.Today I’m running SSH over bluetooth. Raw SSH, no IP. I only use IP on the two ends to talk to the SSH client and server....
View ArticleSSH over bluetooth - cleanly
In my previous two posts I set up a login prompt on a bluetooth serial port and then switched to running SSH on it.I explicitly did not set up an IP network over bluetooth as I want to minimize the...
View ArticleGo programs are not portable
A while ago I was asked why I wrote Sim in C++ instead of Go. I stumbled upon my answer again and realized it could be a blog post.So here’s what I wrote then. I think I stand by it still, and I don’t...
View ArticleLocalisation isn't translation
If you only have your app in English then you’ll still be understood[1] by the new market whose official language isn’t English.If you show farenheit (a word I can’t even spell), then 96% of the world...
View ArticleAX.25 over D-Star
Setting up AX.25 over 1200bps was easy enough. For 9600 I got kernel panics on the raspberry pi, so I wrote my own AX.25 stack.But I also want to try to run AX.25 over D-Star. Why? Because then I can...
View Articleseccomp — Unsafe at any speed
I’ll just assert that there’s no way to use seccomp() correctly. Just like how there’s no way to use gets() correctly, causing it to eventually be removed from the C and C++ standards.seccomp,...
View ArticleDropping privileges
If you’re writing a tool that takes untrusted input, and you should treat almost all input as untrusted, then it’s a good idea to add a layer of defense against bugs in your code.What good is a buffer...
View ArticleAnother way MPLS breaks traceroute
I recently got fiber to my house. Yay! So after getting hooked up I started measuring that everything looked sane and performant.I encountered two issues. Normal people would not notice or be bothered...
View ArticleJava — A fractal of bad experiments
The title of this post is clearly a reference to the classic article PHP a fractal of bad design. I’m not saying Java is as bad as that, but that it has its own problems.Do note that this post is...
View ArticleNo way to parse integers in C
There are a few ways to attempt to parse a string into a number in the C standard library. They are ALL broken.Leaving aside the wide character versions, and staying with long (skipping int, long long...
View ArticleInteger handling is broken
Floating point can be tricky. You can’t really check for equality, and with IEEE 754 you have a bunch of fun things like values of not a number, infinities, and positive and negative zero.But integers...
View ArticleFast zero copy static web server with KTLS
I’m writing a webserver optimized for serving a static site with as high performance as possible. Counting every syscall, and every copy between userspace and kernel space.It’s called “tarweb”, because...
View Article