Friday, October 16, 2009

Yak Coiffures



I am a very emotional and 'colorful' person and tend to rant quite a lot about things that I deem important. Lots of those happens to fall inside an body of supposed knowledge called 'software engineering'.

I am often talking about the importance to find ways to cut down the time being spent when developing a program that is not actual programming. Currently, I'm using 'find . -exec grep ..' in various parts of various repositories trying to understand how server-side templating is causing subtle bugs in a pedestrian, yet important web service, for a customer.

But never mind that. What I want to write about today is a simple rule to follow if you want to weigh your language and/or platform of choice in terms of complexity.

Assertion: Every step that produces an intermediate file creates complexity.
Example: A compiler takes source code files and generates binary files.
Why: Each step that converts files between formats must be managed and maintained.

This is pretty hard to object to. Really. If you use Java, you need to manage compilation by either an ant file or maven, or perhaps a custom shell-script. These need to be maintained. They will not be maintained. This will lead to grief.

If you need to package your generated files before deployment, the script for that needs to be maintained. See above.

These operations are hard to duck, but that doesn't mean you shouldn't try. Every time you get one extra dot between yourself and the final, running application, that dot needs to be maintained. And that means documenting it, integrating it into other subsystems, referring to it, checking it in, adding it to a repository, what have you. Every point.

Also, frequently, they will become stop-blocks that makes it impossible to do things, until they guy that does packaging comes in, et.c.

One of the simpler ways to minimize yak-shaving of this kind is to adopt a scripting-language as your server-side language. Whether it is Groovy, SSJS, Ruby, Python, PHP or anything else is beside the point, because the main point is this;


  • A scripting language gets compiled inside the VM.
  • A scripting language has at least two steps less complexity than a compiled one
So whatever you do, for future generations of programmers: Never, ever again use a compiled language, for any project, for any reason.

Just Say No! :)

Cheers,
PS




Monday, October 5, 2009

Todays status of the Wave (unofficial) Invitation Queue Tracker

There's a Wave for people to track when their invites was sent out and when the recipients of the invites got it from Google. Since I have eight wandering invites myself, and a lot of people have asked about it, here's the current status of the tracking list:


First Nomination Sent— First Invitation Received (delay DD:HH:MM)
2009-09-30, 16:30 UTC — 2009-10-01, 08:20 UTC (00:15:50)
2009-09-30, 17:30 UTC — 2009-10-01, 04:20 UTC (00:10:50)
2009-09-30, 20:43 UTC — 2009-10-01, 08:44 UTC (00:12:01)
2009-10-01, 02:00 UTC — 2009-10-01, 23:30 UTC (00:21:30)
2009-10-01, 04:00 UTC — 2009-10-01, 23:07 UTC (00:19:07)
2009-10-01, 04:00 UTC — 2009-10-01, 22:07 UTC (00:18:07)
2009-10-01, 04:00 UTC — 2009-10-01, 23:00 UTC (00:19:00)
2009-10-01, 04:30 UTC —
2009-10-01, 05:10 UTC —
2009-10-01, 05:30 UTC —
2009-10-01, 06:45 UTC —
2009-10-01, 06:59 UTC —
2009-10-01, 07:00 UTC —
2009-10-01, 07:15 UTC —
2009-10-01, 09:00 UTC —
2009-10-01, 10:00 UTC —
2009-10-01, 11:45 UTC —
2009-10-01, 13:30 UTC —
2009-10-01, 16:30 UTC —
2009-10-01, 16:40 UTC —
2009-10-01, 18:00 UTC —
2009-10-02, 15:00 UTC —
2009-10-03, 00:30 UTC —
2009-10-04, 18:55 UTC —

[UPDATE 2009-10-6]



