Christian Heilmann

Author Archive

[open tabs] some reading I did lately and you can now, too

Saturday, January 7th, 2012

My 2012 wishlist – don’t make the unicorn cry!

Monday, January 2nd, 2012

This year I will not go for any new year’s resolutions. In a market where the hotness is responsive design resolutions seem a bit outdated. Instead I will list my wishes for 2012. Wishes are a good thing as they bring you on the way rather than the burden of resolutions (which we always hush up in case we didn’t deliver them). So with this in mind, here’s me making my wishes for 2012.

chris heilmann holding a pink unicorn telling it my wishes

All of these are short and – in some cases – do need more digging and I will write longer posts about my views later.

I wish 2012 is the year where we help projects with code instead of telling them off

This happens all the time – someone releases something cool on Github and tweets about it. Then the avalanche of better-knowers rolls over twitter pointing out that the author should use “this or that” otherwise it is “useless” and “not accessible” or “hurts the web”. Well, the code is on GitHub, if it is as simple as adding more semantic markup I really wished people would just do it, send a pull request and fix it for the web. Bickering hurts the web, too.

I wish 2012 to be the end of memes

Being on b3ta for years I saw my share of memes and they can be funny in a small community. On the web as a whole they are pointless noise. This applies especially to ragefaces. Using ragefaces in your tutorials or presentations is the equivalent of coming to a party with nose goggles or a hilarious fake arrow through the head. A sad attempt at humour.

I wish 2012 to be the year the accessibility world stops shooting itself in the foot

As Karen Mardahl wrote inspired by some of my very old presentations out there, accessibility on the web should be about conversation and teaching and not about fighting for a cause that falls on deaf ears. This is big, and I will write more about it. Fact is that if a11y doesn’t get their act together it will fall even more to the wayside than it does right now. Nobody likes grumpy complainers with no better solution.

I wish 2012 to be the year where identity and who owns it matters

I am very happy to be part of a group that right now works hard to solve the issue of identity on the web. We live in very dangerous times and the concept of “Everything for free, always” comes with a lot of information you give out without wanting to. Let’s take back who we are on the web and let’s stop teaching people bad practices when it comes to asking for more access. Passwords must die.

I wish 2012 to be the year where people expect more from conferences

I spent most of my time last year on conferences. Being on the road that much and spending the time to write a new talk and release the slides and audio immediately afterwards is a full-time job. I wonder if it is worth it when I see people seeing repeat talks and not getting the recordings or slides at all and still being “amazingly inspired”. I think conferences should be more than a day off work and I’d love to see people demand more outcome. If it is OK that our twitter streams are clogged up with information about a certain conference when it is running we should also be allowed to see a few things that happened afterwards. Less T-Shirts, more follow-up would be good to aim for. If speaking about tech topics is 90% entertainment then I’ll care less about it in the future.

I wish 2012 is the year were we stop discussing diversity and make it happen

This has been an endless topic and lately lots of heated debates. Many a righteous person not part of the group they are defending swung the banner and fought the good fight in many a tweet and blog post on their personal blogs only read by a few people. This can easily look like grandstanding and doesn’t help the cause. I, on the other hand, have happily seen the rise of gender diversity and race diversity in speakers and publishers on the web lately and my wish is that we concentrate on supporting and nurturing and thus making the issue redundant rather than re-heating it over and over.

I wish 2012 to be the year of spring cleaning in the web education space

The web of information how to learn our jobs is a total mess now. Tutorials have become the new “eyeball content” and it doesn’t matter if they teach something as long as they get people to click them. After more than 10 years of teaching people what web development means this is a sad state of affairs. Where should newcomers go to learn? What do they find first? Why do we have many competing “beginner curriculum” resources? We need to collaborate more and try less to build an education brand around courses to pay for that don’t relate to the official academia or give you a certificate at the end that is worth something. Teaching should not be the new SEO, we should be mature enough to collaborate and point at one, constantly updated resource.

I wish 2012 to be the year of “viewable in any browser and hardware”

