Rey Bango

JavaScript, HTML, CSS & Random Stuff…

Choose 3 Developers You’d Spend a Day With

Here’s a question. Given 3 days and allotted 1 day per developer, which 3 developers would you spend it with? Here’s the caveat, the developers MUST BE in the web development community.

Here are my choices in no specific order:

  • Nicole Sullivan – Why? Because she is a freaking CSS guru and the amount of CSS knowledge I could gain from a day of her mentoring would be so incredibly valuable. She’s also a super-cool person.
  • Nicholas Zakas – Why? Well, there are a lot of people who are really awesome JavaScript developers but few, in my opinion, who have the experience in a large-scale environment. Nicholas has that, as the principal front-end engineer for Yahoo! and that’s knowledge worth nabbing. And if you’ve watched his presentations, you know he can teach.
  • Joe Stump – Why? Because Joe is one of the coolest dudes on the planet and apart from that, he has the knowledge to build out BIG sites. Now that he’s focused on geolocation, getting into that would be so cool. Plus, I know Joe loves kids so I could talk to him about babies and stuff. ;)

Now, my list isn’t meant to leave anyone out because there are a ton of people who I’d like to learn from. This is just a group who I feel, at the moment, would offer knowledge that I want right now and they’re just great for providing that. So hopefully, I won’t hurt anyone’s feelings. :)

So who would you pick?

Tell Me the Development Problems that Script Junkie Can Try to Solve via Solutions-based Content

My biggest focus at Microsoft is the Script Junkie website. We use it to publish really great cross-browser, solutions-based content to help developers improve their JavaScript, HTML, & CSS development efforts.

The Script Junkie team is working on our content plan for the next six months and we’re looking to identify developer problem areas that we can provide solutions for. So I’m reaching out to my blog readers in an effort to understand what type of things pain you. Here are some examples of problem areas that we’ve heard of:

  • Designing and implementing for multiple devices like 42″ LCD TVs to 480px Android device
  • Getting users to upgrade their browsers in a friendly way
  • Developing cross-browser compatible websites with minimal hacks
  • How realistic is it to begin using HTML5 & CSS3 today?

It’s important to note that that we’re not looking for answers to the above problem areas at this time. These are examples to demonstrate the type of concerns we’re hearing. We’re looking for more questions that hopefully we can answer via solutions-based articles and code. So if you have thoughts on wide-spread development problems that you’d like to see tackled, please comment below. Remember that Script Junkie focuses on JavaScript, HTML and CSS so please be sure to keep that in mind when listing out your pain points.

We’ll roll-up your comments and then focus on the top 10 things listed by the development community.

Thanks for your help!

The Essential List of JavaScript, jQuery, HTML & CSS Books to Make You a Better Web Developer

Over the years, I’ve read or been recommended a number of books which are essential reading for professional web developers. I’ve compiled the list of books below to help the community find a comprehensive list of good books that can help them be better coders.

JavaScript

Professional JavaScript for Web Developers – My new favorite book. Almost 1,000 pages of VERY detailed JavaScript information. Written by Nicholas Zakas, Yahoo! Principal Front-end Engineer for Yahoo!’s home page and recommended by the YUI team as well. BUY THIS BOOK!

JavaScript: The Definitive Guide – Considered the Bible of JavaScript for its thorough coverage of JavaScript. You need to have this in your library, even as a reference.

DOM Scripting: Web Design with JavaScript and the Document Object Model – This is a good book to get you familiar with the DOM.

AdvancED DOM Scripting: Dynamic Web Design Techniques

Beginning JavaScript with DOM Scripting and Ajax: From Novice to Professional – The book by Christian Heilmann that really got me past the initial hump of plain ‘ole JavaScript. His writing style is awesome.

Object-Oriented JavaScript: Create scalable, reusable high-quality JavaScript applications and libraries – JUST BUY THIS BOOK! Stoyan did a great job of outlining OOJS principles and it’s been incredibly valuable.

JavaScript: The Good Parts – It’s certainly a good book and I would recommend reading it after one of the more intro books like JS for Web Developer by Nicholas Zakas.

Learning jQuery 1.3 – While covering jQuery v1.3, the techniques discussed are still useful and I still recommend the book highly.

Pro JavaScript Techniques – John Resig’s famous book on advanced JS techniques.

Secrets of the JavaScript Ninja – Still not out but considering that John Resig is that author, it’s sure to be great.

