   projects?
  i am looking for some good projects in computer programming. i basically want to learn something new, be it through a book or a project. i am pretty well-versed in c/c++. i know all of the syntax, and can use it well. i am working on good software design. i known the basics of opengl and direct3d pretty well, i am a newbie at linux though. i can install it, i can work the shell pretty well, i know a little bit about makefiles, gcc, and vi, and i can setup X pretty well. i''m working on linux, but i was wondering what you guys recommend i should do. i want something to work on, learn, or read. are there any good books you would recommend on certain topics in programming? i''m thinking of learning assembly. i was also playing with the idea of demos, and maybe some more game programming.btw, if i choose to learn assembly, should i use the 16-bit version or 32-bit windows/linux version of the art of assembly language? the 16-bit version is basically a regular assembly book to my knowledge, but the 32-bit one has this hla crap.thanks!  
  > are there any good books you would recommend on certain topics in programming?There''s useful stuff in Game Programming Gems 1 and 2. Code Complete is a great read, lots of info on good practice.> i''m thinking of learning assembly. i was also playing with the idea of demosRight on! > i was wondering what you guys recommend i should do.Educational: write a minimal PE / ELF program that runs. I''ve got PE down to 160 bytes; I hear someone wrote an ~84 (?) byte ELF app.http://acm.uva.es/problemset/ has a bunch of neat programming tasks (similar to a competition).Writing a landscape engine (Voxel or tri) is also fun, but there''s no lack of them I''m biased - I dislike HLA (missing the point of asm). Then again, you''d have to use old tools for 16 bit asm, which is also less fun than 32 bit (less addressing modes, constant segment juggling, small regs).  ;  I''d suggest you look into implementing a compiler or interpreter.  Many of the ideas are so fundamental to computers that you can''t really call yourself a programmer without at least some appreciation of the translation process  ;PMaybe try implementing a C or PASCAL subset interpreter or something, it is extremely educational.  Other than the Dragon Book (Compilers: Principles, Techniques & Tools,  Aho et al) I don''t have any book recommendations but there is a ton (more than a ton if you printed it all out I imagine  ) of information available across the net.Assembler is also fun and certainly worthwhile learning.  ;  I agree with JuNC, writing a compiler will give you a lot of experience with the essentials of programming, something which shouldn''t be underestimated. Though you really do need a fair amount of theory behind you first before you attempt such a project, as they can be quite complex and time consuming especially when writing one for the first time. If you''ve got the patience for it, I would heartily recommend it HTH  ;  Thanks, Jan Wassenberg, JuNC, and Ivan the Terrible. Jan: what is PE/ELF? I''ll look into compilers. Since you guys seem to recommend assembly, I think I''ll try it (what should I choose? the art of assembly 16 bit version or the art of assembly 32 bit version? i don''t know if the former is really 16 bit, so it''d help if you have read one of the books). Terrain engines actually sound pretty fun. Any more ideas? Thanks.    When you go homeTell them of us, and say:For your tomorrow,We gave our today.;  PE (Portable Executable) and ELF (Executable Link Format) are the binary executable formats of Windows and *nix, respectively.I''d second the translator recommendation, but a full C compiler (or even interpreter) is a bit much It''s been a long time since I read AoA (and I don''t think it had HLA in it). If you have a choice, go directly to 32 bit - don''t bother learning stupid 16 bit restrictions. If that means you have to ignore the HLA junk, so be it Another idea: write some good debug code - an exception handler, assert, ... And don''t stop halfway - do a stack walk, with debug symbols (showing you complete function prototypes, local vars, their value, etc.). This is not only incredibly useful, but a good way to practice your asm skillz (for the stack walk part, assuming you don''t use StackWalk[64]).  