Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »


Genetic Programming:
A Field Guide to Genetic Programming
Introduction to Evolutionary Computing
Genetic Programming by John Koza

Good Explanations of General CS Topics:

http://cslibrary.stanford.edu/ - Pointers, Binary Trees, etc.


Object-Oriented Programming:
- Life of Danie (blog) - Simple Object-oriented programming (OOP) explanation
C++ For Dummies - he uses an analogy of a microwave instead of a house.

REST (Representational state transfer):
- http://tomayko.com/writings/rest-to-my-wife



Misc Cool Links:

A Stanford CS PhD's advice on learning to program games (he does it in his spare time):
http://www-cs-students.stanford.edu/~amitp/gameprog.html

a pixel-art tutorial:
http://mossmouth.tumblr.com/post/42652506486/pixel-art-tutorial

GameMaker:Studio seems like a good way to learn how to program. I was reading some advice on making games when I saw that an indie artist-turned game-programmer had made the first version of a game called "Spelunky" with GameMaker, and after seeing some success he was able to make a much nicer version for the XBox.
http://www.yoyogames.com/gamemaker/studio

Ants AI Challenge - http://aichallenge.org/index.php

http://www.justin.tv/startupschool/b/272180383

http://www.quora.com/Charlie-Cheever/answers
http://www.quora.com/Adam-DAngelo/answers


Misc Thoughts:

- thought: a friend had posted 
a link to the memoirs of a CS PhD at Stanford, and someone else had posted, "Only halfway through but it's amazing how much of his experience mirrors my own". This made me think about my zombie infection simulator and how any of those individual people could have told a story that would ring true for many of the other humans in the simulation: "I was minding my own business when suddenly everyone around me started panicking, I wasn't sure what was going on, and then a minute or two later these zombies came into view and started killing everyone". So my question is, under what circumstances does this happen in general? I'd like to have a nice clean description of the characteristics that define situations where this phenomenon may appear. For example, in the PhD example, it seems to be a result of the incentives that exist in academia among professors, journals, students, etc.

Very Important: I'm noticing that as I make progress on the Ruby on Rails tutorial and Elenco 130-in-1 guide, I'm becoming more excited. Seeing my progress and thinking about the future things I'll be able to accomplish is really motivating me in an incredible way. I'd known what Schwarzenegger said about the importance of keeping records, but I didn't expect it to happen in this situation.

- It's extremely important to have a compiler set up so that you can quickly compile your code and see what happens. You should NOT try to figure out how to create the program without ever running your code. This held me up for literally 10 months with the USACO puzzles: I was having trouble learning all the C / C++ code necessary to do certain things so that I could create an entire program and hand it to the USACO website to compile, when I should have just been typing shit up, handing it to my own compiler, and seeing what happened. I should have been starting with the most simple part of the puzzle and incrementally getting more complicated, just like that Stanford professor recommended in his Python class at Google.

- I should try to make "blinders": glasses w/ holes cut in the center so you can focus on what you're working on and not get distracted by stuff going on in your peripheral vision.

- just as with the LSAT, it seems the #1 concern a person should have is remaining motivated:

Quote:
[my friend] (9:04:17 PM): I don't try to use it to get rich because it's very boring
[my friend] (9:04:26 PM): and I'd rather be trying to self-improve than to make money
[my friend] (9:04:47 PM): any type of problem solving and learning
[my friend] (9:04:53 PM): I think is more constructive
[my friend] (9:04:59 PM): then repeatedly solving things out of my toolbox
[my friend] (9:05:06 PM): acquiring the toolbox was useful but
[my friend] (9:05:12 PM): coding @ industry standards is not
[my friend] (9:05:29 PM): unless you're very very lucky and they have you fix what no one else can figure out or something
[my friend] (9:05:33 PM): or let you do whatever you want
[...]
[my friend] (9:05:53 PM): I got very bored doing coding projects at MIT because it was very
[my friend] (9:05:57 PM): "do this design document"
[my friend] (9:06:49 PM): it's also more motivating hacking together your own project



rec'd books by an MIT grad who got his CS PhD from Stanford:
http://pgbovine.net/reading.htm

Stuff I Learn While Going Through the USACO Puzzles:

- if you're having trouble with a certain task, see if you can break it into smaller pieces. This is one of the most useful things I've gotten practice with from these puzzles. It's kind of cliche advice, but if you're staring at something for half an hour and can't figure out how to get it working, you NEED to have the thought/motivation to try hard to break it up.

