Tuesday, December 29, 2009

A new term for what we do

I started a new part-time project a while ago where I was allowed to use the full power of thin server architecture and Dojo, where the back-end was written in PHP.

While talking about the architecture with the back-end developer (which was really impressed about the cleanness of using a SMD file to define the protocol contract between client and server) we compared experiences and realized that we were both programmers first and visual designers last, if at all.

Many times the customer or project owner have a very dim understanding of client-side development, which leads to bizarre ideas about the simplicity of implementing ideas in the browser. Most common is that JavaScript is seen as something to use as a last resort and that the entire user experience is seen as a series of 90s cardboard static HTML pages, mainly because it's simpler to conceptualize, I guess.

Working the majority of my time with web pages but never with visual design means that I need to find very advanced customers and project members who understand that there is a layer below the design, but not on the server.

And that's when the expert PHP developer I was working with (Henrik Hussfelt, no less) coined the term middle-end developer. I have never heard that before, and IMO it resonates with where I put myself in the value stack.

Could a new definition like middle-end be a tool to more precisely define the JavaScript programmers role; Not as someone who adds an event handler to a button, but someone who creates the actual client application, but not the markup template for it.

Monday, December 14, 2009

GTUG Stockholm meeting December 2009

Like the happy crazy people we are, we had a GTUG meeting only days after the Android Hackathon. The upside of that was that we could have a recap for those unfortunates who didn't have the time or ability to attend.

About 30 people came, which is OK, but made me think maybe we should do the meetings bi-monthly instead of every month. Not sure either way, but I'll decide after next meeting.

The people who came were as always from a lot of different companies; Spotify, formerly of Spotify, Voddler, Qbranch and many others.

After my short introduction and talk on some new Google technologies (Mostly Closure) Tommy Widenflycht from Google Sweden did a talk on Google recruitment and then answered questions for a long time, handing out frisbees and hats to the best ones.

Apparently, there's a need for really talented Server-Side coders (C++/Java) and A/V Codec programmers in the Stockholm office (and elsewhere). If you feel that you fit the bill, contact me by direct email (psvensson@gmail.com) or comment this post and I'll make sure you get to talk to the right people.

Then it was time for the much-anticipated JavaScript on Android talk by Mikael Kindborg. I was really impressed with the research Mikael had done and what he had managed to do.

