@AbhinavKulshreshtha

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.

@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

@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.

@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.

@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

@RainOrigami

"I don't know what to build" goes away once you identify things that annoy you and think you can improve. There are more things I want to build than I have time for. It's never-ending.

@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.

@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.

@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.

@insylogo

C# is a good language.

I know C# takes a lot of shit for being a super-generic copycat of several languages/techniques that came out just before it, names unmentioned. But I think people will have to admit that it's like the Porsche of managed languages. Hear me out. I recently heard Porsche described as an 8-9/10 at everything, but not a 10/10 at anything. There are other cars that are faster but less reliable or can be hellish to work on in the long run, like Ferraris (lookin at you, C). There are languages that are simpler and easier to learn, but like Toyotas (Py&JS) they are never going to be anywhere near as performant. And there are those that are fantastic and more fun but nobody buys because of the difficulty of driving them, like the Dodge Viper (Rust). There are cars that try to do the same thing, or even did it first but couldn't keep up in the long run, like Lotus (Java). 

C# does everything these days, and does just about everything it does well, but it's never 10/10 in anything. Its has very consistent and well maintained and documented standard libraries. It's got a decent dependency management system with lots of well maintained public packages. It compiles down to either a portable IL or can compile to architecture-specific bytecode. Its memory management is simple and rarely needs any intervention for anything beyond advanced 3D games or HPC (which, why are you using C# for?). Performance is more than decent, support is easily available, it uses easy to learn syntax for anyone who has had any programming education in the last 30 years, and did I mention that its well maintained? New features frequently come out, and they're almost never breaking.

I can't say I think C# is the best at anything, but it's better than most at just about everything. Even things it has no business being good at. But go ahead, flame me.

@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)

@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

@sheriffderek

Projects every farmer should try: Cloning sheep, building spaceship, square dancing to meet women

@ZeikCallaway

Fun fact it doesn't matter what projects you work on in your free time. Your job is going to ask you to do things you haven't done before. They're going to give you zero guidance and training. And you're going to be one of the rare people that somehow magically pick it up, or you're just going to struggle until you burn out.

@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.

@longlostwraith5106

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.

@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.

@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.

@wzywg

NAND to Tetris is an amazing introduction to computing in general.