This study group is about the internals of compilers, programming languages, distributed systems, databases, file formats, internet protocols, operating systems, browsers, emulators, and to build a community around this kind of exploration. You're not expected to have attended previous weeks and expected to adhere to the standards of the Geneva War Convention.
Since we're just starting out, we plan on meeting once a month on a random Sunday afternoon that will be decided in the WhatsApp / Discord GC and work on the planned topics listed here. Feel free to join us during these sessions and decide if this group suits you!
Caution
Join ASRG GC here: https://chat.whatsapp.com/CQmHWWzGzVeHLC6TcuGmmm
⌘ OFFICIAL FIRST SESSION ! by vxsha-256
✦ Linux Kernel Module Programming
Let's write a Linux kernel module on a x86-64 Ubuntu 24.02 VM because I am scared of corrupting my own PC. We'll be using The Linux Kernel Module Programming Guide, a free book by Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram, Jim Huang.
✦ Reviewing DOOM:
Explore DOOM 3 Source Code and its engineering, such as the Quake III arena engine, Binary Space Partitioning, Fast inverse square root algorithm, Lectures from John Carmack & more. We read and discuss all things DOOM including watching it run in weird place.
TBD
✦ check out what we've planned here ✦
Pre-Season 01: April 7th, 2024
✦ PL & The Web:
The 1 Billion Row Challenge, Exploring Programming Language Runtimes, Crash Course into Low-Latency Systems and Large-Scale Backend Engineering.
✦ Interpreters, Package managers, and Planetary databases:
Go over the Crafting Interpreters Book, Dive into Reproducible builds with Nix, and review Monarch: Google’s planet-scale in-memory Time Series Database.
✦ Networking guide to the Internet:
Intro to Networking fundamentals, Practical end-to-end Authenticated Encryption, Speedrunning computer networking, and Reading Post-Mortems of Catastrophic Failure in Big Tech Companies.
✦ ML systems & Advanced Hardware (Semiconductors + GPUs):
Internals of JAX, ML systems and Compilers, Alternate experiments such as Q*, and KANs, Exploring advancements in semiconductors and accelerators for machine learning.
BSOD is a one-week intense jam where you implement a cool piece of software from scratch. Writing something from scratch turns theory into practice. You may think you know how a piece of technology works, but until you write it yourself, you truly wouldn't understand it completely.
-
ZigFest: 8-day crash course into Zig and Systems Engineering by vxsha-256
Designing SIMD Algorithm from Scratch, Building your own TCP/IP, Modern SOTA in-memory cache implementation, and Rebuilding Redis from the ground up.
-
Deployment from Scratch: over-engineering a website in the 21st century by vxsha-256
Learn how how web-apps work in production by working on our very own website - ASRG.tech! Learn the fundamentals for setting up servers and provisioning databases while gaining real-life experience.
-
OS-Dev: 4-week speedrun of building a mini-os from scratch with Rust and C by vxsha-256
Implementing a kernel from scratch, exploring the C run-time model, concurrency and hypervisors, and much more hell has to offer !
-
UNIX Jam: 1-week festival of intense systems programming and high-performance optimizations by vxsha-256
Deep look into io_uring and eBPF, recreate coreutils with your favorite language, distributed system challenges, writing x86 assembly for FFMPEG and so much more fun stuff.
-
Compiler Construction: 10-day jam of building modern compilers by vxsha-256
SOTA compiler optimization techniques, design experimental features, work on your own virtual machine around it, learn from other more established compilers.
A week-long hacking retreat to work on a variety of OCaml projects, including but not limited to the compiler, concurrency libraries, platform tooling, and benchmarking. Dive into functional programming and learn to appreciate actual ML languages instead of drooling over a whitepaper like Haskell /s.
Free-for-all kind of event where people give talks, get help on their homework/projects and work on random stuff. This is open to all and is an excellent way to integrate into the community. You can even just sit and watch what each member is doing without necessarily needing to pair-program.
Note
The only requirements you need to join the study group is the willingness to experiment and have fun. This is an all-inclusive community where there are little to no barriers. As with any social community, learn to take any constructive feedback and assume any critcism comes from a place of love and not malice. This is a chill community to share our love for systems, not to get you a $500k TC job (you might if you keep working at it). There are already tons of communities out there for it. We're here to learn and build awesome things at our own pace.
On the other side of things, here is a quote from one of our fellow member that represents the inevitable :
As the group name's suggests, we're more focused on niche and exciting problems rather than generic problems. While we'd love to hear about your startup / next big thing, we certainly don't want you use this as a platform for it. Unsolicited promotion that isn't mentioned explictly beforehand will result in insta-ban (Good luck with the appeal lol). Sponsored products will likely be exempted from this since I'l be screening it & make sure it's legit. To know more, send an email and I'll be happy to setup a meet / discuss more.
Contributions welcome! Just open an issue and I'll get in touch shortly.
shoutout to Praneeth for the write-up.
- Check if your project ideas satisfy the requirements specified in the ground rules.
- If so, check the existing project ideas to see if your idea integrates nicely with one of them, or if it is a separate project on its own.
- Is your project 50% done? then it is probably good enough to showcase it in a session.
- If not, is it a reading/exploration project? Then it probably doesn't require a GitHub repo, contact the lead or hit us up in the WhatsApp group.
- If it is a group project to work on, make sure it fits nicely within 3 Hours. It probably requires a GitHub repo, contact the lead anyway or hit us up in the WhatsApp group.
- Once a date is confirmed for your project, find reference material to get started on it, and share this with everyone else.
- Present/read/develop the project, and have fun !
- Refer to each project for any possible GitHub Project Tracker.
- Feel free to reach out to the primary developer of the project.
- Follow any code guidelines specified in the README (chances of there being any guidelines whatsoever are pretty slim).
- If it's a large contribution with significant complexity, consider bringing it up as an idea for an open session or BSOD.