ppk on JavaScript, 1/e – One of the first books I picked up and great overview of the language.

Accelerated DOM Scripting with Ajax, APIs, and Libraries

Ajax Security – Billy Hoffman is the man when it comes to Ajax security and this books shows why.

jQuery Cookbook: Solutions & Examples for jQuery Developers (Animal Guide) – Tips & techniques from the jQuery team rolled up in a cookbook style. You can’t go wrong.

jQuery in Action, Second Edition – This is now updated for jQuery v1.4.x as well as jQuery UI 1.8.x. Definitely a must-have for jQuery developers

jQuery Enlightenment – Cody Lindley did an amazing job in outlining the best jQuery techniques in this self-published book. Totally worth the price.

Test-Driven JavaScript Development

jQuery: Novice to Ninja

HTML & CSS

Web Standards Solutions: The Markup and Style Handbook, Special Edition

Bulletproof Web Design: Improving flexibility and protecting against worst-case scenarios with XHTML and CSS (2nd Edition)

The Art & Science Of CSS – This is one of Sitepoint’s best CSS books. Loved it.

HTML Utopia: Designing Without Tables Using CSS, 2nd Edition – Not being a designer, I thought this book was a tremendous help in understanding how to better design sites.

Head First HTML with CSS & XHTML – This has been my goto book for some time. The Head First books are just so great at breaking down topics in easy to understand ways and this book is no exception.

Introducing HTML5 (Voices That Matter) – Going to get this soon mainly because it’s written by Remy Sharp and Bruce Lawson whom I respect tremendously, especially for their HTML5 & CSS3 savvy.

HTML5 For Web Designers – Just got this on 7/19/10. Need to read it by it’s by Jeremy Keith and he rocks.

CSS Cookbook, 3rd Edition (Animal Guide) – Just picked this up on a recommendation.

CSS: The Missing Manual – I keep hearing rave reviews about this book all over the place.

Site Performance & Enhancement

High Performance Web Sites: Essential Knowledge for Front-End Engineers – Steve Souders is the performance guru and if you want your apps to perform better, get this book and the one right below this one.

Even Faster Web Sites: Performance Best Practices for Web Developers

High Performance JavaScript (Build Faster Web Application Interfaces) – Again, another great book by Nicholas Zakas which outlines very important performance techniques for JavaScript applications.

Designing with Progressive Enhancement: Building the Web that Works for Everyone – Great book on progressive enhancement by the superstars at the Filament Group.

This is certainly not all inclusive and I’m sure there are other books out there that have been great. If you feel very passionate about a specific title, let me know via the comments and I’ll check it out.

The Big List of JavaScript, CSS, and HTML Development Tools, Libraries, Projects, and Books

NOTE: I’ve moved the list to it’s own dedicated page so that I can manage it a little easier so for the most up-to-date list, go to the following page.

I’ve been meaning to do a roll-up of top JavaScript, CSS & HTML development tools that I use or have been recommended to me and after having lunch with my bud Brian Wilpon today, I realized I just needed to do it. He asked me what some of the newer tools are and I think this is the best way to help him (and the community in general). It’s definitely not an all-inclusive list so if you see some that you feel I should add or remove, let me know in the comments.

Here they are by category:

Debugging Tools That Make Life MUCH Easier:

Effectively debugging JavaScript applications is a royal pain in the derriere and to compile that, the available tools just don’t stand up to those used by managed code developers. Luckily, we do have a decent set of tools that lessens the pain substantially. Firebug is definitely a must have since it incorporates so much DOM & XHR introspection as well as the Web Developer Toolbar. Both are simply awesome. I also love Charles for HTTP sniffing and it’s saved my butt when Firebug couldn’t handle it.

IE8 Developer Tools – Microsoft’s browser debugger tools
Firebug – Mozilla’s browser debugger add-on
WebKit Web Inspector – Webkit’s browser debugger tools
Fiddler – HTTP Sniffer. Great for seeing Ajax requests.
Charles – HTTP Sniffer. Great for seeing Ajax requests. (my personal fav)
Service Capture – HTTP Sniffer. Great for seeing Ajax requests.
dynaTrace Ajax – HTTP performance analyzer
Web Developer’s Toolbar – All purpose Firefox toolbar to inspect everything on a page
YSlow – Analyzes page performance based on accepted industry best practices.
PageSpeed – Analyzes page performance based on accepted industry best practices.
DebugBar – An IE plugin that brings advanced debugging features to IE including JS, DOM & HTTP inspection

