Quality, quality, quality

developer.yahoo.com: “In terms of code minification, the most widely used tools to minify JavaScript code are Douglas Crockford’s JSMIN, the Dojo compressor and Dean Edwards’ Packer. Each of these tools, however, has drawbacks. JSMIN, for example, does not yield optimal savings (due to its simple algorithm, it must leave many line feed characters in the code in order not to introduce any new bugs). …The YUI Compressor is JavaScript minifier designed to be 100% safe and yield a higher compression ratio than most other tools. Tests on the YUI Library have shown savings of over 20% compared to JSMin (becoming 10% after HTTP compression). Starting with version 2.0, the YUI Compressor is also able to compress CSS files by using a port of Isaac Schlueter’s regular-expression-based CSS minifier.”

“Combo Handler Service Available for Yahoo-hosted JS”

yuiblog.com: “We’ve been talking for a long time at Yahoo about the importance of minimizing HTTP requests to improve performance. One important technique for YUI users has long been to use the pre-built "rollup" files (like yahoo-dom-event.js, which combines the YUI Core in a single minified HTTP request) and to create custom rollups that aggregate all of your YUI JS content in a single file. …we’re now able to offer ad-hoc file aggregation — "combo handling" — to file served from yui.yahooapis.com. …Combo-handling of YUI CSS files is not supported at this time [July 16, 2008 at 11:16 am].”

“YUI Local Combo Handler”

Davs Rants: “There have been several questions on how to use the Yahoo! combo handler to serve YUI files over SSL. The Yahoo! combo handler doesn’t support SSL, so I needed another option. I have written an example what shows how to setup a local combo handler and configure YUI 2.6.0 to use it. Currently the example doesn’t work for YUI 3.0.0pr1 but it will once YUI 3.0.0pr2 is released.”

“Enhancing YUI-based Applications With Audio”

Scott Schiller: “For audio on web sites today, developers often display a list of HTML links directly to MP3 files. This method is simple, universally-understood and indexable by search engines, but makes for a confusing and inconsistent browsing experience by default. To have ‘progressively-enhanced’ links to MP3s that will play in-place when clicked, something must intercept the browser’s normal download action and subsequently handle the request; by combining Javascript and Flash to handle the loading and playing of MP3 content, this can be done very effectively.” It’s great to see Scott’s SoundManager mentioned again… for more, see “‘SoundManager 2: Cool New Flash 9 Features’ and other links…” and “Scott Schiller, Douglas Crockford, YUI and SoundManager 2.”

John ResigYes, it’s true: I’m turning an article full of links into another, shorter article full of links…

Buy this book at Amazon.com! I have not updated my résumé in years. I have been doing time in the same W2 labor camp for almost ten years. Since I’ve known me for quite some time, I can tell that I am interested in summarizing my skills because my damn-near ten years of ‘exile’ has produced a revised and improved view of my personal technology plan. This writing here is like a little fire drill to exercise my ability to succinctly communicate the scope of my information technology concerns.

My IT Concerns by Operating System

There are two operating systems that are used for my development work: Microsoft Windows and Ubuntu Linux. Microsoft Windows is required because of its native support for the .NET Framework and Microsoft Office file formats. Ubuntu Linux is required because of its friendly relationships with the Java Runtime and the Apache HTTP Server. It is extremely important to emphasize that these operating systems are maintained by organizations that encourage and discourage technologies. In the “real world” of the IT business we must pick our “battles” wisely and not recklessly “fight” such organizations by using technologies that are not “approved.”

Buy this book at Amazon.com!My IT Concerns by Software Environment

There are three major ‘software environments’ that are of my concern: the .NET Framework, the “Standard Edition” of Java with its associated runtime and the XAMPP ‘stack’—a grab bag of traditional Linux technologies featuring Apache, MySQL and PHP (supplemented by my use of the Zend Framework and YUI).

My IT Concerns by Shell Language

