What browsers do you test against?

January 17th, 2008

I’m in the final testing phase of a new website, and I’m wondering what browsers folks commonly test against these days. Since it’s new, I have no user agent data to go by. I’m presently testing against the following:


  • IE: 6, 7
  • Firefox: Newest


  • Safari:Newest
  • Firefox:Newest

This is a pretty small matrix, but has been pretty successful in the past. I give priority to fixes on the Windows platform, and Safari on the Mac. I’ll probably test in IE 5.5 as well, even though IE 5.x users make up only about 1% overall (according to some stats I’m seeing). Are there any particular browsers & versions that you pay special attention to?

IE Standalone Installations

January 17th, 2008

I always have to look this up when I need it, so I’m posting here for my own reference and yours.

Get standalone IE installations (for testing purposes) here:


Some things will cause these browsers to crash – I vaguely recall a problem with the address bar, and cookies were also problematic.

See the following article for solutions to some issues:


categories: Uncategorized | Comments Off

The best web page development tool there is.

January 16th, 2008

If you create web pages and you haven’t heard about this tool yet, you need to get it ASAP. It will make your life so much easier. How I went this long without hearing about this is a mystery to me, but I guess you can’t know everything. The tool is called Firebug (http://www.getfirebug.com), and it’s a toolbar for Firefox that allows you to make live modifications to CSS and see the changes instantly in the browser. Also, the JavaScript debugging is spectacular (by JavaScript standards). Inspect mode has been a life-saver for me – it lets you click on an element in the web page, and takes you to the relevant HTML. Other tools, like the IE Developer Toolbar, have some of the features – but nothing else has them all.

Sorry if this is old news to you, but if you haven’t tried it yet, you should. I wouldn’t want to be without it.

categories: Uncategorized | Comments Off

Macworld 2008 – What am I buying?

January 16th, 2008

No doubt this has already been covered to death elsewhere on the interwebs, but I thought I’d chime in with my takeaways on Macworld ’08.

You can’t announce an industry-changer like the iPhone every year. So it’s no surprise that this year’s Macworld left many with an empty place inside where their anticipation once lived. But if the new Apple product lineup didn’t live up to the hype, it’s not Apple’s fault. Although the blogosphere was abuzz with conjecture months in advance, I didn’t hear Apple saying they were going to change the world. And they didn’t. What they did was announce solid upgrades to their product line

The much-needed refresh for the Apple TV set-top box with the major overhaul of movies on iTunes is a powerful combination, and may prove formidable competition for the existing players in the online movie rental space. Those who don’t wish to shell out $230 for the set-top box will still end up renting a few movies for mobile viewing on their iPods. For those who do buy the Apple TV, keeping a Netflix subscription around looks less appealing (although in many cases, it’s still cheaper) and ordering pay-per-view on cable and satellite would just make no sense at all.

The iPhone 1.1.3 software update was the single thing that I looked forward to the most, and so it was also the most disappointing. It could have been so much more, particularly given my low expectations. I want a few basic things from my iPhone that it doesn’t do now:

  1. A way to edit my notes on my Mac
  2. Select, copy and paste text
  3. A few simple games. I’ll even pay for them.
  4. Flash. Preferably Flash Player 9.

Ok, so the last one isn’t so basic. But the first 3 are no-brainers.

The 1.1.3 iPhone update does have some cool stuff though. The location finder in Google Maps is pretty cool, at least in theory. It triangulates your position based on the location of nearby cell towers and wifi hotspots. A really clever idea – but accuracy varies wildly. In Alexandria, VA it found my location to within a mile – in my office in DC, it found my exact building.

Since I’m a UI designer (among other things) and this blog is supposed to be focused on the presentation layer (although it often deviates), I’d be remiss not to talk about the new interaction the iPhone has for re-arranging icons. This is one area where I think they nailed it. Here’s how it works: just press and hold an icon until it starts to wiggle. When the icons are wiggling, you can drag them around the screen. How great is that? The ‘wiggle’ effect is a perfect gut-level visual cue that the icons are in a fluid state. It’s the kind of simple, intuitive design that people who create UIs should strive for. I think when it’s all said and done, Apple is going to get the credit for defining how multi-touch interfaces behave (even if Jeff Han and others did the homework).

Apple also announce the Time Capsule, an Airport Extreme with a 1 terabyte hard drive inside, meant for performing wireless backups with Time Machine in Leopard. This is a real kick in the crotch for anyone who recently (6 months ago) purchased an Airport Extreme with the intent of using it with a USB drive. It turns out, you actually can’t use a USB drive attached to last year’s Airport Extreme for your Time Machine backups. Until Apple releases firmware to resolve that issue, I’m going to assume that this was their plan all along. Jerks.

Finally, there was the MacBook Air. I think this will be very popular for the airborne businessperson. It will fit nicely into that little pouch on the back of the seat that holds the Skymall catalog. Also, for the fashion-minded student. But, not for me. I have thick, manly arms that can withstand the weight of 5.4 lbs of computing power. I’ll bet I could even handle 6.8 lbs.

categories: Uncategorized | Comments Off

Flexlib updates, Bi-Di in Flash Player, and a Love-Fest

May 25th, 2007

Long time, no post. Really, I haven’t had much to write about, since I’ve been knee-deep in some CSS, HTML, & .Net work. Finally, I’m getting to spend some time in Flex again, so I’ll probably turn up the volume again, so to speak.

I got some good news last night – my text highlighter component has been added to Flexlib!! Here’s the full component list, and here’s a link to the example itself. If you find any bugs, feel free to post them in the comments here. No matter how many times something I create goes out into the world, it’s still exciting. Big thanks to Doug and Darron for making this happen!

Then, when I came in to work this morning, I saw Emmy’s post about bi-directional text support in Flash Player 10. Awesome – sounds like they’re planning to not only add bi-directional text support, but generally just beef up text in general. This is great news. Although it improved substantially in FP8, text handling is still not perfect. Things like styling HTML text can still be a little dicey. And I would love for things like my text highlighter component to be completely unnecessary!! Maybe they could add in some highlight-and-find functionality in there.

As a side note, I wonder how long they’ll stick with numeric versioning for the Flash Player. Most software doesn’t make it much beyond 10 before a change in naming convention, like Photoshop CS3, etc. I could imagine a Flash Player 11, but Flash Player 17? 13? Maybe Adobe Acropollash? Flappollobat? Blinding Ray of Transcending Glory? (I think M$ considered that one, at least momentarily). I personally would go with Flappollobat – it has a certain ring to it, don’t you think?

Finally, I sometimes use this blog as a place to vent my frustrations with poor customer service and other things gone awry in the Adobe world. However, I feel that if you chose to voice your opinions in public, you should take care to present the totality of your views. In other words, if you have a concern or complaint, voice it – but if you have positive things to say, say those too. It occurs to me that I have let many of those positive things go unsaid, while I have given more energy to my irritations – this seems to me to be a special form of hypocrisy.

That said, I have worked with CS3 and Flex Builder on the Mac for some time now, and I think they’re amazing. Very solid, very enabling technologies. Flash Player 9 continues to astonish me from a performance perspective, and I can develop applications using Flex so quickly that I can spend more time on the design of them, and even have time to actually implement the “nice-to-have” features that normally get pushed off to version 2 of a project. And I also happen to love the new icons. Don’t change them, please? So elegant, so well thought out.

It would be ridiculous for me to itemize everything I love about CS3 and Flex – it would be a long list, and probably take up most of my available blogging time. So maybe the solution is to simply give less time to my gripes, and try to focus more on the mission of this blog, which is to publicize information useful to RIA developers. Wish me luck. :)