CSS Editors:

I prefer to write my CSS code by hand. Call me old-school but many swear by the following CSS editors. CSSEdit by MacRabbit (Mac only) is especially loved by many designers.

TopStyle
Rapid CSS
Xyle
Stylizer
CSSEdit

CSS Frameworks:

These frameworks have really taken off. Like their JavaScript brethren, they help to abstract much of the complexity of building consistent layouts in cross-browser fashion. They’re definitely something I need to look into more and from what I’ve read, 960 GS & Blueprint are the ones people are looking at.

960 Grid System
Blueprint CSS Framework
YAML
Yahoo YUI Grids CSS
Tripoli
Object-Oriented CSS

CSS Resets:

Want to minimize browser inconsistencies? Then use a CSS reset stylesheet to specify baseline CSS styles that make browser presentation defaults more consistent.

Meyer Reset by Eric Meyer
YUI2: Reset CSS
IECSS

JavaScript Libraries:

I definitely recommend everyone to learn JavaScript as you’ll need it to be a really effective client-side developer. With that said, a good JS library will go a long way to making your development faster and much more stable. These libraries are all very mature and dramatically help to abstract the complexities of cross-browser development. My personal favorite is jQuery, of which I’m a member of the project team.

jQuery
jQuery UI
Prototype
MooTools
Dojo
YUI
JavaScriptMVC
qooxdoo
Ext JS
Adobe Spry
Raphael.js – simplifies working with vector graphics on the web
LabJS Dynamic Script Loader – Allows execution and load management of JavaScript files
Lawnchair – A lightweight client-side JSON document store
Sessvars.js – Client-side session data management solution
Reactive Extensions For JS
PURE JS Templating Lib
Underscore.js – Utility lib for jQuery that provides a ton of extended functionality

JavaScript Minifiers

Every byte counts when you’re sending files via HTTP and best practices dictate that on a production, you need to optimize all of your files to minimize page load times. Compressing JavaScript code is one of the easiest ways to do that and these tools will help. On the jQuery project, we’ve started using Google’s Closure compiler because it’s generated the best compression. Try all of them out to see which suits you best.

YUI compressor
Closure compiler
JSMIN
Dean Edward’s Packer
Microsoft Ajax Minifer
Dojo Shrinksafe

JavaScript Shells

There are times when you just want to test a snippet of code without actually going through the trouble of creating a full page. That’s where JavaScript shells shine. JSFiddle and JSBin both rock because apart from supporting plain ole JS, they also allow you to include a host of libraries including jQuery, MooTools, & Dojo.

jsfiddle.net
JSBin
mootools.net/shell (MooTools-specific)

Color Management:

As a programmer, I’m insanely color scheme challenged. I’m inclined to mix yellow with mauve causing a concerted moan to occur across the design community. Luckily, these tools help you choose web safe color schemes that are not only consistent but won’t burn the eyeballs off your site visitors. :)

Colourlovers
Kuler

Editors and IDEs:

I work at Microsoft so you would expect me to be a Visual Studio whiz. Not so. Only recently starting at MS, I’ve only dipped my toe in the VS waters. What I’ve seen though has impressed me but I still have a long way to go before I understand it. If you’re on a Mac, though, I do highly recommend both TextMate and Coda. Both are truly awesome. I’ve used Coda a little more because I liked the UI of it a little better than TextMate’s but TM’s bundle system and ecosystem is amazing. You can get code-complete for just about anything via bundles. For Windows, Notepad++ has been just awesome. I wish it had built-in FTP support like UltraEdit.

Visual Studio
Expression
TextMate
Coda
UltraEdit
Komodo IDE
Notepad++
Notepad2
BBEdit
Aptana
Espresso
Sublime Text
WebStorm
VIM
Eclipse
Netbeans
Geany

Wireframing:

I know some of you are cowboys (or cowgirls) and you just want to start hacking. Well, for the truly impatient, these tools at least let you wireframe your pages quickly and easily. I’ve used Balsamiq and FlairBuilder and both rock. It seems that FlairBuilder is really cranking it up with some nice features. Both are Adobe AIR apps which means they’re cross-platform.

Omnigraffle
Balsamiq
FlairBuilder
Visio
Axure

Browser Testing:

I’ve been fortunate to have multiple OS versions over the years. My wife would definitely prefer for me to have a couple of less PCs sitting around but it’s let me test out my web apps on a variety of platforms, browsers and OSes. Shoot, I even have a version of IE6! For those with less hardware, these services should definitely help. Note that services like BrowserCam & Gomez are subscription-based but worth the cash if you can afford it.

