Max Fierke

is probably debugging something

Manjaro ARM for ClockworkPi DevTerm A06

The ClockworkPi DevTerm (A0604 Model) is a Rockchip RK3399-based computer designed for tinkerers and retro-computation fans. It's initially launched with a spin of Armbian but I worked on porting Manjaro ARM (a derivative of ArchLinux ARM) to the device to get it running closer to mainline kernels and newer software. It's now available as a supported device in Manjaro ARM, while working to get to parity with the Armbian-based "ClockworkOS". I'm also working on cleaning up the vendor-provided patchsets and getting them ready for upstream submission and to simplify the maintenance on the Manjaro ARM team going forward.

Active
November 2021 — present

hcl.cr

hcl.cr general-purpose HCL2 (Hashicorp Configuration Language) parser written in Crystal. It does not make any domain assumptions and aims to be spec-compliant and compatible with the Go implementation.

HCL2 support is considered feature-complete. However, it does not yet run against the spec test suite, so there may be situations in which some documents do not work as they should or as they work in the go reference implementation. An hcldec implementation is being developed to test against the spec test suite.

mstrap

mstrap (short for "machine bootstrap") is a tool for provisioning and managing a development environment. It is a convention-over-configuration tool, which aims to leverage existing ecosystem tools to provide a one-command provisioning experience for a new machine.

Functionality

  • Setup Homebrew for development package management
  • Install basic development tools and setup reasonable system defaults (via strap or strap-linux)
  • Setup environment for running shared, containerized services (currently via Docker)
  • Clone and bootstrap projects
    • Automatic setup of web projects with a .localhost domain and locally-trusted TLS cert (via mkcert)
  • Setup version-managed language runtimes (via asdf-vm)

mstrap is wholly centered around proving a no-runtime-dependency (other than normal system libraries) approach and will always remain a tool designed around getting you up and running immediately after taking a new machine out of its box and completing the OS setup.

ember-concurrency-retryable

ember-concurrency-retryable is an Ember addon that adds retry strategies and a task modifier for automatically retrying ember-concurrency tasks.

Stemming from an RFC I opened against ember-concurrency, ember-concurrency-retryable works by wrapping a task's generator function in a try/catch and transparently retrying the generator function in accordance with the passed in retry policy. ember-concurrency-retryable uses generator functions and ember-concurrency primatives like timeout so that it plays along nicely with ember-concurrency like any other task, and remains fully cancelable.

Simply put, ember-concurrency-retryable aids in building fault-tolerant UIs in Ember with ember-concurrency.

Untitled point-and-click adventure game

Over the past few years, I've been slowly chipping away at a point-and-click adventure game a la the old LucasArts & Sierra games. It's a slow moving project, but I'm trying to do as much myself, including puzzle design, writing, pixel art, and programming.

The game stars a private detective investigating a curious case, but beyond that much is up in the air. It's being written from scratch in Rust using the Bevy engine. I'll share more details when there's something to share.

Active
December 2017 — present

fincher

fincher is steganography tool for text. It provides a number of strategies for hiding a message within a source text by storing each character as a typo.

The method by which it works is contingent upon the combination of replacement and displacement strategy. See Usage for more information.

The inspiration for fincher comes from "Panopticon", Season 4 Episode 1 in Person of Interest, in which The Machine encodes a message as typos in the dissertation of one of the main characters, Harold Finch.

fincher is currently 0.2.1 and considered an experiment and a project for funsies. I am very interested in contributions & ideas!

Resumis

Resumis is Esperanto for "summarized", apparently. Totally coincidental. It's also a platform for managing your personal internet homepage presence and advertising yourself to the world.

Aimed at developers & designers, Resumis provides individuals with an API and management interface for their bio, social networks, projects, professional skills, resume, and blog. Resumis offers both a JSON Resume and JSON-API compliant API to allow users the freedom to build their own frontends using the data from Resumis. (This site is an Ember.js site backed by Resumis API!)

reptyr macOS and Rust port

reptyr is a super useful tool written by Nelson Elhage that can be use to move a running process to another TTY session (e.g., moving a process started in the shell to a screen session).

