Chip Hollingsworth

Chip Hollingsworth

Software Developer

Roswell, GA

About me

I have over 14 years’ experience as a software engineer and a data analyst. Prior to that, I completed two Masters’ degrees: an MS in Artificial Intelligence, and an MA in Philosophy. While in graduate school, I worked as a teaching associate, and that experience taught me that software development has as much to do with teaching as it does with getting the computer to run your code. As a result, I emphasize legible, maintainable code, easy-to-use APIs, and clear documentation.

I have used many different programming languages, including Python, Java, C#, Javascript, PHP, and Go. I’m very quick to pick up a new framework or programming language. More than once, I’ve been hired for a role that involves programming in a language I’ve never used before, and was able to contribute production-ready code in a matter of days. I’ve taken it upon myself to learn different programming paradigms, such as functional programming (F#, OCaml) and logic programming (Prolog). I truly believe the mental exercise of learning to program in a language that works very differently than the ones you’re used to makes you a better programmer even in traditional object-oriented languages.

Programming isn’t just my job. It’s also my hobby. Where others might work crosswords or sudoku, I sometimes write simple programs for no reason other than the mental challenge and the satisfaction of building something new. Such projects include a demonstration of heap sort, an implimentation of the riemersma dithering algorithm, and a text mode Tetris clone.

One thing that sets me apart from other developers, especially today, is that I do not use LLM coding assistants of any kind. I object to them on ethical grounds because of their environmental impact and disregard for consent when ingesting training data. But I also strongly believe that reliance on LLMs make you a worse developer. It doesn’t matter if you can type a couple of prompts and get a thousand lines of code if you don’t understand how the code works, or what it does. If I’m working with an unfamiliar language or library, it is my job to learn how to use it well, so that I can write code and know that it does what I intend. Plus, it’s worth taking more time up front to write the code if the result is easier to understand and more maintainable. The true bottleneck in software development isn’t how fast you can produce new code; it’s how easily you can use, extend, and refactor the code once it’s written. Only the deliberate process of planning a program in your head and translating it into working code can produce genuine quality software.

Experience

Senior Software Developer II

2024 - Present · Waystar

  • At Waystar, I designed, built, and maintained ETL pipelines supporting our data analytics platform.
  • I also implemented integrations with third-party partners for ingesting payment data from a variety of medical practice management software.

Data Analyst

2018 - 2023 · Doximity

  • On the Careers team, I helped administer the weekly Jobs Digest, matching job candidates to employers based on stated preferences as well as education, employment history, and activity on Doximity’s social network.
  • As part of the Network Data team, I helped design and implement a framework for training and deploying machine learning models to recommend personalized content for users’ feeds.
  • As a member of the cross-product Data Modeling team, I helped administer our Snowflake data warehouse, reviewing pull requests to ensure they conformed to dimensional modeling best practices.

Software Engineer

2016 - 2017 · BetterCloud

  • On the Asset Ingestion team, I built RESTful microservices in Java for ingesting data from commercial APIs including Dropbox, Slack, and Google Drive.
  • I also developed a custom Spring Boot Initializer server for creating new products with company-internal dependencies.

Software Developer

2014 - 2016 · athenahealth

  • I wrote complex SQL Server queries for extracting, transforming, and analyzing data from a variety of practice management software.
  • I helped build the Athena Device Manager application for interfacing with various medical devices and relaying data to our web application. I also developed several custom device integrations for this application.

Software Engineer (contract)

2013 · Actuatics

  • I developed software for parsing transcripts of physicians’ voice notes and tagging them with ICD-9 and CPT procedure codes.

Software Engineer

2012 - 2013 · Veloxiti (formerly Applied Systems Intelligence)

  • I worked on the Warfighter Associate application, developing a natural language processing pipeline for parsing battlefield text communications and matching to GIS location data to alert warfighters to potential threats.

Graduate Research Assistant

2008 - 2012 · The University of Georgia

  • I proofread the book Persistence and Spacetime by Dr. Yuri Balashov in preparation for publication.
  • I worked on the ARC Project under the direction of Dr. Stefaan Van Liefferinge to build a Prolog knowledge base of architectural features of Gothic cathedrals.

Teaching Associate

2005 - 2007 · University of South Florida

  • I taught Critical Thinking and Introduction to Philosophy, introducing students to philosophical argumentation, formal logic, and common fallacies.

Education

Master of Science, Artificial Intelligence

2012 · The University of Georgia

Thesis: Syntactic Stylometry: Using Sentence Structure for Authorship Attribution

Master of Arts, Philosophy

2005 · Louisiana State University

Thesis: Martin Heidegger's Phenomenology and the Science of Mind

Bachelor of Arts, Philosophy

2003 · Mississippi State University

Publications