BrowserCam
Adobe BrowserLab
Microsoft Expression Web SuperPreview for IE
Gomez
TredoSoft MultipleIE
CrossBrowserTesting
Multi-Safari
Browserscope
Cuzillion
IETester

Testing (based on the list by John Resig):

This was a list I snagged from John Resig. Obviously, he’s done a boatload of testing so I know this list rocks. JSLint is the old mainstay created by Douglas Crockford but other have really become increasingly essential to good testing. jQuery developers should definitely be looking at QUnit & jQuery-Lint. The most complete tool is Selenium but it does have a bit of a learning curve. If you’re into determining JS performance, checkout SunSpider, Dromaeo, Google’s V8 Benchmark and JSLitmus. These measure the performance of the JS engine, not your apps.

JSLint
jQuery Lint
JSUnit
Selenium Core
JSSpec (MooTools)
UnitTestJS (Prototype)
QUnit (jQuery)
DOH Unit Testing (Dojo)
YUITest 2
YUITest 3
Mochitest
ScrewUnit
JsUnitTest
jsUnity
JsTestDriver
Crosscheck
Env.js
FireUnit
W3C Markup Validation Service
W3C CSS Validation Service
SunSpider
V8 Benchmark
Dromaeo
JSLitmus
HTML Validator Firefox Add-on

Documentation:

Yahoo UI Docs
APIs – Most comprehensive list of APIs on the web
jQuery Docs
jQuery UI Docs
MooTools Docs
Prototype Docs
Dojo Docs
JSON Reference
JSONP

Server-Side JavaScript

Rhino
Node.js
Narwhal.js
CommonJS Standards Project
Persevere
Comet

Books

The books below are really a great selection. I have many in my own library and every so often re-read them I’m currently reading High Performance JavaScript by Nicholas Zakas. Another great book is Stoyan Stefanov’s Object-Oriented JavaScript: Create scalable, reusable high-quality JavaScript applications and libraries. I also highly recommend Steve Souders performance book at the bottom of the list. They’re basically the definitive sources for optimizing your web apps.

JavaScript/DOM:

JavaScript Libraries:

HTML & CSS:

Performance:

40-60% of Yahoo's Users Have an Empty Cache Experience

I'm re-submitting this post since I had to blow away the original one when I had the HTTP compression issues. The original, posted on August 19, 2007, can be found via Google cache:

With RIA's becoming so pervasive and developers just going full tilt in embracing toolkits that help build these wonderful apps, its still extremely important to take into consideration site optimizations that actually make your site usable.

Take for example the age old adage of the “files are cached on the user's computer”. Well, Yahoo seems to have done a good job of dispelling that thinking by doing some research that shows that:

  • 40-60% of Yahoo's users have an empty cache experience
  • ~20% of all page views are done with an empty cache

Holy crap! 40-60%!!! Yahoo's audience is so distinct that these figures really are compelling and should be considered when designing your site. Here's the link for the full article:

Performance Research, Part 2: Browser Cache Usage – Exposed!

It really is enlightening.

Pingdom: Web Page Loading Time Tester

One of the more common topics that occurs in the Ajax/DOM/JS space is page load times. This is especially important to the jQuery team and one of the reasons we go to great lengths to keep the library at about 20k total size.

Which leads to Pingdom. If you're interested in seeing how your page is performing, then you might want to take a look at Pingdom Tools. It gives you a great visual representation of how your fast your page loads and the overall size of your page and its components. WebAppers.com has a nice writeup here:

Webappers.com Post

Direct link here:

Pingdom Tools

The only drawback is that you can't use Pingdom for intranet testing. If anyone knows of a good application (other than FireBug) or method of testing page load times in an intranet environment, I'd love to hear about it.

FireBug does have similar functionality but this is a nice alternative to cross-reference with.

Holy Cow! Another CF Big-Wig Using the jQuery Ajax Library

First it was Rob Gonda. Next, Joe Danziger saw the light. Then Dan Switzer joined the fray. Then I find Tony Petruzzi doing some VERY cool stuff.

Now super rock star ColdFusion expert Ben Nadel has joined the growing list of notable CF'ers using jQuery for their Ajax & Javascript needs.

