Projects Every Programmer Should Try

393,550
0
Published 2024-01-14
Recorded live on twitch, GET IN

twitch.tv/ThePrimeagen

Become a backend engineer. Its my favorite site
boot.dev/?promo=PRIMEYT

This is also the best way to support me is to support yourself becoming a better backend engineer.

Reviewed article: austinhenley.com/blog/challengingprojects.html
By: Austin Z. Henley | twitter.com/austinzhenley

MY MAIN YT CHANNEL: Has well edited engineering videos
youtube.com/ThePrimeagen

Discord
discord.gg/ThePrimeagen


Have something for me to read or react to?: www.reddit.com/r/ThePrimeagenReact/

Kinesis Advantage 360: bit.ly/Prime-Kinesis

Hey I am sponsored by Turso, an edge database. I think they are pretty neet. Give them a try for free and if you want you can get a decent amount off (the free tier is the best (better than planetscale or any other))
turso.tech/deeznuts

All Comments (21)
  • My goto project is always a music player, it has networking, file management, byte stream management, all kind of data structures can be used for playlists, database access. Basically a simple to visualise project that covers everything.
  • @robgrainger5314
    The satisfaction to be gained from getting a bare bones OS booting on hardware to a command line cannot be understated. The closest I've felt to a wizard in any programming project.
  • @ColossalMcBuzz
    I once wrote a Gameboy emulator in C# (C# MENTIONED!) and the hardest part is finding accurate information on how everything works. Plenty of resources on how 95% of it works, but I never found a single source that covers 100%. Second hardest part is understanding all that info making the damn thing work. Seeing a game display for the first time is insanely rewarding.
  • @beanarine
    The best project I worked on in school - the one I learned the most but felt like I accomplished the least - was building a graphics editing program with simple animation tools and timeline. Figuring out layers, undo/redo, manipulating things on the canvas, the clipboard, all of it left me feeling like I was way in over my head and yet I came out with a clunky and ugly piece of software that I made all on my own. I was humbled but still proud
  • @FrankHarwald
    I also can definitely recommend writing a compiler if you want to be really good at programming in general - except when you write your first compiler, I'd really recommend to skip the whole optimization part. Code optimization has several problems: a) there is NO one approach fits all, instead you need to shove a plethora of different complex specialized algorithms into it b) this is ongoing research (even the theory of compiler optimization changes quickly with only a few exceptions) - this means you'll conceptually be not just between two but three moving targets c) a lot of even mildly sophisticated optimization algorithms are computationally hard. This means among others you'll need to get into heuristical algorithms, approximation theory & numerical computing as well which you otherwise wouldn't need to do in a compiler
  • @bobbycrosby9765
    I always recommend MUDs. It's a game but focused more on backend activities. You'll need to tackle sockets, file IO, RFC implementation (telnet), AI, etc. The sky is also the limit depending upon how complex you want to get.
  • @aCrumbled
    ive done a text editor with vim motions, an interpreter for my comp sci final, and a terminal game engine. All great projects that ive learned so much from, now all i have to do is get a job.
  • @yumekarisu9168
    This video couldn't be more recommended at the right moment than this to me. I was wondering what to do after finishing mooc fi intro to programming with python course and doubting myself of trying those seemingly niche project that on the surface doesn't contribute much to most dev jobs on the market. However seeing those type of projects are what made me interested in programming in the first place, glad to know that the knowledge you'll gain from those projects are applicable in the real world. Thanks for the insight Primeagen
  • @dealloc
    Before starting on a text editor, I recommend trying to make a line editor first. It has similar constraints but more limited to a line-by-line basis; and you'll learn that there's a ton of ways you could abstract it with different data structures, each having their own pros and cons. I started with a simple interactive rebase editor in terminal when I learned Rust, and I still use it for rudimentary rebase tasks. This probably doesn't need a ton of optimizations for my uses, but you it can end up being a fun project to try and implement and optimize as you go, as you introduce more lines you have to start thinking about scroll buffers, etc. Which is also something you'll get into when writing a text editor.
  • @SimGunther
    I've had this bookmarked for years! Glad he's finally looking at it.
  • @shapelessed
    I wrote a filesystem with full volume encryption in JS so everybody would hate me and leave me alone. (the "leave alone" part didn't work out well)
  • @InfiniteQuest86
    So I'm confused when people say you shouldn't go to college and then recommend stuff like this. What do you think you do in college? Literally all of these plus WAY more.
  • A piece table is perfect if you want to be able to handle humongous files which wouldn't fit in RAM. For anything that would though, just use a line array and be done with it. Simple, reliable, fast.
  • @chukwunta
    This is arguably the most useful information I have gotten from this channel. I usually just come for the rants (it's quite entertaining). Thanks for making the effort to make us better programmers than ChatGPT. Truly appreciated.
  • @pauloheres
    I love to watch your reacts. It works as an energy boost. Thanks!
  • @xcuu
    I wrote a compiler in Java of a language similar to C back when I was doing my masters. Great experience, and very interesting to understand how things run when you compile your code.
  • @scottwarner7729
    @4:11 - Keeping track of a cursor in a text editor is just a matter of keeping track of the index of the row you were on when you pressed up - Each time you press up you try to move up to the nth index in that row, where the index is stored when you first pressed up. Enter any other key, be it typing or another cursor moving key, and that stored index is reset.
  • @dragonmaster1500
    I do most of my coding in R, primarily for data science. Super basic and a pretty easy language to understand. It's also a fun language to work with if you're starting out, so long as you like making graphs, bar charts and machine learning. I dabble a bit in python though and these definitely sound like fun projects to try, especially the text-editor, compiler and OS.
  • @pixalquarks4623
    Recently made a single thread synchro http server from scratch using sockets, was really fun learning how to parse incoming data into http request format(straight from http specifications), routing the uri to handlers (parsing the path) and request response cycle. It's very basic but got to learn a lot.
  • @danBhentschel
    "Reactive programming paradigm" - I'm pretty sure this is referring to how to update only the affected cells in the spreadsheet. If you make a change to a cell, you only want to recalculate the affected cells. A naive implementation would recalculate all cells and would be very slow for larger spreadsheets. This also could factor into display updates. Only repaint the cells that changed and are on screen. I've done some of both in a past position. You can run into some pretty tricky scenarios.