categories: Uncategorized | Comments Off

Happy Mac

March 9th, 2007

I just completed a RAM upgrade in my Mac Mini, per the instructions at http://www.methodshop.com/gadgets/tutorials/macmini-ram and am happily multi-tasking away… Listening to Frank Black & the Catholics on iTunes, blogging in Camino, NeoOffice and Flash both open in the background. Life is good with 2GB.

It took about 45 minutes to install at a careful pace, saved me over $150… and I didn’t even scratch my case. Whoops… Here comes the new Pete Yorn… Gotta go rock out.

categories: Uncategorized | Comments Off

Adobe: Bad Customer Service

February 13th, 2007

I just held for 2 hours with Adobe tech support to get an unlock code for CS2 upgrade. (For background, that’s what you need to do to validate an upgrade installation that won’t recognize the original media you’re upgrading from.) I was incorrectly transferred at least twice, waiting for 20-30 minutes at each transfer. When I finally got the unlock code, it didn’t work and there wasn’t a thing that they could do about it. When I offered that I was using Windows Vista (they never asked) customer service literally said “Ah-HAH! That must be the problem”, blamed the whole thing on Vista compatibility, and helpfully suggested that I wait for CS3 or roll back to Windows XP.

I asked to be transferred to a supervisor, who told me that Microsoft wouldn’t give Adobe the necessary components to test their software until just recently. I explained that I have personally tested software on the beta versions of Vista for two years, and that the final bits have been available for months.

