Programming Project Ideas - Give your Unique and Interesting project ideas here.

  • 🔧 Actively working on site again.

Musashi's Son

kiwifarms.net
Joined
Oct 4, 2023
I'm making this thread partly because I'm tired of projects everybody is recommending for beginner programmers (guess the num, rock paper scissors etc) and I want something more interesting and unique. If you have any recommendations it would be appreciated because I want to improve at programming. Also, this thread could also help out other people who are in the same situation I'm in. I was also inspired by @Doubly Punished Snigger's KF math thread because it provided some interesting discussion about math and how to learn it. Don't recommend too advanced projects, recommend more beginner or intermediate projects.
 
Last edited:
make some very simple games from scratch
snake is a good example, or pong, maybe a simplified version of space invaders or pacman

I made my own virtual 16-bit CPU, assembly language and assembler when I was learning D. It's actually not as difficult as it might sound and it was pretty fun to work on. The hardest part was actually the text parsing for the assembler.
are you seriously telling some kid who is a brand new coder to get into fucking hardware design and compiler construction as a starter project? this is insane dude even most university graduates probably can't do what you are describing
 
I made my own virtual 16-bit CPU, assembly language and assembler when I was learning D. It's actually not as difficult as it might sound and it was pretty fun to work on. The hardest part was actually the text parsing for the assembler.
Where'd you learn how to parse a programming language? I might want to do that one day. Probably a Lisp or Smalltalk implementation.
 
Where'd you learn how to parse a programming language? I might want to do that one day. Probably a Lisp or Smalltalk implementation.
It was my own programming language I made. I didn't learn it anywhere in particular I just put together things I learned before. Reading characters from a file, storing those characters and separating them into lines based on a delimiter, then separating the opcodes from the arguments then translating those opcodes into processor instructions.

Everything in programming is just a bunch of little things put together to make a big thing. The reason for those basic programming projects is because everything big you make will be made out of a bunch of those little projects.
 
It was my own programming language I made. I didn't learn it anywhere in particular I just put together things I learned before. Reading characters from a file, storing those characters and separating them into lines based on a delimiter, then separating the opcodes from the arguments then translating those opcodes into processor instructions.
Did you use regexes? Regexes might be adequate for some forms of assembly. What I have in mind will be a bit more complicated.
 
It depends on what language and type of programming you're interested in. Make a game to learn your language's internal structures or memory models. Make your own webserver to learn your language's file i/o and networking stacks, plus HTTP quirks. Make a custom server (non-HTTP) plus native chat/messaging app to practice full software fundamentals, and real time user interaction. Add database storage to the previous 2, because eventually you'll need to do that with just about anything.

If you're doing webdev it's just "make a website" plus whatever frameworks or interactive scripting you care about. Same with mobile apps. My advice is treat those as separate projects, don't include a mobile piece to one of your other projects until you're comfortable with each component already.
 
It depends on what language and type of programming you're interested in. Make a game to learn your language's internal structures or memory models. Make your own webserver to learn your language's file i/o and networking stacks, plus HTTP quirks. Make a custom server (non-HTTP) plus native chat/messaging app to practice full software fundamentals, and real time user interaction. Add database storage to the previous 2, because eventually you'll need to do that with just about anything.
These are all good ideas but they might be a little ambitious for a beginner. One thing I really think you should learn from the beginning though is version control, presumably through Git and GitHub, and what we now refer to as "ops". Unix shell, compiling from source etc.
 
Everybody talks about starting a coding project which is cool and all, but try setting up you're own fully functioning virtual lab. Set up a simple cloud network on the AWS free tier, deploy some EC2's and make an internal and external facing network where federation is used to access internal documents stored on an S3 bucket. configure accounts/security groups for testing/deployment/administration purposes, then create some internal networking to see if you can run some services between your EC2's, and make sure to enable audit logging and pipe the audit logs to an S3 for review. Programming is important, but knowing how to configure an environment can be just as helpful as to learning what you can and can't create based on certain constraints and how to enable/disable settings for security hardening and optimization.
 
Everybody talks about starting a coding project which is cool and all, but try setting up you're own fully functioning virtual lab. Set up a simple cloud network on the AWS free tier, deploy some EC2's and make an internal and external facing network where federation is used to access internal documents stored on an S3 bucket. configure accounts/security groups for testing/deployment/administration purposes, then create some internal networking to see if you can run some services between your EC2's, and make sure to enable audit logging and pipe the audit logs to an S3 for review. Programming is important, but knowing how to configure an environment can be just as helpful as to learning what you can and can't create based on certain constraints and how to enable/disable settings for security hardening and optimization.
I sort of agree with the sentiment of what you're saying here (look at the post right before yours) but I would recommend doing things locally or in a VM first. That reduces the complexity considerably and from there you can set up cloud services.
 
I've never wrote a program but I've wrote some scripts for various things, usually just because I couldn't find something already premade. I started writing mIRC scripts 30 years ago and used what I learned there to fix/edit Perl/TCL/Python/PHP scripts. The thing I'm most proud of is a python script to download videos from police car DVRs over the network and storing them on a server since the software shipped by the company to do those functions didn't work properly.

I say that to say, look to fix a problem or simplify a process you do often as a starting point. You'll have fun while making something better.
 
  • Like
Reactions: Musashi's Son
I've never wrote a program but I've wrote some scripts for various things, usually just because I couldn't find something already premade. I started writing mIRC scripts 30 years ago and used what I learned there to fix/edit Perl/TCL/Python/PHP scripts. The thing I'm most proud of is a python script to download videos from police car DVRs over the network and storing them on a server since the software shipped by the company to do those functions didn't work properly.

I say that to say, look to fix a problem or simplify a process you do often as a starting point. You'll have fun while making something better.
Reminded of Larry Wall's (creator of Perl), three virtues of a great programmer, Laziness, Impatience and Hubris. Wall is an evangelical Christian and so the "virtues" are a bit tongue-in-cheek but honestly a lot rings true there. Also, if you've written what you say you did, then you've written programs, even if they aren't a word processor or web framework or whatever. You can take pride in that other stuff too.
 
Well OK what were some sites or books that gave you guidance in parsing your assembly code
Well I used this to figure out how to read files in d
https://ddili.org/ders/d.en/files.html
And I used the d standard library documents a lot

Otherwise I just read a lot about how compilers and interpreters work and used what I know to try and figure out something that would work the way I wanted. My code for that is mostly just a whole shit load of if/else statements. It basically just reads the file line by line, separates everything by whitespace because I'm lazy, so you need a space between arguments, and uses the semi-colon to end a line, stores everything in a big array, matches the statement to an opcode. So for example, if the line was

JMP 0x40;

It changes JMP to 0x02 or whatever I used as the opcode for JMP, then everything is written line by line to a 'rom' file as one long array. So it starts at zero and ends at the memory limit I set for rom code in my virtual machine.
 
  • Informative
Reactions: Belisarius Cawl
So for example, if the line was

JMP 0x40;

It changes JMP to 0x02 or whatever I used as the opcode for JMP, then everything is written line by line to a 'rom' file as one long array. So it starts at zero and ends at the memory limit I set for rom code in my virtual machine.
You might enjoy nand2tetris, which is on Coursera. For me, the content was a little too ambitious and rushed but the overall idea of (like the name suggests) starting with basic logic gates and proceeding through intermediate steps to what we consider software suitable for an end-user is incredibly solid. Plus, if this matters, the instructors Shimon Schocken and Noam Nisan (both Israelis) have cool accents. I can't help but think of the "Data-Driven Astronomy" course on Coursera where the instructors are Australian and I just liked listening to them.
 
Back