Console #128 - Interview with tga of Kaboom - a JavaScript game library
Featuring reviewdog, Linen, and windows95.
🏗️ Projects
Browse through open source projects on OpenSourceHub.io, add your project to get more exposure and connect with other maintainers and contributors!
🐶 reviewdog
Automated code review tool integrated with any code analysis tools regardless of programming language
language: Go, stars: 5657, issues: 96, last commit: 4 days
repo: github.com/reviewdog/reviewdog
blog: medium.com/@haya14busa
🙌 linen.dev
Linen is a Google-searchable community chat tool. Linen was built as an alternative to closed tools like Slack and Discord.
language: TypeScript, stars: 790, issues: 10, last commit: 2 days
repo: github.com/Linen-dev/linen.dev
site: linen.dev/community
💻 windows95
Windows 95 running in an Electron app. Runs on macOS, Linux, and Windows.
language: TypeScript, stars: 20505, issues: 120, last commit: 6 days
repo: github.com/felixrieseberg/windows95
🎮 Kaboom
Kaboom is a Javascript game programming library that helps you make games fast and fun.
language: TypeScript, stars: 1780, issues: 27, last commit: 4 days
repo: github.com/replit/kaboom
site: kaboomjs.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 tga of Kaboom
Hey, tga!, let’s start with your background. Where have you worked in the past, where are you from, how did you learn to program, what languages or frameworks do you like?
I grew up in China and got into programming in high school by learning to make websites and stuff. I went to the US for college and got interested in games and game dev, mostly learning to program by doing projects. I don’t like a lot of languages and frameworks and that’s a big drive for me to learn tech in order to build my own in order to replace some ugly dependencies (for personal projects. In collab projects I have to treat dependencies with another mindset), but there is still a lot of software I like, e.g. Lua, love2d, amulet, dear imgui, sokol, SQLite, software made by rxi.
Where did you go to school?
I went to Parsons School of Design at NYC, majoring in Game Design.
Do you like NYC?
Mixed feelings I guess, I don't like the city that much but there're so many important memories here, and important people.
How did you get into coding from game design, and what resources did you use to learn?
At first I was trying to make games with lua + love2d, it's a lot easier to learn to program if you're clear about what the desired output is (in this case, I recommend having the game designed before engineering). Once I learned the fundamentals of programming I started to learn how my tools work and tried to build my own tools, then started a rabbit hole of going deeper.
The learning process is very random and not systematic, mainly just jumping around the internet looking for articles, books, and other people's code and read the part that interests me. But, this also leads to fragmented knowledge, I know a little about a lot of stuff but am not an expert in any field. It's tough to find resources about what exactly you want to learn, I’m still learning how to learn everyday.
A lot of people quit, or find it too difficult because they set out to "learn how to code" rather than trying to build something and picking up coding as a by-product of that.
Yes! Actually my first encounter with programming was reading K&R due to some recommendations and I didn't understand anything for days. It instantly clicked when I saw some colors on a screen with HTML, CSS, and Javascript.
Who or what are your biggest influences as a developer?
Programming-wise, the experience of learning Rust, C, and building game engines has helped me a lot while learning. Also, some ideas from UNIX, suckless and cat-v (yes my head is very poisoned with these teachings but they actually work very well with my goals), have influenced how I choose to build things.
Video games have been a huge influence on me, especially the works from Blake Andrews, increpare, thecatamites, Michael Brough, and a lot more. Also every film I watch, all the music I listened to, all the people I met, and every place I’ve been.
What’s your most controversial programming opinion?
Everyone should build their own tools.
What is one app on your phone that you can’t live without that you think others should know about?
I guess the most needed one is Music (I manage a local music library with Apple’s Music app on both macOS and iOS), my phone is basically a portable music device. I also can’t live without Wechat, Weather, Map, and Camera. I actually have 100+ games on my phone but I never open any of them. Like my steam library, I really should go through all of them sometime.
If I gave you $10 million to invest in one thing right now, where would you put it?
If you don’t ask for any return, I’ll just put it directly into my bank account and work on my own stuff full-time and not worry about money forever.
What are you currently learning?
Learning / working on my scripting language with the awesome Crafting Interpreters.
What have you been listening to lately?
Been looping on Quasimoto.
Why was Kaboom started?
It started from Amjad (CEO of Repl.it) and I talking about how we can build a game programming environment for beginners.
Where did the name Kaboom come from?
Kinda a low effort name, I wanted a name that felt good when you say it out loud, and didn’t have too much meaning. Kaboom then comes to mind, not my proudest creation in life, but I think it works so far.
Are there any overarching goals of Kaboom that drive design or implementation? If so, what trade-offs have been made in Kaboom as a consequence of these goals?
One big trade-off is the level of abstraction. Kaboom is trying to be easy for beginners. So, a lot of abstraction is needed, but sometimes that gets in the way of power users. Kaboom is trying to define each layer of abstraction well, and expose as many interfaces as possible without being messy (like exposing the lower level drawing / audio API, which isn’t handled well as of v0.1.0). The tool is targeting beginners and intermediate users, but we still want it to be smooth for pros.
Are there any competitors or projects similar to Kaboom?
Not really competitors but serves a similar audience to Microsoft Makecode, I think they did a really good job on building a gamedev environment.
How do you balance your work on open-source with your day job and other responsibilities?
I’m currently working at Repl.it and they’re paying me to work on Kaboom haha! My official role is actually designer so now I’m constantly splitting my time between design and programming. It’s pretty flexible, typically each week has a priority and I’ll decide if I work more on Kaboom or design at the start of the week.
How do you like working at Repl.it? I’ve heard some very good things about the product and company.
I'm enjoying it! The culture is super good, everyone is super nice and chill, and yes we have some really badass engineers doing lots of cool cutting edge stuff.
If you plan to continue developing Kaboom, where do you see the project heading next?
With the initial launch, the next milestone is to make sure people can actually make stuff without blockers.
What motivates you to continue contributing to Kaboom?
Kaboom also serves as an experiment ground for me solving my own problems in game dev, always motivated to serve my own needs. Also with the initial launch it looks like some people really liked it, happy to serve the kind, warm-hearted, and creative people.
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!