Site Speed Analysis With YSlow
July 30, 2007 | 2 Comments
This is a nifty little tool to add to your web development toolkit! Yahoo has developed a nifty website speed analysis Firebug extension. Yep. Not Firefox…FireBug. (Which I guess makes it a Firefox extension with a dependancy…but whatever). The extension is YSlow which Yahoo! describes as:
Install Firebug first!
- Performance report card
- HTTP/HTML summary
- List of components in the page
- Tools including JSLint
Once installed, the plugin adds its features onto Firebug itself, giving a few extra things to click on and view. (Note the added menu options at the top of the following image):
If you are curious about what to do with the data that YSlow provides, Yahoo has some nice docs as usual. Overall, this is a sexy little tool!
Drawing: Female Yuuzhan Vong Warrior
July 29, 2007 | Leave a Comment
Here’s a drawing of a female Yuuzhan Vong Warrior I did for the Dark Jedi Brotherhood using my Intuos 3 Wacom Tablet (You can click the image for a larger version). She has a very high sloping forehead, complete with tattoos, scarring, and topknot. She is clad in Vonduun Crab armor and wields an amphistaff.
Web Crash 2007
July 22, 2007 | 1 Comment
Zach informed me of this devastating news report that spells doom to the world as we know it. It seems that all data on the Internet has been lost in a crash caused by one man using a number of web services…his usage overloaded the web and all hell broke loose. As I’m writing this, the internet must have been restored from backup as I am now live on the web once more.
This “Web Crash 2007″ reminds me of the JavaScript virus I wrote last year to iterate over every file on the internet and delete it.
WordCamp 2007: Day 1: Blogs vs. Journalism
July 21, 2007 | 1 Comment
Speakers: John C. Dvorak and Om Malik
This discussion touches on the similarity and differences of blogging and journalism. The talk spread over a number of topics, touching on: journalism’s view on blogging; comment moderation; libel suits and how to avoid them; layouts and perception. Overall, a great session.
Some interesting nuggets that the speakers have left with us (paraphrased when I couldn’t keep up) are as follows:
“[Blogging creates an independent force that causes other media to be affected.]” -Dvorak
“[Bloggers are susceptible as much as mainstream media to trivial things like the loss of Paris Hilton's PDA]” -Dvorak
“Bloggers present themselves as bloggers. This has to change [if you want to be credible.]” -Dvorak
“Institutionalized ankle biting…essentially ridiculing mainstream media by their incompetence [...] which is driving the mainstream media nuts.” -Dvorak
“The blogging world will be rejected out of hand by mainstream media as they are annoyances.” -Dvorak
“Blogging has a special aspect[, comments. ... Respect the comments, good and bad. Read them. Respond to them.]” -Malik
“Comments make many blogs.” -Dvorak
“Collected intelligence is the biggest difference and benefit of blogging. You have to read every comment and respond appropriately.” -Malik
“Moderate comments. [...] Moderating is the key to success, really.” -Dvorak
“It is the writer’s job to read the comments and moderate them.” -Dvorak
“‘You Suck and here’s why.’ comments are ok…” -Dvorak
On permanence of articles: “If I write an article and someone finds an error…I fix it.” -Dvorak
“When you write a post, write it. Then step away for 15 minutes. Then come back. [Problems are found much easier.]” -Malik
“Read your post outloud before you post. You’ll find stupid errors.” -Dvorak
“[Neo blog layouts, even though it is a blog, gains credibility through an advanced design.] First impressions are everything.” -Dvorak (see: XXLMag.com)
“Use ‘douchebag’ to cut down people…not crook to let people know that someone is shady.” -Dvorak
WordCamp 2007: Day 1: Podcasting
July 21, 2007 | Leave a Comment
Speaker: Dan Kuykendall of MightySeek.com.
Dan. Podcaster. Developer. The session? Primarily an introduction to the excellent podPress WordPress plugin that started as a simple podcasting-geared tool and has morphed into a full featured media management plugin. As I haven’t dived into the wonderful world of podcasting, the plugin looks pretty sexy. The statistics provided by podPress seems quite extensive.
In addition to promoting the plugin, Dan briefly details the process of how he creates his podcasts and the equipment he uses. Pretty snazzy. Of particular note is his method for reducing room echo…building a foam crate where he places his microphone. Pretty snazzy.
Off To WordCamp
July 19, 2007 | 1 Comment
I’m heading off to WordCamp - a WordPress blogging conference - with Zach tomorrow (Friday). This will be my first WordCamp conference as well as my first time flying with JetBlue so I’m pretty excited all the way around. Once in San Francisco, we’ll be hooking up with Casey, a veteran camper who has conveniently scoped out accommodations, transportation, and all that fun stuff.
To top it all off…I hope to be getting a free T-Shirt :)
Magic the Gathering - 10th Edition Rule Changes
July 12, 2007 | Leave a Comment
Magic The Gathering - a customizable card game that has been around under its current name since 1993 - is releasing it’s 10th Edition this weekend and I’m eagerly awaiting the arrival of my box of booster packs! Along with the release are a few rule changes and clarifications that the Magic The Gathering site has seen fit to give it’s eagerly awaiting fans MagicTheGathering.com“>a description of the adjusted rules!
The following are the changes as described by the author of the article…they aren’t the rules verbatim. For that we’ll have to wait until the launch. Of particular interest to me is the first one…multiplayer mulligan rule changes! (I usually play team games when I play Magic) Check them out:
The multiplayer mulligan rules are changing. Now all multiplayer formats will employ the “free” mulligan that Two-Headed Giant does: Your first mulligan is to another hand of seven cards. Your second mulligan drops you to six cards, and so on.
Rule 101.5
There’s now a clear section describing when to put cards such as Gemstone Caverns and the Guildpact Leylines into play before the game begins.
Rule 104.6
The section on symbols now has a rule that covers the card type symbols that appear in the upper left corner of the “timeshifted” Future Sight cards.
Rule 212.6b
The rule about when you can play a land got a minor clarification so it’s true in Two-Headed Giant.
Rule 216.2
The rule says that tokens aren’t cards. It was expanded to cover the tokens in Tenth Edition booster packs, not just the ones from the Unglued set.
Rule 217.5a
This rule talks about placement of cards in the in-play zone. It basically says to keep your stuff in front of you, except for Auras attached to your opponent’s permanents. The language was loosened up since Auras that get attached to weirder stuff (your opponent, a card in your opponent’s graveyard) have started to appear.
Rule 310.4, Rule 413.2i
We know what happens to a spell on the stack when it finishes resolving—it’s put into play (if it’s a permanent spell) or its owner’s graveyard (if it’s an instant or sorcery). But no rules covered what happened to an ability on the stack or to combat damage on the stack. These rules now specify that these two objects cease to exist after they resolve. They don’t go to any other zones.
Rule 503.10
This rule now specifies who the owner of a copy of a spell is. It’s the player who controlled the spell or ability that created the copy.
Rule 506
This rule covers subgames. According to the current rules, when a subgame is finished, all the cards in the subgame are shuffled back into the respective main game libraries… except cards removed from the game in the subgame. Those cards stay removed from the game. That means that if you suspend a card in the subgame and the subgame ends, the card remains suspended and ticks down until you get to play it for free in the main game. Or, at least, that’s what some people believe. Others have been questioning whether it’s supposed to work this way, still others wondered if it worked the other way (suspend in the main game, play in the subgame), and this has been an active topic among rules gurus recently.
In my opinion, the suspend interaction violates the spirit of the subgame. The subgame is a completely separate, isolated Magic game, and cards aren’t supposed to cross the boundaries from one game to the other (unless you use a Wish, which is explicitly getting something from outside the game you’re in). This is a loophole caused by increased use of the (increasingly inaccurately named) removed-from-the-game zone. The nice thing about being the Magic Rules Manager is that my opinions have a funny way of becoming the truth, and this section has been rewritten to stop those shenanigans, and hopefully to be clearer overall. (For obvious reasons, no one had paid much attention to this section in a while. The only cards that create subgames are Shahrazad and Enter the Dungeon.)
Star Wars Christmas Special
July 11, 2007 | 2 Comments
Contents:
Being a huge fan of Star Wars, I’ve often gobbled up chances to see and read many forms of entertainment media regarding that galaxy far, far away. The Star Wars Christmas special has eluded me for far too long…being a pre-Empire Strikes back flop, George Lucas has kept the special behind lock and key as much as possible. And rightly so…it was pretty dumb. BUT, it is Star Wars nostalgia and should be seen :) Check out what Wikipedia has for a description of the Holiday Special:
Luckily by digging around on YouTube I’ve managed to compile a series of snippets that form the entire special. For your enjoyment (and duty, if you happen to be a Star Wars fan):
Abbreviated Version (5 mins)
Ok…this is merely an abbreviated version if you don’t want to spend the time…
Part 1
Part 2
Part 3
Part 4
Part 5
Part 6
Part 7
Part 8
Part 9
Part 10
jQuery 1.1.3: Speed Improvements and Bug Fixes
July 2, 2007 | Leave a Comment
After a long wait, jQuery 1.1.3 has been released! (Download it at the jQuery site) When I first adopted jQuery a year ago, the library boasted both faster speeds and smaller size than any other JavaScript Ajax/DOM tool. With the release of jQuery’s version 1.1.2, a number of jQuery’s operations became very slow and inefficiencient, as evidenced by MooTool’s SlickSpeed CSS Selector Test (found via Ajaxian) which crept up a few weeks ago.
This new release boasts an 800% speed improvement with a number of its selectors along with various enhancements across the board! The selector speed boost makes me one happy camper. Check out the enhancements as it compares to 1.1.2:
| Browser | jQuery 1.1.2 | jQuery 1.1.3 | % Improvement |
|---|---|---|---|
| IE 6 | 4890ms | 661ms | 740% |
| Firefox 2 | 5629ms | 567ms | 993% |
| Safari 2 | 3575ms | 475ms | 753% |
| Opera 9.1 | 3196ms | 326ms | 980% |
| Average improvement: | 867% | ||
And here’s how it now stacks up against the SlickSpeed test:
| Browser | Prototype | jQuery | Mootools | Ext | Dojo |
|---|---|---|---|---|---|
| IE 6 | 1476ms | 661ms | 1238ms | 672ms | 738ms |
| Firefox 2 | 219ms | 567ms | 220ms | 951ms | 440ms |
| Safari 2 | 1568ms | 475ms | 909ms | 417ms | 527ms |
| Opera 9.1 | 220ms | 326ms | 217ms | 296ms | 220ms |
In addition to the speed enhancements, there were several other notable things:
- Unicode Selectors: Yup…now you can use fancy non-english characters.
- Escape Selectors: This is awesome. Now, if you use weird characters (i.e. punctuation) in a class/id name, you can now escape those characters within the selector syntax. E.g. $(”div#foo\.bar”)
- Inequality Selector: You can now select elements where their attributes do not match a specific string of characters. E.g. $(”div[@id!=test]“)
- :nth-child() improvements: jQuery has supported selectors like :nth-child(1) and :nth-child(odd) since the beginning of jQuery, now they’ve added advanced :nth-child selectors, such as:
- $(”div:nth-child(2n)”)
- $(”div:nth-child(2n+1)”)
- $(”div:nth-child(n)”)
- Space-separated attributes: After being removed in jQuery 1.0, this selector has now been brought back by popular demand. It allows you to locate individual items in a space-separated attribute (such as a class or rel attribute). E.g. $(”a[@rel~=test]“)
- Animation Improvements: Animations are now significantly faster and smoother. Additionally, you can run more simultaneous animations without incurring any speed hits.
- DOM Event Listeners: Internally, the jQuery Event system has been overhauled to use the DOM Event system, rather than the classical “onclick” style of binding event handlers. This improvement allows you to be more unobtrusive in your use of the library (not affecting the flow of other libraries around it). Additionally, it helped to resolve some of the outstanding issues that existed with binding event listeners to IFrames.
- Event Normalization: Some great steps have been taken to normalize keyboard and mouse events. You can now access the event.which property to get most details about the specific key or button that was pressed.
- Multiple .is(): The .is() method can now take multiple selectors, separated by a comma. This allows you to test your jQuery set against multiple selectors. E.g. $(”div”).is(”:visible, :first”)
- Browser Version: A commonly requested feature, by plugin authors, was a way to determine what browser version their users were using. We now expose an extra property through which this information can be accessed. E.g. jQuery.browser.version
Additionally, the jQuery team has addressed 80+ bugs and has roadmapped out the next two releases (v1.1.4 and v1.2). To check out the full jQuery 1.2 roadmap, go here.



