March 2006 Archives
Michael Simpson is starting a new business. After months of research, financial planning and searching for just the right spot, he is opening the Leslieville Cheese Market and Fine Foods store!
He is looking for your suggestions too, so head on over let him know what you think would help to make the cities best cheese shop! And if you live in the area, drop by this summer when he officially opens his doors!
Congrats to Micheal on this endeavour!
Andy* just blogged about wanting a open source photo management tool. This is something i’ve had on the back burner for a long time. I think he wants one that is more like a client application, and my needs are more in-line with a client/server/web-app setup. This is because i like to have all my photos on my server, accessible from anywhere, easily backed-up, and all the other good stuff you get from having them on a server in the basement.
The last time i went looking for something was like this, the only thing that came close to fitting the bill was Photos. It was missing some key features, like the ability to ‘tag’ photos a-la del.icio.us, and that it was programmed in PHP. Also the fact that it hasn’t been updated in about 2 years is a bummer.
I’ve made several starts at building a backend for this mythical tool. What i’m going to do is to start a list of features that this tool should be able to do. I’d like to state also the things it is not going to do:
- It is not an image gallery tool. Via plugins or extensions we could create the ability to upload to various gallery tools (flickr, etc).
- Not an image editor. (i might relax this one, including really basic functionality, like image rotation and croping)
Now, the core set of functions that it would need:
- Support JPGs (other file formats to follow)
- Browsing via Physical structure on the server, tags, meta-data, etc. (tree view)
- Display of images at different sizes (thumbnails, etc)
- Suport for adding/reading photo meta-data in EXIF and IPTC - python lib and example
- Generic Tagging of photos (via Tasty?)
- Search via tag, meta-data, etc
- Basic security (https? digest mode? other?)
Once that is working, there is an almost endless list of things that would be nice-to-haves.
- Collections of arbitrary photos (this could be used in conjunction with the gallery upload extension/plugin)
- Image import/upload via the tool
- etc
Updates as i think of them.
This sounds like a potentially good way to go too - split each bit of functionality off into its own “app”. This is by the guy that wrote the Tasty tagging app.
(*) As if i actually know this person - i just read his blog, and have created this mythical world where i can call him by his first name as if i knew him personally. Ah the internet, crushing good manners since 1994!
Sadly gone now, i’d first heard of Wesley while i was working for Trapeze, listening to WVUM from florida. Some of the weirdest tunes i’d ever heard, but funny and dark too. Anyway, you can check out a bunch of his stuff here, but you should really listen to “I Whipped Spiderman’s Ass” and “Rock n Roll McDonald’s”
The webserver in the basement has been overloaded lately, so i started the process of getting another computer up and running. I had an old PII/128 rotting downstairs, so i popped in an old 20gig drive i had lying around, and installed Ubuntu.
Ubuntu has a rep as the Linux distro for everyone, so i thought i’d give it a try. I’ve tried other Linux distros, but have generally been disappointed. Mostly because it is so hard to find out how to do stuff, from simple to hard, unless you are already a linux pro.
Ubuntu really is different. I was able to find an excellent guide which had examples of everything i needed to do. Since i did the server install, there were some differences, because i didn’t have the nice graphical UI, but i was able to find out all the things i needed to know. How to install SSH, change where apt-get looks for packages, mount a network share on startup - all surprisingly easy.
The point of this whole exercise was to get my mp3 server software (slimserver) running, and it was a lot easier to do then i’d expected. I now have no hesitations about moving the main webserver over to Ubuntu as well. That will be a big job, for another day, or weekend…
Well done Ubuntu developers, and thanks!
You can check it out here.
Next time, don’t ask for a 20 pack of timbits.
And eat them all.
In under an hour.
So, you can still check it out.
Here is the latest version of the Butterfly project. There is no interactivity in this test, but you can see the butterflies, the “flaps” (which are the black circles) and the “overlaps” (the transparent blue circles). The display scales if you stretch the browser/player.
I have no idea how well the server will hold up over the next day, so if things aren’t working when you check this demo out, i’m sorry. This test will be for one day only (Monday), so if you are reading this after the 13th, you are out of luck.
I’m finding that the client is pretty slow - slower then i would have thought it should be. I’m pretty sure its because all the messages are delivered via JSON, and the cost of each call to the parse() method is expensive. I need to do some profiling to make sure, of course, but thats the most likely culprit. However, as Donald Knuth would say, “premature optimization is the root of all evil”, so i’m going to try to not get too hungup about the performance right now. It is still very early days, and there is lots to do before i need to worry about writing my own protocol!
Update I’m now running the client and server on seperate computers. This has pretty much cleared up most of the speed issues i was seeing before. Nice.
Update 2 I just thought i’d mention that this is post #1000! Unfortunatly, there are still lots of old archived posts that i haven’t added into the MT system, so really i must have reached 1000 a while ago. Regardless, that’s a lot of posts!
I’ve put the other event stuff on the back-burner, realizing that it was just keeping me from finishing (bahaha) the Butterfly project. One (unrealistic) project at a time!
Some work has been going on, but it is slower then i’d hopped, even with giving myself what i thought was lots of time. Not trying to get too tied up about it, the progress that has been made is good stuff. Each time i rewrite a bit, or all, of the server code, i get closer to… well, i don’t really know what, but i’m reducing the code smell each time, and really learning alot too. It feels close to a place where i can get back to working on the visual part, so i can show something for all this work. That’d be nice - then you wouldn’t have to read about it, you could just check it out. Wow.
We are getting there!
I just knew i should have bought this book! These robots are crazy - the one that climbs trees, brick and wooden walls freaks me out. The BigDog is quite amazing - watch the videos. Combined with the meat eating robot, it spells our doom. Why couldn’t we just have stuck with the Daleks? Sure, they have that dangerous laser-zapper thingie, but we could just run up or down some stairs to avoid them! (Well, before the new series, anyway) But nooo, we have to go building some super-crazy walking/climbing ones. It will be our own fault when the robot revolution comes. (via Rui)
I’ve been reading Joel Spolsky’s Joel on Software. I finished it very quickly - an easy and engaging read. Lots of great, useful advice.
One of the key things he talks about is to have a Spec. I can see that that would be helpful in my current situation, where i’m trying to design an architecture without really having a clear idea of what i’m wanting to build.
So, first thing to do is to get it clear what i want to build. Always a challenge!
I’ve been thinking about an architecture for a game engine (this is something that i do for fun). I’m pretty bully on the whole event-based design for an engine, and have been thinking about event propagation. How would this work in an Object Oriented design?
The idea in my head involves a high level container i’m calling a Room. A Room might contain several Players, Bots, and other game objects. I’d like to be able to easily add behaviour for different “events” that could happen in the Room. An example would be when a new Player enters the Room. A ‘NEWPLAYER’ event would be broadcast to all the objects in the Room. The trick is that objects might have sub-objects themselves. Say a Player in the Room has a wand of auto-attack. This wand listens for a ‘NEWPLAYER’ event, and then takes some kind of action itself. Because the wand is a sub-item of the Player, the Player, when it receives the ‘NEWPLAYER’ event would have to re-broadcast it to all its sub-items. And so on, till all the items in the Room have received the event.
I’m not sure if it would be as easy as adding a function which is the name of the event to an object, which would then get called when that event is passed, or if i’d want something a bit more complex.
I’m also trying to figure out how this can integrate with the Fibranet package, specifically the NanoThreads bits.
It is always amazing to me when i suddenly notice that Conor is doing something new. It might take me a couple of days, or weeks, before it suddenly sinks in - “Hey, when did he start doing that”?
Over the past couple of weeks, Con has been really into the kitchen clock, and learning about telling time. Its pretty complex, having to deal with the 2 different hands on the clock, what each one means, heck, just even recognizing the numbers!
He has known for some time that Ciara gets home at six, but now he always wants me to point out “where” six is on the clock. He now can tell when its before and after six. Well, sometimes anyway! But it is pretty cool that he is starting to be able to tell these things on an analog clock.
The other big advance has been an interest in spelling words. He’s known his letters for quite a while now, but just in the past week he has started to do spelling. We have the if-you-have-a-child-you-must-have-fridge-letter-magnets, and have been using them to do a couple of words. His name, MOM and DAD.
We had been playing with the letters last night, and on the fridge had left CONO - we’d used the R someplace else. This morning he comes in, says something to the effect of “Its missing the R”, finds it and puts it at the end of the word. He then found the two D’s and the A and spelt DAD.
Both Ciara and I exchanged the raised eye-brow “can you believe what he is doing” look.
One other thing i wanted to mention is his desire to hear and tell stories. Now, they are pretty simple stories usually involving fire trucks or construction equipment. However, he gets involved with the telling - sometimes what kind of truck, or the colour, or what has to happen next. A typical story would be the following:
The big green dump truck is at the construction site. Its wheel breaks. The mechanic comes and fixes the wheel. The dump truck goes back to work.
There would be other embellishments, but that is the basic structure. Another favourite:
The rescue truck goes out on an emergency. It has to rescue the monkey and giraffe which are stuck in the tree. The fire-fighters put the ladder on the tree and climb up to the monkey and giraffe. They then carry them down safely. The monkey and giraffe thank the fire-fighters for the rescue, and they then all go home.
After this we sometimes talk about what the fire-fighters do once they get back to the station - do they have lunch (waffles are a favourite, apparently), or they get called out on another rescue. There is also usually lots of hand gesturing to denote what is going on at different times during the story.
Just amazing stuff, really.
There are not too many cases where i’d prefer quantity over quality, but since i can’t get quality, i’ll take quantity! I’ve been sleeping poorly for almost 2 weeks now, with the peak silliness yesterday afternoon where i feel asleep in front of my computer at work. In an effort to get some rest, i went to sleep at the same time as Conor, 8 pm. Unsurprisingly, i did get more sleep, but it was still crappy sleep. But i do feel better, so that’s something.
Insomnia sucks.
