London Sencha Touch Meetup round 2 – Review

Time is slipping by due to tight deadlines so a very quick roundup of our second Sencha Touch Meetup follows.

Firstly, thank you all for coming, we had a great night which included a decent turnout of members new and returning, long may it continue! As usual the event kicked off with a few slices of pizza and a few beers (pizza courtesy of us and beers courtesy of Forward Tech). Yours truly from UVd did the intros followed by the speakers.

Ricky Clegg from Burrows provided us with an in-depth discussion on the process of submitting a PhoneGap iOS app through the app store. Following a brief intro to PhoneGap and xcode he ran us through the process demonstrating some of the eccentricities and useful things to look out for. An interesting point for us on this discussion was the word of warnings about being unable to delete App ID’s and so having your account littered with mistakes – believe me, from first hand experience be careful! His slides are viewable here:

Last but not least was Adam Duncan from Clock who covered areas relating to his experience developing their latest mobile web app ‘Eat Out’, built in Sencha Touch 2.0. Salient points include the same frustrations we have had developing in an incomplete ‘moving target’ framework due to Sencha Touch 2 moving from developer release – beta and finally to full release all during development cycle. We feel your pain!

Secondly, Adam demoed a rather interesting plug-in he has written: a proxy cache for caching responses from remote requests so as to remove unnecessary burden (especially useful for those browsing with limited connectivity, ie: mobile users on 3G!) and to aid performance (reducing the number of HTTP requests). It’s on github here. We have used his plugin for our latest project and will be contributing to Adam’s proxy cache with an enhancement. Thanks Adam! His slides are viewable here:

Finally, confirmation of what Patrick said at the last event and a clear message from both speakers: test on the device as soon and often as possible. DON’T rely on the simulator.

I look forward to seeing you all at the next event in roughly 2 months time and PLEASE get in touch with me if you would like to contribute to the event or would like us to cover something in future events: you can follow or get in touch with me via my newly created Twitter account: http://twitter.com/kirstenminshall

If you haven’t already, you can join our user group here: http://www.meetup.com/London-Sencha-Touch-User-Group/

Lesson 101 in HTTP Acceleration and Caching

I was asked to put together some information for a presentation entitled ‘HTTP Acceleration and Caching’ covering some basic background and certain techniques and technologies that can be employed to speed up a website/web application. This is by no means a technical specification or a definitive list of tools / techniques but I thought it was worth sharing for those requiring an introduction and then basic guidance on the subject so I hope it will help some people along the way.

Web Application Caching

A typical web page request involves a browser making a request to the server layer (Apache) which then passes information about the request to an application layer (PHP – handles business logic) or returns files associated with the presentation layer. The application layer then serves information contained within a database layer (MySQL) and returns a response which is made up of the presentation layer (HTML, JavaScript and CSS stylesheets) which is downloaded by the browser.

There are time and bandwidth implications associated with invoking each of these layers and many of these requests and responses may be similar. Therefore it is possible to save the result output by these layers in order to bypass them and reduce their use of server time and resources.

Implementing caching mechanisms at various points in the application lifecycle conveys multiple benefits:

  1. Lower hosting costs & better green credentials – A complete approach to caching will reduce the server time and bandwith used per request. Ensuring only essential levels of resources are consumed.
  2. Improved user experience – faster page loads, increased responsiveness of UI
  3. Search engine optimisation – Google now include page load speed as a metric for ranking web sites
  4. Scalability – Caching can help to reduce server load, which allows provision of more requests per second

Application Layer (PHP)

Acceleration: PHP is a dynamic language and is compiled on the fly, caching the result of this compilation step greatly improves the performance of the application. We currently use APC (Alternative PHP Cache) to achieve this.

Business Logic: Parts of the business logic of the application may involve complex computational functionality, the result of these functions can be cached with APC in order to minimise their impact on the performance of the applicationDatabase Layer (MySQL)

Retrieving data from the database can potentially be an expensive operation. For example a business report may pull in large quantities of data from multiple sources in order to compile and compute statistics. This is an intensive operation for both the database and the application layers; however it is possible to use transient caching to bypass the need for repeated generation of a report past initial generation. We currently use APC to achieve this.

