Fishbowls
Every so often on the Discord, we host a fishbowl: a panel conversation where a select few community members can discuss a topic in detail. Fishbowls give us the opportunity to discuss complex topics in more depth and detail than a normal chat conversation would allow. They give our best conversations room to breathe.
This is an archive of those conversations. If you would like to catch one live, join the Discord!
What even is testing?
May 2023
Everybody knows testing is important, but the software industry is overrun by terrible testing practices. Because of this, there has often been a negative sentiment against testing in the Handmade community. This fishbowl explores the kinds of testing the community has found most effective, the costs of testing, and the actual purpose behind testing techniques.
Entrepreneurship and the Handmade ethos
October 2022
What does it look like to turn a Handmade project into a sustainable business? How can the Handmade ethos set our software apart from its competitors? And how might we sustain the development of important software, if we're not sure how to sell it?
When do libraries go sour?
July 2022
The Handmade community is often opposed to using libraries. But let's get more specific about why that can be, and whether that's reasonable. What do we look for in a library? When do libraries go sour? How do we evaluate libraries before using them? How can the libraries we make avoid these problems?
What, if anything, is OOP?
May 2022
Is object-oriented programming bad? Is it good? What even is it, anyway? This fishbowl explores OOP more carefully—what is the essence of it, what are the good parts, why did it take over the world, and why do we criticize it so much?
How to design flexible software
December 2021
We previously held a fishbowl about how to design to avoid configuration. But when you can't avoid configuration, how do you do it well? And if we want our software to be flexible, what other options do we have besides configuration? What other ways are there to make software flexible?
How software development is taught
June 2021
The Handmade Network exists because we are unhappy with the software status quo. To a large extent, this is because of how software development is taught. What are the good parts of software education today, what are the flaws, and how might we change things to improve the state of software?
The relationship of simplicity and performance
May 2021
In the community, we talk a lot about performance. We also talk a lot about having simple code—and the two feel somewhat intertwined. What relationship is there between simplicity and performance? Are there better ways to reason about "simplicity" with this in mind?
How to design to avoid configuration
March 2021
Configuration sucks. How can we avoid it, while still making software that supports a wide range of behaviors? What is the essence of "configuration", and how can we identify it? How can we identify what is "bad config", and design our software to avoid it?
Code skimmability as the root cause for bad code structure decisions
January 2021
Programmers tend to care a lot about "readability". This usually means having small classes, small functions, small files. This code might be "readable" at a glance, but this doesn't really help you understand the program—it's just "skimmable". How can we think about "readability" in a more productive way?
Approaches to parallel programming
November 2020
A discussion of many aspects of parallelism and concurrency in programming, and the pros and cons of different programming methodologies.
Lessons from the Lisp Jam
August 2020
In the summer of 2020 we held a Lisp jam, where many community members made exploratory Lisp-inspired projects. We held this fishbowl as a recap, as a time for the participants to share what they learned and explore how those lessons relate to our day-to-day programming.
Compile-time introspection and metaprogramming
June 2020
Thanks to new languages like Zig and Jai, compile-time execution and metaprogramming are a popular topic of discussion in the community. This fishbowl explores metaprogramming in more detail, and discusses to what extent it is actually necessary, or just a waste of time.
The future of operating systems in an Internet world
May 2020
Despite the web's technical problems, it dominates software development today, largely due to its cross-platform support and ease of distribution. At the same time, our discussions about the future of programming tend to involve new "operating systems", but those discussions rarely take the Internet into account. What could future operating systems look like in a world defined by the Internet?
If you'd like to help us plan more fishbowls, join the discussion over on GitHub.