The conference presentation was very professional with a casual, comfortable feel from the speakers and the audience. Unlike some “conferences” I have been to where sponsors are shoving their products down your throat, strangely, it was almost difficult to get the vendors to talk about their products.
For more information on the Fluent Conference, visit http://fluentconf.com. All of the keynotes and interviews are freely available on YouTube at http://www.youtube.com/view_play_list?p=PL75AC4484E6866741.
The following is a summary of my experiences at Fluent. It is a compilation of my notes from a the conference workshops, sessions, vendors exhibits, and interactions with other attendees.
Front-End Stacks are Becoming Increasingly Complex
I have found it interesting that very few of these frameworks are attempting the toolbox approach in their libraries. Instead, there are numerous smaller, more focused projects that the developers can bring together into their application stack. Sencha and Dojo are the minority in this “kitchen sink” approach by providing the entire application toolbox for their products. It seems as though there are many reasons for projects not taking the toolkit approach, centering around budget and time as well as expertise.
Most of the speakers and attendees have been parting out their applications from a variety of projects and creating incredibly complex stacks. Combining concepts like event dispatchers, model-view-view model (MVVM) frameworks, and other libraries can build some powerful, modular applications. I am very interested to see how Web UI stacks evolves over time.
”Evolving a web language is hard.”
-Dr. Axel Rauschmayer, 2ality consulting
Lean Server Architectures and APIs
My team has been using the term “Thick Client-like” to describe our API-centric, application logic in the browser architecture. However, this term drums up very scary app delivery and maintenance nightmares from the days of old and it made it difficult to describe the approach. At the conference, I heard the term “Lean Server” used by Lea Verou (@leaverou, http://lea.verou.me) in her keynote “Turning to the Client Side” and it fits perfectly with the strategy we are pushing forward to the business.
This architecture moves more of the application processing to the client browser while using APIs to interface with the server and the persistance layers. With browsers becoming more and more powerful and the web being a widely available delivery method, moving the application logic into the browser is very realistic and allows for the creation of wonderful user experiences. Using Lean Server Architectures, applications can have infinite scalability, responsive user interfaces, and reduced server costs. The architecture opens up the ability to minimize the amount of data transferred and can maximizes the usefulness of the application.
Verou also noted how Cross-Origin Resource Sharing (CORS) is changing the web. She mentioned that user’s trust popular 3rd party companies more than someone that they have never heard of. However, as Steve Souders (Google, @souders, http://stevesouders.com) noted in his keynote “Your Script Just Killed My Site“, 3rd party API’s can be a Single Point of Failure (SPOF) for your site. It is important to run your 3rd party APIs asynchronously so that they do not block the execution of your site or app if there is an issue.
The Fluent conference had an entire track dedicated to mobile. This included a wonderful workshop hosted by Maximiliano Firtman (@firt, http://www.firt.mobi) that discussed some of the many challenges of mobile and offered some great bits of information. In his session Firtman estimated that there are 2,000 to 4,000 combinations of devices, platforms and versions with 14 popular mobile browsers at this time. This makes development and testing a real nightmare. Hopefully through innovation, these issues will shake themselves out over time.
The exponentially increasing power of graphics and CPU’s in mobile devices was also discussed as well as the opportunities that this it presents. It is amazing that so much power can fit into a device that can slide into your pocket. However, this power does come with its limitations and bottlenecks. Globally, mobile networks are still very slow and battery capacity by weight has not improved much over time. Definitely some challenges that will need to be faced in an untethered world.
On the web front, the slow implantation of HTML5 features into the browsers was a popular topic. Fortunately, Firtman has put together a wonderful resource for tracking what HTML5 features are available on each mobile plaftorm at http://mobilehtml5.org. The missing or poorly implemented HTML5 fearures have hurt the mobile web and have allowed apps to take over. Ben Galbraith (http://functionsource.com) and Dion Almaer (@dalmaer, http://almaer.com) discussed in their keynote “Web vs. Apps” how the web won this fight before as browsers, hardware and web technologies caught up with what could be accomplished on native platforms on the desktop.
Non-standard Computing Devices
”We didn’t buy Palm to be in the smartphone business.”
-Marc Hurd, Former HP CEO
”Minimize the amount of data, but maximize the usefulness.”
-Tom Hughes-Croucher, Author of O’Reilly’s Node.js, Consultant
It is the convergence of web technologies and non-traditional computer devices. An interesting point mentioned by Tom Hughes-Croucher was that iOS was really our first consumer grade operating system. It is the first OS that your grandmother could use without a lot of help. Before iOS, learning an OS was hard. There were some very interesting perspective that came out of the keynotes in this space and I am very excited to see how these conversations will shape up in the next year.
Maintainable and Reusable Code
“Be kind to your future self.”
-Chris Eppstein, Creator of Compass
Tools of the Trade
”I think we’re seeing the emphasis shift from valuing trivia to valuing tools.”
-Rebecca Murphey, author of the open-source book jQuery Fundamentals
In the past, you would walk into a job interview for a web development job and you would get quizzed about your knowledge of working around Internet Explorer 6 bugs. In my interview for my current position, I was asked by my peers (who have been in this industry a decade longer than I have) a lot about the tools that I use to get my work done. In the end, the question was “how do you solve problems?” Trivia and name dropping don’t get you as far as it used to.
Irish was also very passionate about having developer’s share their development hardware and software setups. He discussed Setapp, a tool where developers can share their hardware and software configurations as well as rating and discussing them. You can find my Setapp profile at: http://setapp.me/users/jziggy618.
Up until very recently, I spent most of my time working in Eclipse due to its Tomcat server and Java integration. Since the conference, I have picked up Sublime Text 2 with many nice plugins to easy my Web UI development. I still run Eclipse in the background to edit, build and serve my Java projects, but I have it set to refresh from the file system so I can work with other technologies in more appropriate IDEs.
Node is such an interesting topic. There was a lot of talk about it and even a full workshop and session track discussing Node.js and its modules at Fluent. I was really hoping these workshops and sessions would give me to the information I needed to bring back a solution to my superiors on how to use Node.js in the business. The Node.js sessions confirmed a lot of my research and learning. Node is a clear performance leader and asynchronous, event-driven programming is the future. But, I am not ready to stand behind it as a viable business solution.
I attended a session led by Sean Hess titled “How to Deploy a Node.js App to Production (And Not Get Fired)”. What I learned was that if I used some of the standard strategies for running a production Node server, I would get fired. In its current state, I think Node.js may work great for a single task application, build process or maybe a small, high-I/O application. Application failure and scaling opportunities are still very difficult to manage. Node’s release cycle is way to fast to manage and the package library is littered with bad, outdated or incomplete projects. I still can’t recommend using it in a corporate environment until this matures.
Products and Frameworks
One of the things that really impressed me at the Fluent conference was that I didn’t have products and services pushed down my throat from sponsors or vendors. The vendors receptions were very casual and comfortable. The vendor hall was much smaller than I would have guessed and it was half full with startups that were demoing their products. These startups had an opportunity to be voted on by the attendees for the best startup and the winner would receive funds from O’Reilly.
I spoke with a variety of the startups including StackMob, kanban2go, xTuple, PicPlum and Ordrin and even had the pleasure of hearing some of them discuss their development stacks. xTuple stands out in my mind as they took an interesting approach of using Canvas to drive their software. They found it to have better performance on mobile devices that plain old HTML/CSS/JS. Kanban2Go is a simple task management system that looks and performed very well. Clipboard.com was another impressive startup from Gary “Dr. Flakenstein” Flake as demoed in his keynote, “Bookmarklets as Applications“, that allows users to post web snippets to a central location. Very incredible work and smart thinking from these startups.
Sencha also had a large presence as a sponsor and I had the opportunity to sit in on Aditya Bansod’s (@adityabansod) demo of their Architect IDE building a mobile application. The Sencha booth in the vendor hall stood out from some of the others. I think they have made it to the big time: their booth staffed with very pretty sales girls and their engineer was all sorts of cocky. That’s OK… When you have a solid product and are making money, you can be like that.
The biggest vendor disappointment was Appcelerator. I stopped by their booth to discuss the future of their products and ask questions to their engineers about how their product worked. Although confident, the guy I spoke with didn’t seem to have much of a clue about what he was talking about and I was immediately turned off. I asked him to address some of the concerns that I had read about performance and bugs and he skated around the issues. They seem to be changing focus to cloud hosting and I’m not sure they know what they want to do with their Titanium product. Definitely didn’t get the warm and fuzzy feeling from that discussion.
Another impressive vendor at the show was Wijmo, a jQuery based library with Dojo-like widgets. I am very excited to explore this library and see what it can bring to the table. It moved up in my list of frameworks to evaluate. Scoring a t-shirt from them didn’t help with moving them up on the list. Yes, I can be bought.
And last… I have to comment on Yahoo!‘s presence at Fluent. It was sad. There wasn’t anything at their both. The people that were there didn’t really speak about anything. But they did have a drawing to get some very boring (and ugly) purple shirts. I guess there were happier days in Silicon Valley for Yahoo!. I’m not really sure why they showed up.
Dojo is being used?!?!?!?! WHA?
Dojo had absolutely no presence at the Fluent conference. There was no mention of it in any of the workshops or sessions that I attended. I am living in a Dojo world in my current position. One of my goals for this conference was to find out who, if anyone, was using Dojo in their development work and see how they overcome the challenges that my team and I have felt with it. I assumed I would be reporting that no one else uses it and that we should move on. However, much to my dismay, it seems developers I spoke with at Fluent are using Dojo full time.
But alas, it is being used. By why does no one talk about it? Why is there absolutely no community on the web? I guess when developers aren’t passionate about something, they just don’t talk about it… or admit they are using it.
NoSQL back to relational databases
When speaking with some other developers and vendors in the “stack talks”, there was an interesting trend of developers starting applications using NoSQL databases, especially with Node.js, and later deciding that their data belonged in a relational database. Many cited that their data “just made sense” in a relational format. This will be another interesting trend to keep an eye on.
Working in or with a company that has it’s development teams lead by the server-side teams is still normal and is usually a challenge for Web UI developers. Although most of the speakers and attendees I spoke with were proud and held their head’s high, there is a general lack of disrespect felt by other technology teams and peers for the UI developers and the work that they do. This is sad and very disappointing, especially when the popular push is for the majority of a web application to live in the client.
Nicole Sullivan’s (@stubbornella, http://stubbornella.org/content) “Don’t Feed The Feed Trolls” keynote was very popular at Fuent. Sullivan spoke about the different types of negative people that can be encountered on a daily basis and to keep from feeding this negativity. This topic doesn’t just apply for technology, but can be aplied anywhere.
”The web is still the widest platform.”
Overall, I was incredibly impressed with the Fluent Conference. I hope that I have an opportunity to attend again next year. This conference was filled with quality presentations and information. Even with over a decade of development experience, I learned a lot and solidified my knowledge in a lot of areas. I highly recommend that anyone who has an opportunity to attend this event in 2013 makes plans to do so.
The following are some resources, links and information I put together from the conference. Obviously this doesn’t include eveything that happened and everyone who spoke at Fluent. I put this together fairly quickly, please let me know if there are errors or issues.
- Fluent Conference http://fluentconf.com
- Fluent 2012 – All Keynotes and Interviews http://www.youtube.com/view_play_list?p=PL75AC4484E6866741
- View other developer’s tool stacks http://setapp.me
- A Baseline for Front-End Developers http://rmurphey.com/blog/2012/04/12/a-baseline-for-front-end-developers/
- The Foamy Rules for Rabid Tools http://www.randsinrepose.com/archives/2009/11/02/the_foamy_rules_for_rabid_tools.html
- Mobile HTML5 Compatibility List http://mobilehtml5.org
- Cube2 – HTML5 First persons Shooter http://sauerbraten.org
- Analyzing Mobile Browser Energy Consumption http://www2012.org/proceedings/proceedings/p41.pdf
- HTML5Rocks http://www.html5rocks.com/
Here is a list of some of the speakers that I had the opportunity to hear from with there Twitter accounts and blogs.
- Brendan Eich @BrendanEich – http://brendaneich.com
- Ben Galbraith – http://functionsource.com
VP, Mobile Engineering at Wallmart Developer news, headed Developer Tools at Mozilla, ran Developer Relations at Palm
- Maximiliano Firtman @firt – http://www.firt.mobi
Author of many O’Reilly books on mobile, Adobe Community Professional.
- Dion Almaer @dalmaer – http://almaer.com
VP, Mobile Architecture for Walmart, Ajaxian co-founder, author of ‘Pragmatic Ajax’ and product engineer
- Eric Bidelman @ebidel – http://ericbidelman.com
Google Chrome dev relations, HTML5 library creator and author of “Using the HTML5 Filesystem API’
- Steve Souders @souders – http://stevesouders.com
Author, Web Performance Evangelist, works for Google
- Dr. Axel Rauschmayer @rauschma – http://www.2ality.com
Popular JavaSript consultant and trainer’s blog
- Nicholas C. Zakas @slicknet – http://www.nczonline.net
- Aditya Bansod @adityabansod – http://sencha.com
Senior Director and architect at Adobe, Microsoft and now Sencha
- Paul Irish @paul_irish – http://paulirish.com , http://setapp.me/users/paul_irish
Author, works for Google, jQuery Board member, and tools enthusiast
- Tom Hughes-Croucher @sh1mmer – http://tomhughescroucher.com
Author of ‘Up and Running with Node’, Technology Evangelist, Web Developer and Speaker.
- Ward Cunningham @WardCunningham – http://c2.com/~ward
Inventor of the Wiki, Wikipedia
- Nicole Sullivan @stubbornella – http://stubbornella.org/content
CSS performance consultant and author
- Lea Verou @leaverou – http://lea.verou.me
Popular developer, consultant who has a library of css3 tools and libraries.
- Gary Flake @flakestein – http://flakenstein.net
Founder Microsoft Live Labs, Yahoo! Reserach Labs and Overture Research
- Theresa Neil @theresaneil – http://theresaneil.wordpress.com
Author of Mobile Design Pattern Gallery and Designing Web Interfaces, Design and Developer Consultant
- Ryan Stewart @ryanstewart – http://blog.digitalbackcountry.com
Adobe, Came from the Flash world to embrace
- Sublime Text – http://www.sublimetext.com
- TextMate – http://macromates.com
Popular developers text editor or OS X.
- CodeKit – http://incident57.com/codekit
A full featured front-end web dev IDE with plugins and tools specifically for the UI Developer
- WebStrom – http://www.jetbrains.com/webstorm
- Adobe Brackets – https://github.com/adobe/brackets
- Mobile Web Simulators – http://www.mobilexweb.com/emulators
Listing of emulators for a variety of devices and platforms
- Adobe Shadow – http://labs.adobe.com/technologies/shadow
Inspection and preview tool for mobile devices
- Grunt – http://weblog.bocoup.com/introducing-grunt
- LiveReload – http://livereload.com
Monitors file system changes, runs any build scripts or pre compilers as necessary and refreshes the browser automatically
- Clipboard – http://clipboard.com
New web snippet tool that maintains not just content, but styling and format as well.
- ringmark – http://rng.io
HTML5 API Compliance Tester
- Brunch – http://brunch.io
An assembler for HTML5 applications. It’s agnostic to frameworks, libraries, programming, stylesheet & templating languages and backend technology
- Blaze – http://www.blaze.io
Automated fronend optimization service that can improve the speed of a website. Recently acquired by Akamai
- Cloud9 IDE – http://c9.io
- kanban2go – – http://kanban2go.com
Simplified task management tool
- Adobe’s HTML Tools http://html.adobe.com/toolsandservices
- http archive – http://httparchive.org/
Stats and trends from the web.
- GeoJSON Viewer – http://shashashasha.github.com/GeoJSON-Viewer/
View GeoJSON feeds over a Google Maps
- JSIL – http://jsil.org
- XMLVM – http://xmlvm.org/overview
The goal of XMLVM is to offer a flexible and extensible cross-compiler toolchain
Frameworks, Libraries and Utilities
- AngularJS – http://angularjs.org
- Wijmo – http://wijmo.com
Basically turns jQuery into Dojo. Adds UI widgets, Theming and uses Knockout at the MVVM framework.
- Sencha – http://www.sencha.com
Framework provider that offers a full MVC framework and widgets for desktop and mobile
- Filer.js – https://github.com/ebidel/filer.js
A library that uses the HTML5 Filesystem API to create a file system explorer using UNIX like commands for the API
- idb.filesystem.js – https://github.com/ebidel/idb.filesystem.js
A filesystem implementation for browsers that don’t support HTML5 Filesystem API natively. Uses indexedDB as a storage layer
- props2js – https://github.com/nzakas/props2js
- Cloud9 Editor – http://ace.ajax.org
- Modernizr – http://modernizr.com
- RedRiver – https://github.com/RiverTrail/RiverTrail
- BrowserStack – http://browserstack.com
Live web-based cross browser testing across multiple desktop os’s using real browsers on the desktop and official mobile emulators on desktop
- WebPageTest – http://www.webpagetest.org
A public website tester and benchmarking tool that runs speed tests from multiple locations using real browsers as end-points.
- perfecto mobile – http://www.perfectomobile.com
Mobile cloud, testing and automation
- keynote DeviceAnywhere – http://www.keynotedeviceanywhere.com
Enterprise-Class Mobile App Lifecycle Management
- Errorception – http://errorception.com
- Jasmine – http://pivotal.github.com/jasmine/
- QUnit – http://docs.jquery.com/QUnit
- Mocha – http://visionmedia.github.com/mocha/