maker://Hans.Anderson

I am a maker. I make websites/apps as a full-stack-senior-web-application-devops-engineer-blah-blah-you-name-it; I make podcasts/audio short stories; I make photographic scenes of miniatures; I make disc golf stats.

I am the creator of the tech-fantasy and fiction-crime podcasts series Dist1nc7ive Stories, and produce other audio short stories.

I'm a freelance full stack web geek, and I blog about it, including my favorite toys of late: automation with Playwright/Puppeteer, PHP Goutte, and I leave myself notes-to-self to remember.

I am a co-founder of StatMando, a disc golf side-project that helped revolutionize stats in disc golf.

I used to run goofiness.com, and currently have Mockumentary.com, HuckfaceDG and a few other, um, interesting side projects.

<Full>Stack</Dev>

PHP framework experience includes Laravel, Yii, Symfony, WordPress, CodeIgniter, and custom PHP projects.
Have an old legacy PHP site that needs to be carefully updated? I have experience working with older codebases, updating both the code, and the systems they run on, carefully, while maintaining the important system. I've worked with Apache, Nginx, Internet Information Server, MySQL, PostgreSQL and MS-SQL.

StatMando

Disc golf stats. In early 2021, a few of us were on twitter, bemoaning the lack of stats in disc golf. We decided to try to help. We met, we planned, we built. The result: StatMando.

Distinctive Stories Podcast

I'm the creator of the tech-fantasy and fiction-crime podcasts series Distinctive Stories.
Visit site

Rufus & Anna are villains in "Computronium"

Blog Posts

December 29, 2024

Kubernetes ConfigMap Values

Extract a Specific Key from a ConfigMap: You can use jq or yq to parse JSON or YAML output to get specific values. For example, to get the value of a specific key in a...

Read

December 21, 2024

Command to Find a Command's Apt Package

Sometimes I type a command in linux and it's not found. I try to install it and it's not found. Often it will say what package you need to install, but when it doesn't it's usually something...

Read

December 21, 2024

Signal Handling in Three Languages

Signal processing in three scripting languages: Run: Run: Run:

Read

December 21, 2024

Command to Find a Command's Shared Libraries

Command to find out what shared libraries an executable needs: ldd /bin/bash eg When I created a chroot test, I copied /bin/bash and then did the ldd, and it was not...

Read

December 21, 2024

Python Instance Types

Python's gettype or instanceof is isinstance(). isinstance() can be used to check for a variety of object types in Python. Here are some common...

Read

December 21, 2024

Hexidecimal Math

Note: this is not the "word" abc123. This is the number abc123 as represented in hexidecimal. Each "place" is 16^<place>. So abc123: a...

Read

December 21, 2024

Endianness and Hex Editor Values

Type "foobar" (no quotes) into a text file, open in a hex editor. 'b' will be hex '62' which translated to dec is '98', which is the ascii code for the letter 'b'. B's ascii code is 66, so the hex...

Read

December 7, 2024

Docker RUN v CMD v ENTRYPOINT

RUN - (buildtime) during image build, lines in a bash script to install everything for the image. Most Dockerfiles will have many of these. Each one creates a docker layer. It's a good idea to...

Read

December 7, 2024

Docker RUN v ADD v COPY

I was wondering why we needed specific commands like COPY, instead of just RUN cp file1 file2. Research, and a colleague, says there are two reasons: Basically,...

Read

December 7, 2024

Docker Image Layers

Each instruction in a Dockerfile (like RUN, COPY, or ADD) creates a new layer. These layers are stacked on top of each other to form a complete...

Read

November 23, 2024

Install a Kubernetes Ingress

This is for my own understanding. It might be wrong but reflects my current understanding. (using kind) This setup maps ports 80 and 443 from localhost to the ingress. It's like...

Read

November 23, 2024

Configuration backup for `~/.tmux.conf`

Plugins TPM Plugin Manager

Read