|
Here's a quick and dirty FAQ about me so's that I can feel all important. |
|
When are you going on tour?
This is not the website for a band. I am not in a band. I do not go on tour. I'm sorry to disappoint you. When is your birthday? Why? Are you going to send me a present? I was born on April 2, 1977. That makes me old enough to remember "The Jeffersons" but not old enough to remember "The Partridge Family". What do you do for fun? Fun? What's that? I read, listen to music, write and watch movies. I don't have cable anymore, so my TV fix is limited to DVD collections of "Buffy", "Babylon 5", "Quantum Leap" and "Aqua Teen Hunger Force". Do you have a (boy/girl/leper)friend? Why do you ask? Are you looking for one? Is your name Alison Hannigan? I am currently married, actually. To a very wonderful wife named Lizz. I say she's wonderful because it's true. And she will also read this eventually, if not "real soon now". And because she hits really hard. What are you doing right now? Writing this, listening to my wife type on her laptop and hearing the sounds of my daughter kicking and fussing in her crib. They let you have a kid!?! Yeah. And there wasn't even a five day waiting period or anything. I am the father of a wonderful little girl named Alexandria Siobhan. Right now she's six months old and does not want to go to bed at all. I've heard that you are a geek. How do I learn to program? 1. Pick a language. I don't recommend choosing a "learning" language like BASIC or Pascal, but rather I'd choose a more modern language that you can solve real problems in. This will make your talents useful more quickly. I'd choose Java or C++. Obviously, there are different opinions. Some people say the Python is a suitably useful language. Others say go with Perl. Personally, I suggest keeping as far away from Python as you can. The people who designed the language must have been freebasing Drano to think that whitespace should be used to indicate changes in scope. As far as Perl goes, I'd avoid it as a first language. In my opinion it teaches really bad habits. I think I've seen four Perl scripts in my time with anything approaching what I'd call a reasonable structure. If you want to look at a scripting language, I highly recommend checking out Lua. It is incredible. 2. Pick a compiler. With Java, it's Sun's JDK. Pick a release version and not a beta. For C++, your options and mileage vary with your OS. Windows = Borland or Microsoft. *NIX = g++. After I had mucked around with C at work for a while (this on a BSDI machine running some version of gcc) I decided to install FreeBSD on my machine in an attempt to dedicate my life to the Cult of C. The horrors were many, but I think that I learned far more from this experience that I would have using some other OS and langauge. It's a trial by fire, but if you're game I'd say install some free-NIX and go for broke. You'll have a compiler or interpreter for damn near every language and XEmacs is the best editor you'll ever find. 3. Pick an IDE. An IDE (Integrated Development Environment) gives you an editor, a debugger and a set of tools/hooks to integrate these with your compiler and linker. For Java it's Forté or NetBeans. Microsoft is VisualStudio and *NIX it's Emacs or XEmacs all the way. Under Windows, you pretty much have no choice but to have your IDE and your compiler married together. Honestly, if you are looking to write C/C++ programs under Windows you should be using Visual C++ Standard, which costs about $100. I'm told there are cheaper/free things out there, but VC is the standard. 4. Buy a book. A book that teaches you your chosen language, using your chosen platform and IDE for examples is the best. Stay away from Idiot's/Dummies guides as I've seen a few of these books with incorrect (read as "non-functional") examples and they tend to wear out their usefulness pretty quickly. Also, if you're the kind of person who likes bad jokes and puns scattered throughout your technical reading to break up the "monotony" ("Hey, nice baud!") then I seriously doubt you'll stick with a discipline that is about as much fun to the average person as playing the spoons or learning about the history of Elbonia. 5. Buy more books. Ultimately, you'll have a library of books on your chosen language. There will be the book you learn the language from. There will be one to three reference volumes. You'll have a book or two that talk about OS-specific tricks/hooks, and your favorite libraries. You can get these books one at a time, as you need them and that's probably the best way to go about it. I have between six and eight books on C++, no less than a dozen books focused on C, three or four books on Java, a couple of books on Lisp, etc. Your library should expand according to your needs, but it will expand. You'll also probably cultivate books on various maths and possibly physics depending on what you get into. 6. Surf the 'net. Books are necessary, but expensive. There are lots of references and tutorials out there on the web that can help you. Do a search for your chosen language and you should come up with a lot of resources. I was going to put a link here to a site that I used to visit that had mad amounts of tutorials on many different languages, but the site has been discontinued. Just do a search, you bum. 7. Join a mailing list. Once you've learned the basics of the language and have written a few pieces of functional code that do something useful, and you know your way around your chosen IDE, get on a mailing list for developers writing in your language. There are lots and lots of these. Don't post right away, just read. You don't even have to read anything, maybe just the subjects that interest you. Eventually, you can post questions and answer the questions of others. 8. Read source code. This one is very important. Writers of books are, first and foremost, readers of books. The same is true for writers of code. Learn how to read source code. It requires you to put your brain into a particular mindset and being comfortable in this state is very, very helpful when it's three am and your latest build is overrunning arrays whenever you click the mouse. Also, remember that the majority of programmers are not writers by trade. They spend more time writing code than documenting it. I can't tell you how many useful tricks I have learned by reading source code. Tricks I couldn't have found in any books. 9. Take some classes. A lot of people I've spoken with say that this is the best way to learn. A lot of people I've spoken with say the opposite. Me? I think it's a matter of preference. If you learn best in the classroom, then by all means, take some classes. Most community colleges or adult education centers offer some form of programming/comp. sci courses. If you're in high school (or younger), you might have options in your school too. At the very least, taking a class might be useful because you'll have an immediate group of real people around you that are all trying to grapple with the same concepts, and you'll have an instructor that you can ask questions of. This is sometimes hard to find elsewhere. I recently read something that defended the classroom model very well by saying "It's hard to get structured, metered exercises and programming projects in other environments. Most people learn some of the basics, get bored when all they see is their name printed on the screen ten times, want to do something truly useful and get frustrated. A class offers both a collection of well-structured projects and the incentive that comes from doing those projects in a group." or words to that affect. In my opinion, this is the best argument I've heard. 10. Do not be a cockey asshole. No matter how long you've been coding, there is always someone better than you. A college class (or several college classes, or even a college degree) don't automatically make you a better programmer than someone who never went to school. I have friends that run the spectrum from Ueberhacker to Wonder Tommy and let me tell you their talents are not a function of their schooling. It's a function of their passion. Don't be a loser. What do you do at work? I don't, right now. Instead, I'm a stay-at-home dad, which is more like a stay-at-home mom with a penis, rather than a sit-on-my-fat-lazy-ass sort of thing. That's a really cool domain name! Thanks. I try. Can I buy it? No. Have you ever read "X"? Maybe yes, maybe no. If you've read a book/story/article/poem/author/license plate that you feel compelled to share with me, feel free. I have a stack of no less than several dozen books that I'd like to read, and some that I have to. Don't feel bad if your suggestion goes to the bottom of the stack. Hey, my friend forwarded this really funny thing to me. I thought you'd like it, so here you go. I hate you. I hate you very much. Don't send me forwards. I hate forwards. Forwards get you all excited that you got a single personal email message in the flood of mailing list garbage and spam and it turns out there is absolutely no orginal content in it. It's probably that damn cup holder/foot pedal forward! Or my own "You're A Doofus Rabbit!" I created and sent out in a fit of angst! I probably don't actually hate you (although I might, who knows), but I really hate forwards. I know you don't like forwards but this one is really, really funny. You're a bastard. Don't send me forwards. Ever. Is this clear enough for you!?! How come you don't respond to your email? The odds of your message being answered depend largely on the following:
However, let me provide you with a list of things that will reduce your chances of getting a reply (or, at least a civil one):
|