Top
Welcome

Hi. My name is Simon Hawkins. Here I share ideas on technology & business. For work I run a software business. When the internets are off entertaining a 3 year old occupies quite a bit of the time.

Thanks for dropping by.

Links
Interesting articles
Twitter

Twitter Updates

    follow me on Twitter
    Powered by Squarespace
    Tuesday
    05Jan2010

    Javascript - The Final Big Language FBL

    JavaScript will not just be the NBL (Next Big Language) it will be the FBL - Final Big Language.

    Big statement, but I think the pieces are falling into place to make this happen and I think Node.js will be a big driver of this process. It will be the driver for JavaScript server side as Rails was for driving Ruby for server side development.

    Rails crystallised many great ideas in how to develop web applications and Ruby's design allowed this to be coded in a very clean way. Many of the ideas had been around for a while but it took DHH using Ruby to seed the community around a Rails. Just look how it's transformed web development over the past 6 years, and how it has influenced so many other frameworks in other languages.

    I see node.js as the seed for JavaScript on the server side. OK it's lower down the stack than Rails, but it's seeded the idea of what is possible with JavaScript on the server, just look at how interest is developing. Already frameworks taking the best of Rails/Django are starting to appear running on node.js, and the performance for such young frameworks hint at what will be possible in the near future.

    The crucial factor in JavaScript being the FBL is the server programming language now matches the client. Do not underestimate the impact of this. Since web development began we've moved through various languages server side...  PERL, Java, PHP, ASP, Python, Ruby, and many more. On the client side we've just had JavaScript since 1994 - 16 years! (ok Microsoft did have a go with VBScript in the browser, enough said).

    Once you can develop on the server and client side in one language, unless the client side changes, it would seem unlikely on the server side you would move on to another language. As a developer why would you go from working with one common language and common set of libraries covering both server & client side to learning a separate language when you are still going to be developing in JavaScript on the client side. The benefits of a new server side language would need to be substantial to break from having one consistent language.

    I'm not saying JavaScript is the 'best' language (however you define that), just that it will become very popular.

    node.js will lead this, event driven server side programming that by it's nature allows very high performance (even for such a new system), and JavaScript provides a very natural environment for callback based development. Take a look at the chat example to see how the environment provides such a natural fit and the code reduction that comes from this.

    JavaScript is being built into many technologies, just look at CouchDB using JavaScript for it's view language and as I've previously written, JavaScript in Yahoo's query language and many other services & obviously the browser.

    How about developing apps for iPhone & Android in JavaScript. No problem just take a look at Appcelerator

    The progress seems unstoppable, will we all be JavaScript developers in the future?

    Wednesday
    08Jul2009

    Google Chrome OS - The most interesting bit

    Well Google have gone and announced they're creating their own operating system. This is big news in itself and is being covered all over the web, but I think the most interesting part of the announcement is where they state;

    Google Chrome running within a new windowing system on top of a Linux kernel.

    Google are not going to use X Window System!

    They're going to provide their own windowing system and they are going to open-source the code. This is huge, X has so many limitations and issues. Tweaks and workarounds like the Direct Rendering Infrastructure to take better advantage of video hardware are being made, but these are all hamstrung by they underlying architecture of X11.

    As one of the Apple Quartz developers, Mike Paquette explained about Apple's decision to develop Quartz rather than use X11;

    once Apple added support for all the features it wanted to include into X11, it would not bear much resemblance to X11 nor be compatible with other servers anyway.

    With Google providing a new window system, they have the opportunity to design from scratch a modern architecture for a windowing system. To take advantage of modern video hardware, deal with multiple displays, handle displays DPI correctly, font handling at the lowest levels. All without having to take account of a windowing architecture designed in the 80's where even the lowest power graphics chip of today would have been unimaginable.

    With a whole open source operating system based on this being released with at least one large example application (Google Chrome) maybe a real competitor to X Windows will emerge, and adoption by other projects will occur?

    I'm looking forward to seeing this happen.

    Saturday
    06Jun2009

    Google App Script - bigger than Google Wave?

    Google made an announcement of a limited test of App Script at the same time that Google Wave was announced. Wave gained much of the attention but App Script has the potential to be far more important. Initially App Script is just available in Google Docs  spreadsheets for a limited number of users, but this will expand over time.

    So what is it?

    Well App Script allows you to write functions in Javascript that run directly on Google's servers. Just to repeat the code runs on Google servers not in the browser. This really is the next step in the 'programmable web'. So now instead of having to write a full Google App Engine application or set up Amazon EC2 instances with a full server environment you can just write a Javascript function and have it running on Googles servers. (Yahoo are also providing a service where you write Javascript that executes on their servers - YQL Execute)

    This will allow mash-ups on the server side, whereas currently mash-ups have resided within the browser. As more web services allow server-side scripting the web really will turn into a fully scriptable environment. Previously applications that would have required complete custom development will just require integrating together of sevices with scripting to provided the desired application.

    With Javascript becoming the universal language and JSON providing the standard for data transfer along with oAuth for security - all of the pieces are falling into place to provide a complete distributed development environment hosted within the cloud and based on the cloud, rather than the old model of a single development environment by a single supplier.

    The potential for this cannot be overestimated, Google Wave is fantastic but with App Scripting it will be just a messaging service that is tied into cloud hosted applications using many other services.

    Wednesday
    27May2009

    The Big Switch

    This is a talk I gave at the Geek Night in Oxford. Slides of the talk.

    Changes of computing model are rare in our industry. In the roughly 50 years our industry has been in existence, we have had only 3 computing models, and we're just at the start of the 3rd. A change of computing model is a big thing.

    The first model of computing was Centralised : Mainframe & Supercomputer - Big glass walled rooms, very expensive, very reliable, with everything centrally managed.

     

     

    The second model of computing was client/server : The 1980's saw the emergence of personal computers and unix workstations. This model was built on the idea of relatively low cost, simple systems with typically one server dedicated to a single application. This flexibility and low cost along with the GUI on the client PC saw a huge growth in new applications.

     

    The mid 1990's saw the development of web applications, the start of the Internet Model. The number of users able to access these systems massively increased and the servers needed to be more scalable, reliable and have better management capabilities. Suddenly running a web app required the discipline of the old mainframe world. This would lead to the emergence of a cloud computing marketplace.

    This has many parallels to the use of electricity back in the 1900's. I recommend to everyone reading 'The Big Switch' by Nicolas Carr. Nicholas describes in great detail how before 1900 every manufacture was in 2 businesses. The product they were producing & energy production. Initially energy production was mechanical then electricity took over as a far more controllable source of energy. Electric energy had the unique property that it could be transmitted very efficiently, allowing the source of energy production to be distant from it's use. It also meant that production of electricity could be centralised.

    Initially companies could not imagine outsourcing the generating of electricity to another company. Factory owners knew that a glitch in the power supply would bring their production to a halt. At the turn of the century virtually all electric was privately produced. Thomas Edison at General Electric was making huge profits supplying all of the hardware to set-up these private electric plants.

    But two technologies where to change all of this, the steam turbine and alternating current.

    These two technologies allowed for massive power stations and distribution over far greater distances. These immense stations would be able to supply the demands of even the largest companies, and at far lower costs than possible before. A positive feedback occurred. As more customers are served the efficiencies increase, reducing prices, attracting more customers. By 1920 70% of all US electricity production was by the utilities, at the start of the century it was virtually zero.

    How does this relate to EC2 & App Engine?

    Using Amazon's EC2 (Elastic Computer Cloud) your working with machine images (just a disk image and config files) that can be run on servers completely separate from Amazon.

    This flexibility is where the generator from Aldi comes in. Standards in electricity means your electrical appliances can be plugged into the mains or you can pop to Aldi, buy a genny and plug your appliances into that. Or you can hire a genny from a hire company - whatever the appliance will work. Likewise using EC2 the option is always there to be able to run your service locally or at another hosting company with minimal effort to move the images around.

    Compare that with Google App Engine. Being tied to the App Engine datastore, and other requirements on their Python and Java environments means you are developing your app to run entirely on their system. For deployment of a live application your only option is App Engine. If you're developing a new product in your start-up would you feel comfortable betting your whole company on App Engine and the services it provides.

    With EC2 your just renting a machine to run your image and you can do that via many routes.

    You can see the effect of this today, with the number of commercial businesses using each system. Until their are other routes to hosting App Engine applications in a live environment I can not see App Engine exploding in business use.

    What does it mean for your Start-up / Business?

    If you are not considering using a hosted service, a competitor will be and they will end up providing the service at lower cost or making more margin - all the while not having to deal with the digital 'power supply' that your company is. They will be able to react quicker as they are running one business while you are running two.

    As were are at the start of a new model in computing there are going to be many options, some of which will be dead ends. For us today it means trying to keep your options open while taking advantage of this new model. You need to consider what your product is about. Which bits are unique, which bits are the energy production and which bits I can outsource to a utility company.

    Virtually all power production went to utilities in just a 20 year period. In IT 20 years is nearly half the life of our industry, the transition to a cloud future is going to be rapid.

    Eventually people began to trust power generation as the utilities proved themselves over time. Even the London Underground stopped generating their own electric, which then resulted in complete shut down of the Underground when there was a failure of the national grid to supply power.

    But as this shows it gets to the point where the risk is so low we just live with it and the odd occasion when it does fail. As the alternative of generating it ourselves or having a backup is no longer economically viable.

    As the reliability of the services increase to the point where you just 'plug' something in and it always works, the same will happen with the cloud. We will end up with very large utility companies with server farms offering services at a cost that is so low any other option will not be economically viable. Just as Edison was trying to hold back the inevitable;

    As Nicholas Carr puts it:
    "In the end the savings offered by utilities become too compelling to resist, even for the largest enterprises. The grid wins."

    Change leads to opportunity. By making the right choices the rewards can be great, just watch out for those other choices!

    References

    The Big Switch Our New Digital Destiny by Nicholas Carr ISBN 978-0-393-06228-1
    Irving Wladawsky-Berger : The emergence of a new model of computing

    Images

    Mainframe : http://www.flickr.com/photos/carrick
    Client/Server Room : http://www.flickr.com/photos/sylvar
    'Cloud' Server room : http://www.flickr.com/photos/torkildr
    OS/2 Image : http://en.wikipedia.org/wiki/File:OS2_2.0_upgrade_box.png
    Generator: http://www.flickr.com/photos/timdorr
    FerryBridge power station : http://www.flickr.com/photos/37117644@N00
    Large server room : http://www.flickr.com/photos/mrfaber
    Electricity Pylons : http://www.flickr.com/photos/sunpig

    Friday
    15May2009

    Javascript is slowly becoming the next big language (NBL)

    Over time the perception of Javascript has changed from a language suitable for small bits of coding on a web page, to one where serious applications can be developed. With the language having an EMCA standard and with Douglas Crockford's excellent book JavaScript: The Good Parts showing you how to make the most of the language while avoiding the unfortunate historical yuckky bits, it has the underlying capabilities of a serious language.

    With the AJAX movement and serious clients (GMail & Google Calender to name two) demonstrating what's possible in the wild. We also have new Javascript engines coming up in several browsers (Chrome, Firefox & Safari) that are an order of magnitude faster in performance. These will allow for a major jump in the functionality of applications running in the browser.

     Below I've listed just some technologies that are programmed with Javascript. 

    Client Side

    Server Side

    • Over 35 different options for running JavaScript on the server. Take a look at the list on wikipedia

    Just a couple of highlights from the list are;

     

    What other language allows you to target so many platforms, from a web browser to a mobile phone to a web server. Also with services like the Yahoo YQL, you can now run fragments of Javascript on their servers rather than developing whole applications.

    With application and srvices created as mash-ups of other services, in the future Javascript is going to be the glue on the server as well as the client that will tie it all together. Yahoo YQL hints at where this might go in the future, where your 'application' is just Javascript code located across many servers coordinating other services, rather than a whole application installed on a server.

    This is why Javascript will be the NBL. Not because it's the 'best' language, has the most features, is the only language developers want to use. But because one language will allow you to target so many platforms. As the javascript engines performance increases it will move into more and more development areas, it is only a matter of time...