Personal Projects

This page is where I highlight the various projects I have worked on or am working on. A lot of these are Open Source Software. But some of them are also proprietary products that I create and sell. I try to still talk about the development of the proprietary projects as I think those are interesting as well.

Being Developed & Maintained

The following are projects that I am either currently developing in it's infancy or I have already developed and maintain either as a tool that I use, a product that I sell, or a library that supports a product that I sell.

Pullwalla

Proprietary Swift SwiftUI

Pullwalla is a proprietary macOS, iOS, and iPadOS app designed to help developers have a single place to discover and manage the pull requests that they need to review across GitHub, GitHub Enterprise, Bitbucket, and Bitbucket Server. This is especially useful when you are on a team that is responsible for multiple repositories even if they are spread across multiple SCM services.

Originally I wrote it in Swift with AppKit, and then later in Swift with SwiftUI when I added support for iOS & iPad. You can check it out on https://pullwalla.com. The following are a variety of open source libraries I created in the support of building Pullwalla.

  • FunctionalButtonStyleKit.git is a SwiftUI library to facilitate defining button styles using composition. For details you can checkout the SwiftUI Composable Button Styles blog post.
  • UIImageCacheKit.git is an iOS Framework to make cacheing UIImages from URLs easier
  • Functional.git is a Swit library provided the basics of Functional Programming to Swift
  • Fate.git is a Swift implementation of Futures
  • JsonFileManager.git is a Swift library making it trivial to manage JSON flat files
  • BuyKit.git is a wrapper around StoreKit to make In-App Purchases easier to deal with

If you are interested in checking out the open sourced origins of Pullwalla you can checkout pra.git . It is a ncurses (command line) tool I built to let you see only the pull requests you care about across multiple repositories as well as multiple source control providers (GitHub, Bitbucket, etc.).

Git Patch Stack

OpenSource Rust CLI MIT

Git Patch Stack is a command line tool that facilitates a Patch Stack based workflow with Git. Allowing you to free yourself from the constraints, isolation, & limitations of feature branches & join the revolution of developing & shipping software faster with small pull requests using Git Patch Stack.

Git Patch Stack is yet another brainchild of mine. I wrote the initial version of it in shell script wrapping the Git command line tool. This was a very early and minimal version I created just to validate the concept & the idea. It's git repository can be found here for historical purposes. git-ps-bash.git

After deciding the idea had merit, I rewrote it in Swift and extended it with more robust features. After using this version across our teams we noticed some rough edges in terms of performance as well as identified some new features that we wanted. It's git repository can be found here for historical purposes. git-ps.git

To address these issues I ended up doing a complete rewrite of it in Rust. This is when it really started to take shape and started building its cult following. Rust has ended up being one of the best choices I could have made and has made it easy to maintain and evolve this project overtime. The actively maintained repositories for the app & it's associated book are as follows.

  • git-ps-rs.git
  • git-ps-book.git

MailMark

Proprietary Swift SwiftUI

MailMark is a tool I created for myself because I was frustrated with the world of email marketing tools. All of them effectively force you to use their WYSIWYG editors which I constantly have to fight with to get something even basic and decent looking working. So, I decided I no longer wanted to fight and built MailMark. A tool that takes Markdown content and generates HTML Email content so that it can then be sent.

Basically all of the email marketing tools also don't support sending raw HTML emails without paying for their higher end tiers. So, I have also been building a set of libraries and tools around all this to facilitate better mailing list and email content production for small companies.

Custom Keyboard

OpenSource Dactyal Manuform QMK Firmware

This is a project in which I have created a custom keyboard based on the Dactyal Manuform so that I no longer have wrist pain. It involved first coming up a shape that would allow me to minimize repedative stretching of my fingers. Turns out this required reducing the size of the keyboard down to a smaller 4x5 layout. Which in turn required coming up with a shape and position where the entire thumb cluster would be comfortably functional. Finally, it required figuring out a multi-layered keyboard layout that would allow me to efficiently write code as well as play video games. More details are avaliable on the Custom Keybard Project Page.