First he had compiled Rhino for the Dalvik VM and used that to parse incoming JavaScript string. So far, so good. To do that he had made a simple JavaScript app server called RhinoDroid (You can get it here from github) that made it simpler to push JS from an external source (like a browser, or in Mikael's case, the Squeak Smalltalk environment. That's was really cool in itself. What happened then I could have understood if I had thought about it, but I hadn't had the time.

Since all Android APIs (that has been compiled into the RhinoDroid app) are accessible by the JavaScript script when running, Mikael showed how he could build up a simple Android interface asynchronously, adding some buttons, which popped up on the Androdi screen, push those a bit - nothing happens.

Then send some JavaScript event handlers that bind to those buttons, which get dynamically evaluated and then the button do something. So he was building an Android UI - and changing it - in realtime. Think about that for a while.

The next talk was Johan Burell who did a run-down of the Android Hackathon the previous Saturday; Which apps had been created, which ones had _almost_ been created, and so on. Several people who had been present was in the audience as well, so we had some recaps and discussions about team @froderik's Android Hudson front-end and the other apps as well.

The last talk for the night was by Sony Ericsson's strategy manager Thomas Bailey, who did show and pass around an actual X10 Android phone. It's surprisingly and reassuringly heavy and a screen that is 'right' sized. The interesting parts of Thomas' talk was the fact that Sony Ericsson is starting their own Android App store, to be able to offer developers a more controlled environment to publish their apps to, and Sony Ericsson's signature apps (Organizing and formatting activity streams and media) which will exist only on their phones but can be extended using XML files, which will pop in future sources of contacts, media and other things, which is a neat concept in itself.

Our next meeting will be on January 14th, where we will cover the following topics:

  • Peter Svensson - State of the code (+some Dojo layout goodness)

  • Ingemar Resare - Google Apps use cases.

  • Peter Sönnergren - App Engine + Java

  • Johan Burell - Google Go (+ Android Cntrllr)

  • Leonard Axelsson - App Engine + Groovy

  • See you guys then, and a Merry Spaghettimas to you all!

    Wednesday, December 9, 2009

    Full Brighton

    And actually, this blog *should* be about how to avoid common pitfalls when using Dojo widgets inside hidden ContentPanes (as when using Stack- or TabContainers), but I have a huge queue of, oh, two or so posts to go before that.

    Todays topic is of course the unreasonably nice JavaScript conference in Brighton recently - Full Frontal.

    I have never been to Brighton before, and one of the experience was walking about the city itself.

    Which despite the pedestrian nature of above statement is not particularly easy, even if it's nice (sharing properties with several other activities I could think of..).

    The reason for the lack of simplicity is that the city is actually at least two cities, which don't like each other very much and have crashed into one another in a desperate struggle to the very end, throwing streets and towers as you please, leaving the unwary resident in crossing with no less than three busy streets, often multiples of that, where two or more have steel railings to avoid being crossed in reasonable manners.

    I had managed to hitch a ride out of the airport with @icaaq, or actually @icaaq's cousin, who was living with her family in Brighton since years back. After a quick freshening up in the Hotel room I managed to get to something I believe is the west end of Brighton which is chock-full of pubs, of which me and a motley crew of web developers, media folks, CEOs, CSS gurus and JavaScript madmen went to at least three (or so they say).

    The evening was punctuated by Christian Heilman was nice enough to lead the way to the actual beach (at 2am) to see a work of art of some sort, where I managed to take a photo of him and Lieke Arendts of Ajax.org and Javelin fame (uppermost above).

    The conference was set in a beautiful fin-de-last-but-last-again-ciecle cinema named Duke of York Cinema. You know what? All conferences should be in cinemas. Problem with ventilation? Nope. Too hot or cold? No way. A cinema is made for large number of people sitting for a long time looking at whatever's up on the stage. Perfect!

    And was it great! One of the best things was that I wasn't even speaking. I had no last-minutes slides to perfect, no slow parts of my talk to worry about - nothing. I could just sit down and enjoy the show.

    But even though JSConf.eu wins due to the sheer amount of good content, Full Frontal still manage to out-wattage JSConf.eu on the mere fact that it was *so* right in just one day, managing by luck or engineering to get almost every speaker not only be the right kind but sort of building upon each others talks.

    Everything was good, but the absolute highlights for me was Jake Archibalds talk on JavaScript optimization. Not only for the hard data on what to do and not to do - between different browser, but he had a stunning presentation technique. First of all his slides were top-notch (can he possible be that skilled? Or do he have some secret connections in the Beeb's media departments?), and secondly he had a comic timing that made his talk the most fun-packed of the day.

    He had this slide of a He-man doll, which he referred to as the power of the JavaScript VMs of the moderns browsers , but crossed with terminator (next slides showing he-man with Borg eye), and a crustacean forming a battlecrab! (bext slides showing a cyborged he-man doll with a large crab-like derierre), and so on. I don't make him credit, but it was really great.

    The next best part was the closing act, where Simon Willison had ditched his prepared talk (something about web APIs) after seeing the presentations on JSConf the week earlier, and promptly slammed together his own talk on node.js, using fluffy rabbits, cute hamsters and octopuses (OK, just one octpus), to describe the difference between threaded event handling and event-callbacks.

    The talk had just the same effect on Full Frontal. people whooped and became generally agitated about the idea to use their front-end kung-fu to start building heavy-hitting serve-side stuff as well. No new idea (and the Javelin guys were quietly commenting on their own KLOCs of C++ to make their own SSJS platform one of the speediest, doing essentially the same - and more), but the magic bullet here is one of perceived complexity; Noone in the room thought that they would have a hard time picking up node.js and try something out with it. Just as with CouchDB, it simple to explain and simple to use. Well, OK, I'll shut up about it for now, but expect me to be back on the topic!

    Anyhoo.. the after-party was nice, full of back-clapping and camaraderie,and just the right size too. I think that the superpower of the current JavaScript movement that's building is twofold; people are super-amateurish and quirky, and also nice. Really, really nice.

    Amateurism in really bright people means playfulness and a lowering of barriers, so that using hamsters for request is seen as OK - not very academical, but fun and getting the point across.

    I'll definitely be back next year (there too :)


    Tuesday, December 1, 2009

    GTUG Android Hackathon 28/11 2009

    Earlier this year, I had an idea for an all-day event for hacking on some Google technology. When I proposed this to the group at a GTUG meeting, I was reasonably certain that Wave was going to be chosen as the technology in question, and to my surprise instead Android took home most of the votes.

    So, Android it was. No worries, though, as I'm a great friend of the platform - even though it is still officially restricted to Google's brand of Java, but more of that this Thursday when Mikael Kindborg will do a talk on JavaScript on the Android, among other talks (including Sony Ericsson's Strategy Manager Thomas Bailey).

    The process running up to the Hackathon was almost Kafkanesque in nature. Not at the beginning, where Bwin Games agreed to host the Hackathon (on a Saturday) at their lavish premises in central Stockholm. Later, when it was apparent that the budget was rather tight at Q4 (in (yet another) year of recession) to provide dinner - something I felt was a necessity for an event stretching from 9.00am to 8.00pm.

    After getting literally dozens of great leads after I reached out to the community, on twitter (I'm @psvensson) and beyond, I had as many as four different companies that tried to find resources within their organizations to no avail (but thanks for the effort nonetheless!). Finally I got a possible sponsor, but then it turned out that sponsorship is a sensitive issue and the company in question had agendas parallell to that of Bwin for providing the venue in the first place.

    With only days left, I had to call in the cavalry and use my contacts at Google (Thanks Serge and Stephanie!) who agreed to take the bill for the dinner.

    What? You want to know about the Hackathon and not my orgnaizational ramblings? Why didn't you say so? Here goes:

    As many as 49 people had signed up for the Hackathon, 43 on LinkedIn and 6 by direct email, and after all was said and done 33 showed up, but what a group. We got people from Plusfoursix, Isotop, everbody from Appcorn (who had attended whole day iPhone developer event the day before), HiQ, COMBOL and many others.

    Several people came just to see Dirk Groten, CTO  from the progressive Augmented Reality company Layar, who had graciously agreed to come up to Stockholm and demonstrate how to build service and applicaitons with their system. Layar is just at the time of this writing about to reveal their new polygonal 3D service, which lets developers created fairly complex polygons at specific geographical locations, which ups the ante a bit.

    After Dirk, we had a talk from our own Johan Burell, who had a thorough walk-through of the Rokon gaming library for Android, which provides a lot of simplifying wrappers for 2D gaming, which several of the groups later used.

    After the talks were done, we had a light but satisfying wraps-based lunch provided by Bwin and then on to coding.

    The atmosphere during the whole day was very open and friendly. Teams helped each other out on several occasions, fixing solutions to MapView dynamic updating to getting the current GPS position.

    Also, there was (at least I had quite a few :) a lot of general discussions on and off, about whether it was amoral for Craigslist to provide free advertising, thus putting newspapers out of business, the recent split of the Squeak Smalltalk platform into Pharo, CouchDb REST musings and lots of other stuff.

    What I mean to say is that these coders weren't your garden variety lockergnomes, these were hard people, OK? just saying :)

    Some teams borrowed meeting rooms from Bwin to doodle on white boards, but most teams huddled down in groups, hacking intently as the dusk fell over Stockholm. Actually, dusk was all we had that day, steel-blue clouds and a mere thirty seconds or so of sun.

    At the end of the day, each time got one minute - sometimes a verrry long minute - to present their application. After everyone had presented, everybody present (some people had to leave before the presentations) voted by raising their hands (only one vote per person) on the app they liked best - and one was not allowed to vote for ones own. As it turned out first price went to the Bwin team with their app "Crimesweeper", which got real-time police crime scene data, and mashed it up in a MapView, awarding points for players who visited the scene (vigilante.apk?)

    The second-price winners had made a very creative game app which tracked the players and plotted them on each others screens, and provided a method for throwing virtual water baloons at each other.

    Then one team had made a very useful Hudson front-end for Android where you could start Java build jobs and check their statuses.

    One team had made almost a space shooter with the Rokon library, but due to time constraints it was actually a "space dodger" - tasteful nonetheless.
    There was an app which demonstrated a CouchDB library for the Android, something really useful.

    One app which was made by an attendee who was forced to leave before the voting (please comment if you remember who - thx!) made an app for kids learning words using images and rotating letters - which was very appreciated, but got few votes. Strange, but what do you do? :)

    We had another app by single-team @sharj, which used the twitter API to get a random twitter user bio and let you follow if you liked it. In the future he means to add support for recommending users based on usage patterns.

    And he got another one as well, which used the recent Google Movies API to list movies and to say which ones you were going to see, foursquare-style, of sorts.

    @burre83's team made a rhythm-action app, which was surprisingly catchy, tempting the player to hit random parts of the screen in time to the music.

    A couple of teams did not finish, but a couple came surprisingly far, given their ambitions.

    What was interesting was that so many teams had such divergent  ideas, and that so many attendees came without really any prior Android development experience - and still managed to produce runnable code!

    The winners and the second place teams got each a book from Apress called "Pro Android" which in my opinion is the most comprehensive one out there. The winning team also got some really nice Google drinking bottles and my very last Android keyring trinkets,which were much appreciated.

    This left me with a couple of books left (since Apress had sent me 10), which after due consideration was given to to teams which I felt needed them the most, for different reasons.:)

    When everything was wrapping up, we decided to go down to the local pub Bishops Arms at Vasagatan for some beers and lots of discussion - some about Psytrance and scouting if I recall correctly.

    In retrospect the day went very smooth, mostyl due to the playful professionalism of all present. Also, since most of the day was spent by the attendees hacking I had several hours on and off where I could blog about my adventures in Russia and other events that needed some writing.

    This had been hanging over me for some time, and it felt really good to be in a position to do something about it, between coaching sessions and general discussions.

    Something that really meant a lot to me was that three separate people, on separate occasions, went up to me and said how great they thought the event was and thanked me for arranging it. Me, who really didn't do much in particular, other than yakking and blogging :)

    Thank you so much! ^-^