Aaron's blog

Three-way light sockets

By aaron.axvig, Wed, 06/05/2024 - 14:08

I often have one or more lamps with three-way bulb sockets, but rarely bother purchasing a three-way bulb.  One might think that this results in some unpredictable behavior when trying to switch the light, as the next pull or turn may or may not turn it on or off.  But if you always turn two notches then the bulb will turn on / off on one of those notches and the behavior is predictable.

LeapFrog Fridge Phonics decoded

By aaron.axvig, Fri, 03/08/2024 - 08:01
LeapFrog Fridge Phonics pieces front and back

The kids' toy "LeapFrog Fridge Phonics" has letter pieces that mount in a decoder, which then say different things depending on which letter you mounted.  Of course this requires some system for describing each letter, which I have documented below.

There are six bits.  I will mark the presence of a bump as 1, and no bump as a 0.  A couple pieces were missing but I am reasonably certain I have deduced those values correctly (guesses in parenthesis).  I have recorded them in what seems like "most-significant bit on the left" order.  If you have the letter upright and look at the back at the bumps along the bottom, this is the matching order.

All sequences ending in 00 were skipped.  And I suppose any starting with 00 were also skipped, since A starts off the sequence with the lowest binary value that would satisfy both criteria.  I'm thinking that the mechanics of the toy work best when the force is distributed on both ends of the pieces, hence always wanting at least one bump at or next to each end.

I find the two-code gap between N and O to be a real puzzle.  It must be for Ñ but I found a video of a Spanish version of the toy and the Ñ was just an aside drawn on the N.

The characters do actually line up with the characters in the ASCII binary table if:

  • Shift a digit in from the left.
  • Perform some modulo 3 adjustment to compensate for the gaps.
  • Compensate for the Ñ gap (module 14 adjustment?).
B 010010
C 010011
E 010110
F 010111
G 011001
H 011010
I 011011
J 011101
K 011110
L 011111
M 100001
N 100010
O 100101
P 100110
Q 100111
R 101001
S 101010
T 101011
U 101101
V 101110
W 101111
X 110001
Y 110010
Z 110011

Lint trap logic

By aaron.axvig, Sun, 02/25/2024 - 22:52

Back when I had roommates I sometimes imagined that they would scorn me for not emptying the dryer lint trap after using the dryer. The logic behind my actions:

  • Messing with the lint trap could get lint or debris on the clean clothes (whether they are still in the dryer or nearby in a basket).
  • When you start a load, you really should check/verify the lint trap anyways. Might as well just clean it then.

In the Beginning was the Command Line by Neal Stephenson

By aaron.axvig, Wed, 02/07/2024 - 17:10
Date completed
5 months ago

An interesting read, weaving between topics of operating system histories and philosophies.  I am about a year into my Linux journey and I think this mostly motivational for me to continue that, but also made me think what would have been different if had succeeded in my experiments to get Linux running at home in the basement during my high school years.  I remember burned Mandrake Linux CDs and also Ubuntu ones that I got in the mail for free.

Completion status

Migrating VMs from KVM/QEMU to Proxmox including Ceph

By aaron.axvig, Tue, 01/16/2024 - 22:28

Here is my process.  Assume the VM is named zabbix, one of the Proxmox hosts is named proxmox1.example.com, the ID of your new VM is 1015, and your Ceph pool is named FirstPool.

  • Shut down the VM. (optionally change the interface name in /etc/network/interfaces to ens18 first)
  • Disable autostart on the VM: virsh autostart --disable --domain zabbix
  • Copy the qcow2 file to the Proxmox server.  A couple options, all run from the old KVM server (check source/destination order of scp command!):
    • To the Proxmox local disk: scp /data/vms/zabbix.qcow2 root@proxmox1.example.com:/var/lib/vz/images/zabbix.qcow2
    • Or maybe your VMs are big and your Proxmox disks are small.  You can copy directly to a CephFS if you have created one: scp /data/vms/zabbix.qcow2 root@proxmox1.example.com:/mnt/pve/cephfs/zabbix.qcow2
  • Import the VM into Proxmox: qm create 1015 --scsi0 FirstPool:0,import-from=/var/lib/vz/images/zabbix.qcow2 --boot order=scsi0  FirstPool is the Ceph pool.  It creates a disk in there automatically named vm-1015-disk-0.
  • Find the VM in the Proxmox web GUI and make some changes.  Probably many of these could be included in the previous step.
    • Add a network adapter.
    • Bump up CPU cores and RAM to whatever you want.
    • Change "Start at boot" to Yes.
    • Change the name of the VM (to "zabbix" for this example).
    • Change the OS type.
  • Boot the VM
  • If you didn't before shutting down, change the interface name in /etc/network/interfaces to ens18.  Make sure you check the interface name with ip a first to verify that it is ens18.  I have no idea why mine are always set to that but it seems consistent.

BTW copying to CephFS could be slower.  I have three nodes, all SSDs, and 1gbps connections and it seems to run at about 35MB/s versus 120MB/s that I was seeing to local disk.  Of course the biggest VMs need to be copied to slower storage!  But then that pain was dulled when I observed that my import speeds were over 1GB/s which is way faster than when importing from local storage.

Even though I think I have thin provisioning enabled in KVM, it seems to copy the full disk size across the network, and into the .qcow2 file..  But then when it imports into Ceph it seems to be thin provisioned again.  Smart but mysterious.

Seeing surprisingly high Ceph space usage afterwards?  You could be like me and assume that thin-provisioning is broken.  Or just go delete that .qcow2 (now that you have imported it) that you stuffed onto the CephFS which gets replicated 3x with no thin provisioning.

Aaron, Anna, and Alice in 2023

By aaron.axvig, Thu, 12/28/2023 - 09:11

2023 was an exciting year.  First in our minds is the joy of watching Alice grow from a 2-month infant to a 14-month almost walker.  And Anna doubled-up on her stay-at-home-mom duties for the first couple months of the year by babysitting nephew Xander as well. 

Anna's grandpa in Minot passed away at the end of January so she spend almost a week in Minot spending time with far-flung relatives and planning the funeral.  Aaron went up a couple days later, having used his evenings alone at home to work feverishly on installing a new range hood.

Installed range hood

Next on the project list was installing radiators in the nursery and guest bedroom.  The baby was getting cold!  With that plumbing work done we were able to close up the wall in the dining room and mostly finish the built-in cabinet below and surrounding millwork. 

Louise on a pile of snow

It was a winter with a lot of snow!  We were very thankful to have a snowblower and completely filled the backyard with snow.  As a fun winter activity Aaron made an effort to make bread once or twice a week, and eventually found some good recipes.  Aaron also started some purple coneflower seedlings from seeds that Grandma Jean had picked.

Coneflower seedlings

In April we closed on the shared purchase with Aaron's parents of a 10 acre lot in south Bismarck.  Aaron's sister and parents simultaneously closed on an adjoining 5 acre lot.  Due to some complications this closing had been in process for exactly one year so it was a relief to finally have it done.  We hope to build a home there in about 5 years. 

In June Aaron traveled to Daytona to be best man in Simon and Madalyn's wedding.  The wedding of course was great and exciting, but also Aaron rented an electric car so had some fun with that new experience. 

Early summer saw a lot of changes to our front yard.  Aaron fixed many leaks on the sprinkler system and moved many sprinkler heads that the new (2-year-old!) fence interfered with.  Then he dug in landscaping edging for flower beds around all of the front yard fence and for mulch circles around a few trees.  New grass in the front yard sprouted nicely and now we finally have no dirt piles up there.  Eight new daylily varieties purchased at the annual Daylily Society auction went into the new flower beds along with some hostas, and then they were completely filled when the neighbor started thinning out her greenery and brought over ferns, irises, daisies, and many more.  The highlight of the flowers this year was trying dahlias for the first time.

The porch had one remaining project—the skirting.  Through July and August Aaron worked away on that and it turned out great.  So the porch is officially complete now. 

In the back yard, the eye-sore shed was torn down with Eliot's help when his family visited. But we didn't get that corner of the yard completely cleaned up yet...maybe next year!  Now with no shed, garage space is more valuable.  Aaron sold a motorcycle which helps with that. 

Anna met her friends from Minnesota and Colorado in Medora for a long girls' weekend and had a lot of fun.  We also went out on the pontoon a few times, including sandbar play time. 

Anna and Alice at the sandbar

We bought part of a tractor for use at the south Bismarck lots.  We planted some oak trees there and rigged up a watering trailer for the tractor.  Aaron moved his horseradish plant there and also started some rhubarb there which was donated by a neighbor. 

Dad on tractor with watering trailer

Over Labor Day we spent a full week visiting Eliot, Caroline, and Felix in the Boston area.  They were just moving into a new house, extensively renovated in the previous weeks with more to do.  So we had a lot of fun enjoying the new scenery and helping out with many projects and unpacking boxes.

Alice had a big birthday party in November and it was great to have so many friends and family join in the celebration.  Also Anna's grandma Isabell has been visiting frequently.  She comes from Minot on the senior bus with door-to-door service so it is very convenient. 

We had a great Thanksgiving in Rosemount, MN with Anna's family, and Christmas in Mandan was a lot of fun too. 

Firewalls and Internet Security, 2nd Edition: Repelling the Wily Hacker

By aaron.axvig, Mon, 06/26/2023 - 15:07
Date completed
1 year ago

I chose this book knowing that it was old.  My thoughts were that it would be interesting to see how things used to be, and also that it would focus more on what nowadays seem to be basic principles.  I can report success of both points.

The book overall had a nice balance of hacking stories, security principles, protocol analysis, and functional recommendations.

Completion status

Suggested replies

By aaron.axvig, Thu, 04/27/2023 - 22:51

I have used suggested replies for a few years.  Everyone has.

Lately I have felt a little slimy using the feature.  It isn't really me replying to that person that I have some relationship with.  Don't they deserve five seconds of my time?  Some programmer/system/"learning" is actually changing the tone of my conversations every time I tap a reply that is close enough, instead of typing out what I usually would.

So I disable this feature now.  I'm not ruthless about it, but if I notice it and don't mind the effort then I will take the time to turn it off.

Surely AI in the news lately has influenced my sensitivity on the topic.  I haven't tried any of the cutting edge GPT products.  Maybe this is where I become the grumpy old man or hippie-type.

The Cave and the Light: Plato Versus Aristotle... by Arthur Herman

By aaron.axvig, Thu, 03/23/2023 - 09:00
Date completed
1 year 3 months ago

We chose the topic of philosophy for the second read our three-person book club, and after a brief consideration of Nicomachean Ethics itself we pivoted to this book to get more of a broad introductory take on the subject.  This ended up being a perfect fit for me, who had essentially zero knowledge on philosophy and its characters.

This really expanded my knowledge of so many things, especially the history of Greece, Italy, Egypt, etc. as it relates to the great thinkers that bounced around the area over the centuries.  The relationship of these thinkers and their ideas to religion was also particularly interesting.  And of course the core idea of the book, the diverse platforms of Plato and Aristotle, is something that I will enjoy thinking about and reading more directly about for years to come.

But first I will need to read some lighter stuff.  This book is lengthy and I read a lot of it in 10 minute chunks, so it seemed to drag on and on.  Worth it though: this ranks as one of the most impactful books I have read.

Completion status