Live data from Hacker News

Advice to Aimless, Excited Programmers

prog21.dadgum.com

51–58 of 58 posts

Re: Advice to Aimless, Excited Programmers

#51
While I think it's completely correct that the best software is produced when a programmer recognizes one of his own needs which isn't being met and decides there's a better way to do it. It's bad to take such a disdainful stance toward programmers in that stage between producing simple self contained projects and software that can be integrated into an OS or other applications. Charting your own course is tough and frustrating. The best advice for aimless but excited programmers in terms of what will help them and the community the most is to join another project. Opensource is an obvious choice since it has a low barrier to entry but an internship at a company could work well too.

Re: Advice to Aimless, Excited Programmers

#52
post #31

Earlier quoted context omitted.

One of the coolest programs I ever made was a tic-tac-toe with an AI that learned the optimal strategy by playing itself over and over. I wrote that in the process of learning Lisp, which made writing the program easy, and I got to exercise a lot of the language features. What was so cool about it was watching it learn, and realizing that unless I programmed it to make random mistakes, it would settle for sub-optimal…

An aside, but in case you weren't aware of it, I believe the AI strategy you describe is known as "simulated annealing".

>I believe the AI strategy you describe is known as "simulated annealing".

Not necessarily. You could get much the same effect (the program learning by playing itself over and over) with many Reinforcement Learning algorithms (like TD learning, say).

There are major differences between Value Function (loosely, perceived_state -> perceived_long_term_reward map) based RL algorithms and algorithms that work only in the policy (loosely, the perceived-state -> chosen_action map) space like Simulated Annealing (or Genetic Algorithms). Barto and Sutton (somewhat loosely) use the term "evolutionary algorithms" to distinguish Value Function based algorithms from those that only manipulate policy

Re: Advice to Aimless, Excited Programmers

#54

I think I suffer from this problem, I like to compare it to writers block or something like that, my problem is that I want to develop something but I don't know what and get frustrated at having a lack of ideas. This frustration then gets interspersed with furious bouts of development on personal projects that can last 4-6 weeks, and then I go back to another 3 months of doing nothing and hitting my head against a b…

This might seem counter-intuitive, but get a new hobby.

By which I mean, if your life as you're living it isn't providing itches that you need to scratch with software, a new hobby might provide some. Or, you might spot an unserved opportunity or market.

Re: Advice to Aimless, Excited Programmers

#55
post #5

My advice would have been to reinvent the wheel. Yeah it might not add to anything useful but there is an off chance it could. The reason why reinventing the wheel is good is that you have direction as to what you should implement. Trying to do something new all the time isn't possible. I used to build tic tac toe games It was never complete or useful but it helped me learn the tech I was using. Now days creating a b…

Agreed!

"The good thing about reinventing the wheel is that you can get a round one."

Douglas Crockford -- creator of JSON

Re: Advice to Aimless, Excited Programmers

#56
post #27

Earlier quoted context omitted.

I have never done any graphics at all. All I know is bash and some awk and perl, mostly for text processing. I keep planning to learn more, which is why I read about it a bit, and browse HN, but I have too many other things I want to do too.

Who says you need graphics? o | o | o ---------- x | x | x ---------- o | o | o That (if HN doesn't mangle it) should be a fully working Tic-Tac-Toe board. You can store it as a string, hashtable, whatever you want. You could label the squares 1-9 for the prompt asking the user where to move. This is all doable with perl and a command line. Try it out, see what you learn.

Yes, GNU Go, the premier open source Go program is implemented exactly like this. Any graphical front ends in use are all written by third parties.

Re: Advice to Aimless, Excited Programmers

#57

It's funny because some of us have the opposite problem. Too many ideas, but not that much interest in learning new languages for their own sake. So when it comes down to implementing a new idea, we want it done quickly. We don't want to take the time to try to figure out how to make it in Haskell, and just revert back to Python.

I recently ran into this. Thought of implementing a new project in clojure and quickly defaulted to the language i am used to. One way to mitigate this is to re implement a small project that you have already implemented in your older language. At least you can focus on the language instead of the project nuances.

Another way is to pick a top-notch library or framework in your target language, and learn to use that. For Clojure, I'd try making some clever charts with Incanter:

http://incanter.org/

(Incidentally, the only new language I've been able to stick with after learning Python is R, because it solves completely different problems. Which means R is now my Blub for stuff that I'd like to, given some free time, try with Clojure/Incanter...)

Post reply on HN