Right now I am getting flashbacks to 1999 when “works in IE6” was the new hotness and it was totally OK to build for one browser as it is fastest and coolest and most easy for developers. Let’s not repeat that mistake. I can see the rise of WebGL to lead to a lot of “your video card is not good enough for this web site” and that is not what the web is about.

I wish 2012 to be awesome for all of you

Go out there, write, comment, code, style, give feedback, encourage and support. Everybody has something good to give to the web and it is far too easy to be a bad critic instead of being a supporter. Less bitching, less moaning, less endless fights and more collaborative working and the future is bright.

Remember, if those wishes do not come true…

…you will make a pink unicorn cry, and that will make you a terrible person. Now send this to ten friends (this is how it works on Facebook, right?)

My personal wishes are simple:

  • I wish to spend more time coaching and training other people as public speakers
  • I wish to write and code more and travel a bit less
  • I wish to empower people in other countries to give talks instead of me flying there for a few days and not finding the time to follow up
  • I wish to spend much more time with a certain lady
  • I wish that my dad manages to fight cancer and live a lot longer

[Open tabs] things of note I read and saw lately

Friday, December 30th, 2011

I am right now offline at an airport and closed Aurora for the first time in a few weeks so I had time to read all the tabs I opened but haven’t covered anywhere yet (except for a small tweet here and there).

I thought it might be a cool idea to publish those when I find they pile up as a reading list. Do you agree? Well, here goes, this was open:

  • It is silly but the Tea Rex makes me want to drink more tea. I am also a big fan of the Tea Sub.
  • Jeffrey way has a genius command to start a server for the current directory with one line of code on the terminal.
  • Skepchick has an incredibly annoying article by Rebecca Watson on atheists on reddit being nothing but misogynist ass-hats. Seriously, banter is all fine and good, but making jokes to abduct and rape a 15 year old girl is not really the behaviour open forums should tolerate. Or, if we keep not caring about that we shouldn’t be surprised if the powers who want to censor the internet will get there.
  • URI.js is a script for working with URLs. It offers a “jQuery-style” API to read and write all regular components and a number of convenience methods like .directory() and .authority(). We talked about this at the smashing meetup , and now it is out.
  • Everything for free, always: how Facebook ads show us the sad state of the Internet is a stark reminder that the “we want everything for free” attitude towards the internet as a media is not helpful in the long run. Paying $2 a year(!) could ensure that Facebook is not selling you as a product to advertisers. There was also a great article “don’t be a free user” on that topic on the pinboard blog. My favourite quote was this:
    Most people aren’t willing to pay for services or content on the Internet. There is an expectation that everything should be free, and that at the same time, companies should respect our privacy and keep The Brands™ away from our personal information. It’s not a realistic expectation – something’s gotta give if no one is willing to pay for anything. But most people don’t think about it long enough to realize that.
  • Cedric Dugas published a rant about the Occupy Flash site (I can’t call it a movement) in It’s never been about the open web. Cedric has some great points, especially the washing out of the term HTML5 as anything that was added to the web stack for the last two years. He praises Adobe for turning around faster than the W3C and that Flash’s APIs are much richer. Cedric has some good points but it is a rant. The argumentation is very one-sided and not mentioning Mozilla at all when it comes to the open web is just sloppy. In essence the rant is the same arguments native app developers bring up when they talk about web apps. Things can coexist and – as Cedric rightfully says – using the right technology for the job is part of our task as developers. The main thing he fails to mention is that open web tech is for us to change and be part of. If it doesn’t move as quickly as it should then rants like these and fanboisim like Occupy Flash are to blame.
  • I don’t write “JavaScript” is already a bit older. It is an explanation of a Twitter developer about the lack of semicolons in Bootstrap. In it we learn that JavaScript is forgiving when it comes to syntax and that it is fine to omit curly braces and semicolons as the JS parser does all that for us. And if you don’t agree then you are probably one of those guys who love Crockford and are too strict to be taken serious as web developers anyway. Yesitistotallyfinenottosticktoasensiblesyntax. YoUcANProbaBLYreadTHIS. IFitI5EA5Y4UisTheQuestionWeNd2ask. Personally, relying on semicolon insertion in your code is lazy and the same arrogance we had with table layouts in HTML - hey they worked, why bother doing things in a more maintainable way?
  • Which brings me to a great post that repeats things I have said for quite a while and lived by throughout my career: “My Career Advice: Make Yourself Redundant“. The idea of being the one person who knows something as a means to stay in charge and in a job is outdated and – if you think about it – in a market where the average retention rate of talent is three years borderline ludicrous
  • In “Let’s start recognising the hidden gems within our community” my colleague Robin Hawkes ponders about changes in the awards sites and events of web development and that they should focus on new, unknown people rather than being a popularity contest with the same people year after year. Some good ideas there, but I for one would be happy not to have any awards at all. We are not Hollywood and we don’t need Oscars. Our work should talk for us and not a fake celebrity cult. I remember in the beginning we had “cool internet sightings” web sites and “site of the day” as the topic of on IRCNET. More of those accompanied by a making of would be interesting. Unknown people could show how they got successful by taking a different approach.
  • In “Constructive feedback, not destruction and damnation” my good friend and even better egg Chris Mills talks about the hoo-hah of the “bad speakers list” on Twitter a few weeks ago. He explains why new speakers are needed, why bad presentations happen and how it is our job to encourage and nurture rather than damn new talent who takes the plunge to go on stage and talk about what they did.