First Nomination Sent— First Invitation Received (delay DD:HH:MM)
2009-09-30, 16:30 UTC — 2009-10-01, 08:20 UTC (00:15:50)
2009-09-30, 17:30 UTC — 2009-10-01, 04:20 UTC (00:10:50)
2009-09-30, 20:43 UTC — 2009-10-01, 08:44 UTC (00:12:01)
2009-10-01, 02:00 UTC — 2009-10-01, 23:30 UTC (00:21:30)
2009-10-01, 03:00 UTC — 2009-10-01, 23:53 UTC (00:20:53)
2009-10-01, 04:00 UTC — 2009-10-01, 23:07 UTC (00:19:07)
2009-10-01, 04:00 UTC — 2009-10-01, 22:07 UTC (00:18:07)
2009-10-01, 04:00 UTC — 2009-10-01, 23:00 UTC (00:19:00)
2009-10-01, 04:30 UTC —
2009-10-01, 05:10 UTC — 2009-10-06, 06:27 UTC (05:01:17)
2009-10-01, 05:30 UTC —
2009-10-01, 06:45 UTC —
2009-10-01, 06:59 UTC —
2009-10-01, 07:00 UTC — 2009-10-06, 06:45 UTC (5 days)
2009-10-01, 07:15 UTC —
2009-10-01, 09:00 UTC —
2009-10-01, 10:00 UTC —
2009-10-01, 11:45 UTC —
2009-10-01, 13:20 UTC —

2009-10-01, 13:30 UTC —
2009-10-01, 15:30 UTC —
2009-10-01, 16:30 UTC —
2009-10-01, 16:40 UTC —
2009-10-01, 18:00 UTC —
2009-10-02, 14:00 UTC —
2009-10-02, 15:00 UTC —
2009-10-03, 00:30 UTC —
2009-10-04, 18:55 UTC —

[Update 3 2009-10-06 8.28pm CET+1]



First Nomination Sent— First Invitation Received (delay DD:HH:MM)
2009-09-30, 16:30 UTC — 2009-10-01, 08:20 UTC (00:15:50)
2009-09-30, 17:30 UTC — 2009-10-01, 04:20 UTC (00:10:50)
2009-09-30, 20:43 UTC — 2009-10-01, 08:44 UTC (00:12:01)
2009-10-01, 02:00 UTC — 2009-10-01, 23:30 UTC (00:21:30)
2009-10-01, 03:00 UTC — 2009-10-01, 23:53 UTC (00:20:53)
2009-10-01, 04:00 UTC — 2009-10-01, 23:07 UTC (00:19:07)
2009-10-01, 04:00 UTC — 2009-10-01, 22:07 UTC (00:18:07)
2009-10-01, 04:00 UTC — 2009-10-01, 23:00 UTC (00:19:00)
2009-10-01, 04:30 UTC — 2009-10-06, 01:31 UTC (4.9 days)
2009-10-01, 05:10 UTC — 2009-10-06, 06:27 UTC (05:01:17)
2009-10-01, 05:30 UTC — 2009-10-06, 07:00 UTC (05 days:01:30)
2009-10-01, 06:35 UTC —
2009-10-01, 06:45 UTC —
2009-10-01, 06:59 UTC —2009-10-06, 07:44 UTC (05:00:45)
2009-10-01, 07:00 UTC — 2009-10-06, 06:45 UTC (5 days)
2009-10-01, 07:00 UTC — 2009-10-06, 07:00 UTC (5 days)
2009-10-01, 07:15 UTC — 2009-10-06, 07:32 UTC (5 days)
2009-10-01, 08:10 UTC — 2009-10-06. 05:56 UTC (04:21:46)
2009-10-01, 09:00 UTC —
2009-10-01, 10:00 UTC —
2009-10-01, 11:45 UTC —
2009-10-01, 13:20 UTC —
2009-10-01, 13:30 UTC —
2009-10-01, 15:30 UTC —
2009-10-01, 16:30 UTC —
2009-10-01, 16:40 UTC —
2009-10-01, 18:00 UTC —
2009-10-02, 14:00 UTC —
2009-10-02, 15:00 UTC —
2009-10-03, 00:30 UTC —
2009-10-04, 18:55 UTC —
2009-10-06, 10:00 UTC —
2009-10-06, 12:55 UTC —


-----

[Update 2 2009-10-06]



First Nomination Sent— First Invitation Received (delay DD:HH:MM)
2009-09-30, 16:30 UTC — 2009-10-01, 08:20 UTC (00:15:50)
2009-09-30, 17:30 UTC — 2009-10-01, 04:20 UTC (00:10:50)
2009-09-30, 20:43 UTC — 2009-10-01, 08:44 UTC (00:12:01)
2009-10-01, 02:00 UTC — 2009-10-01, 23:30 UTC (00:21:30)
2009-10-01, 03:00 UTC — 2009-10-01, 23:53 UTC (00:20:53)
2009-10-01, 04:00 UTC — 2009-10-01, 23:07 UTC (00:19:07)
2009-10-01, 04:00 UTC — 2009-10-01, 22:07 UTC (00:18:07)
2009-10-01, 04:00 UTC — 2009-10-01, 23:00 UTC (00:19:00)
2009-10-01, 04:30 UTC —
2009-10-01, 05:10 UTC — 2009-10-06, 06:27 UTC (05:01:17)
2009-10-01, 05:30 UTC — 2009-10-06, 07:00 UTC (5 days)
2009-10-01, 06:45 UTC —
2009-10-01, 06:59 UTC —
2009-10-01, 07:00 UTC — 2009-10-06, 06:45 UTC (5 days)
2009-10-01, 07:00 UTC — 2009-10-06, 07:00 UTC (5 days)
2009-10-01, 07:15 UTC — 2009-10-06, 07:32 UTC (5 days)
2009-10-01, 09:00 UTC —
2009-10-01, 10:00 UTC —
2009-10-01, 11:45 UTC —
2009-10-01, 13:20 UTC —
2009-10-01, 13:30 UTC —
2009-10-01, 15:30 UTC —
2009-10-01, 16:30 UTC —
2009-10-01, 16:40 UTC —
2009-10-01, 18:00 UTC —
2009-10-02, 14:00 UTC —
2009-10-02, 15:00 UTC —
2009-10-03, 00:30 UTC —
2009-10-04, 18:55 UTC —

[Update 2009-10-07]


First Nomination Sent—First Invitation Received (delay DD:HH:MM)
2009-09-30 16:30 UTC — 2009-10-01 08:20 UTC (00:15:50)
2009-09-30 17:30 UTC — 2009-10-01 04:20 UTC (00:10:50)
2009-09-30 20:43 UTC — 2009-10-01 08:44 UTC (00:12:01)
2009-10-01 02:00 UTC — 2009-10-01 23:30 UTC (00:21:30)
2009-10-01 04:00 UTC — 2009-10-01 23:07 UTC (00:19:07)
2009-10-01 04:00 UTC — 2009-10-01 22:07 UTC (00:18:07)
2009-10-01 04:00 UTC — 2009-10-01 23:00 UTC (00:19:00)
2009-10-01 04:30 UTC — ?
2009-10-01 05:10 UTC — ?
2009-10-01 05:30 UTC — ?
2009-10-01 06:45 UTC — ?
2009-10-01 06:59 UTC — ?
2009-10-01 07:00 UTC — ?
2009-10-01 07:15 UTC — ?
2009-10-01 08:00 UTC — 2009-10-07 04:49 UTC (05:20:49)
2009-10-01 09:00 UTC — 2009-10-06 18:00 UTC (05:11:00)
2009-10-01 09:00 UTC —
2009-10-01 10:00 UTC — 2009-10-07 04:13 UTC (065:18:13?)
2009-10-01 11:45 UTC —
2009-10-01 12:00 UTC — 2009-10-07 06:30 UTC (05:18:30)
2009-10-01 13:30 UTC —
2009-10-01 16:30 UTC —
2009-10-01 16:40 UTC —
2009-10-01 18:00 UTC —
2009-10-01 23:00 UTC —
2009-10-02 15:00 UTC —
2009-10-03 00:30 UTC —
2009-10-04 18:55 UTC —

[Update 2009-10-08]


First Nomination Sent—First Invitation Received (delay DD:HH:MM)
2009-09-30 16:30 UTC — 2009-10-01 08:20 UTC (00:15:50)
2009-09-30 17:30 UTC — 2009-10-01 04:20 UTC (00:10:50)
2009-09-30 20:43 UTC — 2009-10-01 08:44 UTC (00:12:01)
2009-10-01 02:00 UTC — 2009-10-01 23:30 UTC (00:21:30)
2009-10-01 04:00 UTC — 2009-10-01 23:07 UTC (00:19:07)
2009-10-01 04:00 UTC — 2009-10-01 22:07 UTC (00:18:07)
2009-10-01 04:00 UTC — 2009-10-01 23:00 UTC (00:19:00)
2009-10-01 04:30 UTC — ?
2009-10-01 05:10 UTC — ?
2009-10-01 05:30 UTC — ?2009-10-06 07:00 UTC (05:01:30)
2009-10-01 06:35 UTC — 2009-10-07 16:19 UTC (06:09:44)
2009-10-01 06:45 UTC — ?
2009-10-01 06:59 UTC — ?
2009-10-01 07:00 UTC — ?
2009-10-01 07:15 UTC — ?
2009-10-01 08:00 UTC — 2009-10-07 04:49 UTC (05:20:49)
2009-10-01 09:00 UTC — 2009-10-06 18:00 UTC (05:11:00)
2009-10-01 09:00 UTC —
2009-10-01 10:00 UTC — 2009-10-07 04:13 UTC (065:18:13?)
2009-10-01 11:45 UTC —
2009-10-01 12:00 UTC — 2009-10-07 06:30 UTC (05:18:30)
2009-10-01 13:30 UTC — 2009-10-07 04:55 UTC (05:15:25)
2009-10-01 16:30 UTC —
2009-10-01 16:40 UTC —
2009-10-01 18:00 UTC —
2009-10-01 23:00 UTC —
2009-10-02 15:00 UTC —
2009-10-03 00:30 UTC —
2009-10-04 18:55 UTC —

-----

[Update 2009-10-09]


2009-09-30 16:30 UTC — 2009-10-01 08:20 UTC (00:15:50)
2009-09-30 17:30 UTC — 2009-10-01 04:20 UTC (00:10:50)
2009-09-30 20:43 UTC — 2009-10-01 08:44 UTC (00:12:01)
2009-10-01 02:00 UTC — 2009-10-01 23:30 UTC (00:21:30)
2009-10-01 04:00 UTC — 2009-10-01 23:07 UTC (00:19:07)
2009-10-01 04:00 UTC — 2009-10-01 22:07 UTC (00:18:07)
2009-10-01 04:00 UTC — 2009-10-01 23:00 UTC (00:19:00)
2009-10-01 04:30 UTC — ?

2009-10-01 05:10 UTC — ?2009-10-06 05:33 UTC (05:00:23)
2009-10-01 05:30 UTC — 2009-10-06 07:00 UTC (05:01:30)
2009-10-01 06:35 UTC — 2009-10-07 16:19 UTC (06:09:44)
2009-10-01 06:45 UTC — ?
2009-10-01 06:59 UTC — ?
2009-10-01 07:00 UTC — ?TC — ?
2009-10-01 07:15 UTC — ?
2009-10-01 08:00 UTC — 2009-10-07 046:49 UTC (05:2018:49)
2009-10-01 09:00 UTC — 2009-10-06 18:00 UTC (05:11:00)
2009-10-01 09:00 UTC —
2009-10-01 10:00 UTC — 2009-10-07 04:13 UTC (05:18:13)
2009-10-01 10:?? UTC — 2009-10-08 ??:?? UTC (07:??:??)
2009-10-01 11:45 UTC —
2009-10-01 12:00 UTC — 2009-10-07 06:30 UTC (05:18:30)
2009-10-01 13:30 UTC — 2009-10-07 04:44 UTC (05:15:15)
2009-10-01 13:30 UTC — 2009-10-07 04:55 UTC (05:15:25)
2009-10-01 14:30 UTC — 2009-10-09 04:00 UTC (07:13:30)
2009-10-01 16:00 UTC — 2009-10-09 01:30 UTC (07:09:30)
2009-10-01 16:30 UTC —
2009-10-01 16:40 UTC — 2009-10-08 22:50 UTC (07:06:10)
2009-10-01 18:00 UTC —

2009-10-01 19:30 UTC — 2009-10-09 01:17 UTC
2009-10-01 21:00 UTC — 2009-10-09 00:55 UTC (07:03:55)
2009-10-01 23:00 UTC — 2009-10-08 23:25 UTC (07:00:25)

2009-10-02 15:00 UTC —
2009-10-02 21:00 UTC — 2009-10-09 01:25 UTC
2009-10-02 06:30 UTC ---
2009-10-03 00:30 UTC —
2009-10-04 18:55 UTC —
----------

[Update 2009-10-11]


First Nomination Sent—First Invitation Received (delay DD:HH:MM)
2009-09-30 16:30 UTC — 2009-10-01 08:20 UTC (00:15:50)
2009-09-30 17:30 UTC — 2009-10-01 04:20 UTC (00:10:50)
2009-09-30 20:43 UTC — 2009-10-01 08:44 UTC (00:12:01)
2009-10-01 02:00 UTC — 2009-10-01 23:30 UTC (00:21:30)
2009-10-01 04:00 UTC — 2009-10-01 23:07 UTC (00:19:07)
2009-10-01 04:00 UTC — 2009-10-01 22:07 UTC (00:18:07)
2009-10-01 04:00 UTC — 2009-10-01 23:00 UTC (00:19:00)
2009-10-01 04:30 UTC — ?
2009-10-01 05:10 UTC — 2009-10-06 05:33 UTC (05:00:23)
2009-10-01 05:30 UTC — 2009-10-06 07:00 UTC (05:01:30)
2009-10-01 06:35 UTC — 2009-10-07 16:19 UTC (06:09:44)
2009-10-01 06:45 UTC — ?
2009-10-01 06:59 UTC — ?
2009-10-01 07:00 UTC — ?
2009-10-01 07:15 UTC — ?
2009-10-01 08:00 UTC — 2009-10-07 06:49 UTC (05:18:49)
2009-10-01 09:00 UTC — 2009-10-06 18:00 UTC (05:11:00)
2009-10-01 09:00 UTC —
2009-10-01 10:00 UTC — 2009-10-07 04:13 UTC (05:18:13)
2009-10-01 10:?? UTC — 2009-10-08 ??:?? UTC (07:??:??)
2009-10-01 11:45 UTC —
2009-10-01 12:00 UTC — 2009-10-07 06:30 UTC (05:18:30)
2009-10-01 13:30 UTC — 2009-10-07 04:44 UTC (05:15:15)
2009-10-01 13:30 UTC — 2009-10-07 04:55 UTC (05:15:25)
2009-10-01 14:30 UTC — 2009-10-09 04:00 UTC (07:13:30)
2009-10-01 16:00 UTC — 2009-10-09 01:30 UTC (07:09:30)
2009-10-01 16:30 UTC —
2009-10-01 16:40 UTC — 2009-10-08 22:50 UTC (07:06:10)
2009-10-01 18:00 UTC — 2009-10-09 01:05 UTC
2009-10-01 19:30 UTC — 2009-10-09 01:17 UTC
2009-10-01 20:45 UTC — 2009-10-09 01:44 UTC (07:05:00)
2009-10-01 21:00 UTC — 2009-10-09 00:55 UTC (07:03:55)
2009-10-01 23:00 UTC — 2009-10-08 23:25 UTC (07:00:25)
2009-10-02 15:00 UTC — 2009-10-10 08:00 UTC
2009-10-02 15:30 UTC — 2009-10-11 14:30 UTC (08:23:00)
2009-10-02 21:00 UTC — 2009-10-09 01:25 UTC
2009-10-02 06:30 UTC —
2009-10-03 00:30 UTC — 2009-10-11 01:40 UTC (08:01:10)
2009-10-03 04:45 UTC — 2009-10-11 00:45 UTC (08:20:00)
2009-10-04 18:55 UTC —
2009-10-07 16:44 UTC — ?

------------


Note that this list is updated and maintained manually by people who want to share information, so I take no responsibility of the accuracy or completeness of the information in it. It does look like something hit the fan last Thursday which made everything stop invite-wise. My guess is that when whatever it is they're doing is finished, invites will start to appear again.

I'll update this post whenever I get new info on the status of Wave invites.

Cheers,
PS

Sunday, October 4, 2009

GTUG Stockholm meeting 1/10 2009




This last Thursday was incredible! I had hoped to get at least as many attendees as last time, but I got even more. I counted to 90 people sharp, but I might have missed one or two. Also, people lined up in front of the registration desk instead of bolting for the beer (as I would have). People were very nice, courteous and happy. Even when Google's Serge LaChapelle was unable to connect to the projector and was forced to switch to a smaller panel-mounted TV.


We got people from Bwin, Mindspring, Tieto, Skype, KTH, Skatteverket, Unibet and *lots* of other companies and organizations. Between the sessions we had discussions breaking out everywhere. Also interesting was that between 25-50% of the people present had done some or a lot of Android development, which only made the big announcement even nicer: Bwin Games AB will host GTUG Stockholm's Android Hackathon the 28/11. Details will be forthcoming during the coming week.


The schedule for our second GTUG Stockholm meeting was as follows:


17.30 - 18.00 Mingle. Register at the laptop.
18.00 - 18.10 Presentation Ottoboni / Peter S.
18.10 - 18.20 GTUG Stockholm news / pres.
18.20 - 19.00 Johan Nilsson, Bwin; Android/iGlaset
19.00 - 19.30 Break
19.30 - 20.00 Serge LaChapelle, Google, om Gmail Video Chat
20.00 - 20.30 Jacon Gyllenstierna, Enemy Unknown on OpenSocial


This was great since it cut my time talking down from pretty much the whole time, last time, to just presenting the event and the sepakers. Don't get me wrong, I love talking, but I feel that it is better for the community to have lots of different speakers with lots of different experiences.


First off was Johan Nilsson, from Bwin, who presented two useful Android apps he had made; STHLM Travelling and iGlaset. We got some good practical examples on what to do (and not to do) when developing an Android app and lots of good pointers to resources.


Then came Serge LaChapelle from Google Sweden, originally working for the Swedish company Marratech, which was bought by Google some years ago to use Marratech's technology to create what was to become Gmail video chat. Serge did a great presentation with a live video demonstration and dozens of technical questions asked by the attendees, like which was better of GMail chat and Skype (both have their strengths and weaknesses), How much overhead the new H264/SVC codec demand (1-2% CPU tops), why they don't use SIP (since they build everything on top of Gmail chat and XMPP, it felt cumbersome to create a separate infrastructure. Google have apparently really good internal oomph for juggling XMPP (pusubhubbub anyone?)).


Our last talk was Jacob Gyllenstierna from Enemy Unknown who did a great presentation on how OpenSocial works and how the cotnainer (web site) interacts with the OpenSocial apps. These guys are interesting because they are one of the few companies I know of that have created their own OpenSocial compatible platform (in Ruby, no less) and have OS applications created by the community which ties directly into their services. The also do consulting, if you have an OpenSocial project that you need developed. Normally I'd recommend myself, but these guys are just much tougher :).


One of the more interesting things that was brought up over beers after the main talks was that several people wanted some more business-oriented information, like someone who has implemented Google Apps for an existing customer, or sales-oriented certfication for different Google Products. Google does have some certifications available, and more will be forthcoming, but I will take this to heart and try to have some more nuggets avilable for the business oriented Google Entepreneur next time. promise!


[Update:  More (and better.. ahem) pictures from @vilcans: http://www.flickr.com/photos/10185883@N05/sets/72157622370852645/ ]



1] Slides from Johan/Android

Friday, October 2, 2009

Presenting at JSConf.eu

Wow! I will be presenting at JSConf, together with most of the really cool people I know. I'm really happy and proud to be chosen to attend this Battlestar Galactica Epic conference dedicated to just JavaScript, the best of the best. :)

You can peer at the bearded fellow in the presentation abstract here (I'll talk about the dojox.gfx and dojox.charting cross-browser graphics packages); http://jsconf.eu/2009/speaker/peter_svensson_-_using_dojoxgf.html but just in case, the text is copied below;

Peter Svensson will give us deep insights into real-time 2D graphics in the browser.

The Dojo Ajax Toolkit has a multitude of different features that help save time for the harried JavaScript developer. One of the most powerful and yet least known is the Canvas like dojox.gfx API, which adapts itself to the browser's 2D capabilities. It can use VML, SVG, Canvas and Silverlight, depending on what the browser supports. On top of the dojox.gfx library is also built the dojox.charting API which leverages the cross-browser graphics of dojox.gfx to provide snappy, versatile, themable and configurable charting with tooltips, dynamic scaling and general eventing.

Peter's Bio
Peter Svensson is an entrepreneur and Java developer turned Ajax and JavaScript evangelist.
He is a contributor to the Dojo Ajax Toolkit and author of the book "Learning Dojo". When not talking at conferences, he's busy developing his company "Hermit Village" with competences ranging from Dojo, Android, and App Engine to OpenSocial, Layar and Google Friend Connect. He is also the organizer of the Scandinavian Web Developer Conferences and the Google Technology User Group for Stockholm, Sweden.

---

What? There was an equally Epic Google technology User Group - Stockholm meeting last night, with over 90 people present. True, but this has been a hectic week and I really need to sleep first before attempting that post. Coming during the weekend though. Films at eleven. beep.