Sunday, April 30, 2006

La la la la

It wasn't so bad. Really. Adam and I were going to meet at the bowling alley for 11:30. When I got there the lot was packed. It turns out that the city tournament was going on. In this case it was a full house, so no lanes were available. I didn't have to ask, I could see. That and I heard some people asking at the desk as I walked in. I was a little disappointed, but that's the way it goes. Not much I can do about it. While I was there I noticed Cliff bowling. I had planned on meeting Cliff at around 5 to go to Chicopee and look at bowling balls. I watched him bowl for a few, then told him that I wasn't going to make it later. He said that worked better for him too, so we'll do it next weekend. So, no bowling but I freed up my day a little.

What next? Well, I had a few committments to take care of. First I went to show my mother how to pump gas. She's always went somewhere where they pump it for you, and that place just closed. After that my sister needed help trimming a tree. I know, it's hard to believe that I could be so handy. Truth be told, I was being used for my truck. That and its ability to bring a ladder from my mothers house. Not that I mind. It gave me a chance to stand in the sun and crinkle my head. What more could you ask for? Really I wasn't that helpful. I was mostly just holding the ladder and handing up the things that you trim the tree with. See that, I don't even know what you call them. I'm that lame.

Since it was only about 1:45 when we finished, I was still ahead of my schedule. Not that I had a fixed schedule, but certainly I wanted to get some things accomplished with my project. I decided that I'd stop by Forbes Library on my way home. I haven't been to the chessclub there, only going to Burger King later in the evening, so I thought it would be fun to check it out. When I got there and finally found the space that they play, I only saw Enrique and his daughter. It turns out nobody had shown up. It made me wonder, what are the odds? Of course I knew better, the odds were good. Enrique said he had been there for around an hour and Tom hadn't showed up. Tom manages the club, and has a box full of sets that he brings so a lot of people don't think to bring their own. Unfortunately today, as I learned later, Tom overslept. Overslept by a lot. Enrique's daughter wanted fries, so after we talked for a few minutes they were off. I sat around for a few more before finally leaving. Some things weren't meant to be.

On my way home I called Larry to ask him if he had any books on chess and computers. I need as much as I can find for my research paper due this coming Thursday. He wasn't home so I left a message. When I got home I decided that I'd try to implement the movelist functionality I wanted to add to it. It would allow me to do 3 things. One is from the console while I'm testing I'd be able to print out the entire movelist of the game, two is the ability to takeback moves, and three is the ability to save the game. Of course, I'd need to implement save functionality as well for that one, but at least it would be an option. This should have been easy to do. Really easy. But I was tired. What do you expect after a hard days work? By about 4:30 I'm pretty sure I fell asleep. I woke up, worked on it a little more, and went to the chess club at Burger King.

Burger King had many of the usual suspects, and some a bit unusual as well. Tom Smith, Larry Williams, Casey Dolan, Dave Hall, Paul Sarrazin, Enrique McDonald, Paul Spatarrella, Paul Budney, Richard Gold, and I are the ones that immediately come to mind. When I was walking in Paul Spatarrella was just arriving as well, so we decided to play a G/30. Paul is rated around 1200, but certainly improving quickly. At 1887 or so, I'm expected to win at least 9 out of 10. Actually, 9 out of 10 is the expected ratio if there were a 400 point difference between us. There's a 600+ point difference. Do you see where I'm going with this? Paul played a very nice game and won my Queen early on. I almost had some tactics at the end that pulled out a forced draw, but Paul found the only continuation that made me resign immediately. I missed that too. After that we played another game which I won. We didn't try another 8 to prove or disprove the theory. It just didn't seem necessary. I can only take so much in one day :). Larry had also brought me a bunch of books, so hopefully that gives me some material I can use for my paper.

So at around 9 I left the club and headed to Walmart. I picked up Aeon Flux since I noticed it was out and I really wanted to see it. Then I got home and worked on finishing up my movelist. But before I actually got to that Sean called me. His laptop wasn't booting, he was getting an error when he turned it on. A corrupt file (System registry hive). I'm not sure how long it took us, but we got it working.

After that I went to bed. That being the finishing up of the movelist.

And now we have another day. May it be better than the last!

Ed.

Friday, April 28, 2006

It's time to face the truth

I've been running Internet Explorer 7 Beta 2 for a few days now on the laptop. I've got to say, it's pretty nice. The interface takes a little getting used to, but it's not so bad. I can't say it is actually "better" than any of the others. I don't like how the "favorites" work as much as in IE6, and I don't like the tabs as much as in Firefox, but I really like that IE finally has tabs. So at least it's something. It's been enough to keep me from switching back and forth lately. We'll see how it goes.

