A while back, I described an idea for a CLI tool to find definitions in Go projects, and now I’ve built it! I also gave it a shorter name: “gospelunk”, as in “spelunk through some Go code.” It’s similar in spirit to ctags, except that gospelunk understands Go dependencies and can re-index a large project in seconds instead of minutes.
The project is open-source under the MIT license and available on GitHub.
Starting a two week vacation today, so I’ve planned a small project: a Go-specific version of ctags. I’ve used ctags in the past to navigate a medium-sized Go monorepo, but there were some pain points. Re-indexing usually took about a minute, and, at least by default, ctags doesn’t search the standard library or Go module dependencies. I’m imagining a tool that’s easy to use from the CLI as well as from within an editor like vim or aretext.
I created an account on GitHub in December of 2012, which is almost exactly nine years ago. The chart below shows the number of public contributions (mostly code changes) I made each year:
From 2013-2015 I worked full-time on open source at edX. I’m still not quite sure how I got so lucky. My daughter was born in 2018! When she was three months old, I took a sabbatical to write a lot of Rust code for my master’s thesis at Harvard Extension School.
After a long hiatus, I am rebooting this blog!
My last post was in March, a couple of months before the first release of aretext, the open source text editor I am building. I’ve since released three versions of aretext, with the 0.4 release scheduled for February. The git repo currently has 850 commits, and I’ve been using aretext as my primary editor every day – including to write this post!
In the early 2000s, I joined a community of hobbyist Mac game developers at a site called idevgames.com. Mainstream gaming was happening on Windows, but the Macintosh had developed its own quirky indie scene. The forums were filled with screenshots of the small, weird games people were making.
The site had been created by Carlos, an American expat living in Japan. One year, he started an indie game competition that received dozens of entries.
For the past nine months, I have spent almost all of my free time working on a coding side project. This is surprisingly common behavior for software developers. Some of us spend the entire work week coding for a company, then choose to continue coding as a hobby in our mornings, evenings, and weekends. I plan my work around my two-and-a-half-year-old daughter’s sleep schedule.
At the beginning of the project, I often imagined a voice asking nervous “why” questions.
I have used the same laptop case for over sixteen years. My second summer with it, I had decided I either needed to write a novel or stop saying I wanted to write a novel. So every day I carried the laptop, snug in its case, to the Santa Clara library. The library had recently moved to a new building in central park. It was two stories tall. The desks on the second floor had electrical outlets.
One weekend, my dad needed to learn CORBA for work. My mother drove the family to the Barnes & Noble on Stevens Creek Blvd. Three hours later, when we returned to pick him up, my dad had bought, and mostly read, Client/Server Programming with Java and CORBA. The cover showed two cartoon aliens drinking coffee at a diner.
That book found its home in our living room bookcase alongside many other programming books.
The original iMac came in only one flavor, but it still had a name: Bondi Blue. If you touched the CRT monitor, you could feel static electricity; a magnet would bend the colors. The mouse was round and had a single button.
I had a desk I’d convinced my parents to buy for me in the first grade. The iMac filled it, pushing the keyboard just barely past the edge.
The summer before my last year in high school, I started an internship at a semiconductor company. My grandmother worked there as an executive assistant and had gotten me the job. This was fortunate, as I had no other qualifications.
The previous summer I typed shipping orders into a computer terminal and delivered printouts to sales associates. I practiced writing their names in big, flowing cursive. I drank Styrofoam cups of coffee.