Articles
This is a collection of short/not-short articles that talk about some of the stuff I'm doing. Most of them are meant to be pretty simple, so that anyone who is interested (but not experienced) in a subject can learn more. Most (if not all) of these articles are stuff that I am doing in my spare time or fun stuff from class, I'll save you the experience of hearing about my job and more boring classes.
Building a Search Engine
In this article I'll talk about the basics of building a text based search engine. I built a search engine for one of my classes and it turned out to be pretty interesting. It's one of those cases where you sit at look at a ton of math and theory on the whiteboard and say to yourself, "that should work", and then when you begin writing code you say to yourself, "this will never work!". By the end of the assignment however, it did work. Writing my first search engine was not only interesting from an implementation point of view, but it puts the work that companies like Google and Yahoo do in perspective.
Inheritance of Static Methods in Java
In my day to day programming, I came to a point where I wanted to create a Java method that was both abstract and static, but I could not do it. This frustrated me, so I wrote up a bit about why Java should change to allow for this. Other places on the internet say that this is not possible and/or doesn't make sense, but in this article I explain why it makes sense and how it could be done.
Chess Programming
In this article, I talk about the basics of chess programming and some of the work I did (and am still doing) on my chess AI. I would recommend this piece to anyone who either wants to start writing a chess program or is just interested in how that would be done.
Sudoku Solving
I wrote a sudoku solver a while ago (Spring 2008) and I thought it was really cool then. I left it alone for a while, but recently I have both wanted to really learn Ruby (I picked up a good bit of Ruby a while ago while learning Ruby on Rails, but I never became a Ruby guru) as well as apply some cool informed search techniques I learned in an Artificial Intelligence class. So, I have decided to combine the two.
In chess, I hammered the algorithms until I couldn't improve my play any more, so it has become a low level optimization project (bitboards). In this article, I go completely the other direction by taking a modern high level language and work mostly on the algorithms. Sudoku is simple enough that if you have good algorithms you are going to be able to solve the puzzle in very little time, and you don't need to grit your teeth in the bit hacking to get "acceptable" performance.