Console #133 -- An Interview with Leandro of Kill the Newsletter!
Featuring Stable Diffusion, public APIs, and Coolify
šļø Projects
Browse through open source projects on OpenSourceHub.io, add your project to get more exposure and connect with other maintainers and contributors!
š¼ļø Stable Diffusion 2.0
High-Resolution Image Synthesis with Latent Diffusion Models.
language: Python, stars: 4600, issues: 29, last commit: 2 days
repo: github.com/Stability-AI/stablediffusion
blog: stability.ai/blog/stable-diffusion-v2-release
š¤ public APIs
A collective list of free APIs for use in software and web development.
stars: 5637, issues: 9, last commit: 21 days
repo: github.com/public-api-lists/public-api-lists
ā” Coolify
An open-source & self-hostable Heroku / Netlify alternative.
language: Svelte, stars: 5094, issues: 116, last commit: 4 days
repo: github.com/coollabsio/coolify
site: coolify.io
š¬ Kill the Newsletter!
Convert email newsletters into Atom feeds.
language: JavaScript, stars: 1488, issues: last commit: Sept 6, 2021
repo: github.com/leafac/kill-the-newsletter
site: kill-the-newsletter.com
Join thousands of other open-source enthusiasts and developers in the Open Source Hub Discord server to continue the discussion on the projects in this week's email!
š¤ Interview With Leandro of Kill the Newsletter!
Hey Leandro! Thanks for joining us! Let us start with your background.
Sure. My pleasure. Thanks for having me. I was born in Brazil, went to grad school in the US, and now I live in Portugal. I started working as a web developer when I was about 15. Back then I worked in several places, including one of the biggest media groups in Brazil (UOL), and a couple startups in their early stages (which unfortunately are no longer around because the angel investor folded). Then I went to grad school to study programming language theory for about 6 years. Now Iām back into web development, and Iām also getting into programming software for audio & video production. And Iām doing daily livecoding streams on YouTube.
What made you go back to school?
1. Iām interested in education. I planned on going to grad school and then becoming a lecturer. In practice, I ended up discovering that working in higher education wasnāt reallyĀ for me, and thatās when I started my YouTube channel.
2. I wanted to live abroad, and there was a fellowship that made it possible.
How did you learn to program?
First, by reading the books my father had lying around about JavaScript, PHP, and so forth. He wasnāt a programmer professionally, but that was one of his hobbies.
Then, in academia, by reading papers and the code produced by other researchers.
Now, mostly by reading lots of manuals creating my own things.
What languages or frameworks do you like?
Languages: Iām into programming language theory, so Iād be hard-pressed to mention a language that I donāt like.
I believe that the main point of a programming language is to communicate ideas about computation to other people, so I tend to use programming languages that are popular and relatively straightforward.
Thatās why I use JavaScript/TypeScript for many projects.
I also write JSFX almost every day. JSFX is a language for real-time audio processing in an audio program called REAPERāitās a simple language, but it lets you experiment fast.
I often write Lua for extensions in REAPER, Hammerspoon, and so forth.
Iām getting into C++ to develop audio effects for other audio programs besides REAPER.
In the past I did a lot of Ruby, Racket, and some Java, but these days not so much.
I also dabbled in Go, various LISP descendants, and so forth. The list goes onā¦
Frameworks: Iām a big fan of Express. Itās very accessible; most people find it straightforward to learn.
Other than that, Iām building my own āradically straightforwardā tools: sqlite, html, css, javascript, caddy The documentation isnāt there yet, but Iām already using it on my day job and Iām very happy with the results: courselore.org
Itās using server-side rendering for everything and doing diffing of the (non-virtual) DOM in the browser. It can give you some of that real-time, app-like feel that people expect while maintaining the simple programming model of server-side rendering. Iām looking forward to polishing the documentation and showing this to more people.
Who or what are your biggest influences as a developer?
I keep returning to what I learned from Sandi Metz. I have read all her books and had the pleasure to meet her once. Ideas like āshameless greenā and āduplication is cheaper than the wrong abstractionā really stuck with me.
What does "shameless green" mean?
It means that good enough is good enough. āGreenā in this context is that the automated tests are passing.
In general, I interpret it to be: If you solved the problem, stop working. Sometimes we think that changing this or that will makes things better, but most often weāre doing that based on assumptions that turn out to be inaccurate.
Itās often better to wait and learn more about how the system ends up being used.
Whatās your most controversial programming opinion?
The notion that we should respect and avoid badmouthing any programming language.
Of course we should discuss the technical aspects of programming languages, but often this kind of conversation goes off the rails. I often hear comments like āpeople who use <programming language> tend to be bad programmers.ā Sometimes these comments even come from programming languages researchers, who I would expect to be generally curious and respectful of the topic of their study.
I believe that some programming languages end up being more than just tools. In many cases they reflect the culture of a group of people and become part of their identity. Just think of people who present themselves as ā<programming language>erā instead of āsoftware developer.ā
So I think that we should be respectful of programming languages the same way we should be respectful of natural languages (English, Portuguese, and so forth), the music of other cultures, the way they dress, and so forth.
From all my ideas about programming, this has been by far the one that has received the most pushback in conversation with other people š¤·
What is your favorite software tool?
Visual Studio Code. I spend most of my time on Earth staring at this thing, so I guess itās natural that I end up liking it š
The thing I like about it the most is that the defaults are pretty good. In the past I spent so much time tweaking text editors, and Visual Studio Code works well out of the box for me.
What is your favorite book and why?
Non-technical: Paper Towns, by John Green. Itās smart and fun throughout, and the last chapter is a masterpiece!
Technical: Sandi Metzās books. All of them.
If I gave you $10 million to invest in one thing right now, where would you put it?
Containing the spread of misinformation: Content moderation, fact-checking, and so forth.
I think that the return of investment wouldnāt be monetary, but it would be huge.
What are you currently learning?
How to measure response times in a web application without falling into statistics pitfalls. And how to profile the application to find performance bottlenecks.
Why was Kill the Newsletter started?
I go back and forth between trying to be more organized and letting things get messy.
At one point about 8 years ago I was trying to be more organized, and I thought: Email should be only for personal communication, and I should consume content via RSS/Atom.
But some of the content in which I was interested was available via newsletters only. I looked around and found many services that would do RSS/Atom ā email, but not the other way around.
Back then I was also running my own email server, so it was relatively straightforward to put Kill the Newsletter! together.
How does Kill the Newsletter work?
Itās a web application and an email server.
It uses Node.js these days, but I have re-implemented Kill the Newsletter! a couple times using Ruby & Sinatra, Ruby on Rails, Go, and so forth. Itās actually one of the reasons why I like it: Itās a great testbed for technologies in which Iām interestedāneither too trivial nor too complex.
In any case, the web application lets you create an inbox, which ends up being a row in an SQLite database. In the past I even used the filesystem as a database, which was fun, even though dealing with race conditions was a bit complicated.
The email server receives email and stores it in the SQLite database as well.
The web application serves Atom feeds created from these SQLite tables.
Nothing too fancy š¤·
Has the popularity and usage of RSS come down or go up since you started the project? Did you notice any trends?
I donāt track usage too closely, but judging by the server costs usage has gone up in the first couple years of the project and plateaued a couple years ago.
I suppose the use of RSS overall has come down significantly. Google Reader was a big player in that space, and it closed. Social networks came aboutā¦
I, for one, stopped using RSS and Kill the Newsletter! many years ago. But donāt worry, Iām committed to continue working on it because many people find it useful, so I think of it like retribution for all the awesome open-source stuff I use every day. Also, as I mentioned, itās a great way to experiment with different tools and techniques.
Why did you stop using RSS?
I naturally fell out of interest with blogs/newsletters and these days Iām more interested in videos, so I just subscribe to the YouTube channels I like.
Do you have any guesses on the number of people using the hosted version?
No. I donāt track these numbers. I suppose itād be complicated to do that because there isnāt even a notion of a āuserā in Kill the Newsletter!: you just come in, create an inbox, and go.
I can tell you that:
There are 146043 feeds and 850610 entries right now.
The database is about 26GB.
The application transfers about 2TB per month.
But keep in mind that many feeds may have been created by the same people. I suppose some power users may have hundreds of feeds.
Also keep in mind that thereās no way to delete a feed, so many of these may have been abandoned.
How did the project become popular?
I donāt really know, but I suppose it was because it was the only tool around at that point that would do this very specific thing. Even these days it may be the only free optionāI think that Feedly has something like Kill the Newsletter!, but only in paid plans.
When I created Kill the Newsletter! I posted it to Hacker News and things like that, but it didnāt get any traction. To my surprise, much later someone else posted it again, and that time it got to the front page for a couple hours and received some nice comments. Thank you, internet friend š
How much does it cost to run the service?
Approximately $20/month. The application itself is pretty light, so it runs on an inexpensive machine. What drives up the cost a bit is the data transfer.
What is the most challenging problem thatās been solved in Kill the Newsletter, so far (code links encouraged)?
Keeping the cost down š
At some point I was using Amazon S3 for storage, SendGrid for email processing, and so forth (https://github.com/leafac/kill-the-newsletter/tree/service-oriented). That was when Kill the Newsletter! was getting more popular, so the costs went up really fast.
I had to rewrite everything to run on a DigitalOcean machine, on which the data transfer is priced more reasonably. I think itās a much better design anyway, and much simpler to setup for people who want to run Kill the Newsletter! on their own servers.
What was the most surprising thing you learned while working on Kill the Newsletter?
Race conditions arenāt just a theoretical problem. Even on a relatively small application like Kill the Newsletter! itās still possible for two emails to arrive at exactly the same time for the same inbox.
When I was using the filesystem as a database two inboxes were corrupted because of this š¤·
How do you balance your work on open-source with your day job and other responsibilities?
Shameless plug: My day job is also open-source: courselore.org
I work from Monday to Saturday. Every day I have three work sessions that last two hours each. Two go to my day job, and the third goes to open-source projects, livestreams, music production, and so forth.
The rest of the time I spend with my family.
Have you ever experienced burnout? How did you deal with it?
I suppose I sometimes burn out on one project, yes.
But I keep many plates spinning. So when that happens, I go to another project. Some projects I keep returning to, like Kill the Newsletter!; some projects may go unfinished for a while.
Luckily, I havenāt experienced burnout of the whole endeavor.
If you plan to continue developing Kill the Newsletter, where do you see the project heading next?
I do plan to continue developing Kill the Newsletter!, yes!
Right now Iām in the middle of changing the way we deal with TLS certificates: Instead of doing everything in the Node.js process weāll introduce Caddy as a reverse proxy.
Iām taking the opportunity to rework many other technical aspects of Kill the Newsletter!, for example, using multiple Node.js processes to leverage all CPU cores.
In terms of features, I think itās pretty much complete at this point. One thing that I consider adding is a way to confirm subscriptions by sending an email, which is necessary for some newsletters. But sending emails is much harder than receiving, because you must make sure that you donāt become a spammer by accident. Weāll seeā¦
People who want to follow along can participate on my livestreams at https://youtube.com/@leafac
Are there any other projects besides Kill the Newsletter that youāre working on?
Yes! My day job at courselore.org
Daily coding livestreams at https://youtube.com/@leafac
caxa, a way to package Node.js application into a single executable: https://github.com/leafac/caxa
Audio effects and scripts for REAPER: https://github.com/leafac/reaper
This week I started a tool to do data bending (for example, using audio effects in a video file): https://github.com/leafac/data-bender
And Iām always producing original music, which you can also find in my YouTube channel.
Do you have any other project ideas that you havenāt started?
Plenty! Lately Iāve been getting my feet wet in electronics. Particularly for audio. So Iāve been dabbling into making guitar pedals, synthesizers, and so forth. For the time being Iām trying out other peopleās schematics and learning how to solder. Itās a fascinating field!
What is one question you would like to ask another open-source developer that I didnāt ask you?
Ways to make the work sustainable.
In my case, Iām lucky to have people who support my work. From my day job at courselore.org and to all the supporters on Patreon, GitHub Sponsors, and so forth (see leafac.com).
Itās important to think of this part of the equation to make sure that you can work on longer and more ambitious projects, especially after the initial spark of excitement.
Want to join the conversation about one of the projects featured this week? Drop a comment, or see what others are saying!
Interested in sponsoring the newsletter or know of any cool projects or interesting developers you want us to interview? Reach out at osh@codesee.io or mention us @ConsoleWeekly!