Seriously folks, its a fact that the folks that I've listed are industry respected experts and sharp as a tack. There are plenty of libraries to choose from and they've made a concious decision to use the jQuery in conjunction with ColdFusion for their development efforts. Why? Simple:

  • Extremely powerful with full support for CSS 1-3 Selectors and some basic XPath, allowing you do to expressions like: $(“div:not([a.error])”)
  • Impressive set of DOM manipulators, allowing you do to expressions like this, without batting an eye: $(“select”).append(“

    “);

  • Lightweight (only 19k)
  • Amazing user community
  • Dedicated project team
  • Up-to-Date, consolidated and thorough documentation
  • A ton of UI controls and widgets
  • Tutorials galore
  • Introductory sites for the new jQuery developer

And with Rob Gonda releasing AjaxCFC for jQuery, there's no reason why you shouldn't take a look at this great library.

For more info on jQuery, go here:

jQuery Ajax/Javascript library
jQuery Documentation
jQuery Tutorials

jQuery Plugins/Widgets
jQuery Demos
Learning jQuery Web Resource Center

Visual jQuery
Visual jQuery Magazine

jQuery Ajax AutoComplete Redone by Dan G. Switzer

Dan G. Switzer of qForms fame has recently been cranking up code using the jQuery Ajax/JS library.

He's released a refactored version of Dylan Verheul's jQuery Autcomplete plug-in which:

  • Supports local data array (can now use w/out AJAX).

  • Limit dropdown to XX number of results (good for limiting the results to users)
  • Autofill pre-populates text box as you type
  • New findValue() method can be used to programmatically determine if the value in the box is a valid option. (Useful for verifying the text entered is an existing value option.)
  • Dropdown options now correctly re-position themselves on each display (which means they adjust for changing to the DOM)
  • Dropdown box defaults to the width of the input field its attached to(you can manually specify a larger width as well)
  • Better emulates Windows autocomplete boxes (for example: hitting delete and retyping the same box will now bring back the dropdown menu)
  • Miscellaneous bug fixes

You can see the demo and download the code here:
Dan G. Switzer's AutoComplete Mod

Great work Dan!

jQuery & ColdFusion: AJAX for ColdFusion

I'm a HUGE advocate for the jQuery Ajax/Javascript library. It's lean, fast and VERY feature rich. Its on par with ANY JS lib out there. One of the big thinks lacking, at least from a ColdFusion perspective, was the ability to handle native CF data types and complex objects ala Rob Gonda's AjaxCFC.

Rob & I have been using jQuery for awhile now and even thrown out the possibility of making a version of AjaxCFC that uses jQuery under the hood. Well, Rob went off and actually did it!!! Today, Rob officially announced the AjaxCFC for jQuery Alpha Release. Yep, thats right! You can now leverage jQuery for your CF applications. To quote Rob:

“It's the same Ajax <-> CF integration you already know, but using the jQuery Ajax engine. It supports full JSON and WDDX serialization, has improved error handling, improved log4javascript integration, still supports named and unnamed arguments, and just so you can use it right away, it's back compatible with the DWR syntax.”

This is great news and truly validates jQuery's power and flexibility. For more info, jump over to Rob's blog.

For more info on jQuery, go here:

jQuery Ajax/Javascript library

jQuery Documentation
jQuery Tutorials
jQuery Plugins/Widgets

jQuery Demos
Learning jQuery Web Resource Center
Visual jQuery

Visual jQuery Magazine

Doing Ajax? YOU NEED TO GET THIS!

Get FireBug 1.0 (beta)

If you've been doing any form of Ajax development, you know how invaluable an HTTP sniffer & DOM inspector is. And quite honestly, I've found none better than the FireBug extension in FireFox to handle these tasks. Its a nice little plugin that sits unobtrusively until you need it.

Well, Joe Hewitt, the author of FireBug, has released an open beta of the anxiously awaited FireBug 1.0. This is a MAJOR revamp of the original version and a must download if you're doing any type of Ajax, CSS or DOM manipulation. Trust me when I tell you that this plugin is invaluable and you will end up using it all of the time.

Get FireBug 1.0 (beta)

THE BIG LIST!

My BIG LIST of JavaScript, CSS & HTML Development Tools, Libraries, Projects, and Books.

Constantly updated with the latest and greatest tools. Check it out!

Contact Me

AIM: iamreybango
GTalk: reybango at gmail dot com
GMail: reybango at gmail dot com
Twitter: @reybango


Twitter

Rey Bango is Digg proof thanks to caching by WP Super Cache