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.gitis a SwiftUI library to facilitate defining button styles using composition. For details you can checkout the SwiftUI Composable Button Styles blog post. -
UIImageCacheKit.gitis an iOS Framework to make cacheing UIImages from URLs easier -
Functional.gitis a Swit library provided the basics of Functional Programming to Swift -
Fate.gitis a Swift implementation of Futures -
JsonFileManager.gitis a Swift library making it trivial to manage JSON flat files -
BuyKit.gitis 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.
- support explicit targeting of consumers, not developers
- 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.gitmy tmux configuration files -
dotzsh.gitmy zsh configuration files -
dotnvim.gitmy neovim configuration files -
dotgit.gitmy 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.gitold repo grouping all my dot files together -
dotvim.gitmy old vim configuration files -
dotack.gitmy 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.gitthe command-line tool to simplify create virtual development environments and cloud based CI jobs -
boxci-puppet-cassandra.gitBoxCI Puppet Cassandra Module -
boxci-puppet-redis.gitBoxCI Puppet Redis Module -
boxci-site.gitThe boxci documentation website -
boxci-presentation.gitPresentation 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.gitA simple Ruby library that provides snake casing functionality -
hitnmiss.gitRuby gem to support using the Repository pattern for read-through, write-behind caching using POROs -
hitnmiss-redis_driver.gitA Hitnmiss repository cache driver backed by Redis -
tagalong.gitA Rails tagging plugin that makes sense. ( Note: has built in support for Sunspot for search ) -
rack-vendor_accept_header.gitRack middleware to parse vendor accept headers -
late.gitFast 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.gitLaTeX source and other documentation we have written for the lib_zdtm_sync project. -
lib_zdtm_sync.gita 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.gitA command line tool to synchronize the Zaurus. (obsolete) -
opensync_zdtm_plugin.gitprovides the OpenSync framework an interface to lib_zdtm_sync to allow syncing. -
zync_korg_todo_plugin.gitA KOrganizer plugin interfaced with zync. (obsolete) -
zync-gui.gitA 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.