What was worse than waiting for two hours or listening to made-up excuses is just that no remedy, not even a symbolic gesture, was ever offered. I suggested that it would be helpful if Adobe could contact me when an update is released, rather than expecting me to visit the website every day. She said “That’s not possible, we have a lot of customers.” Not possible? Hardly. Not practical? Maybe. Not willing? Bingo.

The thing that makes this all even crazier is that I was able to install CS1 without issue, and upgrade on top of that (on *gasp* Vista!) – solving my own problem. It’s a shame that the people who I talked to today lacked the imagination (or, seemingly, the energy) to suggest it.

There are a couple of takeaways from all this that I intend to relay to my customer service people:

1) Don’t make your customers wait interminably.
2) If your customer paid you and can’t use your software, “tough noogies” doesn’t cut it.
3) If you can’t answer your customer’s question, have someone get back to them who can answer it.
4) Throw me a frickin’ bone, here. If there is no solution to be had, give the customer something – anything – to show that they’re not just another $1000 to you. Maybe a reduced-price upgrade when it finally does arrive, maybe just a follow-up email to say “sorry we couldn’t help you”.
5) Don’t try to throw something technical-sounding at your customer in the hopes that they won’t understand it and just go away.

I know what it’s like to not have an answer for someone who deserves one. I understand that everybody has a somewhat different capacity for problem-solving. I understand that customer service people are usually the people in an organization who are the least empowered to offer resolution. But PLEASE give the impression that you’re trying.

I'm a Mac… and HEY!!! LOOK AT ME!!!

February 13th, 2007

I just got a new Vista box at work and I’m getting it all set up, trying to get used to the new locations of everything. My particular pain point is that the VPN client my company uses hasn’t yet been updated for Vista. But I digress…

The thing I really want to talk about is just how much bling they added with Aero. It’s like they had a big meeting and someone said “Look, we all know that people love Macs because they’re purty. We have to make Windows cool-looking too. How can we do that?” “I know!!” someone else pipes up. “We can make the windows semi-transparent!!” “Yeah, that’d be awesome!” says someone else. “We should also put some gleam on them, like a glassy reflection.” “And dropshadows!!”, chimes in another. “Yaaay!! Isn’t designing things fun?? No longer will Windows be known as ‘the ugly OS’.”

Seriously, Vista is way over the top in terms of aesthetics. Pick two of the added design touches and it would have been enough. But dropshadows, transparency, glows, white strokes, bevels, reflections and blur all at once? That’s called “trying too hard”.

I don’t consider myself a fan-boy, but I couldn’t help but to be inspired to propose a new Mac vs PC commercial.