Full Page (HTTP) and Asset Caching

Full Page Caching:There is a caching model built into the HTTP specification. Each time a user requests a web page, the browser caches the response. For an application following the HTTP caching specification, subsequent requests will only make a check to see if the content is changed – essentially bypassing all but the server layer (as such minimising the bandwidth and server time per request).

HTTP Acceleration: We are currently using Varnish which sits in front of the Server Layer and utilises the specifications outlined in full page caching above. As it bypasses all the aforementioned layers, the increases in application performance and efficiency is dramatic.

Content Delivery Networks: Services such as Cloudflare and Amazon Cloudfront function in a similar method to varnish. They can sit in front of any request made to your website can serve static asset files (Javascript and Stylesheets) without the need for them to be downloaded from your server. It addition to reducing the bandwidth used by the application on its server, these services are distributed worldwide and as such improve page load times globally.

Cloudflare carries additional benefits to its CDN properties by providing an additional security layer by preventing access to services from know exploiters and spammers, and a host of other services including analytics.

Come to our second London Sencha Touch User Group Meetup on Wed 4th April 2012

The date for our second event is now confirmed and we’d love for you to join us.

Forward Technology has again been generous enough to provide their venue so join us from 6.30pm onwards for a beer, slice of pizza followed by talks on the Sencha Touch framework.

Our user group can be joined here: http://www.meetup.com/London-Sencha-Touch-User-Group

And the event can be subscribed to here: http://www.meetup.com/London-Sencha-Touch-User-Group/events/55244412

Details of how to get to the venue are below:

Forward Technology
Floor 2, Centro 3, 19 Mandela Street, London, NW1 0DU, United Kingdom
http://forwardtechnology.co.uk/venue

Transport Links:

  • Underground: Camden Town, Mornington Crescent (Both Northern Line)
  • Train: Euston, St Pancras International, Camden Road
  • Bus: 274, 46

We are always on the lookout for contributors so please get in touch if you feel there is something you would like to present: talks from 5 – 30 minutes in length related to anything Sencha Touch or mobile web from your experiences of the framework through to more technical development aspects as well as mobile design patterns and deployment. Please let us know if you want to get involved.

Looking forward to seeing you on the Wednesday 4th April.

Summer Placement

Industrial Placement Specification

Position: Front-end designer/developer
Location: Curtain Road, London, EC2A 3QL
Contact: kirsten@ultravioletdesign.co.uk / patrick@ultravioletdesign.co.uk

Company Background

A small and enthusiastic creative digital agency located in Old Street, East London, UVd combine experience in interactive design and digital technologies. We endeavour to provide creative technical innovation within digital communication.

We specialise in responsive website design, web application development and cross-
platform mobile apps developed with web technologies.

Role Description

We are looking for a candidate with an enthusiasm for front-end design and / or front-
end development willing to take on challenges, exhibiting technical proficiency in front-end development and an eye for design whilst taking into consideration the overall goals of the project and the client’s requirements.
Experience or knowledge in some of the following areas is preferable:

  • HTML / CSS and a good understanding of web standards
  • Javascript development
  • Website design
  • Adobe Creative suite (Photoshop/Illustrator/Fireworks)

Experience or knowledge in some of the following areas is desirable:

  • IA and UX design (wireframing)
  • HTML5
  • CSS Preprocessors (SASS, LESS, Stylus)
  • JavaScript frameworks (jQuery, Backbone.js, Sencha Touch)
  • JavaScript Unit Testing
  • MVC
  • Responsive design methodology and techniques
  • Version control systems (SVN/Git)
  • PHP and Mysql

 

Candidate

The candidate must be willing to develop new skills and have a diligent attitude to work.
After a training / induction period a successful candidate would be expected to be part of
a team on various projects. This would necessitate good communication with the project
manager and the ability to judge development timescales for your own workload. When
available there would be research and development time allocated.

Salary

  • Travel costs and food allowance
  • If the placement is successful there is usually an opportunity to continue working
  • through the summer on a paid for basis
  • Previous candidates have continued throughout the summer period, have worked
  • on a freelance basis throughout their final year and 2 previous candidates have
  • taken full-time employment after graduation

London Sencha Touch user group Roundup

