Ben Boyter, commonly known as 'boyter' online, is a seasoned developer with a penchant for large data systems and search. He gives us his insights into the world of open source software, his journey as a developer (self-professed code monkey), and the passion that drives his contributions.
Q: Can you give us a brief introduction about yourself and your background?
A: So im Ben Boyter. Everyone calls me boyter which is what I go by on the internet where possible. I call myself a code monkey, but my day job is a technical lead/principal for a digital product creation company called Kablamo.
As an army brat I grew up all over random parts of Australia including, Sydney, Lithgow, Dubbo, Adelaide, Nagambie, Canberra, Wagga Wagga, and others. I went to university at Charles Sturt Bathurst and Heilongjiang University in Harbin China.
I have been a developer for almost 20 years now, starting in the business intelligence space before moving to custom development, starting with Java then C# and most recently with Go.
My focus is mostly on large data systems and applications to solve various problems. As such I worked on the ABC’s Digital Archive (national broadcaster for Australia) which houses 6+ PB of video/audio/photo content, the world's largest genomic database for Cerebral Palsy Alliance and other API’s for broadcasters like Nine. I'd like to think my primary skill set is in providing search for these data sets though.
What open source projects do you currently maintain?
https://github.com/boyter/scc A tool similar to cloc, sloccount and tokei. For counting the lines of code, blank lines, comment lines, and physical lines of source code in many programming languages.
https://github.com/boyter/lc a command line tool that recursively iterates over a supplied directory or file attempting to identify what software license each file is under.
https://github.com/boyter/dcd A tool similar to simian which is designed to identify duplicate code inside a project. Although I am looking at expanding it out to scan all the code searchcode.com is aware of.
https://github.com/boyter/hashit A hash tool which can work like hashdeep or md5sum, sha1sum, etc... When you want to find the hash or hashes of a file quickly, cross platform using a single command.
https://github.com/boyter/cs A command line search tool. Allows you to search over code or text files in the current directory either on the console, via a TUI or HTTP server, using some boolean queries or regular expressions.
https://github.com/boyter/go-string Useful string utility functions for Go projects. Either because they are faster than the common Go version or do not exist in the standard library.
https://github.com/boyter/activitypub Sequence diagrams of how ActivityPub/Webfinger works.
https://github.com/boyter/gocodewalker Library to help with walking of code directories in Go.
You have a prolific blog at boyter.org, what motivates you to keep writing? Do you have any advice for folks who are looking to make technical blogging a habit?
My main reason to keep doing it is that it serves as an extension of my brain. I keep experiences and ideas there. It mostly started as a coding diary which I cleaned up and made public. If someone else gets value out of it then great! Otherwise it's mostly aimed at me, when I inevitably forget things.
How did you get started in open-source and what motivated you to become a maintainer?
I sort of just fell into it. I wanted to learn Go, I underestimated how hard it would be to maintain a project, and decided to overcorrect for my past failure by spending a crazy amount of time ensuring that would never happen again. That seemed to go down well which resulted in more projects that just snowballed. I should probably cut some of them down.
As for motivation… almost everything I maintain dovetails into other things I work on. There is a Venn diagram with a nice overlap in the middle between every project I maintain. So I guess you could say it's something I need? I also really like it when people thank me for doing it.
What's the primary programming language or framework you use in your projects?
At the moment it's Go. I don’t use any frameworks with it, since that seems to be the main community practice, and to be honest the built in tools are generally good enough. I sometimes use Java, where for web things I liked to use Spark or Javalin. Otherwise I just go with whatever has a lot of attention and support. I tend to like stable, mature things since they tend to have good examples and documentation. I'd like to spend more time with Zig though!
Have you had any particularly memorable interactions with community members? This could be related to a specific pull request, an especially helpful contributor, or even a challenging interaction.
I know ESR is considered a decisive figure these days but I don’t think it's possible to underestimate the impact he had. I remember reading the Cathedral and the Bazaar back in University and thinking about it. As such I was delighted to be reached out by him as he had also written a code counter similar to scc and we had a brief correspondence over it.
Another one was being reached out to by the author of the most well known code counter cloc Albert Daniel and how he was impressed with some of what scc was able to do, in particular with the way it estimates complexity. I consider this a huge highlight.
How do you prioritize and manage your time between work, maintaining open source projects, and personal life?
Before covid I used to have a 2 hour train journey that worked really well. I would use that whole time for maintenance of the projects. This ensured there was a nice separation between them all.
With the train trip not being as regular as it is now I tend to ensure everything else needed is done, and if I feel motivated sit down and hammer out some work. I also like doing it over my lunch time if the weather is not great, or if I am able to work it into what I am doing sometimes.
Quite often I just write down what I was thinking and I am able to turn that into something useful at a later date.
Has the notion of doing open source full-time ever appealed to you? If there was a sustainable way to support yourself financially, would you consider it?
Yes it does. If it was sustainable I would consider it. For the sort of tools and libraries I maintain I don’t know if that would ever happen, which contributes to the slightly pessimistic view I have towards the future of it.
Roughly, how many hours a week do you dedicate to your open source projects?
It really depends. It used to be about 10 hours a week when I was on the train. Covid changed that a fair amount. When I am in a productive mood it can be 10+ hours a week. I don’t do any on the weekend, just time before and after work usually.
Can you shed light on the tools and software you rely on? This could include your preferred IDE, version control system, productivity apps, or anything else integral to your workflow.
For code I stick to the JetBrains suite. It's like pair programming with someone who is brilliant, almost never wrong and never needs a rest. Either Goland, IntelliJ or Webstorm. I also use Datagrip when I need to work with databases, although I don’t use it well enough to know if I am getting value out of it.
I like using the Sublime tools, both Sublime Text and Sublime merge, although I have been trying to use Visual Studio Code more since thats where the community has gone for plugins.
Firefox is my daily driver for browsers, although I like Edge and Brave as well.
I spend a lot of time in the command line using the following, ripgrep, tmux, bat, fzf, fd, z, cs, scc, hashit, dcd
I don’t tend to modify the defaults of anything. This allows me to move from machine to machine without having to tweak anything. Useful when I replace the machine too.
We'd love to see where the magic happens! Would you be comfortable sharing a picture or description of your developer workstation?
It’s actually nothing fancy. I use a 2020 Macbook Air M1 with 16 GB of RAM and a 512 GB SSD. I do however pair it with a 48” monitor, because I like to have a single large monitor which gives me USB-C charge and display (only at 60hz though). I use it with a Logitech Mechanical Mini keyboard, and MX Master 3 mouse. Those are picked because they have dongles which sit in my desktop. I do have a pair of Airpods Max which have noise canceling that I find essential to get deep focus work done.
All my development work happens on the Macbook and where I need extra power I spin up a CPU instance on digital ocean or vultr.
One of these days I will upgrade my desktop which is an ancient i7 4790k to avoid having to do that, but I am oddly attached to it since it seems to work fine and so it exclusively plays games.
Have you ever faced burnout or felt overwhelmed because of your role as a maintainer? If so, how did you manage or overcome it?
Overwhelmed from time to time. Thankfully I have not experienced burnout, which I think is due to ensuring I have boundaries of when I will maintain and respond to things (I almost never work on the weekend for example). My approach has been if it's not “hell yes” it's a no. You don’t have to take on that feature if you don’t want to support it. You don’t have to spend months tracking down that bug if you don’t want to. It's also OK to just park them, tell people you will come back to it later and do something else.
What are some of the most significant challenges you face in maintaining your projects?
Time, time and time. There is never enough time to do everything I would like. Sometimes personal motivation is a problem, although I tend to work on multiple things so I can procrastinate on one by doing another. It's an odd system but works for me.
How do you handle disagreements or conflicts within the community, especially when they concern the direction or features of the project?
Thankfully I don’t get many disagreements or conflicts. For the things I maintain there is usually a viable alternative, and if someone wants something I don’t want to take on I point them to that.
If they persist I try to understand their point of view. Most people aren't bad, and text is a poor medium to communicate with. I always bring it back to why. Why do they want this? Why are they asking? Why do they care. I can then finish with Why I am not going to implement it. Why is it going to take a long time.
If they persist, or start personal attacks or such the final response is let them know they are dealing with a human and that they are not being polite and then finally to direct them to this page https://boyter.org/posts/the-three-f-s-of-open-source/ which has The 3 F’s of Open Source.
What advice would you give to someone looking to start their open-source project or become a maintainer?
Know that nobody will care for a long time. So if you are worried about dealing with other people, that's probably not something you need to think about in the short term. However it can happen, so make sure you are in a good head space before putting yourself out there. While most people are kind, the not so kind ones can really make you question your self worth, which isn't great.
Otherwise do it. Ignore the haters, do your thing and print out and frame the nice comments and messages you get. If you decide you don’t want to do that at least send a nice comment to the people maintaining the things you do use. It goes a long way!
Can you share a success story or a milestone achieved that you're particularly proud of in your open-source journey?
I guess I would say I get a thrill out of every time I see scc integrated by some other tool or organization. Finding it used by JetBrains, Intel, GitHub and lots of other companies gives me a thrill every time I see it.
Are there any upcoming features or changes in your projects that you're excited about and would like to tease to our readers?
I'm working on a service that you can use to scan your source code and see where it may have been copied from online by comparing it in a way that does not leak information but lets you confirm it against 75 billion lines of code from millions of repositories.
It's great fun for me because you have to optimize matching billions and billions of operations to make it work! It also saves a pain point I have been having with customers and I think my initial conversations suggests this would be very useful to a lot of people.
How can the community best support you and your projects?
My needs are fairly simple. Simply getting good bug reports works for me.
Are there any other open-source projects or maintainers you admire and think deserve more attention?
I always thought that Matt Wells of Gigablast fame deserved more attention. While the project https://github.com/gigablast/open-source-search-engine was not what I would call the best written code in the world, what you see there was once mentioned in the same breath as Google.
It's a real shame Gigablast appears to have shut down. I hope Matt is doing well. Personally I'd love to spend an afternoon with him talking about it. If anyone reading this is able to reach out to him and find out if he is OK that would be fantastic.
In your view, what's the future of open-source, and where do you see it headed in the next 5-10 years?
While I am optimistic about the continued existence and support of smaller projects and libraries, the continued roll out of non-free licenses for things like terraform, elastic search and such is going to continue to happen. The big players like AWS are sucking out so much value from these projects.
Now I totally agree that they can do it, and that's the problem back on who chose to put the code under that license. However morally it feels wrong to profit to this extent.
I always liked the idea of the Varnish Moral Licence for this http://phk.freebsd.dk/VML/ and I think had businesses gone this route, or attempted to setup business deals that were favorable to both parties the free software community would be in a better situation.
What do you do for fun?
Recently I have been playing games after not really paying attention to them for 15 years. I have even been getting into Battlebit Remastered, and it seems some of the skills I learnt playing Counter Strike have returned to me as I am not awful at it.
I like hiking. I live close to a few famous walks, and can within an hour from my house walk down to 2 different (albeit connected) salt water estuaries. There are quite a few first Australian sites I have been lucky enough to find close to where I live which puts things in perspective.
Otherwise I like spending a lot of time looking after my two children and have started taking them on those hikes.
Sometimes when I get the chance I like to dabble in building search engines. I find the algorithms required interesting and fun to work with. Rather a nerdy thing to do but it does keep my mind active.
Ben’s Links: