12:47, Monday October 13th, 2003 • feeling thoughtful • no comments
Was reading more of On Lisp last night, starting to get into the thick of the language now. I'm slightly worried that I'm not applying as I'm learning. I just can't think of any applications that I want to develop on the console at the moment. In addition to that, all the made up ones are so simple that they don't really provide fertile ground for experimenting with programming techniques.
As I was reading the author mentioned Scheme, which I don't know much about other than that it is Lisp-like in style. I decided to go and find out more and ended up reading an interesting article (PDF) written by some guys at LShift about their use of Scheme inside Java on the NMK website.
The site uses an array of off-the-shelf technologies in order to simplify development of the middle tiers. Cocoon provides the controller. Castor creates XML from JavaBeans which is then transformed by XSLT to the output HTML. The JavaBeans are created by business logic routines written in Scheme and interfacing with the outside world using Java-to-Scheme interface in SISC, a Scheme interpreter written in Java.
The article discusses the relevance of this product-bulky approach and the benefits of using Scheme for the business logic. In a word, continuations. Continuations are, as far as I can tell, a Scheme feature whereby an interpreter can be halted and it's state stored in a closure. Then it can be brought back to life whenever and executed from the same point onwards. This has unique applications in the world of HTTP. What LShift managed to achieve was an abstraction that allows them to invert the control flow of HTTP.
Off the web, programs go about the process of processing and when they need input from the user, they ask for it. With HTTP, this is reversed. The user asks for something and perhaps sends some data in at the same time and the program processes it there and then and returns output as best it can. This can make things confusing when data needs to be gathered over a number of pages or the user starts using their back button etc. LShift hide the fact that the program has to be halted and the user waited on, and indeed that they may never return the required input, by halting the program secretly and then reviving it transparently when required. This allows the flow of a piece of higher level business logic to proceed as if it were a normal console or GUI app.
17:21, Wednesday October 8th, 2003 • feeling relaxed • no comments
Louise bought me a big tub of Yeo Valley organic Raspberry yoghurt as part of this week's shopping. It is the fittest yoghurt ever. It's so good. The whole tub has gone within less than 24 hours of opening. It was as much as I could to not just eat the whole lot last night.
Then, when I threw the pack away it had details of recycling on the inside, but also gave me the URL of a recycling point locator. We already recycle, but we don't know anywhere to recycle plastics at the moment, which is a big part part of our rubbish.
Sun don't provide any mock exams for the Certified Java Programmer exam that I'm going to sit. About.com do though. Thanks About! I got 17 out of 30, which would scrape a pass mark (it's a 50% exam) just about, and demonstrates that I need to do a bit of revision on some of the tricky technicalities.
I always have mixed feelings about About. They have one of the best collections of content on the net and have done for years and years. Their idea is cool and works well. Often there are questions where the experts at About are the only people publishing the right answers.
On the other hand they are terrible advert whores. They popup with every single page load. With the quiz I was doing, the answer would be popped up in a window which would contain a body of explanation - very handy. Then the window would redirect to another About page full of sponsored links and stuff, within about ten seconds. I had to run the test by quickly copying the explanation and pasting it into an email window. Stupidness. I think they maybe risk their userbase by annoying them with so many adverts. It can't be good.
0:33, Friday October 3rd, 2003 • feeling reflective • no comments
I forgot to do this yesterday, my one year in London post. We are now half way through our two year contract on the flat.
I still like it.
I just feel like I haven't really sampled enough of it yet. I guess you never can, but I feel like there's a lot of stuff that I could have been doing and instead I've been sat inside trying to work but prevaricating instead. As I am now in fact.
I'm also a bit sad that I haven't made any new friends here. There's Louise and Tom, JC, Adam and Charlie. Al is around. I don't really know him, but I reckon we'll get together for beer at some point. Each of those people has friends and work colleagues here, so they're OK. I've met quite a few of these friends and colleagues and many of them were cool, but none of them are the kind of people I would be really good friends with. Because I work from home I haven't got a line to work people. At Soup I really got along with all the people I worked with and I'd like to have that again. Albeit without the 9-5.
So, solutions.
First of all I need to go out more, tag along with other people on what they're doing, rather than setting up stuff myself. There's only ever a very small crowd at stuff I arrange. I also need to go to more internet-organised stuff, such as Dorkbot. The sort-of-party that Furtherfield held that I went to was pretty good and I did meet some pretty cool people there. I'd like to work with Furtherfield at some point, but I think we've both just got too much other stuff to be doing before we can collaborate.
I've also been thinking about finding a shared office to join in on or something. New Media Knowledge run one up in Harrow, but that's a bit far to be going each day. Plus they don't return my emails asking for pricing. I'll have to keep looking on that front, but I think that shared offices are a bit of a neat idea that haven't really caught on yet.