March 31st, 2007
Well last night and today saw me performing a similar feat as last saturday, except I was wielding pencils, inks, gouache and brushes this time around. I’m part of an open house for the fringe festival in May and given it’s April tomorrow I thought I’d best get working. There are a few previous pieces I’ll use, but I felt I needed to get some more up-to-date work out there.
I have still been managing to do some drawing over the past two years, but it’s mainly been limited to birthday cards and presents. Whereas during my MSc I managed to get quite a bit done. So being involved in an open house is a good motivation to get drawing.
Firstly, I finished off one illustration I’d been working on. I mainly tweaked the line work last night. (Some of the leaves are painted in gold, which doesn’t show up too well on a scan…)
Yesterday I started on my first proper gouache painting and finished it off today. It’s of Richard Feynman whom I’ve always had an admiration for (mainly from reading about his antics during the Manhatten Project). Quite happy with how it turned out – it is really only a copy of a photo, but it’s nice to just concentrate on the paint for a bit. (credit to Shardcore for some of the inspiration behind painting Feynman)
Next we have a collection of monster illustrations. Been doing similar ones for birthday cards and they always turned out pretty well.
I’d like to get quite a good collection of pictures finished, so I have plenty to choose from for the final showing. Given there’s only a few weeks to go I’ve not got too much time, but at least now I’ve made a proper start.
March 30th, 2007
So I’ve now uploaded the results of the saturday morning code-a-thon. This means that you can now browse all of the previous moves and they also have a convenient URL. So if you want to show someone a move that you thought was particularly good/bad you can just send them the link. e.g. in this pretty amazing (fun at least) game against Kennon, I was particularly proud of this move:
Pretty happy with what I’ve got implemented for chrss now. This features take it slightly past the core ability to “just play chess”. Hopefully I can start leveraging the fact that everything is being recorded in the database and is now “just data” that can be manipulated and viewed in different ways. Though I think I might spend a bit of time on some of the more mundane aspects first (like being able to reset your password).
On a more technical note, starting to feel a lot more like I really know my SQL now. Been proficient at it for a while, but I was quite proud of this:
alter table move add column move_num int;
-- temp table for calculating the move numbers
create table tmp_move (moveid int,movenum int);
-- insert move numbers into tmp table
insert into tmp_move (moveid,movenum) select id as moveid, (select count(*) from move m2 where m2.id <= m.id and m2.game_id = m.game_id) as movenum from move m;
-- then update moves from tmp table
update move set move.move_num = (select movenum from tmp_move where tmp_move.moveid = move.id);
-- remove tmp table
drop table tmp_move;
-- increase constraints on the move_num values
alter table move modify column move_num int not null;
alter table move add unique game_move_num_index (game_id, move_num);
alter table move add index move_num_index (move_num);
Which basically adds a “move_num” column to the move table and the calculates the correct value for each move (i.e. whether a move is move 9, 10 etc. in a particular game). Previously I was calculating this on the fly, but that was forcing me to always read all of the moves for a game. This should make things a bit simpler for me down the line. Just a shame I couldn’t do it without a temporary table.
March 28th, 2007
So last night I presented chrss to the people gathered for the inaugural £5 app meet. We had a reasonable number turn up – thanks to everyone who came along. I probably didn’t talk to everyone, but it was a good crowd.
As is fairly normal I did feel rather nervous before hand, but felt better once I got going. Pretty happy with how my presentation went. I maybe spoke for a bit longer than I’d planned (waffling a bit when it came to the technical side), but managed to field quite a few questions so worked well.
After my presentation, Ian talked about ShowMeDo. Ian focussed more on things like how to grow a community and that seemed to resonate well – sparking a fair bit of conversation. He did a really good job of getting across what he and Kyran had done to get ShowMeDo to the point it is now.
As well as the planned talks from Ian and myself we also had artwork on display from shardcore (including Edison and Topsy):
So all in all it went well. It will be interesting to see how this meetup progresses from here. The next one should be in about a month.
[edit: Ian's got a post up too: http://ianozsvald.com/2007/03/28/£5-app-great-inaugral-night/ ]
March 24th, 2007
For some reason I seem to be getting up early at the moment and coding. Just had a pretty good intense coding session and managed to get a whole load of stuff done to chrss. So good when you get that feeling of “flow”.
So needs testing before I deploy the new version, but in principal the following are now done:
- move confirmation
- browse moves (see what the board looked like at every point in the game)
- RESTful style URLs
- 301 redirects for old URLs to new URLs
- unit tests
The last one will be increasingly important, as it means I can be increasingly certain that everything is working properly. Most of the unit tests so far are for the “model” part of the app. In this case that means I’m mostly testing the actual chess part of the code.
I based the REST code on this recipe for turbogears and tweaked it a little.
The RESTful URLs also help me organise my code better and just seem friendlier in general. One other side effect is that you will be able to/can browse the potential moves as normal links and don’t have to be logged in to do so. So for example you would click on a piece to see the available moves, then on the move you want and you’d see something like this in the browser address bar:
Where 11 is the game #, 14 is the position of the piece and 1423 is the final move you want to make (in ICCF notation).
So hopefully I’ll get this online next week (probably after the £5 app meet).
March 23rd, 2007
Well yesterday we actually went and looked at the venue for the £5 App meet. Lovely regency era house that’s being slowly renovated. Should prove to be an interesting place – just hope it’s not too chilly on the night.
In terms of presenting my talk on chrss I’ve been investigating the actual tech I’ll need. Not having powerpoint and running a mac has led me to the following:
- S5 for the presentation/powerpoint alternative
- Shiira for displaying the S5 presentation in true full-screen
Shiira is a Webkit based browser for OS X that I’m only really using for the full-screen functionality. As it’s basically using the same rendering engine as Safari it seems to work very well with S5.
Think I’ll be keeping the presentation fairly short. In general I’ll just touch on the overall idea behind chrss, then an overview and highlights of the underlying tech. I’ll probably tack on a “what next…” slide to discuss some of the features I might add later. That should bring it up to a reasonable duration, without getting bogged down in detail.
March 15th, 2007
It’s now called the “£5 App Meet” (rather than the $5 app meet) and if you want to attend please go on over to http://upcoming.org/event/163252/ and sign up.
It’s being held at 13 Brunswick Square in Brighton on the 27th of March (which is a Tuesday). More details are available at http://upcoming.org/event/163252/.
March 14th, 2007
Just tweaked some settings, so logins to chrss shouldn’t expire for a couple of days – instead of after twenty minutes. It was getting annoying having to log in all the time…
March 12th, 2007
Well today at work involved me using
ConcurrentHashMap and in particular
putIfAbsent to severely reduce the need for old-school
Just a shame that you can’t pass in arbitrary expressions/blocks that will only be evaluated if the value isn’t present when you call
putIfAbsent. Might become feasible if Java gets closures. There’s definitely some power in the
java.util.concurrent package though.
Still it’s been a while since I’ve had that kind of satisfaction writing Java code.
March 8th, 2007
Another minor update to chrss. Changes:
- captured pieces are displayed in a summary next to the user’s name
- rounded corners (thanks to MochiKit)
Other than that my losing streak continues. That game contained a move I immediately saw as being wrong after I did it, so I think one of the next features to add will be a “preview” screen. Hopefully the changes needed to do that will also make it easy to do an action replay of the moves in a game.