git-cl

OpenSource Swift CLI MIT

git-cl.git is a command line tool created to solve two problems around maintaining a CHANGELOG.md.

  1. support explicit targeting of consumers, not developers
  2. association of CHANGELOG.md entries with changes without Git conflicts

To accomplish this I came up with the idea of using Git commit messages to store CHANGELOG.md entries in a structured format for the associated change. This made it possible for me to write git-cl in Swift. git-cl is a command line tool that provides a number of commands to traverse the Git tree, extracting the structured CHANGELOG.md entries, and building CHANGELOG.md output.

alt

OpenSource Rust CLI MIT

alt is a command-line tool designed to facilitate quickly finding alternate files within a project in a generic way by using similarity of paths and file names. It is also designed as command line tool so that it could easily be integrated into editors like neovim and vim.

  • alt.git
  • alt-archlinux-builder.git

Prior to generalizing this into a command-line I originally solved this problem with a vim plugin that was based on patterns rather than similarity. I quickly discovered that some of the patterns necessary to support the various platforms I was working in conflicted with one another. Hence, why I implemented alt.

  • vim-open-alternate.git

If you want to see the original plugin I created that inspired me to build alt. You can see an introduction to vim-open-alternate in the video below.

git-ticket-summary

OpenSource Rust CLI MIT

git-ticket-summary.git is a command line tool I built to generate a summary of git commits & files touch within a repoository that are related to a given ticket identifier. This is extremely useful when you have smaller commits in a repository that are all related to a specific ticket/story and you want to quickly get a summary of those commits.

Dot Files

OpenSource

This project is how I manage all my dot files for my preferred setup. It consists of the following.

  • dottmux.git my tmux configuration files
  • dotzsh.git my zsh configuration files
  • dotnvim.git my neovim configuration files
  • dotgit.git my git configuration files

The above repositories are the ones that I am actively using. However, I do also have some older dot files that I am not actively using anymore.

  • dotfiles.git old repo grouping all my dot files together
  • dotvim.git my old vim configuration files
  • dotack.git my old ack configuration files

Past Projects

The following are projects that I built used at one time, but I no longer work on or maintain. I keep them around primarily for historical reasons. But also you never know when that thing you built back in the day will become useful again, or a piece of it.

Flutter Forge

OpenSource Dart MIT

Flutter Forge is a Dart & Flutter library I built when I was a Partner at Uptech Studio and LLMs had just come out. I designed it to make building modular, compossible, and testable Flutter Components. Primarily so that agentic LLM based tools would more easily be able to compose the components and successfully build flutter applications. Secondly, so that a library of very stable and well tested components could be developed over time and reused across various client projects, possibly even be used in a conceptualized Low Code/No Code tool. Further details can be found on https://flutter-forge.dev.

I no longer maintain Flutter Forge as I am no longer a Partner at Uptech Studio and the Flutter work I have been doing has been on a long existing Flutter application. However, I am keeping it around for historical purposes. flutter_forge.git

NotaCode

Proprietary Rust Swift

NotaCode is a macOS application that I created which facilitates post-commit reviews in combination with GitHub. Interestingly it stores the review data within the Git Object store so that it is synchronized along with all the other Git data.

I built it because we had decided to experiment with following a pure CI methodology with a post-commit review process on one of our projects, to attempt to increase throughput at the beginning of a project. NotaCode was the application that facilitated this post-commit review process.

Interestingly the majority of NotaCode is written in Rust with a thin macOS Swift layer wrapping it. The interfacing between the Rust library and Swift happens through the C FFI. Swift's nice C interoperability made this relatively painless.

Gumleaf

Proprietary Swift SwiftUI

Gumleaf is a personal task management application for macOS/iOS/iPadOS built around the concept of daily standups and managing your tasks in terms of days. It also has the ability to export your tasks to a Slack format for sharing your daily standup with your team.