Tuesday evening saw our inaugural London Sencha Touch User group kick off in the salubrious surroundings of the Forward Technology amphitheatre with a few slices of pizza and a beer or two.

After a brief intro the evening kicked off with Patrick Hamann giving us a fairly pain free (tech ‘lite’) introduction to the Touch framework and giving us his opinions on where he thought it fitted within the plethora of development tools available.

Firstly giving us a bit of a low down into the development stack and providing us with some incites into when using the Touch framework might be a consideration, he went on to provide some useful examples of apps that have successfully utilised the framework and touched upon the useful templating and leveraging of SASS that is inherent in the framework.

Slides for Patrick’s talk can be viewed here:

Following Patrick, Matt Spence from the University of Kent providing us with an interesting view of how their dev team were pushed to consider developing ‘something’ mobile for the university. Whilst he admitted this wasn’t the best approach to starting a project he went on to demonstrate how, with little development time available, his team were able to produce some rather useful student tools such as building locator (using maps), desktop availability (how many desktops are available in the various public spaces) and timetabling accessed via a student login. Matt demonstrated how the readily available university data can be made available as a useful mobile service for their students and how the rapid application development nature of Sencha Touch enabled them to get their mobile ‘something’ out to a testable market within a 4 week period. We look forward to seeing the results of the next 4 week sprint on the project.

Slides for Matt’s talk can be viewed here:

Rob Squires completed the trio of talks with a discussion primarily focussed on building cross-platform mobile apps using Sencha Touch 2.0 but also giving us a more technical ‘under the hood’ view of the framework. Rob showed us a re-usable technique he had developed utilising the MVC nature of the framework to tackle various challenges that building cross-platform apps can throw such as differences in UI/UX that mobile users come to expect with their particular flavour of devise and OS.

Slides for Rob’s talk can be viewed here:

Some Doctrine 2 Best Practices

Doctrine 2 has a very powerful database abstraction layer and features an Object Relational Mapper (ORM) that makes it very easy to manage relationships between the data in your application and provides tools that aid rapid application development (RAD).

With Doctrine also comes DQL, a powerful language for querying your object models,  which is similar to SQL.

Use of Doctrine abstracts away the database concepts of tables and columns, rather you think in terms of objects, entities, properties and relationships. While this is very useful, it is very important for the developer to have an understanding of the underlying SQL that is generated from using the entity manager/DQL and querying your objects/entities.

Without an understanding of the code that Doctrine generates, it is relatively easy to build an inefficient and slow application, here are a few pitfalls that I have found are easy to fall into, and some tips that may be useful for people starting with Doctrine, or if you are trying to get a little more performance out of an existing application.

For the rest of this post I will use the cookie cutter example of a Blog website with article, user and comment object models (entities). In terms of object mapping we will assume all mapping is specified with the default (lazy) fetch method, and MySQL as our DB.

1. Always write a DQL statement for querying your object models

Doctrine repositories provide some ready made methods for fetching your objects such as “->findAll()” and “->findBy()”. These provide some convenience and brevity when initially developing your application but use of these functions is less flexible when further developing your application and can lead to some of the pitfalls below.

By writing the DQL yourself, you will expand your understanding of Doctrine, you have more control of the data you are trying to query and people reading your code will have a better understanding of what you are trying to do (and will find it easier to update and extend your code).

2. Beware of lazy loading when querying entities with associations

If you do not specify an ‘eager’ fetch in your object mapping, or do not explicitly fetch your relationships in your DQL statements (or if you query your objects using the Doctrine methods mentioned in point 1) Doctrine will not fetch those associations in the SQL it generates. This is helpful as you do not want to be loading resources you do not need, however when you call a related object, Doctrine needs a method of fetching these objects and it does this by lazy loading through proxies.

For example if you have an article entity, with associated comments and you want to display a list of all your articles with number of comments on the front page of your blog, you may do something like this (this code is purely for demonstration).

$articles = $article_repository->findAll();

foreach($articles as $article)
{
    echo $article->getTitle();
    echo count($article->getComments());
}

Using this code, Doctrine will initially generate a query for all the rows in the article table. As we have not ‘fetched’ the comment association, Doctrine will lazy load in the comment object for each article via an additional SQL statement. For a table containing 10 rows, this will result in 11 database queries.

//$em is the entity manager
$qb = $em->createQueryBuilder();

$qb->select('Article', 'Comment')
    ->from('Entity\Article', 'Article')
    ->leftJoin('Article.comment', 'Comment');

$query = $qb->getQuery();

$result = $query->getResult();

return $result;

Instead, by using DQL and specifying our relationships, we can use the above code to fetch the same data with 1 query vs the  11 (unnecessary) database queries generated previously. This problem grows with each additional row in a given database.

3. Use array hydration for read only actions

The Doctrine documentation recommends the use of array hydration for read only actions, this is in part due to the extra overhead (increased memory needed from loading proxies and the like) associated with hydrating objects.

If you are just displaying lists of items, or lists of entity properties for a single item (for example a product page, a list of recent blog articles, or indeed most front end operations!) you can use:

$query->getResult(Query::HYDRATE_ARRAY);

This approach can also prevent any accidental lazy-loading problems that may arise as discussed previously (due to the lack of proxies!)

4. By default Doctrine will fetch all of the properties for a given entity

This doesn’t exactly fall under a best practice, indeed making any changes here too early in the development cycle would fall under premature optimisation. Nonetheless consider the following:

$qb->select('Article')
->from('Entity\Article');

It is somewhat wasteful in terms of resources to fetch data from your database that you aren’t going to use. The above code snippet would fetch all the properties for the article entity.

Rather than selecting the whole object, in DQL you can specify specific properties to return in your select statement:

$qb->select('Article.title')
->from('Entity\Article');

However this will always return a flat array, regardless of relationships between your entities. Instead you can select and hydrate partial objects in your DQL, which will give you an object or a nested array representing your object graph (depending on the hydration selected)

$query = $em->createQuery("SELECT partial Article.{title} Entity\Article Article");

As stated in the Doctrine documents it is important to note here that this optimisation can lead to more fragile code, it may not always be clear (especially if working as part of a team, and working code written by others) that object properties have not been fetched.

5. Use prepared statements

Using prepared statements helps to prevent SQL injection attacks that have proven problematic for developers and businesses alike – Sony notably exposed a lot of user data in Summer 2011. See below for a quick example of how to use prepared statements in Doctrine.

$qb = $em->createQueryBuilder();

$qb->select('Article', 'Comment')
    ->from('Entity\Article', 'Article')
    ->leftJoin('Article.comment', 'Comment')
    ->where($qb->expr()->eq('Article.title', ':filter_title')
    ->setParameter('filter_title', $some_user_input);

$query = $qb->getQuery();

$result = $query->getResult();

return $result;

The Doctrine documentation provides a more in depth explanation for achieving this.

6. Be aware of what Doctrine is up to

If you are using Symfony 2, you can use the in-built profiler for monitoring the number of queries generated by doctrine. If you are using Zend Framework you can refer to my previous blog post covering some methods for profiling doctrine 1 or 2.

 

I hope these tips prove helpful if you are just getting started with Doctrine, or if you have been using it for a little while. If you have any tips of your own let us know on twitter @uv_d or leave a comment

Come to our first London Sencha Touch User Group Meetup on Tues 24th Jan 2012

We’ve got a great venue sorted and finalised a date of Tuesday, January 24, 2012, 6:30 PM to come and chat, share, listen and learn about all things Sencha Touch. If you are interested in cross platform mobile development (native and web) built in web technologies such as HTML5 and JavaScript then please come and join us.

Our user group can be joined here: http://www.meetup.com/London-Sencha-Touch-User-Group

We’ve been lucky enough to have Forward host the event in their amphitheatre in the heart of Camden. Details of how to get there are below:

Forward Technology
Floor 2, Centro 3, 19 Mandela Street, London, NW1 0DU, United Kingdom
http://forwardtechnology.co.uk/venue

Transport Links:

  • Underground: Camden Town, Mornington Crescent (Both Northern Line)
  • Train: Euston, St Pancras International, Camden Road
  • Bus: 274, 46

Being our first event we will be starting off soft with overviews into Sencha Touch and mobile development with an aim of getting a feel from the community as how we want to structure the events and what we all want to learn and share with each other. With that in mind we are on the look out for those of you who want to give a talk at this or future events. They can be anything from 5min lightening talks up to 30min in-depth slots: show us something you’ve worked on or something neat that we’d find useful. Please do get in touch if you want to contribute (it means you wont have to listen to us too much!)

We’re really looking forward to meeting the rest of the Sencha community in London and learning more about mobile development.

UPDATE…. WE HAVE AN AGENDA:

We have 3 sessions planned for this event each lasting 20-30 minutes with an open floor Q&A session following each. We will start the group with a beer and a slice of pizza and move onto the 3 main sessions detailed below:

An Introduction to Sencha Touch

Patrick Hamann is a Front-end developer living and working in London with a keen passion for creating great mobile experiences using HTML5 frameworks. His talk will be a taster session introducing you to Sencha Touch giving some insight into why you might consider it as a solution.

  • What is Sencha Touch?
  • A walk-through of the Sencha Touch structure
  • Capabilities and UI features
  • Real-world examples of it out in the wild

Kent Mobile: Building a mobile “something” for the University of Kent

Matt Spence is from the IS web team at Kent University and will be providing some incites into their experience with Sencha Touch.

  • The pressure to deliver something on a mobile platform
  • How we arrived at Sencha
  • What we’ve done
  • Where we’re going

Building cross platform apps using Sencha Touch

Rob Squires is a Lead Developer with UVd with a penchant for utilising well established programming methodologies with new technologies. He is a Sencha fan and keen squash player.

His talk will focus on some techniques and considerations involved in building cross platform apps using Sencha Touch

  • A quick look at common cross platform challenges
  • Some techniques that could be useful for a Sencha project requiring cross platform deployment

Google to penalise websites that are not mobile friendly?

GOMO

Having spoken to our SEO specialist last night I was intrigued enough to do a bit of digging around Google’s position on ranking the usability of websites when viewed from different devices and how this fits in with their ranking algorithms. From an SEO perspective, our guy claimed that very soon Google will start penalising websites which are detrimental to mobile experiences.

First port of call for me is Google’s very own initiative GOMO, a pretty straightforward but useful site which lays out the business case for making your website mobile friendly, describes some of the basic principles of how to go about producing mobile friendly experiences and links to various resources for further reading/research. As a side note, when you get a chance, take a look at their site on your mobile devise as they have gone for a separate mobile site as opposed to a responsive solution and you can tell by the user experience and performance: it’s a nice example of an effective mobile website (yes I know that sounds like stating the bleed’in obvious given the context).

The ‘Gomo-Meter’ is a useful tool for testing how mobile friendly a given website is. It provides a scoring mechanism, summary report and visuals as well as a rather useful detailed pdf report providing guidance on improving the mobile experience of the site you are testing. If you are digital agency such as us trying to sell your mobile website design/development services there is nothing better than a report generated by Google, demonstrating how (badly) a potential client’s website performs on a mobile device and outlining how best to remedy the problem/s. To give you an idea I ran the BBC website through the metre (see below):

gomo-bbc

At first, when our SEO guy mentioned Google might start penalising websites with poor mobile experiences we were unsure how they would go about it. To quote Pete “How do you write an algorithm for that?” but Patrick’s response “If anyone can write an algorithm for that it’s Google” just about hit the nail on the head. This is bread and butter for Google.

Having thought about this some more, there are a number of rudimentary tests which could be easily performed, testing the 2 fundamental principles of good mobile experiences:

  • How fast does it load?
  • Accessibility (is the content fluid and viewable on a mobile without scrolling all over the place and are interactive elements given enough space?)

As we know, the former is already performed by Google and the latter is not so difficult to envisage. Other good design practices for mobile web experiences include search, contact and location information being easily accessible from the first page. This is due to the nature of mobile users who want to access information quickly (through the search) and are often looking for contact or location information in the first instance. An automated test for these elements could be achieved if Semantic Web principles (utilising the W3C’s Resource Description Framework or RDF) are adhered to and then tested for by Google.

I’m pretty sure Google are far cleverer than I so I’ll leave it to them to discuss my suggestions further and come up with a beautiful algorithm :-)

For those who are still wondering why Google might introduce ‘mobile friendliness’ to their rankings, the expanding use of mobile devices is becoming something they cannot ignore: growth in smart phone usage, sales via smartphones, engagement via smartphones and growth in web browsing on smartphones is at an exponential rate and as a consequence this is changing the way we all experience the web:

  • Smartphones sales surpassed the combined global market of desktops, laptops and notebooks in 2010 http://bit.ly/gCkOt4
  • Traffic to mobile websites in 2010 grew 600% after tripling between 2009 and 2010 http://bit.ly/cYWwJj
  • Google’s mobile searches grew 130% in the third quarter of 2010 http://tcrn.ch/haMlZm

So to conclude, it looks like our SEO guy might be right, Google appears to be moving toward some sort of introduction of ‘mobile friendliness’ into their rankings. Good news for those of us who have been banging on about sites needing to be accessible across all devices.

Full Frontal 2011

Earlier this month I attended Full Frontal Javascript 2011 conference hosted by Remy Sharp in lovely Brighton. I’ve wanted to attend since it started three years ago but have always had something in the way. So I jumped on a train at stupid o’clock on a very cold and misty morning and managed to finish off ‘Mobile First’ on the commute before grabbing a well deserved coffee with Tom Parker at Coffee@33.

The conference was held in the beautiful ‘Duke of Yorks’ independent cinema in Preston Circus, meaning the comfy sofa seats were a serious upgrade from the normal plastic seats I’m used to at conferences. Perfect to settle into for a day of insightful talks after my early rise. I won’t discuss all of the days content as we’d be here for weeks, but here were my highlights.

CoffeeScript Design Decisions – Jeremy Ashkenas

I was extremely happy to see Jeremy on the bill for Full Frontal, as we’re big fans of Backbone.js in the office and try and squeeze it into every project. That said he was actually on the bill to speak about Coffeescript, a new approach of writing js in a minimal fashion that at the same time tries to smooth out some of the ‘gaps’ in the language. I won’t go into the details of Coffeescript as you can learn more here, but Jeremy explained the core concepts very well; you would hope so from the creator;). The main points I took home were ‘It’s ok to cheat!’ why should we have to re-wrtie the book every time we start a project, but at the same time using Coffeescript we can extend/bend js language to our own.

“HTML5 is about taking js seriously!”

Excessive Enhancement – Phil Hawksworth

Phil’s talk was on a subject very close to my heart about ‘Excessive enhancement’. With the boom of Javascript over the last couple of years, especially surrounding UI development and DOM manipulation, he raised some very important questions. Are we over doing it with our ‘Browser sizzle’? Is it ok to load in 10mb of images on page load for some fancy effects or should be loading them in lazily? Whoever thought the hashbang /#! was a good idea? That last point was probably the most important, are we going to look back on this era of the web as the years of lost content. Start using the History API and .pushState() today!

Scalable Javascript Application Architecture – Nicholas Zakas

The talk I was looking forward to the most, if you’ve ever done any research into js design patterns or application architecture you would have found Nicholas’s name; he didn’t let us down. The talk was full of clear and concise definitions of architecture principles such as the module and mediator patterns and went on to describe how to structure your applications for re-use , extensibility and scalability. It really drilled home to me the importance of planning ahead in your application design to try to loosely couple as many components as possible.

“A scalable js architect allows you to replace any block in a Jenga tower without fear of it toppling over”

If you haven’t already done so, I strongly advise checking out his slides here.

Beyond the planet of geeks – Brendan Dawes

A very controversial move to have a designer most famous for his ‘Flash’ work to talk at a JS conference… but I bet everyone was happy he did! Extremely insightful for me, forcing us to take a step back and remember that our work can still be fun.

“If you don’t go into the woods, nothing will ever happen in your life.”

Drawing from his obsession of collecting weird objects such as pencils, to his work at Magnectic North, Brendan showed us that we should ‘obsess about our tools’. He also expressed the importance of continuing to experiment and explore new technologies and interfaces, canvas, svg e.t.c as they are here to be used today. His talk was summed up by my favorite quote of the day.

“When you get good at something try something different”

Although agnostic of languages or platforms, Brendan hinted towards the end of the Flash era and even stated that although it will always have its uses to become ubiqutus we may ‘need to leave some things behind’.

You gotta do what you gotta do – Marcin Wichary

What can I say, this guy has the best job in the world. For 20% of his time Marcin is one of the interface engineers for the ‘Google Doodles’. Be it Pac-Man or dancing lady, he has worked on some very cool projects. In this talk he showed us how they have used some very clever techniques to overcome the issues you can have trying to serve a project to 6 billion people. For example crushinator which cuts up animations into individual frame sprites that get overlaid on each other or using the devices accelerometer to control submarines. By far the funniest and most interesting talk I have seen this year!

Overall the day was a great success for me. I was very glad that the subjects of the talks were well rounded having something for everything and not just about how we should be caching our for-loop vars. All were educating and insightful, which leads me to think that the lack of video recordings is a shame as this knowledge may be lost forever (but I know that Remy is working on this ☺). Although, at the very reasonable price of the conference I don’t blame the man, in this day an age of conferences costing towards £1000 Full Frontal is an absolute bargain and extremely good value for money. Finished off with good discussions with friends and a nice drink by the seaside. What more could you want from a conf? I’ll definitely be back next year!

London Node.js User Group

Last night we attended the inaugural London Node User Group or to those in the know l-nug #lnug. We have been experimenting with node.js internally here all year and are extremely excited by the prospects it may hold for our clients and us in the future, aside from the fact we love all things javascript and who wouldn’t want to write asynchronous code….

The event was hosted and sponsored by the fine chaps at Forward in their rather swanky Camden offices and kicked off with a lovely round of free drinks and pizza (courtesy of Forward), some great informal networking and discussions surrounding the likes of the new Kindle Silk browser and Facebook’s plans to take over the world. A good warm up to get the brains ticking for the night’s 3 main talks:

Forward’s own Andy Kent started the night with: “Real time data analysis over unbounded streams” a look into the libraries he has been producing internally at Forward for real-time keyword data analysis specifically his Creek streaming aggregator used in production to track popular words and urls across different data streams. We were particularly impressed to see it being benchmarked in production environments clocking 500 hits a second without even flinching.

Garren Smith gave a very insightful talk “These are the ORM’s you are looking for” discussing a few options you have for ORM’s in node to create abstraction layers between your code and your lovely NoSQL db’s for object relational mapping bliss (and we are big fan’s of ORMs). Specifically LazyBoy which he wrote for couch (our personal favorite NoSQL) and we have used for personal projects. Bringing support for defaults, CRUD, relationships (hasmany e.t.c) and couch view goodness.

Rob Tweed finished the night with a rather controversial (well at least at a node group) talk on the Globals database, a very reliable high performance in-process (i.e. no network layer) NoSQL database (tongue twister) that predates the NoSQL era, abstracted from Caché db. My favorite quote of the night was from Rob, when discussing getting into node.js:

If Douglas Crockford is talking about it, then it must be good!

Not for the faint hearted, Globals is a extremely low-level storage engine for which you have to write your api’s yourself, even indexing! However, this allows you to be a lot more flexible in creating your db’s. Rob’s interesting point was that after a lot of testing and benchmarking he found that when using Globals and “blocking” on high performace enterprise level projects, synchronous db calls where faster than the as aysnc possibilities node gives us. This led into a great Q&A session from the all the aync fan boys in the room.

After the event we all headed to the grand union for some post-event discussion, where I discussed the possibility of using Node in some upcoming mobile projects we have, with some great ideas coming from people for real life uses for sockets and node in mobile development, so watch this space.

Overall the event was a great start to what – we hope – will be long running user group, a great community of people all pushing the technology to new and exciting places. Firmly rooting the fact that server side javascript is here to stay, and is ready for production use! A massive thanks to Andrew Nesbitt and Andy Kent and Forward for being great hosts. We’re always happy to meet new friends in the london tech scene so why not follow us on twitter: UVd Patrick Hamann

I will update the post once the slides/videos for the night have been released.

UPDATE: Forwards Flickr photoset from the night.
UPDATE: Video of Andy Kent’s talk “Real time data analysis over unbounded streams”

Search