My dotfiles repository, with my configuration managed with Chezmoi. This includes configuration for Zsh, Doom Emacs, Ledger, Mise, and other tools. This configuration works on Mac OS and Linux.
Summary
Meditator. Kidney transplant recipient. On dialysis. Losing vision to retinitis pigmentosa. Little Person. Gamer. Writer. Friend.
Innovator. Problem-Solver. Software Engineer. Software toolsmith. Free and Open Source Software Advocate. Known for fixing the unfixable and driving operational efficiency by automating the disjointed and scaling the gridlocked. 15+ years experience in software packaging, dependency management, and writing custom tools and automation for everything from large-scale distributed systems to desktop GUI components and applications to general software tools. Deep expertise in infrastructure management, CI/CD pipelines and problem-solving. Proven mentor and teacher, open-source advocate and presenter at national tech conferences.
Presentations and Publications
I keep a running list of publications and presentations I have given, including several presentations at national tech conferences.
Current Projects
The following are recent personal projects I have been working on.
MyCmd is both a tool and a library for executing small tools written in Bash shell scripts.
These financial tools are several tools I have written for my own use. I have been tracking my personal finances using Ledger since 2014. I have written the following tools to help with this:
- datacleanup: tool in Python to clean up CSV files downloaded from financial institutions
- financial-importer: tool in Rust to generate Ledger entries from CSV files based on rules configured in a TOML file
- pricesdb-updater: tool in Rust to download daily commodity prices from Yahoo Finance and create Ledger supported pricesdb file
Past Projects
The following are personal projects I have worked on in the past but am no longer actively developing.
I have participated in The Advent of Code to varying degrees over the years.
- 2020 GitHub Repository: For 2020
- 2021 GitHub Repository: For 2021
- 2022 GitHub Repository: For 2022
rbasic is a BASIC interpreter, a la 1980's GW-BASIC. It is implemented in Rust, as a project to learn the Rust language.
- GitHub Repository
- pybasic GitHub Repository: smaller version, implemented in Python, to figure out algorithms while I was struggling with Rust.
Nix Emacs is completion support for NixOS options while editing NixOS configuration files in Emacs. I recently migrated this project from my own GitHub account to the nix-community organization so the Nix community can take over maintenance of this.
I wrote several small apps for my own personal use and packaged them for use on NixOS.
- GitHub Repository
- gtkmenu: a GTK dmenu-work-a-like implemented in Haskell.
- XMonad, Gnome, and gtkmenu screencast: YouTube screencast demonstrating gtkmenu.
I previously used myrepos and vcsh to manage my personal software configurations, split up over several GitHub respositories. These configurations were used on Linux, primarily NixOS.
This configuration was split up over the following public repositories, plus some private repositories for secrets and other private configuration:
- vcsh_mr: the manyrepos configuration.
- vcsh_cli-misc: Miscellaneous CLI tool configuration.
- vcsh_emacs: modular configuration for Emacs (Spacemacs).
- local-nix: modular NixOS configuration used across 4 machines.
- vcsh_shell: Modular shell configuration.
- vcsh_X: configuration for X and related tools.
Metaproject was an implementation of basic project support for Emacs. It was intended to be similar in features to the newer and now popular Projectile project.
Informant was a set of utilities for keeping a user informed of events. It consisted of an informant, which is the means by which the user is alerted to the occurrence of the said event, and a number of sources that "whisper" an alert to the informant when the event occurs.
It was implemented as a Gnome Panel applet or a stand alone Gtk program in the Python programming language and used the Twisted network programming framework.
- Informant Home: Archive of the Informant Page on my old website.
- Informant 0.01 README file.
- Informant 0.01 INSTALL file.
- informant-0.01.tar.gz: Informant 0.01 tarball
- Informant Page on PyPi
I wrote a few small useful utilities for myself and shared on various versions of my website.
These include:
-
popup_note.sh: Shell script to pop up a Tomboy note.
- popup_note.sh
- Quick pop-up of Tomboy notes: Blog entry describing the script.
-
search_and_install.sh: Shell script to pop up a graphical window to search for a Debian package and install it.
- search_and_install.sh
- Handy script to search for and install Debian packages: Blog entry describing the script.
-
CheckMail: I wrote a couple of small scripts to check my POP3 email account for new email. It was the first Python code I wrote, back in 1999.
- checkmail.py: the terminal version of the script.
- cmgui.py: a GUI wrapper of the abvove using wxPython.
- play.py: A GUI window to select a playlist to play in XMMS.
- Random Code: Archive of page on my old blog with links to code.
- Homepage: Old homepage at USU with links to small scripts I wrote.
I wrote this simple menu program in C++ for DOS back in 1999 and uploaded it to SimTel. In 2017, I found an archive of SimTel online, downloaded the zip file from there and uploaded the source to GitHub.
- SimTel archive menu category: tbmenu.zip is linked here.
- GitHub Repository
Open Source Contributions
I have contributed to several open source projects. As many as I can remember are listed here.
I was a contractor for Basho Technologies, the company behind the Riak distributed database and contributed fixes and features to several of the Riak open source projects during this time. I contributed to the following:
- riak-mesos: The framework for running Riak on Apache Mesos.
- riak_explorer: Provides a web front-end for the Riak database.
Spacemacs is a configuration package for Emacs. I contributed a few fixes and additional features to the project. I also gave a presentation at a conference and made some videos and blog entries about the project.
- My Commits: My commits to the project.
- Spacemacs: The Best of Both the Emacs and Vim Worlds: I gave a presentation about Spacemacs at the 2016 Open West conference.
- How to Make a Pull Request for Spacemacs Video: Youtube video about contributing to Spacemacs.
- How to Make a Pull Request For Spacemacs post: Blog entry to go with video.
- Introduction to Spacemacs: Installation Video: Youtube video about installing Spacemacs.
- Introduction to Spacemacs post: Blog entry to go with video.
NixOS is a Linux distribution that supports declarative configuration. I contributed packaging for a few packages I was using at the time.
- My Commits: My commits to the nixpkgs repository.
Twisted is an event-driven networking framework for Python. I became acquainted with the project soon after learning Python back in 1999. I contributed small fixes and documentation to the project.
- My Commits: Note that it isn't with my GitHub username, because these were done originally in Subversion and this is the repository converted to Git.
- Twisted Web: A Tutorial: I gave a presentation on Twisted Web at PyCon DC 2003.
Where to Find Me
The following are links to my various profiles and accounts online:
Archive
Over the years, I have had various blogs and sites that are no longer online. The following are links to those, for archive purposes, with links to archive.org. Note that not all pages on these sites are necessarily available.
Dates Used | Title | Description | Archive Link |
---|---|---|---|
2011 - 2015 | I Am Travis Blog | Both Personal and Technical Writing | link |
2012 - 2014 | I am Short | Personal Tumblr | link |
2012 - 2014 | Software Craftsmanship | Tech Focused Tumblr | link |
2010 - 2011 | The Software Toolsmith | Technical Writing | link |
2003 - 2008 | www.travishartwell.net Blog | Both Personal and Technical Writing | link |
200X - 2006 | nafai77 Live Journal | Both Personal and Technical Writing | link |
2001 - 2002 | Personal USU Homepage | Simple Personal Homepage | link |