Your first challenge: take a generic PC (or a Mac, for that matter). Install Linux, Apache, MySQL, and PHP. Get Wordpress running and put up a simple blog. Make a post or two. Smile.
Bonus points for using Drupal instead of Wordpress.
You might prefer to do this exercise using a webhost like Slicehost. They'll hand you a VPS for $20 a month. The advantage here is that, when you're done, you'll have a public website instead of just a local PC that nobody can visit.
Read up on basic security and set up a firewall on your web server. Read up on DNS and get that working. Get a mail provider, like gmail, and wire up your new domain's email.
This exercise is actually really easy, nowadays. But it's a start. It will teach you a bunch of fundamentals, like how to use Google to solve all your problems ;). You will learn how much you enjoy tinkering with web technologies. And, for the purposes of many, many profitable online businesses, you'll be almost done. :)
----
When it comes to actually learning programming: Try Ruby or Python. Although I still never find time to use it, I will once again plug Hackety Hack at hacketyhack.net. Consider learning Rails by using Heroku: http://heroku.com/ .
If you want to impress folks around here with your earnestness, read SICP. Just Google "SICP". You can even find free online lectures from the MIT class that SICP is for. If you read it, you'll know Lisp, and you'll be well launched on your career of bluffing your way through computer science. As an economist, you might be enough of a math guy that you'll fall in love with Lisp. It does happen.
Oh, and two key words: emacs. git. Buy and read Learning emacs; it's worth it. And learn about version control -- I do recommend git, but it's still kind of confusing to learn, despite the best efforts of the Peepcode screencast guy and Randal Schwartz. You may find better intro material for Subversion: google for "svn book".
I definitely agree with your first exercise. It would give some kind of confidence and any newbie would feel at home to web apps. Reading SICP/git; add to that Data structure CS stuff is not at all mandatory to become hacker. Thats the "school" way or maybe it worked for some people. My gut feeling is you need to work on some part of your app every day. It would lead to html/css/JS and then get/post basics and common boilerplate routines for them in java/python/ruby etc.Unless until someone starts real programming; reading books wont do any good. Stumble across problem; Google; download sample solution..make it work on pc; figure out how it worked; tinker; customize and keep logs in your work journal. It would motivate you on some down day.
At least I feel happy when I solve problem this way. There are "Big problems to solve" but maybe I have to learn about "small and smart problems which people have already solved" first. And as newton said "I could see farther because I am sitting on shoulder of giants"...something like that.
Once it becomes part of thinking process then you would automatically go to books to figure out what you need at this point of time. So becoming a hacker is not a goal; goal is to get that attitude deeply imbibed in everything you do with problems.
disclaimer: I am just at the bottom of the pyramid actually. But whenever I get to know things about programmers; I find all I wrote above.
P.S. get "Just for Fun- Revolutionary story birth of Linux operating systems". You can read some good accounts of hacking there. It was all about tinkering around and fixing.
I don't disagree with this at all. There are lots of ways to learn, and everyone's style is different. That's why I ended up offering two distinct styles of advice, separated by the magic dotted line (-----). I use a mixture of the two... one which is actually skewed pretty heavily in your "hack away on the app and solve problems" approach.
Some of us like learning from books (as well as by practicing). Other people like learning by practice, as well as from books. Some people actually go to school and get degrees in comp sci. I skipped that part: After far too many years studying science, I got bored with formal lectures, because they move at a pace that isn't my pace (i.e. "usually too slow, except when they're too fast"). OTOH, other people thrive on the camaraderie and the formal structure of a class.
I think your answer is wise to emphasize that building stuff, and learning via experience, is the only real path to becoming a hacker. Some book learning will help, but it's not the essence of the matter.
Thanks a lot for the feedback. I'm pretty sure I have an old Dell laptop laying around somewhere, so I'll have to give that first recommendation a shot this weekend!
Bonus points for using Drupal instead of Wordpress.
You might prefer to do this exercise using a webhost like Slicehost. They'll hand you a VPS for $20 a month. The advantage here is that, when you're done, you'll have a public website instead of just a local PC that nobody can visit.
Read up on basic security and set up a firewall on your web server. Read up on DNS and get that working. Get a mail provider, like gmail, and wire up your new domain's email.
This exercise is actually really easy, nowadays. But it's a start. It will teach you a bunch of fundamentals, like how to use Google to solve all your problems ;). You will learn how much you enjoy tinkering with web technologies. And, for the purposes of many, many profitable online businesses, you'll be almost done. :)
----
When it comes to actually learning programming: Try Ruby or Python. Although I still never find time to use it, I will once again plug Hackety Hack at hacketyhack.net. Consider learning Rails by using Heroku: http://heroku.com/ .
If you want to impress folks around here with your earnestness, read SICP. Just Google "SICP". You can even find free online lectures from the MIT class that SICP is for. If you read it, you'll know Lisp, and you'll be well launched on your career of bluffing your way through computer science. As an economist, you might be enough of a math guy that you'll fall in love with Lisp. It does happen.
Oh, and two key words: emacs. git. Buy and read Learning emacs; it's worth it. And learn about version control -- I do recommend git, but it's still kind of confusing to learn, despite the best efforts of the Peepcode screencast guy and Randal Schwartz. You may find better intro material for Subversion: google for "svn book".