Theses

2012; Hollingsworth, Charles; Syntactic Stylometry: Using Sentence Structure for Authorship Attribution; Thesis, Master of Science, The University of Georgia

2005; Hollingsworth, Charles; Martin Heidegger’s Phenomenology and the Science of Mind; Thesis, Master of Philosophy, Louisiana State University

Proceedings

2012; Hollingsworth, Charles; “Using Dependency-Based Annotations for Authorship Identification”; Text, Speech and Dialogue: 15th International Conference, TSD 2012, Brno, Czech Republic, September 3-7, 2012, Proceedings

2011; Hollingsworth, Charles; Van Liefferinge, Stefaan; Smith, Rebecca A.; Covington, Michael A.; Potter, Walter D.; “The ARC Project: Creating Logical Models of Gothic Cathedrals Using Natural Language Processing”; LaTeCH ‘11: Proceedings of the 5th ACL-HLT Workshop on Language Technology for Cultural Heritage, Social Sciences, and Humanities

January 8, 2011; Hollingsworth, Charles; “Syntactic Stylometry: A Dependency Grammar Approach to Forensic Linguistics”; Poster presentation, Linguistics Society of America, Pittsburgh, Pennsylvania

Projects

Geodesic calculator

My first foray into Pyscript. Draws a geodesic dome or sphere and calculates the number and lengths of struts needed to build it.

stylometry-airflow

This is a simple Airflow pipeline for scraping an RSS feed, extracting the text, and running the text through the Stanford Dependency Parser. It’s an automated version of what I did by hand when working on my MS thesis. Up until now, all of my work involving Airflow pipelines has been for work, behind corporate firewalls where I can’t show it off. This is an attempt to remedy that.

riemersma

This is a simple program implementing riemersma dithering in Python. When I first learned about this method, it was like a nerd-snipe directed specifically at me: it combines retro-style computer graphics with fractals and recursion.

fomosynth

Not quite ready for prime time, this project is hard-coded to work with my particular MIDI hardware and will likely need manual tweaking to get it to work. It’s a simple FM synthesizer (think the Yamaha DX7 or any other mainstream synth in the mid-to-late-’80s) implemented in Python and PortAudio.

heapsorter

Just a quick little script I wrote to demonstrate heapsort. Uses console colors to illustrate the state of the heap from step to step.

euclidym

Code to generate Euclidean rhythms in F#. I think I originally had the intention of turning this into a full web-app in Fable but as it is it’s just an HTML file and a program that spits out base64-encoded MIDI that you can then manually paste into the HTML.

Joy

Another started-and-abandoned project. I wanted to implement an interpreter (or maybe even compiler) for the Joy programming language in F#. I quickly got in over my head. I definitely plan to return to it someday, though, just for the experience of finally implementing a programming language interpreter (and bringing a fun language back to life).

nimblewill

This is a program that plays the games of Hex and Y using Monte Carlo tree search. It’s mainly a demonstration program for my hexea Python library.

mast2opml

Want to follow people on Mastodon but hate social media? Now you can export your Mastodon follow list and turn it into a set of RSS feeds that you can read from the comfort of your favorite feed reader.

mandy

Text-mode (curses) Mandelbrot set viewers I wrote in Python and Ruby.

grammar-inducer

A class project I wrote for my CSI/LING 8570 class (Natural Language Processing) while in graduate school at UGA. Attempts to induce a dependency grammar given a corpus in an unknown language. Probably not my prettiest Python code, and may only work in Python 2.

2squares

Simple “game” I wrote while learning Javascript. Two players see two squares on their screens. Each player can move one square around. Not much more to it than that.

tris

Text-mode (curses) Tetris clone written in Python.

hexea

Python library for representing game states in the related games of Hex and Y, and generating random playouts. Mainly intended as a building block for writing Hex-playing algorithms. My first foray into writing C++ extensions in Python! It wasn’t fun! Except it kind of was!

Interests

Permacomputing

Do you really need a new smartphone every two years? Is your brand-new Macbook Pro really that much better than a 2013 ThinkPad for the things you do every day? Does everything have to be an app that’s constantly online, sending a never-ending stream of your data to servers you don’t control? When the neutron bombs fall and the Internet is no more, will you still be able to use your computer? Permacomputing explores the use of hardware that lasts, software that’s offline-first and doesn’t need to update every week, and being in charge of your own data. If your tech stack can’t survive the zombie apocalypse, what good is it?

Retrocomputing

I grew up in the ’80s, and my father was a programmer (back when they still called them that, not “coders” or “software engineers”). So instead of a Commodore 64 or Apple II, we had a Dynabyte 5100 and a Compucolor II. That’s probably why I’m still drawn to collecting old technology and making it do new things. CP/M is not dead!