Gumleaf was again a brainchild of mine. Actually, it started as side project that my friend and I built together to get deeper into SwiftUI and try and find where its rough edges were. After sharing it internally with the Uptech Studio teams, it quickly became a daily driver for many of the employees.

It is written in Swift with SwiftUI. Interestingly I never released it externally, other than sharing it with a few developers from various clients that saw me using it and wanted it. This was primarily because at the time we at Uptech Studio had decided to focus our products around the same audience as our consulting services.

Constraid

Constraid.git is a library or iPadOS, iOS & macOS designed to make NSLayoutConstraints usage as easy as possible conceptually.

cyberpower320d

OpenSource C GNU GPLv2

cyberpower320d is a UPS monitor daemon for the CyberPower 320 SL UPS, now discontinued, which allows you to specify any serial port to watch or any shutdown script you would like to have triggered. It is a very small and compact C program that I released under the GNU GPLv2 license.

Given that the CyberPower 320 SL UPS is discontinued and that I don't own this UPS anymore. I no longer maintain this project. However, I am keeping it around for historical purposes, or if on the off chance someone is still using a CyberPower 320 SL UPS and wants support for it on Linux. cyberpower320d.git

vim-slack-format

OpenSource Vim Plugin Vimscript

vim-slack-format.git is a vim plugin I created to provide syntax highlighting for Slack's formatting. I created this because at the time I was keeping track of my standups within vim. See the Remote Standups at Uptech blog post to gain more context and see screenshots of this.

vim-ping-cursor

OpenSource Vim Plugin Vimscript

vim-ping-cursor.git is a vim plugin I created to quickly be able visually find the cursor after visually losing it's position. It does this by highlighting the column and row that the cursor is in. Effectively creating a cross-hairs helping you visually locate exactly where the cursor is at.

vim-test-recall

OpenSource Vim Plugin Vimscript

vim-test-recall.git is a vim plugin I created to make my TDD process a bit easier. It does so by recalling the last test that was run, when previously running tests in at test file. So that you can run that test while you have bounced back to the implementation file and are making changes to make the red tests turn green. Without having to go back to the test file.

tmuxme

OpenSource Ruby Ruby on Rails ssh

tmuxme is a service that facilitates remote pair programming via tmux. It consists of a service (built in Ruby on Rails) as well as a client command-line tool (built in Ruby).

  • tmuxme.git
  • tmuxme_client.git

BoxCI

OpenSource Ruby Vagrant OpenStack AWS EC2 Virtualization

Is a tool I built, back when I worked for ReachLocal, to make it easy to creating virtual development and CI environments locally as well as in the cloud. We used this locally as well as used this with OpenStack and AWS EC2 in certain cases. We also used it in combination with Atlassian Bamboo at various points in time. I no longer maintain this project. However, I keep it around for historical sake.

  • boxci.git the command-line tool to simplify create virtual development environments and cloud based CI jobs
  • boxci-puppet-cassandra.git BoxCI Puppet Cassandra Module
  • boxci-puppet-redis.git BoxCI Puppet Redis Module
  • boxci-site.git The boxci documentation website
  • boxci-presentation.git Presentation on initial release of BoxCI initially given at an OC Ruby Meetup on April 24, 2014 at Red Digital Cinema

snapdragon

OpenSource Ruby

snapdragon.git is a Ruby command line tool I built to make running Jasmine JavaScript test runners easy from the command-line similar to RSpec. I no longer use or maintain this. But keep it around for historical purposes.

jquery_comp_hist

OpenSource Javascript jQuery Unlicensed

jquery_comp_hist.git is a jQuery Comparative Histogram plugin that I wrote ages ago when jQuery was the super popular Javascript library. If you are interested in getting more details about it you can check out my blog post about it. I no longer actively maintain this project as I don't use jQuery anymore.

octopusci

OpenSource Ruby Sinatra

octopusci.git A multi-branch continuous integration server. I built this to fill a need back when I was working at RealPractice. If you want to find more out about it. There is a recording of a presentation I gave on it at a local meetup. Please forgive the horrible audio & language.

sublime_guard