Now that my presentation is done, maybe I needed a little break. I've got to say, motivation wasn't that easy to find tonight. Still, I managed to fix the two major bugs in the engine that were causing illegal moves. I say major, but they were small things in reality. One of the bugs was that White's ability to castle queenside would be mistakenly set to false because I actually had Black's inability setting White's by mistake. The other was that the engine would try to make illegal enpassant captures. This happened because when it received a move from the gui, it was only checking that the pawn move was to the 4th rank, not where it's source was. So many pawn moves that dont get the distinction of being able to capture enpassant were able to. Not anymore! I might try to find another engine and have it play a long match against mine tonight or tomorrow when I'm away just to see if any more illegal moves come up in the countless games they'd be able to play. That would definitely be preferable to me sitting here playing game after game against it.

I've got a busy weekend ahead, and a lot to do. I may go play in the club tournament being held on Sunday (I think it's in Athol, and a bunch of clubs will be there competing against each other). We won last time I went, but I really haven't played much the last 2-3 weeks as I've been focusing on my project... so I'm sure that I'm a bit rusty. I'll have to evaluate tomorrow after seeing how much I can manage during the day. I don't think a lot, because as I mentioned, I won't have a lot of time. I have a chess game at 8am, I'm bowling with Adam at 11:30, I have to help my sister with a tree in the afternoon, possibly be at the bowling alley in Chicopee at around 5, then the chess club at 7 or 8. And somehow I need to write a paper and finish the engine? I lot of tomorrow I really can't cut out, but I may need to skip the Sunday event. It would probably be a foolish thing to do at this point. We'll see.

Enjoy your weekend.

Ed.

To be, or not to be?

That is the question.

The answer?

I rock.

Or so I'm told.

I am so happy to have the final presentation done. Now I need to maintain my focus for one more week to get my project and paper all finished up and turned in next Thursday night. My presentation went very well. On my way out I ran into 5 of the 10 people in class - I know, weird - and they all told me that it was awsome. It was by far the best. Wow! Very nice. Of course, with my luck, that means that it'll bite something big and not so tasty. But so it goes.

It was a little embarrassing though. For some reason, as I was giving the demo, it decided to play the game of its life. Finally, late into the game it made an illegal move with an en-passant capture when the position was still pretty exciting for both sides. Though I think I was slightly better. By that point though, noone cared. They were really into it. I haven't had time to look at it, but I think I know what's causing the issue. So it should be quick to fix. It's not a bug in the "engine" itself, but rather in the engines processing of the moves from the gui. When the engine moves, I have it signify if there is an en-passant capture available after the move by. The gui doesn't so I have to calculate if an en-passant is available based on the move the gui sends. So I think I just messed that up a little bit.

I can't afford the habit yet, but last night... I slept! Finally! It was great. I like sleep. The past two weeks I've had to cancel my guitar lessons on Wednesday nights because I was totally focused on my project. Bruce called me yesterday morning at 7am to tell me that he and Janice were thinking of me and wanted to with me luck. That was really nice. What they heck, they rock too! Jon called me Wednesday night, but it wasn't to wish me luck. He wanted to tell me that the new computer he bought is slower than the old one and wants me to look at it. The new computer is, if I remember correctly, a 1.8ghz dual-core processor with 512Meg of memory and runs Windows XP Media Center Edition. It has the nice, sexy, hot 19" flat panel display that was practically free with the awsome deals dell was giving a few weeks back. The old computer? A 10 year old Celeron 300 that was also running Windows XP and couldn't have had more than 500Meg of memory, probably less. Perhaps I'm a cynic, I'll give myself that. But HOW could the new computer be slower than THAT?

There's a new song that's been playing on the radio. I finally heard the name/artist last night. It's called "You and Me" and it's by "Lifehouse". It's not country, but I really like it. It goes a little like this:

What day is it
and in what month
this clock never seemed so alive
I can't keep on
and I can't back down
I've been losing
so much time

Cause it's you and me
and all other people
with nothing to do
nothing to lose
and it's you and me
and all other people
and I don't know why
I can't keep my eyes off of you

All of the things
that I wan't to say
just aren't coming out right
I'm tripping on words
you've got my head spinning
I don't know where to go from here

... and it goes on ...

And now, time for another day at work.

Until next time, Ed.

Thursday, April 27, 2006

Grown men don't cry

They say it's always darkest right before the dawn. My goal for today was originally simple - create my presentation. Unfortunately I got caught up in the fact that my engine COULDN'T FIGURE OUT how to deal with a SIMPLE mate. It was terrible. I was crying my eyes out. How can you have a chess program that doesn't know how to mate? Even when it knew there was a mate, it still wouldn't play it. It was very frustrating. I spent ALL DAY on it. At about 5:30 I actually screamed. Seriously. I yelled, grabbed my head and shook it, and walked around for a minute to let the frustration out. It was a terrible moment.

Then I decided to forget about it. My next week will totally suck trying to fix it and get it working while also having to write the research paper, but it is what it is. Of course, I also still have to figure out hash tables and the opening book. So a LOT to do in the next week. But I decided I had to stop working on it and focus on the presentation, knowing I'd have to minimize and tightly control the demo portion of it. So, I got my presentation reasonable by shortly after 8pm and focused on some of the other things with the engine. Simple things like adding bonus tables for certain pieces on certain squares so that some pawns will know they belong home while others should be closer to the center. Knights belong on squares where they have the most mobility, and bishops like the long diagonals. So I made some simple enhancements, and decided to take another crack at the checkmate problem. It's been killing me for days.