What I did in 2011 – talk archive with slides, recordings and videos

Thursday, December 29th, 2011

The year is over (well, almost) and I thought it’d be fun to list the conferences I attended and spoke at. You can see the 2011 archive here or below:

All in all: 29 talks, 15 videos, 23 audio recordings, 37 conferences
Date Conference Location Title Slides Audio Video
01/28Heart and SolePortsmouth, EnglandTime to build a better webslides Vid.ly
02/04FOSSDEMBrussels, BelgiumMoving to the client – HTML5 is hereslides MP3 OGG
02/08London Ajax meetupLondon, EnglandUsing HTML5 sensibly and multimedia on the webslides MP3 OGG Skills matter
02/10MF Boat eventLondon, England
02/17London WebLondon, EnglandFinding harmony in web developmentslides MP3 OGG Vimeo
03/09ConFooMontreal, CanadaMoving from hacks to solutionsslides MP3 OGG YouTube, YouTube #2
03/18LoginVilnius, LithuaniaBuilding a better web with open, new technologiesslides YouTube
04/14Funkas TillgänglighetsdagarStockholm, SwedenAccessibility and web innovation (slides, audio and notes)slides MP3 OGG
04/16W3café accessibilitéParis, France
04/20JAXMainz, GermanyHTML5 Das Web und der Browser als Platformslides MP3 OGG Vimeo
04/20JAXMainz, GermanyWie JavaScript die Welt eroberteslides MP3 OGG
05/10Google IOSan Francisco, CA, USA
05/30WebinaleBerlin, GermanyHTML5, CSS3 und JavaScript fuer alleslides MP3 OGG YouTube
06/07Inspire ConferenceLondon, EnglandMentoring
06/17Web2DayNantes, FranceHTML5 and the web of tomorrowslides videointerview
06/25Converge SEColumbia, SC, USAWith the power of HTML5slides MP3 OGG
07/08Highland FlingEdinburgh, ScotlandModerator
07/16Open Web CampPalo Alto, CA, USAHTML5 battles still to be won (slides, audio)slides MP3 OGG
08/19Kings of CodeAmsterdam. NetherlandsHTML5 - time for some slicker appsslides MP3 OGG
08/20EncampmentLondon, England
09/30Evento LinuxLisbon, PortugalHTML5 and the new challenge of openslides MP3 OGG
10/01JSConf EUBerlin, GermanyCommunity JS reloaded – how to rock as a movementslides MP3 OGG
10/03Future of Web AppsLondon, EnglandGet excited and build things and browser panelslides MP3 OGG
10/05FronteersAmsterdam, The NetherlandsThe prestige of being a web developer slides MP3 OGG Vimeo
10/12Paypal X InnovateSan Francisco, CA, USAThe web and browsers as the platform – exciting opportunities in new web technologyslides MP3 OGG YouTube
10/19HTML5 liveLondon, EnglandRocking the boat and causing a rippleslides MP3 OGG
10/20FrontrowKrakow, PolandFail, Meh or Win? How do you want the web to be?slides
10/25Company brownbag at SabreKrakow, PolandHTML5 101 What it is, what it isn’t and where it might goslides MP3 OGG
10/25Company brownbag at SAPMunich, Germany (skype)HTML5 101 What it is, what it isn’t and where it might goslides MP3 OGG
10/27Velocity EuropeBerlin, GermanyAccelerating the overall web experienceslides MP3 OGG
11/01HTML5 live NYCNew York, NY, USArepeatslides
11/03Mozilla IgniteonlineA fast web for peopleslides
11/04Mozilla FestivalLondon, EnglandBrowserID mentoring
11/11Full FrontalBrighton, Englandmy notes
11/12MozCamp EuropeBerlin, GermanyHow to be a kick-ass speakerslides MP3 OGG
11/20Beyond TellerandCologne, GermanyMoving browsers and the web forwardslides MP3 OGG Vimeo
12/12London AjaxLondon, EnglandRethinking user registration with BrowserIDslides MP3 OGG Skills matter
12/21Smashing Magazine Meetup #3Stuttgart, GermanyStyle and Distance – Moving ahead in web development as a communityslides MP3 OGG Vimeo
12/21 Smashing Magazine Meetup #3 Stuttgart, Germany Working Draft Revision 53: At the Smashing Magazine meetup! youtube