- if you're having trouble with a certain task, see if you can describe / write out how you would do it in the real world, without a computer. This helped when I was trying to write a function that would convert from base 10 to another base. If you get too bogged down in how to execute things in the programming language it can make it harder to brainstorm.

- Be OK with having your first version be ugly / sloppy. You can always go back over and smooth things over later. Trying to make everything perfect the first time around often makes it take LONGER to get to a great version.

- Don't get too sucked into a particular way of doing things if it's hard to execute. Be willing to look for easier methods. On one puzzle I had the idea that I could use a fancy way of doing things, but it was so hard to figure out how to execute my idea that I burnt out and stopped working on the problems for a month or two.

- libraries are exactly like toolboxes. Each toolbox contains a bunch of tools that you can use, and when you're tackling a particular task you need to think about which toolboxes you'll need to have with you to get that job done.



Projects I've Worked On

I've moved these to another page because I expect them to end up taking up a lot of space:
Examples of My Code

 


Career Advice

My Advice

- Having a portfolio / references / list of books you've read is really important (especially the portfolio). I sent out my resume to 171 jobs on HN one month and only got a handful of responses. I sent it out again the next month with minor changes, but this time with a portfolio / reference / list-of-books-I've-read, and this time got a much bigger response (maybe 5x or more responses). I made a point of having a picture for each of the projects in my portfolio.
- Automating the process of applying to jobs is really important, otherwise you're going to get discouraged.
- Your first goal should be to make your application good enough so that people start inviting you to interview. Then once you start getting offers to interview your goal should be to get good enough at interview questions that you can pass the interview. There are books that give you interview questions so you can practice them. Sites like Project Euler and HackerRank are also the same as the challenges you'll be given when asked to interview. The difference is that when you're being interviewed you'll need to be able to solve it in a certain amount of time.

My advice to people who want to learn to program

2012.05.15 - Justin Khan (founder of Justin.tv) - The First Time I Used Programming At Work
http://justinkan.com/the-first-time-i-u ... ng-at-work


Conversation with the head of the DC RoR Group:
- I've added emphasis to parts of the guy's email
- This guy was really nice to take the time to write out all of this advice.

Quote:
Hi David,

I was just accepted to DevBootcamp (in SF / Chicago) and was wondering if it's a good idea. It costs ~$15,000 and is 9-weeks long. I don't want to live in SF or Chicago; I'd like to stay in DC.

Do you think the market for RoR developers in DC is healthy enough that I'd be able to find work after finishing this program?

-----------

Hi Nathan,

Could you tell me a little about yourself and your background. I think the answer will largely depend on those factors. Are you currently a developer looking to get a jump start on a new language/platform (Ruby/Rails) or are you new to development and looking to switch careers? 

Without knowing that I would say that there is an insanely strong demand for Rails developers anywhere you go, including DC. It's supply and demand and in this case there are far more openings than there are qualified applicants. The key word is qualified. While intermediate and advanced developers can write their own ticket to varying degrees, the beginner might still have a difficult time finding that first job. That being said I've recently seen a dozen or so employers in this area who are hiring at that level. That landscape may change but it tends to wax and wane so you just wait it out. $15k is a lot of money but it's also the time invested, not only for the program itself, but the time it will take to find the right job after you complete the program. If you're patient afterwards then I think it's worthwhile. 

I've heard great things about DevBootcamp and I've met a number of graduates who have all impressed me. It's a tough decision to make, but if you're fully committed to a career change I don't think you'll have any regrets. 

If you do decide to attend, my recommendation to you would be:

1. Start creating immediately. Put it on Github. Employers will look at your Github account to validate you as a developer.

2. Get involved in open source. Pick a project you're interested in and just dive in. Don't be shy to ask for help. You'll not only learn a lot faster and from really smart people involved with the project, but you'll gain an immense amount of credibility. Don't be scared or intimated to do this. You can ease in and people will help.

3. You need real world experience to get hired. While the classes themselves are a head start, employers will want to know that you've worked on something real and not just experiments and assignments. If you can't find a job after graduating, do work for free part time. Volunteer yourself to a company or project that's public facing. Investing that time will pay dividends later. 

I know that's a lengthy response, but it's a big decision and I wanted to give it the attention int deserves. Good luck and let me know what you decide. 

Best,
Dave

 

  • No labels