Reptyr currently has support for Linux and FreeBSD using ptrace. macOS, however, lacks a complete ptrace implementation, so does not work with the existing implementation.

I started writing macOS platform support for reptyr based on the FreeBSD code, but implementing it with the needed calls in Mach.

Having an interest in Rust, I stopped working on the macOS support, and instead decided I would port it to Rust and then add macOS support.

Some very early code for macOS support is available here: mf-macos_support

Work on the Rust port is happening here: mf-rust_port

Hackintosh on System76 Lemur Ultra 4

DSDT, SSDT, and boot config needed for running OS X 10.8.5+ on a System76 Lemur Ultra 4. Effort to get as much hardware working under Mac OS X as possible on my System76 Lemur Ultra 4. Non-working things include changing screen brightness, sound input, VGA, and HDMI audio.

September 2014, I ended up giving in and buying a MacBook Air.

Project may still prove useful to folks trying to Hackintosh machines with similar specs (esp. VT1802 audio)

CyanogenMod for Galaxy S 4G

As part of TeamAcid, an Android hacking group centered around the Samsung Galaxy S 4G, we managed to port three versions (7, 9, 11) of the aftermarket Android distribution CyanogenMod over to the device. Our ultimate goal was to get the device officially supported by the distribution. I worked on a lot of kernel code, and did a lot of work getting the camera driver to behave with user space. Overall, it was a successful project, but we never got to official upstream CyanogenMod support before the device became obsolete.

WaterCooler

WaterCooler was a free and open-source group chat application designed for use internally within offices and organizations. The intention was to provide a FOSS counterweight to proprietary, SaaS solutions such as Campfire and HipChat, and provide a solution for people looking to host a rich, multi-room chat application behind their firewall on their own hardware.

Built as a way to teach myself JavaScript and Node. I got bored with it, as even in 2013 there were many other, more capable chat system implementations. However, this one might be interesting as a sample application, since it's fairly basic but still has some nice features like @ mentions and embedded media. Who knows if it still runs, though.

OpenSkedge

OpenSkedge is inspired by an old PHP 4 application, Employee Scheduler, and is a flexible scheduling application designed for companies and organizations (such as education institutions with student workers) which require fluid shift scheduling.

It's a PHP 5 web application built on the Symfony 2 framework and utilizing the Doctrine ORM. It is licensed under the GNU GPL version 3 or later.

I no longer actively develop or maintain it, but I will still accept contributions and address any critical issues that might arise.

Acidify

Acidify was a wrapper for a number of scripts that compose the Android build system. It's purpose was to provide convenience for people building multiple versions of Android (such as CyanogenMod maintainers). It's original purpose was to make it easy for members of TeamAcid to switch between CyanogenMod versions with one command. It also provides a method for installing all the required packages needed for building Android (if using Ubuntu or Linux Mint), including CyanogenMod 7, 9, and the Android Open Kang Project. In addition, it supports local manifests, provides a function for deploying built OTA zips to the device, and uploading ready builds to Goo.im. The script is written in bash and is easily configurable.

BleuFear

BleuFear is a theme (technically a collection of themes) with a wild streak of electric blue. It is inspired by the design of my site and everything else that fits that color scheme. The name comes from the french word for blue(duh) and the American way to pronounce the first part of my last name. (Also, it's a dark theme so fear~=dark).

SandwichRoulette

SandwichRoulette is an application designed for the indecisive. Like many people, my lunch has been delayed because of my inability to decide on what to put in my sandwiches. This application, designed for Android-powered phones running 2.1 and higher, automates the ingredient choosing process. Creations can be saved and later versions will support sharing the particularly delicious ones. SandwichRoulette is licensed under the GNU General Public License version 3.

AxDroid

AxDroid was a project started by Ertan Deniz and continued by Paul Burton. The AxDroid project aimed to get Google's Android operating system into a usable state (with as full hardware support as possible) on the Dell Axim X50(v) and X51(v) Pocket PCs. I was a contributing developer to the project. I wrote ported some drivers and did other kernel related work. We had running builds of Android 1.5 and 2.1. The project was cancelled after it became apparent that Android would never work for daily use on the devices due to hardware limitations. Seriously, it was suuupper slow. Took about 15 mins to boot to the homescreen.