Hi, I’m Pedro.

Software developer and system administrator.

Also known as Pyker.

I build and maintain software, and look after the infrastructure it runs on. My work spans desktop applications, websites, APIs, automation, and production systems.

Technic

Much of my work is around Technic, a platform for discovering, distributing, and playing Minecraft modpacks. I’m its sole developer, responsible for ongoing development and maintenance across the launcher, website, APIs, modpack tooling, and community bots. I also manage the infrastructure that runs its services.

That means looking after both new development and the existing systems people rely on, from planning and implementation to releases and production support.

The launcher and game installation

I develop and maintain the Java desktop launcher, including modpack installation, Java runtime management, and compatibility across operating systems and Minecraft versions. This includes working through mod-loader installation formats, keeping older packs playable, and diagnosing failures on users’ machines.

The website and APIs

I develop and maintain the Laravel-based Technic Platform and its Node.js API, covering modpack discovery, accounts, community features, and communication with the launcher. That work reaches into the databases, caching, and search systems behind the applications, including investigating performance problems in production.

Modpack management and distribution

I develop and maintain Technic Solder and SolderJS, which connect modpack repositories with the launcher and platform. They handle modpack and build metadata, with Solder allowing individual mods to be updated without downloading an entire pack again.

Community tools and automation

I also develop and maintain Discord bots and supporting tools for the Technic community. These cover moderation, utilities, and the routine tasks that benefit from a little less manual work.

Infrastructure and operations

Alongside development, I’m responsible for keeping these services running. My work includes Linux administration, infrastructure automation with Ansible and OpenTofu, monitoring, performance testing, and troubleshooting production incidents.

Being the sole developer means following problems wherever they lead. Something that first looks like a launcher bug can turn out to be an API response, a Java compatibility issue, or a problem with how a modpack was published. My responsibility covers the whole path, including diagnosing the problem, shipping the fix, and keeping the services running afterward.

Not Enough Mods

I work on Not Enough Mods (NEM), a catalogue of Minecraft mods and their versions, and Not Enough Mod Polling (NEMP), the automation that helps keep it current.

The catalogue and community interface

NEM’s core is a Tcl application running inside the Eggdrop IRC bot. It lets the community look up mods and authorised contributors maintain listings across Minecraft versions, including dependencies, authors, and release information. It records version history in SQLite and publishes the catalogue as web pages and JSON, with a PHP index making the lists available online.

Automated version tracking

I maintain NEMP, which checks sources such as CurseForge, GitHub Releases, Jenkins, and mod-loader release feeds, then brings the results into NEM. It’s written in asynchronous Python, with IRC commands and a Discord relay connecting the tooling to the community.

My work spans maintaining the existing Tcl service and developing the Python automation around it. That includes adding version sources, adapting to changes in release formats, handling rate limits, and recovering from disconnections. It’s a mix of maintaining an established community tool and keeping its integrations working as upstream projects change.

Network UPS Tools

I’ve contributed to Network UPS Tools (NUT), the open-source software for monitoring and managing uninterruptible power supplies.

While investigating USB communication failures on a UPS, I traced the problem through device behaviour, libusb, and NUT’s C driver code. The work uncovered a deadlock during USB connection cleanup and a separate recovery problem that left the driver unable to communicate with the device after persistent USB overflow errors.

My upstream contribution fixed the deadlock and added automatic USB reset recovery for persistent overflows. I validated it with repeated disconnects and extended testing on real hardware, and the changes were merged into NUT.

How I work

A lot of my work involves improving existing systems: understanding why something behaves the way it does, making changes without breaking what people rely on, and leaving it easier to maintain.

I work with Java, PHP, JavaScript, Python, and shell, depending on the project. I’m comfortable moving between application code and the systems underneath it.

You can find my public work on GitHub.

Get in touch

Email me or find me on Mastodon.

My CV or résumé is available by email.