sublime_guard.git is a plugin that I wrote embeds Guard into the Sublime Text 2 experience so that as you are developing it would automatically run or tests for you and provide feedback. I grew out of liking this and moved to a testing workflow where I wanted full control of when tests would run. Therefore, I no longer maintain this but keep it around for historical purposes.

Ruby Libs

  • snake_caser.git A simple Ruby library that provides snake casing functionality
  • hitnmiss.git Ruby gem to support using the Repository pattern for read-through, write-behind caching using POROs
  • hitnmiss-redis_driver.git A Hitnmiss repository cache driver backed by Redis
  • tagalong.git A Rails tagging plugin that makes sense. ( Note: has built in support for Sunspot for search )
  • rack-vendor_accept_header.git Rack middleware to parse vendor accept headers
  • late.git Fast time in Ruby thanks to C bindings.

be-wf-design-exploration

be-wf-design-exploration.git is a Design Exploration of building a Backend Web Framework using only functions, strong typing via TypeScript and requiring everything be easily testable

Printable

Printable.git is a sample framework to test Swift - C interop and llvm module mapping.

cequel-migrations-rails

cequel-migrations-rails.git is a fork of a repository that provided migrations for Cassandra datastores to Rails applications. I had to make a number of changes to this fork to facilitate our particular needs at the time. Despite not using this anymore I keep it around for historical sake.

jquery_sliders

jquery_sliders.git A simple very generic jQuery slideshow plugin I created. I also created jquery-sliders-rails.git to make utilizing the jquery_sliders plugin within Rails applications easy.

archaic

archaic.git is an IRC Chat Archiving and Analysis Tool that I created so that we would be able to have history of our chats as well as be able to quickly and easily access and analyze them.

Flot

Flot.git is a fork of Flot, a Javascript plotting library for jQuery, that I added multi-series bar graph support to.

gnuautotools-tmbundle

gnuautotools-tmbundle.git is a bundle for TextMate 1.0 giving users of TextMate 1.0 the ability to easily build & run projects that are managed with GNU Autotools. I no longer maintain this project as I no longer use TextMate. But if you are interested further you can check out the video above.

Zaurus Sync

This was a project in which I reverse engineered the Ethernet over USB binary syncing protocol for the Zaurus SL-5600 PDA and create an implementation so that Linux users would be able to sync contacts, etc. just like Windows users. I had to do this because they provided no support for Linux even though the PDA itself ran Linux. There are a handful of repositories related to this which are listed below.

  • lib_zdtm_docs.git LaTeX source and other documentation we have written for the lib_zdtm_sync project.
  • lib_zdtm_sync.git a cross-platform library to speak the Zaurus synchronization protocol. It provides an interface to parse and create the packets sent to and received from the Zaurus.
  • zync.git A command line tool to synchronize the Zaurus. (obsolete)
  • opensync_zdtm_plugin.git provides the OpenSync framework an interface to lib_zdtm_sync to allow syncing.
  • zync_korg_todo_plugin.git A KOrganizer plugin interfaced with zync. (obsolete)
  • zync-gui.git A graphical user interface to zync. (obsolete)

libgnut

libgnut.git was I project I worked on to create a cross-platform implementation of the Gnutella protocol.

It additionally consisteded of libgnutmsgs.git . A unix C implementation of the Gnutella protocol designed to test ad injection on the Gnutella network.

skiplist_applet

skiplist_applet.git is a small Java applet that I wrote to assist in teaching the concept of skip lists.

usurper_applet

usurper_applet.git PDF based Gnome applet for helping memorize content through intelligent flash carding.

activerecord_history

activerecord_history.git is an extension to ActiveRecord that allows tracking of changes to database entities that I worked on at some point a long time ago.

trac_ticket_creator

trac_ticket_creator.git is a Trac XmlRpcPlugin front-end for creating tickets more fluidly.

trac_embed_gitweb

trac_embed_gitweb.git is a Trac 0.11 plugin to embed gitweb inside the Browse Source tab.

Copied!