Rodrigo Pombo is the creator of Git History, a tool that lets you quickly browse the history of files in any GitHub repo.
Rodrigo, a.k.a pombo, pomber, pombus, pombex, pomberman, or any /pomb[a-z]+/ match, likes to write code, write about writing code, talk and tweet about it. He likes to travel and lives in Argentina.
Why did you start Git History?
It was by accident!
I was animating the transition between two pieces of code for Code Surfer. I needed to test the animation with different files and languages, so instead of writing the test cases myself, I used the GitHub API and started testing with random files from different repos, and it worked.
After I added keybindings to move between commits, I found it was oddly satisfying to browse the history using just the arrow keys. So then I added a header with commit info—and that's the first version of Git History.
How did you grow the user base of Git History?
First, I made it very easy to use by getting the file path from the URL using the same format as GitHub. To view the history of any file, you only needed to change the domain in the URL from "github.com" to "githistory.xyz".
I shared it on Twitter, then Reddit, and then Hacker News. Soon, people started sharing it everywhere! Around 10,000 people starred it on GitHub in the first month alone.
I was surprised to see so many people liking it. At first I thought people just liked to play with the animation. But then, they started opening issues and requesting features, and I realized they were actually using it for something useful.
So I decided to give my own project a try and started using it. It was then that I realized—Git History was easy and intuitive when compared to some other, more powerful tools (like Git Log). Today, after shipping it as a VS Code extension, it has become a part of my toolset.
What is the future of Git History? Do you face any obstacles?
I'd love to see Git History used by people trying to understand code written by others. It would be great to read the history of a file or files as if it were a blog post or a presentation. This could be particularly useful for pull requests.
The main obstacle is the way we commit code. We usually make commits that change many things at once, and that makes the commit history hard to read later. We need smaller commits to make the history more expressive, but that would be putting too much of a burden on the developer. Instead, we need automatic or semi-automatic tools that help to split big commits into more expressive chunks.
What are you working on right now? What do you want to work on next?
Now I'm working on the same concept—but for cases when the "history" is specifically written to make the code easy to explain, i.e. tutorials, blogs, docs, slide decks, etc.
Recently, I published a blog post where I explain around 300 lines of code using this technique. The feedback on the reading experience was very good, and writing the content using this format was much easier too.
The technique isn't perfect yet, but I think it's a step in the right direction. For people using MDX and Gatsby, there is an experimental theme they can try to write similar blog posts. I'm also releasing a new version of Code Surfer soon, it's the same idea but for MDX Deck.
In the next few months, I want to make a flexible, framework-agnostic, and easy-to-integrate tool to enable displaying this kind of code walkthrough in as many places as possible.
What are the people/projects/books/habits that changed your life (and how)?
Quitting my job was a big change. I've been living off savings for more than a year. It means I only work on projects I find interesting. That made me understand what kind of work I like most: dev tools and improving developer experience.
It also helped me find a niche where my work can have some impact: tools for making code easier to explain and easier to understand.
How do you balance work with your personal life?
Well, now that I'm "funemployed", there isn't really anything I call work :)
I don't have a routine, I prioritize my personal life activities and fill the rest of the day with coding. I've been travelling a lot lately, so another important factor is to find a good place where I can sit and focus without interruption. By the way, I've never been more productive than during the month I spent in Poland, I don't know why.
My savings are running out, so soon I'll have to start doing some freelance work. I'll find something that allows me to keep the same balance and flexibility.
What do you think about open source sustainability?
We clearly haven't solved it yet, and it doesn't look easy to solve. Luckily, there are many people trying to figure it out, tackling it from different angles. If there is a solution, someone will find it.
I really like the concept of Open Collective gift cards, where the employer puts the money and the employee chooses the projects. Many companies give their employees a conference/training budget, so why not make OSS financial contributions part of that budget too?
Also, I appreciate when companies provide their services to open source projects for free . Personally, I would like to see more conferences giving free tickets to open source contributors. When you work full time on open source, there isn't an employer to pay for the ticket and travel expenses, so going to conferences becomes financially impossible.
How important is it for you to ensure quality? How do you ensure it?
I spend a lot of time working on experiments and proofs of concept, where quality isn't very important. And, to be honest, that also creates bad habits. I do use tests a lot, but mostly to help me run isolated pieces of code as I'm working on them.
Mac, Windows, or Linux and why? Also, Tabs or Spaces?
Linux. I use it almost exclusively for web development, so I'm not very demanding with my OS. I've even considered moving to a chromebook, but I'm pretty happy with my MateBook X Pro.
Tabs or Spaces? Whatever Prettier decides for me (as long as it's tabs).
Check out Git History on GitHub.
We ❤️ open source. Fill out this form to get free, unlimited access to BrowserStack for your project's testing needs.
(Responses are edited for clarity).