Hello, I am a pretty good programmer that haven't really gotten into any practical stuff. My main problem is that all the projects that I have come across are way too big in scale. What would be nice is a daily challenge in programming. Like a simple problem, maybe a game. Something simple. Is there a website for this? If not, would anyone be interested in helping me find 30 different challenges that I can do over the next month. I really want to get back into programming and I think this is what I need. Any response is appreciated.
Learning how to get into these large projects will be an invaluable skill. Programming little data structures and algorithmic heavy problems is much different than learning how a large piece of software works and how to add functionality to it. The latter is much more useful.
I agree with ResidentBiscuit on this one. Little math problems like project euler are nice and all when you're just learning the language/programming but in if you wish to take programming farther then a hobby level you will need to learn to work on those big projects. Don't get me wrong you will use them things that you learn from projects like project euler all the time in larger projects but I believe you don't truly learn them until you actually use them to solve a real life problem you are having with a larger project.
I would suggest instead of doing a bunch of unrelated small assignment type projects everyday you should instead take one big project and complete a small segment of that project everyday.
Every big project is just a bunch of small pieces that need to be fitted together. So take a idea like building a IRC client or bot, a small 2D game, a web application, or whatever you are most interested in and give yourself a month (Or more) to complete that project.
Then everyday make sure you do at least one little feature that needs to be implemented, or one bug that needs to be fixed, or one little optimization that needs to happen. Basically do at least one thing that pushes the project forward.
This will give you much better experience then a bunch of unrelated assignment type projects because you will be learning valuable skills that you will need to work on them larger projects. And to top it off at the end you will have something that you will be much more proud of then 30 random programs.
Anyways that is just my advice and wish you the best of luck with your studies.
When you start to work on large projects, it is impossible to devote all your time to them. You'll learn to break them down in such a way that that one big project becomes a thousand tiny excercises. That's when it gets fun!
If I could make a giant 30 day project I would prefer that. I just don't have the skills to do so yet and maybe not the time either. A small challenge each day for 30 day though is managable and I can see my progress instantly as opposed to a larger scale project. I think what I'm going to do is write a list of 30 different objectives. Maybe make a bit bigger game and make a new class each day? Any suggestions for how I should organize the project? I really do have a problem with starting, I always seem to end up starting with the wrong thing and end up with a mess.
While not "instant" gratification... it certainly is very gratifying to load up an arbitrary binary file and have it play back music (and/or a full game if you are writing an emu).
I remember the first time I got my NSF player to play some beeps and boops. I was thrilled. Then when it actually played the song I was ecstatic. I ended up listening to like a dozen different NSFs back to back.
You will be writing C/C++. But the code you write will be reading in 6502 assembly data (like the actual binary machine code) and interpreting it as a program. Like writing an interpreter.
You will have to get familiar with 6502 though. You won't have to write anything in it... but you will have to understand it.
2. Do I need any additional hardware or software to make the emulator or can I use visual studio 2012? ( do i need a library ? )
No special hardware needed. VS2012 will work fine.
You'll need some ROMs/NSFs (both easily available on the net, you can PM me if you can't find any).
As for libs... you'll need something to output audio if you want to make an NSF player. And you'll need something to get keyboard input and do pixel-level video output if you want to make the full emulator.
If you want to start with the smaller NSF player (I'd recommend it), I have a DirectSound wrapper that makes streaming audio pretty easy. Lemme know if you're interested.