As I was trying to get a fresh perspective I found a site that talked a little bit about the implementation and showed some pseudo-code. I decided that even though I wasn't completely pleased with where my presentation was at it was good enough, and it would be much better if I could actually handle the checkmate problem. So I started reworking my code using the newfound knowledge.

So, I'm now very happy with my presentation and my engine can mate your . I can't believe that so much of it came through at the last minute. If you were out there praying for me, thank you. I think I needed it! I even added some performance comparisons against having it run on my mac. It's actually quite interesting. And it appears that Microsoft Visual C# 2005 does a much better job of optimizing the exe than mono on the mac does. On the mac when I run the VC# exe it runs about 50% faster than the mono exe. It's still cool that it runs on both platforms without issue. I know, it's actually running through the .NET/Mono framework and not really running as a native exe so it should be able to do that. It's just cool to see it.

There is still a lot to do, and a few bugs I know about, but it's a major step for me. The next major thing will be the hash tables/opening book. A week to go, then I can continue on it at a more reasonable pace.

Earlier in the evening, maybe around 7 my brother started calling and banging on my door. I wasn't pleased about the interuption because my project was, as you know, killing me. What a surprise! There was a bear across the street. I took a few pictures. It was really a site to see. I'd never really seen one so close before. It was a baby... but I wouldn't want to wrangle with it.

Alright, time for bed.

Wish me luck tomorrow night!

Ed.

Wednesday, April 26, 2006

Long after the thrill...

I'd like to say that it was a good night. The problems just don't stop popping up. They just don't! Sticking with my plan of solid basics, I've been trying to get it to mate. It's a critical piece of the game, and without it you really can't win. If it's a forced mate in one... no problem. But give it a chance, and it will take it's time. That means that it will never mate. It saw a forced mate in 4 or 5 moves and decided to just keep hopping back and forth between 2 squares instead of playing the mating line. That's because every time it moves, it sees it can mate in X and isn't always picking the best line. Isn't always means pretty much never. That's unacceptable.

Where I'm at now is that if I can get the mate to work, that's enough to demo. It will have the wow - that looks nice affect. Or is that effect? Hmm... confusing at the moment. But being able to show the program calculate a mate in 7, 8, 9... or something like that would be pretty neat to see I think. Then I can just deal with the opening book/transposition tables, some positional knowledge, and a few other extras along with my paper before next Thursday.

The big thing for tomorrow is the presentation. Here are the potential slides I've come up with so far to design:

