Thoughts on Design (Hey, Apple, Fix Your Phone)!

People that use hearing aids (and a ton of people who don’t) will be thankful.

I’m a relatively new hearing aid user, having used them for just a few months, but they’ve, along with a remote microphone in some situations, have made it possible for me to do things I couldn’t do before. I can eat at a restaurant with friends and participate in the conversation. I can hear coworkers at in-person meetings. I can understand the person on the other end of the drive-through. At my university, I can not only hear the professor, but I can hear the questions other students ask. I wish I investigated this years ago, and I encourage others to, if possible, talk to an audiologist if they are having trouble understanding others. It might change your life.

But, I’m also a techie, who is passionate about how tools can help people with disabilities. Tech, of which the hearing aids are just one tool in my collection, lets me live a life where I can participate in the world, keep myself healthy, and do the things I want to do. But when the tech falls short, I also see the gap and feel a sadness for what the world could be, but isn’t.

Continue reading “Thoughts on Design (Hey, Apple, Fix Your Phone)!”

Happy New Year and Remember to Update your Copyright Date!

I’m still living in 2023, even though it is now January 1, 2024. But my git repositories don’t need to live in 2023.

Picture this: you have a line at the top of your source file that looks like this:

// Copyright (C) 2012-2023 Joelle Maslak, All Rights Reserved

The problem is that I’m not usually working on the comment in the file, I’m usually working on something else in the file and forget to update these lines when I edit the files. I found a simple git hook to check for outdated copyrights on new checkins.

Photo by Pixabay on Pexels.com
Continue reading “Happy New Year and Remember to Update your Copyright Date!”

The Sorry State of Network Maintenance Notices

It’s nearly impossible to automatically parse network maintenance notices from internet providers. Let me tell you about a few ways providers mess this up!

I was driven to create this article after receiving a network maintenance notice, which my parsing code rejected. The problem today? The maintenance was to begin and end at 6:00 GMT. Even the most trivial maintenance activities take a minute or two, but this escaped their system and found its way to my parsing code. Sadly this isn’t unusual.

Photo by Brett Sayles on Pexels.com

What will it take for providers to send maintenance notices that can be parsed by a mere mortal?

Continue reading “The Sorry State of Network Maintenance Notices”

Linux Command Line QR Codes

You probably know what a QR code is, but if you don’t, you likely used them when you’ve eaten out at a restaurant. Do you know you can generated them at the command line? Did you also know you can can generate wifi login credentials in the form of QR codes at the command line?

A link to Joelle’s author page at medium.com

Generating QR Codes for Arbitrary URLs

While there are a ton of internet sites which will generate QR codes for arbitrary URLs, some of these function as intermediaries, with generated QR codes actually visiting something other than your URL first. Sometimes they advertise this fact (“Track the success of your marketing campaign!”) but if you want a safe way that the QR code just points at your own URL, without any dependencies on other sites, you want to generate your QR code yourself. Fortunately it is easy.

Continue reading “Linux Command Line QR Codes”

Making a Linux-Based “On-Air” Light for My Home Office w/ Camera & Google Calendar Integration

I work from home. I wanted to be able to let my wife know, “Joelle is busy right now.”

This article will be fairly technical, but won’t give step-by-step instructions for everyone. It’s more meant to serve as an inspiration to other computer professionals — to determine how they might do something similar.

I love working from home, being able to have an environment that is set up exactly for me. Everything in my office, from the desk and chair I use, to the room’s lighting was designed to make me comfortable.

But I wanted something outside my office door to indicate I was busy that my wife could see — some sort of display — that was easy for both of us to use.

The wireless RGB light selected to indicate I am “busy”

After all, my wife isn’t a fan of making unscheduled appearances on video meetings, and there are times I want to work uninterrupted.

Specifying My Requirements

Because I’m a technical professional, I naturally started by writing down my requirements. Here’s what I came up with:

Continue reading “Making a Linux-Based “On-Air” Light for My Home Office w/ Camera & Google Calendar Integration”

Anycast DNS with Raku Net::BGP

I had a problem at home. I wanted to be able to do maintenance on my recursive DNS server without impacting my home network too significantly. It is exactly the kind of problem that an enterprise network or an ISP might deal with: sometimes you need to do work on a server.

I’ll admit my home network is a bit more complex than most. I’m a network engineer and open source networking software developer, so I built it more like an enterprise or small service provider than a typical home network. I need a place to try new technologies and connect home-built network devices and software stacks for testing. I even have multiple sites, two of which are shown here — my house and some data center space I rent.

Network Design

Here’s a greatly simplified diagram of what this network looks like:

Highly Simplified view of Joelle’s Home Network

The home network has several network segments, my user (my wife), some additional routing infrastructure not shown, and some servers. One of those servers runs a recursive DNS server. I have two connections to the internet for redundancy, one via DOCSIS and the other via DSL.

Continue reading “Anycast DNS with Raku Net::BGP”

Perl Weekly Challenge 12 – Euclid Numbers

This week’s Perl Weekly Challenge, problem 1, reads:

The numbers formed by adding one to the products of the smallest primes are called the Euclid Numbers (see wiki). Write a script that finds the smallest Euclid Number that is not prime. This challenge was proposed by Laurent Rosenfeld.

The first Euclid numbers are 3, 7, and 31.   These are computed as follows:

We’ll take the first three prime numbers – 2, 3, and 5.

The corresponding Euclid number is the prime number multiplied by all the smaller prime numbers, with 1 added to it.

So the first one, 3, is just 2 (nothing to multiply it against) plus 1.

The second one is 3 * 2 plus 1, or 7.

The third one is 5 * 3 *2 + 1, which is 31.

How do you do this in code? Continue reading “Perl Weekly Challenge 12 – Euclid Numbers”

Converting Decimal to Roman Numbers in Perl 6

This week’s (week 10) Perl Request Challenge, challenge 1, was:

Write a script to encode/decode Roman numerals. For example, given Roman numeral CCXLVI, it should return 246. Similarly, for decimal number 39, it should return XXXIX. Checkout wikipedia page for more informaiton.

For this blog, I’m going to talk about converting a decimal to a Roman numeral.

To start with, I read the Wikipedia page referenced in the challenge, and realized there were several different systems for writing Roman numerals – it wasn’t as standardized as I thought! That said, I stuck with the style used in the description of the challenge, specifically “subtractive” notation.  Essentially, the symbols are written from the largest value to the smallest value, left to right, with no more than 3 of any symbol used.  When four of a symbol would normally be used (for instance, IIII to mean 4), instead it would be written as IV, meaning one less than 4 (you see this because the smaller number is before the bigger number).

So that’s what I’ll talk about below – the part of the code that converts an integer to a Roman number.

Continue reading “Converting Decimal to Roman Numbers in Perl 6”

Solving the Sparkpost Challenge

The Perl Weekly Challenge for week 9 includes an optional third challenge – essentially, use the Sparkpost service’s API to send an email.  Sparkpost is a service that allows sending emails via an HTTP interface, just by posting a JSON form response.

I’ve noticed people have not known how to solve these API-usage challenges, so I will share my method of solving them, using Perl 6.

Continue reading “Solving the Sparkpost Challenge”