There are two ‘shell’ languages that are of my concern: bash scripting and PowerShell. My bash efforts drive directly into PHP-related file management (featuring rsync) and the Java runtime for console applications (featuring JAXP solutions). My PowerShell efforts are currently very minimal with a few XCopy deployments for Visual Studio.

My IT Concerns by General-Purpose Software Language

These are the general-purpose software languages that are of my concern: C# and Java. These two languages are the preferred choice after working through BASIC, FORTRAN and Visual Basic (which implies I am familiar with Visual Basic .NET—and very familiar with VBA). A future language to explore might be F#.

Buy this book at Amazon.com!My IT Concerns by Domain Specific Software Language

These are the domain-specific languages of my concern: t-SQL, JavaScript (under AJAX), PHP, XSLT and XAML. These result from working through MS-SQL (for Microsoft Access) and ASP (for Microsoft Internet Information Server). Currently, there are no plans to explore new domain-specific languages outside of ones based on XML.

My IT Concerns by HTTP Server

There are two HTTP Servers of my concern: Apache HTTP Server and Microsoft Internet Information Server (IIS). Do note the glaring omission of any Java-based server technologies. Also the presence of IIS here—coupled with my concern for .NET—implies that I am actively using ASP.NET.

My IT Concerns by Database Management System (DBMS)

There are two DBMS products of my concern: Microsoft SQL Server and MySQL. It is not technically accurate to include SQLite in this list but it is definitely worth mentioning because I also use this database frequently!

Buy this book at Amazon.com!My IT Concerns by Client-Interface Technology

There are three client-interface technologies of my active concern: AJAX-based HTTP clients, XAML-based HTTP clients and Adobe-Flex-based HTTP clients. All of these concerns share HTTP as the means of transporting data for human-readable viewing.

It important to emphasize that I also divide these concerns into two use categories: clients for intense data editing and clients for mostly-read-only scenarios. The mostly-read-only clients needs to be available to a wide audience—this implies that AJAX and Flex work well here. In my considered opinion, the intense-data-editing client is suited for XAML technologies like Windows Presentation Foundation (WPF) and Silverlight 2. This means that I intend to produce data-editing tools for a small, specialized set of users (supporting a mostly-read-only audience through a decoupled publishing system). This position is not in agreement with the current trend of social, “Web 2.0” applications where “everyone” can be reader and writer.

It is also important to mention that since my commitment to building clients exists, this means that I have working knowledge of traditional design software products like Adobe Photoshop and Adobe Illustrator. I am also quite skillful in the field of sound design but this area leaves the scope of this writ.

My IT Concerns by Integrated Development Environment (IDE)

There are three IDE products that are of my concern: Microsoft Visual Studio, Eclipse Foundation Eclipse and Sun Microsystems NetBeans. I prefer to work with Eclipse and NetBeans in a Linux-based graphical user interface like Gnome or KDE.

Did I miss anything?

What would be really strange (for me) is to take the time here to set healthy boundaries only to find out that there is this whole other world of crap that I do in IT that I am unaware of… that would be literally unprofessional. My intent here is to capture and control my behavior and find out exactly what I am doing so that actually can profess and produce with potency.

Tiffany BrownFrom my A2 Host Post—September 2008 email: “A2 Hosting has removed MailScanner and ASSP spam plugins and reverted back to the SpamAssassin system used by cPanel. This update occurred from August 18th through August 21st for all of our Shared, Reseller and Semi-Dedicated servers. A2 Hosting originally had decided to use the 3rd party mail spam solutions ASSP and Mailscanner because of several problems experienced when using the default cPanel mail configuration prior to cPanel version 11. Unfortunately this caused more problems than solutions. cPanel 11 contains vastly improved spam protection features making those 3rd party solutions unnecessary. The current ASSP and MailScanner configuration icons have been removed from cPanel and replaced by the new SpamAssassin icon. If you have experienced any problems since this update, please file a ticket with the support system so that we can track and respond to your request. Thank you for your patience and understanding in this matter.”