Module Flow (show the modules used in the program and how they interact)
Command Reference (what commands are supported by the engine)
Minimax Diagram and Example
AlphaBeta Diagram and Example
Project Goals and what's been reached
Chess Rules and Rules supported by the engine
Notable References used in creating the program
Bitboards (maybe... already went over in 1st presentation)
Transposition Tables and what they are used for
Quiescent Search (maybe... since I still haven't worked more on it)
The current field of chess programs/research
Performance statistics

That and the demo should more than take care of the 15-30 minutes we are each given for our presentation. In fact, I'll have to rush very quickly to make it... so in the end I can probably leave a little out. But thinking it through ahead of time will make it easier tomorrow to actually put it all together.

So is 2am, so I'm going to get to bed.

Wish me luck tomorrow. Much to do!

Ed.

Tuesday, April 25, 2006

Moving on

I fixed it! Yes, I couldn't stop thinking about it. It had to be done. It's ok, I got a few hours of sleep. I'll be regretting it after work I'm sure. The problem actually made no sense. I had a loop to grab the best move that looks for the first move in a stack (I keep the currentline/bestline in a stack so I can push/pop to put moves on it and take them off since it follows nicely the iterative nature of moving through the chess tree).

for (int idx = 0; idx < bestLine.Count - 1; idx++) {
bestLine.Pop();
}
//this should leaves us with the 1st move from the line, which is what we want to play
bestMove = bestLine.Peek();

This worked fine until I hit 7+ ply, then it didn't. Oddly enough, all I could see when I added some debugging was that once it hit 7 ply, there were more than one move left on the stack... it was very weird. I changed it to this:

ival = bestLine.Count - 1;
for (int idx = 0; idx < ival; idx++) {
bestLine.Pop();
}
bestMove = bestLine.Peek();

And it worked fine. All the way to ply 20, when I finally said this is good.

I don't get it, but at least it's working.

Now it's time to get ready for work!

Ed.

[NOTE: It just hit me why it didn't work! Having (bestLine.Count-1) in the "for" expression eval is bad because bestLine.Count is also being decremented each loop because of the Pop() within the for loop. So it really needs to be assigned outside the loop and that variable used... like how I ended up fixing it. I'm glad to have an answer, it was bugging me. Now, back to my day!]

Peace and Tranquility

Who am I kidding? Still a LOT to do. It's late, very late, but what can I say. I was so tired when I got home today. As I was thinking about how to handle the 50 move rule and where to increment/decrement the halfmove clock variable - as well as if to include a reference to the state of that clock in the move object - I layed down on my bed for a minute. When I woke up at 8pm I knew it was past time to be working!

dark and deep...

I didn't actually complete any "new" features tonight, which was not my goal. Instead I fixed some things. Which I'm definitely happy about. When it's time to do the demonstration Thursday night I really want the basic stuff working well. So it was good to do. I cleaned up the handling of making moves which fixed some bugs in both the en-passant and pawn promotion moves that I was seeing through the external GUI. I've got one bug left before I really focus on some of the other stuff. It's only happening now in my test position once we get 7 ply deep, so I could probably gloss over it. But still, it's pretty serious! What happens is if the computer sees a checkmate and knows that with best play it can't be prevented, it dies. I fixed this by returning the root move of the line that was last considered best. The only problem is, at 7+ ply, this root move appears to be the opponents move. Somehow it gets flipped around. It should be easy to figure out now that I've just written that down. But it's a little late and I need sleep.

promises to keep...

I also realize that there is no way I'll have it finished in time. It can't happen. I have too much left on my list. So now I'm focusing on the basics and ensuring that I'll have a playable demo that doesn't crash or anything. Then during the last week while I'm writing my research paper I'll have to try to fit in the rest as well.

and miles to go before I sleep.

Have a good night.

Ed.

Monday, April 24, 2006

Over and over again.

I was hoping to get more accomplished today, but even so it's a good feeling. The accomplishments, not the fact that I have no idea how I'm going to finish by Thursday! Today I managed to get it to understand Castling, Checkmate, En Passant, and Pawn Promotion, as well as fixing a bunch of little bugs that popped up as I continued to test everything after every change. It would have been much quicker if I hadn't gone ahead with bitboards. They may speed things up when using 64-bit processors, but they are a lot extra to keep up-to-date. Those were probably my biggest challenge.

I would probably have gotten more done today, but I spent about an hour this morning helping my brother (he had a corrupt disk and needed a file off it). Luckily I was able to get it. Then this afternoon I spent about 2 hours helping Jon set up his new computer. I felt bad since he had it sitting around for a week with me focusing on my project (I told him I'd help him set it up a few weeks back when he bought it), so I finally did it.

I'm a bit surprised that it really hasn't slowed down much as I've added more code. Right now it's calculating between 615,000 moves per second at ply 5 to as much as 818,000 moves per second at ply 8. Of course, at ply 8 from the starting position it thinks for 11 minutes and calculates 550 million moves. I'd still love to work on move ordering before my presentation if possible. That should improve my alpha-beta cutoffs even more and I might be able to get to 8+ ply where the time it takes is playable.

I've still got a few tough ones left, so I know I'll continue to be busy until the end. My last two challenges lie with generating an opening book and using transposition tables (hash tables) for as much as possible (opening book lookup, 3 fold repetition of position, and time permitting for storing previous results during searches to speed future searches due to "transpositions".

But more on that another time. For now, it's again past time to get to bed. Soon I'll be talking about how it's playing. It's really exciting as I add more to it to see it play a little and make "reasonable" choices. I'm curious how close it is to the level of a non-player. Someone who may know the moves and play infrequently, but doesn't really "know" the game. I'll let you know - I plan to find out soon!

I hope you had a great weekend!

Ed.

PS: As I write this, I just had it make an illegal move though the Arena interface. It's because I made an en-passant capture and it sent my move back to the engine without an "ep" at the end to denote it, so the engine thinks its pawn is still on the d5 square when it was actually captured. So I need to clean that up a little.

Oh well, forward... every forward.

Sunday, April 23, 2006

It's Alive!

Wow! What a day. It started with me spending a little time on my project before going bowling with Dave for 11:30. I'm not posting the scores this week... they were terrible. My high game was a 165, Dave's high was a 150. The lanes were dry and I had trouble reading them... never really got going.

When I got home I worked on my project again. But as the afternoon wore on I was just dead. I had to sleep. Since I had the dog I didn't want to lay down on my bed - if I do he jumps in and gets hair all over it. So I went down to the couch and slept for about an hour and a half. I needed it.

After that I took the dog out for a bit, then went back to my project. I worked on it until I went to the chess club at around 7. Then, when I got back home, back to my project. Until now. 2:17am. I have a headache. I want to sleep.

So how did it go today? Well, I didn't get as much accomplished as I had hoped, so I'm really getting nervous about Thursday's presentation. The good news is I just finished fixing up the check/checkmate routines and I'm impressed. I played a quick game against it with some stupid moves in the beginning because I wanted to test it, and it played pretty well. Granted on move 3 I tried a queen sac on f7 to see if it would retake with the king, and it did. So I thought, ok, I'm down a Queen for a Pawn, let's play! It was harder than I expected. Since the engine doesn't know about castling yet, I was struggling with some moves because I knew that I couldn't play what I really wanted to. I was also evaluating the position at one point based upon my being able to re-capture en-passant... which the engine doesn't understand yet either.

So how did the game end? I forgot that it didn't know about en-passant, re-captured it's pawn that way, and the engine cried.

My goals for tomorrow have expanded. I need to catch up. I'm out of time. So let's hope I don't run into any issues. If everything goes smoothly, there's still hope.

I hope you're having a good weekend.

Ed.

Friday, April 21, 2006

Despair

I reached my moment of despair tonight. Alpha-Beta pruning. Wow! It looked so much easier than it was turning out to be. I was contemplating the droppage of tears when I decided I would take a more simplified, cleaner approach to my visualization of the information. That's when I learned that my research missed an important point: The evaluation must change based upon who is to move. If it's an even ply everything was working great, the odd ply's were killing me. Until I added a condition where I negate the positional eval of the odd ply.

So this:

pval = scorePosition();

becomes:

if ((MAXPLY & 1) == 1) {
pval = -scorePosition();
} else {
pval = scorePosition();
}

And Alpha-Beta is very, very happy. As was I! I was hurting. Bad. All of the pseudo-code that I found on the Internet that talked about Alpha-Beta simply said to call your "eval" function... it never talked about having to negate. So there it is.

At 9pm tonight I had my chess game. I was pretty happy that my opponent blundered early and soon resigned, because I really wanted to get back to work. I hope that doesn't sound too mean, but my project is my life for a little bit longer.

I started my list of what I want to accomplish this weekend. Wow again! I hadn't really thought about how much more there really was. Alpha-Beta seemed like such a big thing! Here we go:

Castling
Check
Checkmate
En-Passant
50-move rule
3-fold repetition of position
Stalemate
Pawn Promotion
Time
Mating Material
UCI Protocol (finish implementation)
Quiescent Search (want to evaluate quiet positions)
Opening Book
Attack Squares Bitboards
Move Ordering (to increase alpha-beta cutoffs)

Let's hope they go quickly... because I know at least a few of them will be tough! And I've got a lot more to do so I really need to get these done. If I can get these all done this weekend, then I think I'm in reasonable shape to finish up in time.

Wish me luck.

Ed.

Thursday, April 20, 2006

The Minimax and Alpha Beta

As usual, a change of plans. And I cancelled my guitar lesson last night. Way too much to do. It worked out well though. I found myself focusing on the minimax search. Minimax is one of the worst searches, but needs to be done first for the experience. It's better than the simple go to all the leaf nodes and pull back the highest score though. The reason why it's the worst is because it still evaluates every leaf node, so you get no performance enhancements. But the improvement it gives you over the "what's the best leaf node" is that it assumes your opponent would make the best move. For example, my previous exhaustive search would work as follows:

9
9 6 3
987 654 321

Since it would go as deep as it could and simply pull back what it evaluated as the best move at that ply, deciding that's the best line. With minimax, it assumes that your opponent will make the best move as well, leaving you having to play the worst best move. That would mean:

7
7 4 1
987 654 321

Which in that example still leads you to the same move, but if the tree were as follows:

6
6 4 1
876 594 321

That previous code would have played the "9" line, instead of the "6" line that it will now choose. So, this causes the engine to make better moves. As soon as I had this working, it was time to move on to Alpha Beta pruning. What is that? It's what kept me up until 1:15AM and is making me very cranky today!

Alpha Beta would handle that last tree as follows:
6
6 - -
876 5-- 3--

This will speed up your search and allow you to go deeper into the tree. The way it works is that it says (Hey, you're less than my minimum from another line, so assuming that my opponent was making the best moves I know that this line is inferior to the line that I've already identified as my best, so why waste time checking the rest of the moves in this variation (branch). )

So I'm working on that now. What drove me crazy is that the later it got, the better I understood it... and the more I needed to get to bed. It felt like one of those no-win situations. Next Thursday is coming up quickly...

So tonight I'm praying that I can get Alpha Beta finished and then get the quiescent search coded. The reason I held off on the quiescent search is that I did implement it, and it slowed things way down. I think it was too much for it before implementing a pruning technique such as Alpha Beta. Let's hope I'm right about that.

Alright, I need to pick my brother up at 7:30 at Northampton Ford and bring him back home, then get to work. So I better get going. A new day awaits!

I hope it's a good one!

Ed.

Wednesday, April 19, 2006

Quiescensce Search

I've changed my mind. I think the most important next step is to implement a quiescensce search algorithm. This should help prevent boneheaded moves like Qxa2 on move 3 of the center counter. What the quiescensce search does is goes to a fixed ply, but then continues on for any position where there is a capture until no more captures are available. So, it will take each line until it's "quiet". Then it can get a much "fairer" evaluation. I think this will help tremendously - though is should still play weak chess since the eval function is currently only a piece value count. But at least it should stop playing the clearly terrible blunders that even a non-chessplayer would generally avoid.

Since my eval function is a recursive algorithm, this should be easy to implement. I think all I'll need to do is add a check to see if at max ply we have any captures, and if so continue with those captures...

Ed.

Project Update

Another good night last night. Though I had a brief moment of desparation as I realized how soon next Thursday will be here! We've got a long way to go...

I think one of my next important tasks is the opening book. It's just too annoying to play against it with a line like the following: 1.e4 d5 2.exd5 Qxd5 3.Nc3 Qxa2??

After that, definitely some heuristics to increase the search depth of the tree... if you're only searching a couple of ply some terrible captures look pretty good.

Welcome to Wednesday!

Ed.

DubiousQuality

This ones from Bill at DubiousQuality (dubiousquality.blogspot.com):

Weird Friday
I was in Barnes and Nobles last week, killing a little time in the music section, when I noticed a guy at the counter. I noticed him because he was pretty enthusiastic and was talking to the clerk at a volume that was hard to ignore. He was a mid-40's guy, like me, and had shoulder-length, wavy hair and a soul patch.

Again, just like me. Or maybe not.

Anyway, he was telling the clerk that he was a singer/songwriter. The clerk asked him what kind of music, and the guy said "I play Dylanesque songs with a gothic feel."

That's one of those sentences where I feel like English is a foreign language. I mean, I know what each of those words individually mean, but the sentence itself is gibberish to me. He could have said "I wear underpants outside my jeans and own a draft horse who farms corn" and it would have made more sense.

Can you imagine what would happen if I tried this? I'd walk into a gaming store and chat up the clerk, then say "I write about gaming."

He'd say "Oh, really? What do you write about?"

"Games, mostly. And, um, my ass."
posted by Bill Harris @ 9:54 AM

Tuesday, April 18, 2006

The Project

Wow - so much accomplished today. But still so many problems. The problem that I'm running into is with my "unmakemove" function. It works until it gets more than 2 ply deep... then it starts messing up some of the bitboards. I've been going back and forth for hours before I finally figured out what was happening. But finally midnight hit and I had to go to bed. As these things go, as soon as I got to bed a thought occured to me. So back I went. It's still not fixed, but I can't be up all night. Duty, or work, calls.

I've gotten it to play a game of chess... but it's not fully functional yet (doesn't understand check, etc...) and as noted above has some serious issues at the moment. But within the next few days it should be good. It figures, now all I want to do is keep going on this thing. What happens to all that motivation when you have it scheduled?

Enjoy the week!

Ed.

Monday, April 17, 2006

My Project

Wow - the motivation finally kicked in at around 8-9pm tonight! Go figure! It felt great once I found it, I've gotta say. I was walking around with a notebook all day forcing myself to think about it and take notes. Finally it paid off. I really feel like I've accomplished a lot tonight. Now I'm going to bed, so I'm praying that in the morning it is still with me. If it is, then tomorrow will be a great day. Very exciting - and a chance that it could FINALLY be playable tomorrow. Again, assuming the motivation stays high. For now, I'm counting on it.

So, until tomorrow (errrrr today).

Ed.

Sunday, April 16, 2006

The Bowling Stats

Oops, I almost forgot! The statistics!!!



NameGamesTotalAvgHighStrikesSparesSplits
Ed481520324424113
Adam472918220420134

Bowling for Dollars

I know, in blogging as in life, I seem to always be stuck right behind the 8-ball. Still, this isn't about pool (or billiards if you prefer), this is about bowling. Well, technically, it's about me. But who are we to get caught up in such technicalities? A little later on I'm hoping to get a chess game or two that I've played recently up, but for now I couldn't let the weekend go by without talking about the week in bowling.

Friday night I went down to the bowling alley to see if Cliff was there. I took some lessons from Cliff years ago, and he helped me pick out my bowling balls that I used to use. Unfortunately, 2 of the 3 that I had were thrown out after my basement flooded a year or two ago. At the time I wasn't sure if I'd ever be bowling again so I didn't think much of it. Anyway, I found Cliff and asked him if he'd be willingn to stop by, watch me bowl, and give me some advice for buying some new bowling balls.

On Saturday I was expecting Dave to show up but I really wasn't sure if Adam would. I forgot to call him, and I did talk to Dave on Wed. before I left work. Adam showed up and Dave didn't. Since I've been bowling "better" lately, though still not quite to my old standards, I decided to see if Adam was up to a little extra challenge. We used to always bet $5/game and $5 total, so we did.

Game 1:



Ed187
Adam204


Ouch! I lost by 17 pins. I shouldn't say ouch, I bowled a good game, Adam just bowled a better one. Adam $5, Ed -$5.

Game 2:



Ed184
Adam187


This was ouch! After the 5th frame I was up 107-84. So, Now I'm down by 20 pins, which means I need to win the last game by at least 21 pins to take total and break even. Adam $10, Ed -$10.

Game 3:



Ed200
Adam166


I did it! Cliff showed up about half way through this game, so I asked Adam if he wanted to bowl one more "off the record" (no money). He said sure.

Game 4:



Ed244
Adam172


Yeah, should have kept it going. Adam enjoyed reminding me of this, constantly! After the game Cliff and I talked for a while. As it turns out, balls have changed a lot since I was last bowling. The biggest advice is to get a cheap plastic spare ball that just goes straight down the lane. I knew that one, but good to hear that the "quality/price" doesn't really matter for this. And to start with at least one of the newer balls that get a little more action than the ball that I'm throwing. Another thing that Cliff noted was that when I hit the pocket or hit the pocket tight I get the strike, when I hit the pocket light I leave the ten pin. The new balls will generate more action when it gets down the lane so I should find that I leave less ten pins. So much more, really, but I think I'm getting past the point of people caring.

So there you go.

Happy Easter!

Ed.

The day in review

Unfortunately, rather than post I think I'm going to go to bed. A lot to talk about though. Really! I have a few ideas, we'll see where that goes.

My Project

The movie of the day

What happens when I've decided that I've improved my bowling enough to start betting $5/game+total with Adam again.

My game at the chess club against Paul Sarrazin. Chess really is the game of mistakes!

So I'm sure you'll be hearing about at least some of it tomorrow.

For now, though, have a good night!

Ed.

Friday, April 14, 2006

Begin each day...

I was watching "Hitch" tonight... I should have been working on my project, so there you go. At one point he says:

Begin each day as if it were on purpose.

I thought, wow, sage advice. I could use that!

And so I will.

Have a great weekend!

Ed.

Sunday, April 09, 2006

Another day

Progress. I can smell it. I have my move generator working! Bishops - done. Queens - done. Although it's only the move generator, and there are a bunch of pieces to add on top of it, it's actually running a bit faster than I expected. So that's nice. I can't even begin to imagine how much it'll slow down. Probably a lot! But at the moment it's calculating over 1,000,000 moves per second. It's simplistic, all I'm doing is looping over a given position about 25,000 times, so again it's really nothing to go by. But interesting nevertheless. Once I add checking for check/checkmate and some simple eval and planning, that'll get knocked way down. Plus the overhead, however small, of the move/unmove functions to iterate through the move tree.

I drew my T45 chess game today. I was playing someone about 400 points lower rated than I, and they played amazingly well. In fact, when he offered me a draw at the end (and about 50 times before that), he had a difficult but winning position on the board. I had missed a few "wins" myself through the game, but that is chess.

Having said that, and done that, now I'm going to do the sleep thing.

Tomorrow, as they say, is another day.

Oh yes, and if you happen to come across Mr. Morris, be sure to tell him that he kicks ass. 7th place out of over 1200 people in a poker tournament. Nice!

Ed.

Bowling

So I went bowling today. I thought that Adam was going to go, but he couldn't make it. Amazingly, I managed to bowl 5 games! I didn't bowl great, but it wasn't terrible either. I started with a 188 and ended in the low 170's, which turned out to be my high, and my low. So no great games, but no total bombs either.

They were having a tournament, but it was only using up about half the lanes, so there were plenty of free lanes. When I finished I went to Enfield to take a look at Linda's computer before heading back home. When I did get home I was planning to work on my project, but sleep got the better of me. It was only going to be for an hour. Really! But since I didn't sleep a lot the night before it wasn't completely unexpected.

So that, as they say, is that. I'm still hoping to get some progress on the project this weekend. Wish me well!

Ed.

Saturday, April 08, 2006

I need you

Tonight I was watching the Tim McGraw special that was on Thursday night. At the end of the show he does a song with Faith Hill, I think it's called "I Need You", but they didn't actually say so I'm only guessing based on the lyrics. All I can say is that it was amazing watching them sing that song together. It went like this:

(Tim)
I wanna drink that shot of whiskey
I wanna smoke that cigarette
I wanna smell that sweet addiction
on my breath
I wanna ride across west virginia
in the back seat of a cadillac
You know some cowboys like me go out like that
So I need you
like a needle needs a vein
like my uncle joe and oklahoma needs the rain
and I need you
like a lighthouse on the coast
like the father and the son need the holy ghost
I need you

(Faith)
I wanna get lost in some corner booth
canteena mexico
want to dance to the static of an am radio
wanna wrap the moon around us
lay beside you skin on skin
making love til the sun comes up
and the sun goes down again
cause I need you
like a needle needs a vein
like uncle joe and oklahoma needs the rain
I need you
like a lighthouse needs a coast
like the father and the son need the holy ghost
I need you
oh I need you

(Tim)
I wanna drink that shot of whiskey
I wanna smoke that cigarette
you know some cowboys like me go out like that
so I need you
oh I need you

On top of that, I loved the guitar. It was simple but nice.

Ed.

Paint by numbers fantasy

I was out on my morning walk when I noticed a woman a little ways up ahead. She was still too far away for me to make out clearly, but I started thinking to myself "I wonder what would happen if, when I am passing her, she notices my chess umbrella and asks me what comes into my mind when she says the exchange variation of the ruy lopez". So I played through the variation in my head, and decide that I'd simply say "1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Bxc6". As luck would have it, when Sean and I first started playing chess we used to play the ruy lopez all the time. So I'm at least familiar with the exchange variation.

Imagine my surprise when, as I finally do pass her, she barely even says hello.

Welcome to the wonders of my life.

Ed.

The Lunch

It's old news, and usually I don't like to talk about work here, but sometimes... just sometimes... it's more important to do the right thing. We all, and by all I mean some, tend to go to lunch together when we go to the cafeteria. It's more like we walk over together, get our lunch, walk back together, and eat alone in our respective offices. So on Thursday we took this trek together to get our lunch. If I remember right, I chose the turkey pot stickers, some rice, and a spring roll. Actually it was 2 spring rolls because Gayle gave me hers.

As we were standing in the hallway outside the cafeteria waiting for the rest of us to regather from the great hunt, a woman walked by a few times clearly lost. I won't get into the details of Gayle trying to explain to her how to get to the exit because, if you've ever been lucky enough to be lost in a maze, it's pretty clear that even with the best of intentions you're probably not getting out on your own. So we let the rest of our gang find their own way back and we take this woman to the exit.

Over the past few days we've been having a JCAHO mock survey at the hospital. It's a form of certification, and seems to be very important for hospitals. So as good employees, we've all been trying very hard not to be seen while they are here. Now if you could close your eyes for a moment and imagine mixing a nice glass of water with battery acid, then drinking it, you'll have an idea of how things usually go when Gayle and I do something together. No luck and bad luck are usually not the best of combinations. So of course while we're holding our lunches walking through the hospital with a patient, we're going to run into the surveyors. Though I must say, in an amazing twist of fate, they pretty much ignored us.

As for the survey, when all was said and done, people were pleased with the results.

There are neither beginnings nor endings to the turning of the wheel of time. But it was a beginning.

Enjoy your weekend!

Ed.

Tuesday, April 04, 2006

It was...

You've heard the saying, "It was the best of times, it was the worse of times". Well, I have to say, this whole deal with pre-generating bishop attack boards for my project has really kicked my you know what. But, finally, after weeks of hallucinations I've done it! It was so much easier than I made it out to be because, as I mentioned yesterday, I was trying to do the impossible. Ok, maybe not impossible, but so much harder than it had to be. Done I say. Begone!

I've got to say though, I'm very excited. This has really gotten me down for the past week or two. So it's nice to move on. Many more challenges to go, so hopefully no more like this one. Not so much more to say because, really, besides working this is my life... for a few more weeks.

Our gas didn't get shut off today, so that was exciting too! I was getting a little nervous yesterday when I got the notice in the mail. Especially since I didn't open it until 4:59pm, they close at 5pm, and when I called them they were already gone. I took care of it first thing this morning before work.

Yesterday I missed my doctor's appointment. It turns out I had one. Go figure. Now I have to remember to reschedule that.

Is there anything else I should be forgetting? Nah, don't worry about it, it's probably already long gone.

Alright, I can't think coherently, so there's no use in my trying to write. You'll thank me for it later. I promise!

Ed.

The Bishop and the Bitboard

I've discovered the problem. Impossible. Ok, assuming nothing is impossible, impractical then. I was trying to do something that people just don't do. I have another solution now. I'll have to try that one tonight. It has to work. I have to move on. I'm going crazy. Nuts. Mad. Insane. Help!!!!!

I dream about it. It's weird. Very weird. Imagine trying to solve such a problem while you're at a bowling alley, with a big crowded pool hall right out in the open, with someone trying to shoot pool on the floor... only it's not exactly pool. They are trying to hit the cue ball off all the other tables in the pool hall and have it come back to them. Worse of all, Jim wants to bowl with you. I'm telling you, it's not normal.

You want to wake up. You figure it's your only way out. The only problem is, you won't let yourself get up until you've solved the problem. But the truth is, you're really not in the right state of mind to solve the problem. How could you be? You're in a bowling alley, with a pool hall, with someone trying to shoot pool on the floor... only it's not exactly pool. They are trying to hit the cue ball off all the other tables in the pool hall and have it come back to them. Worse of all, Jim wants to bowl with you. What state of mind would you be in?

Finally, like a miracle from above, the alarm goes off. It's across the room so you can only ignore it for so long. There is no other option. You will get out of bed.

Welcome to the story of my life.

Enjoy the ride!

Ed.

Monday, April 03, 2006

Wecome Back!

Vacation is officially over. How sad it is. I didn't get very far with my project, which was a real disappointment. That means I've really got to focus for this last month. More than just focus... I've got a lot to do! Here comes the last minute man. This past week I spent a lot of time walking, went bowling a few times, and started watching Season 3 of The West Wing. Wow! I love that show.

I don't remember how I bowled when I went last Wednesday. All I remember is one thing... bad. Saturday was a little better. I went by myself and bowled 4 quick games. I say quick because it was "Big Brother's and Big Sister's" going on down there, so it was going to be getting busy. That and, during my 4th game, they started turning on the crazy disco lights and everything. How did I do? 188, 184, 164, 184.

I won my T45 chess game this week. I also won a 3 minute blitz game last night. Not a big deal in and of itself, but after the game my opponent, who was rated about 100 points higher than me, sent out about 10 messages on how his mouse slipped and he had mouse problems. It was a 3 minute game. Who cares! So I play him one more game and crush him. No comment. Go figure!

Alright, time to see what this week has in store for us!

Ed.