Mac: Hello, I’m a Mac.
PC: Wassup dawg, I’m a PC. (he’s wearing MC Hammer pants)
Mac: Hey, PC, nice pants. What’s that around your neck, a huge analog clock?
PC: Yeah, isn’t it cool? They gave me a bunch of new fashion accessories this time. Yup… I finally got my wardrobe up to date.
Mac: Umm.. Yeah. Isn’t that thing a little slow?

With apologies to my boss, who came up with the Flava Flav clock gag.

WPF/E = JavaScript + Windows Media Player?

February 5th, 2007

So, I just checked out the Microsoft Community Technology preview of Windows Presentation Framework Everywhere, the supposed “Flash Killer”. After seeing this, I’m under the impression that WPF/E and the Flash Player are not really in the same conceptual sphere.

WPF/E seems to boil down to some JavaScript libraries and Windows Media Player (and maybe a little SVG) so far. It’s unclear to me how much of the animation is controlled by JavaScript and how much is handled by the WPF/E ActiveX control: some of the examples have more animation-oriented JavaScript than others. All of the interactivity appears to be handled by JavaScript. In the network-aware examples, there is an Ajax library that looks to be responsible for communication.

So, in concept, WPF/E seems to leverage existing web technologies and tries to handle their varying implementations. Flash Player, on the other hand, provides its own implementation for those technologies.

I have a lot of questions about how WPF/E works. Does it leave the JavaScript interpretation up to the browser, or have they implemented another JS interpreter in the ActiveX control? Does WPF/E handle image display, or is that left to the browser as well? Basically, all of my questions boil down to this: is WPF/E merely coordinate the various technologies it uses, or does it actually provide its own implementations of those technologies?

If WPF/E is just coordinating a variety of implementations, it will always be limited by the browser, and Flash will always be a jump ahead.

Flex Data Model Architecture

January 31st, 2007

So, I’m chin-deep in Joe Berkovitz’s Architectural Blueprint for Flex Applications… That is to say, this is about the 5th time I’ve read it. I think it’s a great article, as architectural blueprints go… It really helps to make the abstract principles of MVCS more concrete for me.

I think I’m a little slow on the uptake when it comes to architecture. Old habits die hard, and years of working on small, underfunded projects have molded my thought patterns accordingly – I always seek the most direct approach that works. Even though this is not my first exposure to MVCS by a long shot, I still find myself getting a bit lost in the translation between the idea of MVCS and the details of how you implement it in a real world project.

The code examples that are shown in Joe’s article are only moderately helpful to me – it wasn’t until I opened the source code itself and could see the import statements that some of it became clear.

For example, the Model portion of the app. After reading the article several times (and also referencing Aral Balkan’s article “Defining Data Models“), I was still unsure of the appropriate place to instantiate the model classes, and I also thought that there should be a single Model class that encapsulated the other model classes. I was visualizing the model as a single respository for all the data needed by the application, which would have bindable properties (sort of like a model defined by mxml Model tags). After reviewing the source code, I see that the model is really implemented as a set of Value objects that are instantiated in both the Controller and the Services, and are passed around the application.

I’m not used to thinking in this way. When someone says “this architecture is made up of 4 parts” I am thinking of 4 discreet parts. When someone refers to “the Model” I naively think “there’s a single model object somewhere”. So I’m trying to adjust my brain to the concept of a nebulous model that consists of several Value Objects being tossed around the app.

But I’m also (maybe naively) wondering if it wouldn’t be better to have a single Model that encapsulates all the data. That would have a couple main benefits, in my estimation:

1) It would be easier to serialize the model and save it in a local shared object for later restoration (the purpose of the model is to handle state, correct?)
2) It would be easier to store revisions of the model for undo/redo purposes
3) It would be easier for the view to bind to it

This is what the mx:Model tag has going for it, but the problem there is you can’t have strongly typed data.

I’m pretty sure there are architectures that work this way – it sounds kind of like what Aral describes in the “Using Class-Based Models” section of his article. But maybe I’m reading Joe Berkovitz’s code wrong… Pretty sure I’m missing quite a lot here – hopefully I haven’t said anything that is obscenely stupid.

Hopefully some of my readers can help me fill in the blanks!