A2 Hosting admitting they have problems with email is precisely aligned with my criticism of the service. This means that A2 Hosting and Bryan Wilhite share the same reality which is quite rare for me in the customer service world. Today I am a satisfied A2 Hosting customer (that does not use its email—I use Google Apps hooked into my domains).

“Firefox to get massive JavaScript performance boost”

arstechnica.com: “The theories behind tracing optimization were pioneered by Dr. Michael Franz and Dr. Andreas Gal, research scientists at the University of California, Irvine. The tracing mechanism records the path of execution at runtime and generates compiled code that can be used next time that a particular path is reached. This makes it possible to flatten out loops and nested method calls into a linear stream of instructions that is more conducive to conventional optimization techniques.” Much respect to Tiffany B. Brown for getting me the news.

“YUI 3: The goals are lighter, faster, consistent, power, secure”

Ajaxian.com: “Chaining: We’ve paid attention throughout the new architecture to the return values of methods and constructors, allowing for a more compressed chaining syntax in implementation code.” The next YUI has a lot of JQuery-like syntax. This could be Microsoft-style nightmare of backwards-compatibility bloat or a lean, mean, radical rewrite threatening regression-test failure. My guess is that “new architecture” means a radical rewrite.

“Firebug to get a boost”

Ajaxian.com: “Great news for all Web developers out there (that be you!). Firebug is going to get a shot in the arm. Joe Hewitt has had to slow down his work on the tool, and thus the Firebug Working Group was created, to try to make the tool continue to thrive.” Joe Hewitt has to pay his gas bill just like everyone else. But when his RSS feed dropped on me that was truly shocking.

“Captcha is broken—now what?”

Tim Anderson, The Gaurdian: “That is all very well, but the failings of Captcha impact every internet user. It is not only a matter of more spam choking inboxes. Breaking Captcha enables networks of computers to post malicious content to legitimate sites.”

“Web Development as Tag Soup”

Jeff Atwood: “The tag soup problem seems to be endemic to all modern web development stacks. … But I have to wonder: is there a better way? Is there something beyond RHTML, Views, and Templates? What examples would you point to of web development stacks that avoided degenerating into yet more hazardous, difficult to maintain tag soup? Is there anything truly better on the horizon?” In the mean time I have embraced the platform-agnostic XSLT. There is an XSLT stack for PHP, Microsoft .NET, Java and Python. That’s one flavor of tag soup for four different platforms. The numbers work for me.

“HTML 5 data- elements to store private values”

Ajaxian.com: “Using data- is a very practical solution, but people…would much prefer a more ‘pure’ solution.” This changes the “tag soup” tagline to “attribute soup”—this also violates the principle of separating data from markup. In my squalid little world, I use hidden input elements in a conventional form to store data.


Thank you for the lifetime achievement award for my release of a SimpleViewer Demo, featuring the sexy, professional photography of R/Kain Blaze for megafunk.com. This is another attempt to reduce the amount of code I write by evaluating, critiquing, using and appreciating the hard work of others. These are my random findings:

  • The level of customization through configuration is impressive! It even supports background images.
  • Something special must be happening under the covers to make sure the XML configuration file is fresh—this makes ‘refreshing and configging’ faster and easier!
  • There are several variable scope collisions (re-declaration) in swfobject.js. Using Douglas Crockford’s jslint.com would serve this code well.

YUI Carousel

Bill Scott’s Carousel Component is a shining example of progressive interactive design. The ‘progress’ here is from simple to complex. The documentation was actually worthy of full-duplex printing! My first pass starts with the simple example they provide and then the documentation suggests that far more can be done!

YouTube Chromeless Player Demo

My YouTube Chromeless Player Demo has great promise! For more information, see code.google.com. For this first draft I copied the ‘intrusive’ more “educational” code directly from Google. I can’t wait to spruce this one up with more YUI framework values!

Also… Off the TODO list: busy.js

I was just about to build a Songhay System sample page for busy.js but I noticed that the demos were running incredibly slow on Firefox 2 in Ubuntu Linux. This one is too ambitious for me at the moment and is far more than just a replacement for ajaxload.info.