Upgrading a Cloudformation-managed RDS Instance Engine

Posted on April 19, 2023 in blog • Tagged with aws, rds, infrastructure, devlog

I manage all of my AWS infrastructure with Cloudformation, and have for several years. While this is usually very helpful, sometimes there are snags with one of the many AWS services and how cloudformation attempts to interact with them.

Upgrading my database version was one of these. This post outlines …

Continue reading

Nested Arc RwLocks in Rust

Posted on April 18, 2022 in blog • Tagged with rust, prettypileofbones, devlog

In my attempt to create what amounts to an in-memory database in rust for a game project, I ran in to a topic for which I could find no explicit documentation.

"Can I nest RWLocks, read the inner lock out of the outer lock, and then read/write the inner …

Continue reading

Rust Implementation of Latin Square Generation

Posted on March 18, 2022 in blog • Tagged with rust, mathematics, prettypileofbones, devlog

While working on a multiplayer browser game using a rust websocket server, I ran to unexpected difficulty in trying to determine the turn order for a variable sized group of people.

The solution to my issue is a balanced latin square, which allows me to predetermine turn order for my …

Continue reading

Preventing CircleCI Tasks from Running on the Same Commit

Posted on September 06, 2021 in blog • Tagged with circleci, devops

A short outline on how to game CircleCI's caching mechanic to prevent sluggish builds from running on the same commit more than once.

Useful if you have some very slow CI steps and use Tags to automatically deploy from CircleCI. In my case, our test suite could take 10 minutes …

Continue reading

Setting up a Self-Hosted Server

Posted on April 30, 2021 in blog • Tagged with linux, ubuntuserver, selfhosting, plex, grafana, prometheus

This post is mostly meant as a reminder to myself in case I'm in a position where I have to set it all up again.

Setting up a new server from scratch can be particularly annoying when you have to remember all of the minor configuration steps you figured out …

Continue reading

Professional Open-Source Communication

Posted on August 28, 2019 in blog • Tagged with github, opensource, communication

*This blog entry is a work-in-progreses

I recently saw a tweet that showcased extremely poor communication in a feature request for an open-source repository. It got me thinking: Sure this person could just be entitled and abrasive, but its more likely he just doesn't know how to communicate well to …

Continue reading

Password Protected Files in Python

Posted on April 12, 2019 in blog • Tagged with python, pdf, msoffcrypto-tool, pikepdf

When working on a system that processes files, you're likely to run in to password protected files. Particularly in Japan, password-protected pdfs, office files, and zip files are the norm.

I turn down feature requests for zip files due to the possibility of them containing an undefined nested directory structure …

Continue reading

Working with ImageMagick's Wand Python Library

Posted on March 19, 2019 in blog • Tagged with python, python-wand, pdf

Handling images in wand can be deviously tricky, especially when you need a common system-wide resolution.

An example use-case:

I work on a system that sends & receives faxes. It also handles email attachments and draws text on to fixed format images (inquiries, order details, etc.).

Due to the fact that …

Continue reading

Property Testing: Why You Should Generate Test Data

Posted on August 31, 2017 in blog • Tagged with testing, property testing, python

This post is cross-posted to dev.to

I drank the functional programming cool-aid at my first real job. While I do not currently professionally develop with functional programming, I still apply what functional concepts I can -- property testing is a big one.

I'm going to cover three main points: - What's …

Continue reading

Roping in Complexity, Decay, and Duplication in a Growing Scala Project

Posted on September 13, 2016 in blog • Tagged with scala, conference, scalamatsuri

Roping in Complexity, Decay, and Duplication in a Growing Scala Project

All software projects will grow in complexity and decay over time. Lehman's Laws of software evolution state that as a system evolves, "its complexity increases unless work is done to maintain or reduce it", and that a system "must …

Continue reading