It was a fun year, and I hope you can use some of the information here to get inspired to go out and bring good messages to people out there.

On single page apps

Wednesday, December 28th, 2011

TL;TR: Single page apps are coming and necessary for the web to be an apps platform. We have to battle two main issues: old conditioning of users and sloppy development for the sake of doing something “new”.

At the Smashing Mag meetup in Stuttgart Paul Irish got a question about single page apps and what he thinks of systems like backbone.js and client-side templating. He quoted somebody of Sencha who famously said that if he sees a web site with an empty body tag he is very happy (citation needed, help me). Paul explained that his first reaction to this was disbelief but he started thinking much more about it later on. He then proceeded to show the Google mail blog which is a single page app that has no real HTML source but instead is a small JSON object with client-side rendering to HTML using JavaScript.

All of this made me go “why” and “meh” mostly, but then again, I am old, seen a lot of things fail, had to fight for sensible use of Ajax without breaking conventions (without giving it yet another name like hijinks or something like that) and learned all I know about the web from a web of view-source and links that can be opened in multiple windows and tabs.

But I also am a very firm believer in the web as a media evolving and seeing how web usage patterns change with new consumption devices I am very much aware that there is a need for single page apps.

Why single page apps?

The benefits of single page apps are obvious:

  • The first load sends you the shell of the app and it stays in the browser – this means it can be a very quick experience
  • Subsequent data loading can be done by sending very small JSON objects containing content which is great for traffic-limited or slow connections (i.e. mobile environments)
  • Maintaining everything in JS means you don’t need to have several, specialised developers on the project
  • You replicate best practices of the backend and “higher languages” – especially MVC - on the client, thus making it easier for developers who are used to that to build web apps
  • The experience is sticky – you stay in one interface and load content into it which is what “real” apps do

In essence, all of this is about a snappy interface. You don’t send much data, and you don’t have a reload and interface refresh in the browser.

It is nothing that new

Paul reminisced about the web interface of Outlook which out of a sudden told him that there are new emails to be read without reloading (the birth of XHR which lead to Ajax). I had seen this before XHR in forums and boards by having a frameset and an HTTP meta refresh. Frames in general did a lot of what we are craving with single page apps: we loaded only chunks of data and kept the main interface static on the screen.

The old problems of single page apps

