Adventures with the Skia Debugger

Debugging jank, reflows, etc… The Skia debugger was mentioned a few weeks ago at EdgeConf as a way to examine how the DOM is loaded and processed in the Chromium web browser. Skia is the open source C++ graphics library backing Chromium/Chrome. It comes with a graphical tool used to step through and analyze the contents of the skia picture format. If you haven’t watched this video, I recommend you take a few minutes and watch the first part to understand the context of why the Skia debugger was mentioned and where it might be useful.

Comments    frontend, html, css, graphics, debug

I'll Sleep When I Die - All for HTML5

The following post is a long-winded summary of my experiences over the past year. I started a user group, wrote a book, gave up a secure job, and changed jobs 4 times. All to push myself, get uncomfortable, and better understand the challenges that front-end developers are facing in 2012 and beyond. I gained more than I ever thought possible. Sometimes you have to give up everything to find something. Almost one year ago (September 2011), I started the HTML5 user group in Atlanta Georgia.

Web Performance Testing With PhantomJS

HTTP requests, heavy/unminified resources, and UI thread blocking should be on the mind of every front-end developer. These are just a few issues that can cause serious bottlenecks in page load times. Having a faster load time equals better search engine rankings, higher conversion rates, and an overall reduction in bandwidth costs. I recently took on the task of coming up with an accurate way to measure all the aforementioned things, in an effort to understand which performance tweaks improved page load times and which ones didn’t.

Comments    phantomjs, web performance, testing

HTML5 is Booming in Atlanta

So, all I can say is that the Atlanta HTML5 community is awesome. Today the @atlhtml5 user group has reached it’s 1000th member! From startups to companies in the Alexa top 20 rankings, Atlanta is heading towards a bright future in innovation and the open web. Front-end developers are in serious demand as Atlanta based companies strive to build web applications that are more offline accessible, responsive, and performant. Companies are moving more JavaScript to the browser, and this demands more structured code following MVC style patterns.

Sharing Content with Web Intents

The Intent of Sharing If you employ share buttons on your site, then you might already be aware of the increased load that comes with trying to make your content social. Allowing users to take action on your specific content and “share” it is a common task. Much like linking HTML documents together, we are now linking apps together that are capable of pushing content to a receiving service via the user.

Comments    web intents, html5, share, stats

Sniffing IE9 features while in compatibility mode

Getting the browser version from the User Agent string is one thing. But, when you force compatibility mode in IE, you get whatever version you’re forcing to. e.g… <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"/> in IE9 will cause jQuery’s ($.browser.version, 10) to return “8” :( I started digging through some msdn docs to find various ways of sniffing the actual browser we’re using, even when compatibility mode is forced. This led me to this doc Which talks about how IE9’s Chakra JavaScript engine processes math precision differently (and faster) than the old IE8 JScript engine.

Choppy scrolling on iOS with iscroll and PhoneGap

I ran into a situation this weekend where certain pages of a PhoneGap application were incredibly choppy on iOS versions pre 4.3.x. Apparently, there is a problem with older browsers using CSS3 selectors like div[style*=‘foo’] in combination with other DOM elements. The test case was a little tricky to create, seeing that pinpointing this problem required mucho testing. However, I minimized the markup and CSS to only a few classes and DOM elements.

AeroGear - Mobile, HTML5, and Auwesome

The AeroGear project had it's official launch last week and I want to review what we're doing and where we're headed. For starters, AeroGear is focused on: Education - Screencasts, Tutorials, and Quickstarts for running any (HTML5, Hybrid, Native) mobile solution with JBoss projects and app servers. Innovation - Many of AeroGear's primary goals are to provide HTML5 extensions for web applications, both mobile and desktop based. Community - We already have several community members contributing examples, demos, and other useful resources.

Comments    html5e, jboss, aerogear, mobile

Pushing CDI Events to the Browser with WebSockets

Disclaimer: Minimal load testing was performed with 10000 concurrent WebSocket connections. You can see some true performance numbers here. Here is the demo in action. As you can see on the right, I have 2 chat windows open and on the left we have a member registration. Users are chatting across a raw WebSocket connection and when another user registers, the CDI event is fired all the way through to the browser as a JavaScript alert via the connected WebSocket clients.

Comments    html5, websocket, jboss, jetty, cdi

2011 Year In Review

This year has been a personal best form me. I’ll spare you the long winded summary and get straight to what I actually produced :) Published my first DZone Refcard “Mastering Portals with a Portlet Bridge” Learned that CSS3 is replacing Photoshop Watched the entire Battlestar Galactica series on Netflix. Mourned the loss of Stargate Universe Posted this blog entry and later joined the RichFaces team because of it Realized that my motivation on the portlet bridge project was exhausted However, I proudly took the project through passing the TCK Had a lot of fun with @tech4j creating JBoss’ first mobile web demo Presented at JBoss World for the first time Read JavaScript The Good Parts (again) Dressed up like a white bunny and had some fun with @burrsutter Was in the right place at the right time at JBoss and took a new career path My wife gave birth to the sweetest, most beautiful baby girl in the whole world.