maker://hans.anderson

I am a creator. I build websites/apps as a full-stack-senior-web-application-devops-engineer-blah-blah-you-name-it; I produce audio short stories; I create fun lego photos and animated videos; 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.

fullstack://

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.

discgolf://

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.

producer://

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

Rufus & Anna are villains in "Computronium"

writer://

June 12, 2025

Why Change to AWS Amplify?

I had been running this blog on AWS S3. You can do some weird gyrations when you set up a bucket a specific way and it will let you serve a static website really easily. I used a WP static plugin for...

Read

April 28, 2025

How to Intercept Sockets Using Playwright

Intercept sockets using playwright with dev console trick.

Read

April 28, 2025

Kubernetes CoreDNS Notes

Some notes to help me remember some Kubernetes items: Core DNS handles all of the DNS internally. If it's not in CoreDNS then it checks the external network. ClusterIP means it's only accessible...

Read

April 28, 2025

Run Owasp Zap in a Docker container

Run as daemon mode: Desktop UI: Then go to http://localhost:8080/zap. Use https://host.docker.internal to hit https://local..com Baseline scan: Full scan: Find container's IP: Use...

Read

April 23, 2025

Writing to stdout/stderr in Docker / Kubernetes

Recently I was testing some log aggregation, and I needed to write data to stdout/stderr so that the logging agent could send them to the aggregator. Here's a snippet of code to run that for awhile...

Read

April 23, 2025

Check Whether an AWS VPC is Being Used

If you need to check whether a VPC is being used -- you do not want to delete a VPC if it is being used, you can double-check it with this command:

Read

March 10, 2025

Ippsec's nmap command

YouTube star ippsec's favorite nmap for initial recon:

Read

March 10, 2025

Cloudflare API Example in bash/curl

Cloudflare API Example in bash/curl. This particular script was a proof-of-concept to disable a cache rule.

Read

February 3, 2025

Git Config Backup

Read

February 3, 2025

Why You Need to Lock Read Rows Inside an SQL Transaction

This is hard for me to remember. I feel like START TRANSACTION should be enough to prevent anything going wrong while that transaction is active for my session. Whatever value I...

Read

January 25, 2025

ARP in Networking

ARP (Address Resolution Protocol) is a fundamental networking protocol. It translates IP addresses into their corresponding MAC address. Find your network interface: ifconfig...

Read

January 19, 2025

Promises in Three Languages

Three ways to handle concurrent API requests that resolve when all are done, but can run concurrently. In other words, if you have three requests and takes 2 seconds, takes 1 second takes 2...

Read