The drawbacks of single page apps are the same we had every time we intercepted the reload of the page starting with frames, then with Flash and later with Ajax. Most of them can be done with native APIs these days (history API is a life saver in this case) but the issue is that we are breaking conventions. People in the past have been conditioned to expect things on the web to work in a certain way:

  • We compete with a lot of useful browser features that we need to simulate:
    • History navigation
    • Preventing wrong loading by hitting the stop button or ESC
    • Loading indicators – is something happening?
    • Bookmarkability
    • Ability to open a link in another tab
    • State retention. When I reload the page I should get back to where I was and not the initial state of the app
    • Timeout detection (browsers tell me when something took too long)
    • Printability of pages (I just printed out a wikipedia entry for my mother)
  • If we don’t change the URL and keep the state of the page we break the web:
    • Sending a link to a friend should get them where we were (unless it is our data behind a login of course)
    • A search engine spider should be able to index the content
    • Conversion tools should be able to get the content and create more accessible versions
    • Slow connections should at least deliver a partial experience. When being on a bad connection (as I am now) I should be able to reload and get more content once I get stuck. I can use gmail even on the flakiest of connections as I can switch to an HTML view and hit ESC when it gets stuck

None of these are insurmountable issues, but it is very easy and tempting to forget about them. This is why we had headless players and redirection scripts in the case of Flash apps. We should be aware of these already solved problems and implement them as a base of our UX considerations.

A shift in the way we use the web

A lot of these interactions above are used by people who have been on the web for a long time. Endless scrolling seems odd to them, they want to see a scrollbar and know how far the page goes. People who started the web on a touch interface or a mobile device on the other hand are confused when they have to click buttons or see a pagination. The old folk of the web have an email client, a browser, maybe a picture viewer and a very sorted download folder. The new folk do all of that in Facebook in a browser and are very happy to never see the page reload or having any of that content on their hard drives.

So to a degree I think it is important that we understand that some of the practices of old are just that – old and possibly outdated. For new users a page reload is as much a confusion point as scrolling and not getting visual feedback that something is loading until it appears is for the old-schoolers.

The new problems of single page apps

That doesn’t mean though that there are no issues with single page apps and a web without reloads. There are quite a few things we have to consider even if we say we build for the new generation of web users exclusively or within a fixed environment.

The first thing is that we are promising a fast web of awesome that is always available and every button does something to the app you are in. This means we need to come up with UX patterns that work with a variety of users and environments. It is not easy to compete with native apps – if we take on that challenge we should excel in it and not do it half-baked.

The second issue is that the web as we have it now is full of bad code. This is especially the case when you rely on third party code without having access to what it does. Unless you run a paid-for app, you will show ads. This is how we work and it is a broken, outdated model. Ads count page views and clicks so you need to find a provider that is OK with you auto-refreshing an IFRAME or something similar. But I deviate from the main point: if the ad code throws an error your whole app could die with it.

It doesn’t even have to be third party code. I can see sloppy code without error detection and fallback being advertised as “teething pains” these days. This is not true. We went through the process on non-reloading interfaces a few times already. A lot of omission of simple condition checking and error messaging is either arrogance or inexperience. As Zach Leatherman put it yesterday arrogant statements like “All of my JavaScript code and 3rd party code won’t have errors, so I can ignore Progressive Enhancement” will come to haunt you as the screenshot of Klout shows:

Klout showing an empty page as there was a reference error in a JavaScript file

Gawker also had that issue and Mike Davies has quite some information as to why relying on JS for your links is an architectural nightmare.

In short – we will now once again face a time of New vs. Old and people building apps seeing their own setup and experiences as those of everyone on the web. We had this with Flash in the past and we had it with Ajax. Now we’ll repeat the long discussions, endless bickering and using technology and interface patterns for the sake of using them instead of where they are needed.

Case in point is the blog mentioned by Paul. I am sure it was used as a testing platform for the single app container of Google. Personally I think there is nothing dynamic in a blog that would really warrant it being an app. Not everything on the web needs to be a new Facebook, Google Reader or Google Mail.

Personally I am happy to load a page and read an article in another tab while it is loading and coming back when the tab tells me it is ready for me. I like my web multitasking. On a mobile device or tablet this is a different issue. But who says that this experience should also be forced upon me when I have lots of space, tabs and a browser that brings me the whole web instead of a single resource?