Mike’s Place

Home

I am Michael Trausch, a computer programmer and father of three kids, who is stuck in Georgia. Some people like reading books; I like making computers do things, so that’s my preferred method of escapism.

I live with from chronic pain and discomfort as the result of a surgery gone wrong, combined with an inherited condition which became worse because of the poor outcome of the surgery. I’m also extremely limited in my ability to leave home—particularly on the worse days. Therefore, I no longer work full-time, instead taking on work when and where I can. When I cannot do that, I try my best to fill the rest of the time with distraction.

In other words, while I am looking for work (résumé), I am only looking for work that is a decent fit. I’m certainly not interested in wasting anyone’s time.

I also post a lot of content on this site which is available for free to all, and I would greatly appreciate donations.

Blog (RSS)

Learning Wayland: Part 1

This is the first part in a series, the length of which is unknown. Since I have decided to resume working on AllTray again, it’s also become clear that in order to modernize it, I need to learn Wayland. It has also become clear, just in my cursory research and what I already know, that the methods that AllTray uses under X11 simply won’t work with Wayland.

The primary point of these posts is to provide personal reference material, as well as help to solidify what I’m learning. Hopefully it’s also useful to you.

Read the full post…

C++ in Micro Environments

This is a follow-up to my Minimal C++ article. It might be helpful to read that article first, in order to understand the context better.

Here, I present a relatively refined—and featherweight—method for using C++ in “micro” environments: think 16- or 32-bit microcontrollers with memory on the order of 64–256 KiB of storage, usually split between the program and runtime memory (RAM).

Read the full post…

Web Service Backend Protocols

There are several popular choices when it comes to which protocol to use for Web service backend software. In this post, I take a look at the available options and—spoiler alert—come to the conclusion that HTTP is the winner. Yes, HTTP. The one and same protocol used to actually communicate with the Web browser, should also be the one used to communicate between the Web server and the application itself.

Read the full post…

The “First Post”…

Well, this is the “first post,” in the sense that it is the first thing that is published on this version of this site. It is, of course, far from the first thing that I have written… and I hope it won’t be long before it is lost in a long shuffle of posts soon to be written. I’ve missed writing.

As is probably implied, posts which are older than this one are imported from either superfloppies.tk or previous incarnations of my blog here.

Read the full post…

Unix Basic Concepts

First off, I’d like to say that this document, while more or less finished, has not been fully proofed for typographical errors. Be kind, thanks. This aims to be generally useful for anyone coming from a background that is not Unix. I do assume herein that you’re coming from something else, but not what that something else is. To put it differently: the information in this page will be absolute gobbledygook if you’re not familiar with analgous concepts in some other multiuser environment.

Read the full post…

Minimal C++

I keep talking about—and getting asked about—something that I refer to as “Minimal C++”. To be clear, there are a few points I should start of by stating explicitly: This is not—as far as I’m aware—a term used elsewhere. It is not a new, different, or distinct language from C++. It is simply a model for using C++ that is different from the traditional heavyweight model using the C++ standard runtime and standard template libraries.

Read the full post…

What the Hell is an Event Loop Anyway?

One of the more formative moments in my career as a programmer and as a coder, was the insight that I gained when I truly understood what an event loop is. In fact, until I did, I thought the same thing as some others out there do: that glib, Qt, APR, etc. all provide “event loops”. But, they do not. What they do do, is provide a useful abstraction of the underlying event loop so that programmers can focus on their logic without mucking about the system.

Read the full post…

Trust in Programs

Computer programs are only as “smart” as they are made to be. This is something that you already know if you’ve written even a single computer program. This is a fact that is often exploited by people, used against programs which are connected to the public network. The Spectrum As with anything, with programmers, you have a spectrum. Most people fall somewhere in the middle of it, but at the edges you have two types of people:

Read the full post…

Incremental Backups With CD/DVD/BluRay Media

We all know it: nobody does backups. At least, most people don’t, anyway. But everyone—and probably you, too—has important data. What to do? If you’re on something other than Windows (or you’re using Cygwin on Windows) and you don’t mind a little bit of copy & paste, there is an easy answer here. Check out xorriso The xorriso command makes this easy. Well, “easy”, meaning once you have learned how, you can put it in a shell script and life is happy.

Read the full post…

Creating Statically Linked ELF Executables

This writeup was inspired by a conversation on Mastodon. The Problem It is really easy to do something silly with an ELF file, such as accidentally create a dynamically-linked one as opposed to a statically-linked one. This is incredibly easy to do because in nine out of ten situations, you want to create an ELF program that uses shared libraries. Also, perhaps counter-intuitively, when linking a PIE binary, it is an ELF shared object with an entrypoint, not an ELF executable.

Read the full post…

Software (RSS)

AllTray

AllTray is a program that allows the user of an X11-based desktop environment to “dock” any program into the system tray/notification area. It has been unmaintained for a few years now, due to overwhelming health and life issues, for which I apologize.

I hope to remedy this: as of April 2019, I am officially resuming maintenance of AllTray. Of course, you can help speed things up by donating, which helps me to cover expenses and not only devote time, but devote more relaxed time, which makes things happen faster.

Read the full post…