GRAY MATTER now uses an opening book. This improvement accounts for the greatest increase in strength since we moved from naive MiniMax to AlphaBeta.
Sunday, August 19, 2007
Saturday, August 4, 2007
With a Little Help from My Friends
It must be chess programming season again. We’ve been progressing by leaps and bounds.
Doug schooled me, yet again, in object oriented programming. He split the search class into a base class and an MTD(f) sub-class. This makes for a much cleaner design (by separating the search framework from the actual search engine) and also gives us a nice way to add more implementations of different search engines (and even switch between them at runtime!). Following Doug’s lead, I split the board class into a base class (which includes board representation and move generation) and a heuristic sub-class (which includes current state evaluation).
A couple of days later, Dillon schooled me, yet again, in chess strategy. He explained the concept of tempo. That, combined with Sam’s dirty trick of hard-coding values into arrays, allowed me to quickly implement tempo evaluation as a method of the heuristic sub-class. And GRAY MATTER no longer does the Happy King Shuffle Dance™.
In other news, we’ve just committed our 1000th revision. Thanks for everything, guys. A celebration is in order. You’ve earned it.
Wednesday, August 1, 2007
Stiff Asks, Raj Answers
While reading Wikipedia’s Vim vs. EMACS flamewar page, I came across a link to a questionnaire for great programmers. I shot the link over to my buddy Doug. He told me that he’s interested in my answers, and I’m interested in his. Here you go, Doug. :-)
How did you learn programming? Were any schools of any use? Or maybe you didn’t even bother with ending any schools :) ?
“I have never let my schooling interfere with my education.” — Mark Twain
What do you think is the most important skill every programmer should posses?
A good sense of humor. Because if you can’t laugh at yourself, programming will make you cry.
Do you think mathematics and/or physics are an important skill for a programmer? Why?
What do you think will be the next big thing in computer programming? X-oriented programming, y language, quantum computers, what?
If you had three months to learn one relativly new technology, which one would You choose?
What do you think makes some programmers 10 or 100 times more productive than others?
I don’t know, and maybe that’s why some programmers are 10 or 100 times more productive than me. But I hope it has something to do with Red Bull energy drink. *taking another swig*
What are your favourite tools (operating system, programming/scripting language, text editor, version control system, shell, database engine, other tools you can’t live without) and why do you like them more than others?
Operating System | OS X because it’s pretty. |
Programming Language | C/C++ (GCC) because I know it. Oh, and interpreted and scripting languages are for weenies. |
Text Editor | Vim because it saves me from RSI. |
Revision Control System | Subversion. |
Shell | BASH. |
Database | I hate all databases equally. |
Laptop | Apple MacBook because it’s pretty. |
Guitar | Gibson SG because it rocks my face off. |
Piano | Kawai baby grand because it’s beautiful. |
Writing Implement | Leadholder. |
What is your favourite book related to computer programming?
“The best book on programming for the layman is Alice in Wonderland; but that’s because it’s the best book on anything for the layman.” — Alan Jay Perlis
My current library of programming books consists only of The C Programming Language and Operating Systems: Design and Implementation. I’d like a copy of Artificial Intelligence: A Modern Approach and The Art of Computer Programming, but these days, just about everything that I need to know is available online.
What is Your favourite book NOT related to computer programming?
The Bhagavad Gita. This book calms me when I’m too angry and rouses me when I’m too apathetic. I also love The Cartoon History of the Universe and The Complete Calvin and Hobbes.
What are your favourite music bands/performers/compositors?
Bach, Mozart, Beethoven, Radiohead, John Williams (the classical guitarist, not the composer), Asian Dub Foundation, Blur, The Clash, Dr. Dre, Fountains of Wayne, The F***ing Champs, Judy and Mary, Led Zeppelin, Neutral Milk Hotel, The Slackers, Stereolab, Weird Al, and too many others to name.