lainchan / λ

C Programming Project Ideas

Judge Fang · 2021-06-13 20:18
Too many lainons including myself want to improve their C but just don't find something enjoyable to use it for. I don't want to do project euler stuff, I want to build something that more practical. Maybe with some socket programming as well, as networking never fails to fascinate me. ITT we share ideas to practice (C) programming with a nice little project.
byte · 2021-06-13 21:08
>>26232 Seems like a bad choice to limit this thread to purely discussing project ideas in C. We already have a C general for that kind of stuff.
Nell · 2021-06-13 21:41
I've always wanted to make a 'network debugger' of sorts. It connects to a network interface, and it reads incoming packets just above the link layer, and presents the user with an interactive environment and a scripting language to operate on the received data. The idea is to serve as a debugging environment to plug into a network that's misbehaving.
quote · 2021-06-13 22:13
>>26232 I decided to code an ARM Cortex-A57 emulator fully in C, mainly because maybe it will be of help when somebody decides to create a switch emulator. Only time will tell whether I will give up or not eventually, since not only it is a long project but also because uni limits my free time.
Lady 3Jane.. · 2021-06-14 12:13
>>26234 You are right, that's why there are () around the C: >ITT we share ideas to practice (C) programming with a nice little project. But the usual ideas like building a webscraper or videogame or AI don't work too well with C so it makes sense to include the language of choice in the request.
Judge Fang · 2021-06-14 16:54
>>26243 Actually they all can be made using C profitably. The web scraper may not be the best tool, but it'll put into practice your skills in network programming, parsing text, and others. Remember, wget is essentially a web scrapper written in C. A somewhat simple videogame in C can be a good excercise in datastructures, graphics programming, etc. And AI can also provide much motivation for good algorithms and datastructures while keeping an eye on efficiency.
⍕ · 2021-06-14 18:01
When I was first learning C, I made an "audio server" that connected to JACK and dumped the audio to a TCP socket. It was a good first project because it taught me to use the JACK API, a bunch of stuff about network sockets, and how to do simple multithreading so that client connections wouldn't block the listener thread. Simple networking projects in general are a great way to learn C. Come up with some kind of simple automation tool that makes use of a subset of some old protocol like FTP, IRC, IMAP, POP3, SMTP... hell even basic HTTP isn't that hard (essentially, look for protocols that you can "speak" manually over telnet, because they'll be less daunting to implement than something like WebRTC or samba). Also, anything involving reading binary files is probably a decent C project. Don't start out by implementing a full standards-compliant library. Instead, just do something like a simple console app that lets you edit exif metadata, or a tool for AVI datamoshing, or a utility for searching and organizing PDFs by metadata.
Y.T · 2021-06-15 13:36
>>26232 > Suckless programs > Coreutils/moreutils > Python's C bindings libraries (numpy, lxml) > Protocol Buffer implenation > A site in bschd stack > Web assembly projects > Data Structures/algorithms in C (bonus if they're generic) > Game engine for a genre (you're own version of RPG maker, bonus if it has a scripting engine) >>26247 >SMTP I'll give it a shot. I have to text people using emails, so this sounds promising.
Koichiro · 2021-10-04 07:54
>>26235 That's Wireshark.
Nameless · 2021-10-16 09:57
Here's some challenges from /g/ roll and pick 1st one
Armitage · 2021-10-17 10:54
>>28027 2nd one roll n choose lainons. make sure to post the code if you actually do one
Unknown · 2021-10-17 14:14
The thread should be called Programming Challenges to be honest. >>26232 Pick an algorithm/data structures book and implement an algorithm or a data structure. Or how about you write a Scheme? Also try https://projecteuler.net
Faye Valentine · 2021-10-20 01:34
>>28046 Roll... bet its something I've already done
Unspecified · 2021-10-20 01:38
>>28080 And it's not, time to look into this...
Ishikura "Tatsu" Tatsuhiko · 2021-12-15 22:38
There's an interesting protocol called 9p which can be used for lots of different things; it shouldn't be too hard to come up with a use case for it. Writing a 9p client or server will expose you to plenty of cool concepts--socket programming, bitwise stuff, file systems, concurrency--and on top of that, it's a relatively simple and well-documented protocol. You'll learn a lot by working with it. http://man.cat-v.org/plan_9/5/intro
Dox · 2022-01-08 09:52
>>26232 I personally improved my C programming abilities a lot by working on a library of data structures (lists, trees, vectors...etc). Maybe try something like that? But be warned, it is a big project.
Dozer · 2022-01-08 20:04
https://github.com/1u-ka/acid been making and re-making this project for *years* now in various languages and have managed to trim the concept down to the perfect format where nothing more can be added or removed in the "core" implementation now i just keep (re)writing it in whatever language/tech i want to explore and tinker with. currently i'm looking to reimplement it from python/hy and into C/janet. you can join me in doing this with time i intend to have a stable interface (no matter the underlying tech) so that i can build **on-top** of the core logic
Unknown · 2022-01-08 23:15
Making a program to read a filesystem image like ext2 or FAT12/16/32 is not as hard as it sounds and it's also fun. Making a simple programming language is also quite cool and do-able, plenty of tutorials online. Haven't tried these ones but I think they might of similar difficulty: Making a small 'git' clone might also be cool. I recently had to learn it quite in depth for a university course and I discovered it's internals are very simple actually. Bonus: you actually end up learning git, not just writing commands without understanding. You could also use SDL and make a small GUI library. Or even a small browser engine(just enough to render motherfuckingwebsite.com ): take an URL from args, use cURL to download the HTML, parse it and try to render it to the terminal. Or you could take it a step further and actually render it via some gui library, or even just sdl.
St. IGNUcius · 2022-01-10 02:11
>>26236 lel, manual for that CPU is like over 1000 pages. Good luck tho. >>26247 I implemented primitive unix shell in C. Nothing powerfull but was nice exercise in pointers. >>26232 you might be interested in familiarizing yourself with tools like cscope and cflow if you ever considered possibility of working with bigger codebases in C. When I was learning C i was reading a truckload of C code from SourceForge, nowadays you have github repos with even more code than was public in my days