Change Is In The air

November 5th, 2008

It certainly is. You might think I am talking about the President-elect of the United States. You would both be mistaken and forgiven if you did.

No friends, I am talking about another kind of change — one that is perhaps equally over due — a change to this website.

The re-design is complete and now it is just a matter of converting it over to a WordPress theme.

I am setting a public milestone for myself; the new design must be up and running on or before November 28. This will be no small task as I am in the middle of a pretty heavy work load on two astronomically large-ish sites, but nonetheless, I am determined to get it done.

If I fail in this most modest of tasks I’ve set for myself, please, feel free to berate me in the comments.

Fluidesign.com - Communication Arts webpicks

October 24th, 2008

Fluidesign: This interactive agency’s new site is big, glossy, sexy, full of great work, fun to navigate—and home to the Fluidesign Blog.

If I were more timely with my blogging, I would’ve made note of Communication Arts featuring Fluidesign.com in their webpicks section back on October 6. Forgive me for just getting around to mentioning it now and GO TEAM!

Practical Prototype and script.aculo.us

October 20th, 2008

In between a full work load and prepping myself for some upcoming traveling, I finally managed to finish reading Andrew Dupont’s Practical Prototype and script.aculo.us this past week. If you have an interest in learning more about the Prototype framework, this book is for you.

Andrew is one of the core developers of the Prototype framework and he makes sure to take you through the inner-workings of Prototype, plugging a lot of the holes in the API documentation along the way. This, in my opinion, can’t be understated; Andrew really makes sure you understand Prototype’s techniques before moving on to more complex examples. You will fully grasp the benefits of using Prototype in your code and save yourself a lot of hand wringing and hair pulling.

To be clear, this book is targeted at those who already know JavaScript, but you can still stand to learn a lot from it even if you have limited knowledge of the language. If you need a ground up run through though, you’re probably best off with another title.

Another important point to make, is that this book is not a cookbook. The later chapters on script.aculo.us do have a few such examples — edit in place, animations, auto-completer — but this composes just a small portion of the book. The majority of the examples are centered around a small Fantasy Football application that builds on the concepts from each previous chapter. It covers Ajax, OOP and finally, integrates script.aculo.us into the mix.

One of the biggest strengths of Practical Prototype and script.aculo.us is the ‘whys’ alongside the ‘hows’. It’s not just run through of all that Prototype can do. It explains why certain methods work the way they do and even goes under the hood in a few examples to examine the Prototype source. You may not fully understand the ‘whys’ as it can get pretty complex — I had to do a few re-reads here and there after some head scratching — but it sinks in after you give the scripts a whirl.

All in all, I would highly recommend this book to any developer interested in Prototype. A few light bulbs switched on in my head while I read through it and I immediately thought of ways I could improve some of my past code. It was tough to read through this one without firing up TextMate and testing out a few ideas that popped into my head.

Now, go out there and have some fun with JavaScript and Prototype!

Prototype 1.6.0.3

September 30th, 2008

Prototype 1.6.0.3 was released yesterday right under my nose and I didn’t even smell it.

There hasn’t been an official write up as of yet, but that’s expected soon. There are other things going on that I am sure are keeping some members of the Prototype team busy.

Until then, the change log has been posted so you can peruse what’s new under the hood.

Happy coding!

Tree Navigation With Prototype

September 29th, 2008

For a recent client project, I needed to make a collapsing/expanding tree navigation for a FAQ section. The site is being built on the CakePHP Framework which comes bundled with Prototype, so it was time for me to play around some more with “The JavaScript Framework that aims to ease development of dynamic web applications.”

The navigation’s functionality is fairly basic - all categories and questions should be hidden on page load, except for the first category and its related questions. When a category is clicked, that section will be shown on the page and the nested list will also be shown so that the user can skip to each question. The other sections and sub navs will be hidden.

The reason for this UI is because this particular FAQ houses more than 150 questions - showing them all at once would be a tad unwieldy, not to mention overwhelming.

So, the way I thought of tackling this task was to give the two elements that needed to be shown first the obvious class of first, and all the all the links that point to the answers were given the class more. Below is a sample page I made to illustrate the example, borrowing my content from the WikiPedia entry on a popular syndicated television show in the United States:

<ul id="nav">
	<li>
		<a href="#bundys" class="more">The Bundy Family</a>
		<ul class="first">
			<li>
				<a href="#al_bundy">Al Bundy</a>
			</li>
			<li>
				<a href="#peggy_bundy">Peggy Bundy</a>
			</li>
			<li>
				<a href="#kelly_bundy">Kelly Bundy</a>
			</li>
			<li>
				<a href="#bud_bundy">Bud Bundy</a>
			</li>
		</ul>
	</li>
	<li>
		<a href="#neighbors" class="more">The neighbors</a>
		<ul>
			<li>
				<a href="#marcy_darcy">Marcy Rhoades D&amp;amp;#x27;Arcy</a>
			</li>
			<li>
				<a href="#steve_rhoades">Steve Rhoades</a>
			</li>
			<li>
				<a href="#jefferson_darcy">Jefferson D&amp;amp;#x27;Arcy</a>
			</li>
		</ul>
	</li>
	<li>
		<a href="#recurring" class="more">Recurring characters</a>
		<ul>
			<li><a href="#griff">Griff</a></li>
			<li><a href="#bob_rooney">Bob Rooney</a></li>
			<li><a href="#officer_dan">Officer Dan</a></li>
			<li><a href="#ike">Ike</a></li>
		</ul>
	</li>
</ul>
<div id="bundys" class="content first">
	<h2>
		The Bundy Family
	</h2>
	<p>
		The creators of the show named the "Bundy" family after their favorite wrestler King Kong Bundy, though some fans[who?] mistakenly believed that the name was derived from serial killer Ted Bundy. King Kong Bundy once appeared on the show as Peg&amp;amp;#x27;s hick inbred uncle Irwin, and again appeared as his wrestling persona, since "NO MA&amp;amp;#x27;AM" (National Organization of Men Against Amazonian Masterhood, a fictional club depicted on the show) were big fans of the wrestler.
	</p>
	<h3 id="al_bundy">
		Al Bundy
	</h3>
	<p>
		The head of the Bundy family, Al (Ed O&amp;amp;#x27;Neill) is doomed to fail in all aspirations because of the &amp;amp;#x27;Bundy curse.&amp;amp;#x27; Once a promising fullback for fictional Polk High School (his proudest moment in life was scoring four touchdowns in a single game), he was on his way to college on a scholarship until he impregnated his girlfriend, married her, broke his leg, and ended up a shoe salesman at &amp;amp;#x27;Gary&amp;amp;#x27;s Shoes&amp;amp;#x27; in the &amp;amp;#x27;New Market Mall.&amp;amp;#x27;
	</p>
	<h3 id="peggy_bundy">
		Peggy Bundy
	</h3>
	<p>
		Margaret "Peggy" Bundy (n&amp;amp;eacute;e Wanker) (Katey Sagal) is Al&amp;amp;#x27;s very lazy high school drop-out housewife. She refuses to cook or clean the house, and prefers looking for new clothes to washing them. She does not even think of having a job. During the day, she likes to watch all the daytime talk shows, sitting on the beloved family couch, and eating tons of bonbons (without getting fat).
	</p>
	<h3 id="kelly_bundy">
		Kelly Bundy
	</h3>
	<p>
		Kelly (Christina Applegate) is the older child in the Bundy family, born on approximately November 27, 1972 or 1973 or sometime before February 19, as noted in "Peggy Turns 300," where Kelly says her birthday is in February, but erroneously refers to herself as an "Aquarium" instead of an Aquarian (Aquarius). "Pumpkin," as Al often calls her, is a promiscuous bimbo and stereotypical "dumb blonde." She may have inherited her behavior from her mother, known as "The Big Easy" in high school. Peg has attempted to convey some of her other "values" to Kelly, most notably advice on how to avoid working.
	</p>
	<h3 id="bud_bundy">
		Bud Bundy
	</h3>
	<p>
		Bud Franklin Bundy, (David Faustino) is the second child, born on January 22 around 1974. In the first season, Bud is revealed to be in fifth grade, making him 10 or 11, but in subsequent seasons, he was aged to be within one year of Kelly, graduating high school in 1991.
	</p>
	<p>
		He was named after Al&amp;amp;#x27;s favorite beer, Budweiser. The first word Bud spoke was "hooters." He believes himself to be attractive, sexy, and smooth, but often is typically caught in sexually humiliating scenarios. He is also shorter in stature than his sister, and a lot shorter than his mother. He does not appear to know how to impress women upon meeting them, and is often rejected. It is unclear when Bud lost his virginity, as it was depicted that he may have bedded women as far back as age 14, but in the fourth season, it is mentioned that he is still a virgin.
	</p>
</div>
<div id="neighbors" class="content">
	<h2>
		The Neighbors
	</h2>
	<h3>
		Marcy Rhoades D&amp;amp;#x27;Arcy
	</h3>
	<p>
		Marcy D&amp;amp;#x27;Arcy (Marcy Rhoades from Episodes 0101&amp;amp;ndash;0512, played by Amanda Bearse) is Peggy&amp;amp;#x27;s best friend, Al&amp;amp;#x27;s nemesis, and the family&amp;amp;#x27;s next-door neighbor. Though she considers herself to be better than the Bundy family, Marcy often sinks to their level. She originally worked as a loan officer at the city bank (in a higher position than her husband, Steve), and then as the manager of the Kyoto National Bank since the second season. But for a brief time, she was demoted to drive-up window teller as punishment for approving a loan Al could not re-pay (in fact the purpose was to make Al to be able to re-pay a previous loan approved by Steve, but Al instead turned this loan into his "shoe hotline" project as well, and lost it too). She wins back her old job after frugging on her boss&amp;amp;#x27;s desk for 20 minutes, clad only in a slip, while the other drive-up window tellers tossed quarters at her.
	</p>
	<h3 id="steve_rhoades">
		Steve Rhoades
	</h3>
	<p>
		Steven "Steve" Bartholomew Rhoades (David Garrison) is Marcy&amp;amp;#x27;s first husband. Much like the name "Bundy" the creators chose the surname "Rhoades" after professional wrestler Dusty Rhodes, a good-guy character who worked opposite bad guys like King Kong Bundy. He is a banker who seems unfazed by his lower position than Marcy at the city bank. (When Marcy moves up to a high position at another bank, he gets her former job.) Steve initially condescends to the Bundys, but eventually becomes more like them, and generally turns to Al for male-bonding. Marcy was initially attracted to him because of his self-centered materialism.
	</p>
	<h3 id="jefferson_darcy">
		Jefferson D&amp;amp;#x27;Arcy
	</h3>
	<p>
		Jefferson Milhouse D&amp;amp;#x27;Arcy (Ted McGinley) is Marcy&amp;amp;#x27;s second husband (original age unknown, but younger than Steve Rhoades, but one episode mentioned that he celebrated his 40th birthday), a "pretty-boy" who marries her for her money. Self-centered and lazy, he is a male equivalent of Peggy. Marcy met Jefferson (a bartender) at his workplace after a bankers&amp;amp;#x27; convention when she got drunk, and found herself married to him the next morning; she was horrified to find out that her name was now Marcy D&amp;amp;#x27;Arcy. He is the closest friend of Al, and often angers Marcy when he is bonding with him; unlike Steve Rhoades, who was more of a foil, or straight man, to Al, Jefferson tends to be very encouraging and attuned to Al&amp;amp;#x27;s behavior. Marcy constantly bosses Jefferson around to keep him in check. However, behind her back, Jefferson often insults Marcy, ignores her orders (and has implied numerous times that he cheats on her). When Marcy&amp;amp;#x27;s favorite squirrel Zippy dies, Jefferson tells her that he will give it a proper burial, only to punt it out of his sight when Marcy turns around.
	</p>
</div>
<div id="recurring" class="content">
	<h2>
		Recurring characters
	</h2>
	<h3 id="griff">
		Griff
	</h3>
	<p>
		Griff (Harold Sylvester) &amp;amp;ndash; First appears early in Season 9, and is a friend and co-worker of Al at the shoe store. He is also a member of Al&amp;amp;#x27;s "NO MA&amp;amp;#x27;AM" organization. A divorcee, he shares many of Al&amp;amp;#x27;s characteristics as far as work ethic and views on women go. However, Griff isn&amp;amp;#x27;t quite as impolite and outspoken to their customers, or to their boss, Gary. He is also less callous; occasionally he feels uneasy when going along with one of Al or Jefferson&amp;amp;#x27;s many schemes. Griff drives a GEO Metro, and is often mocked for this. However, Griff is happy because it is still more reliable than Al&amp;amp;#x27;s 1970s Dodge. (Al says Griff&amp;amp;#x27;s car is easier to push.) When Bud and Griff first met, Bud said Al never mentioned having a co-worker, and Griff said Al never mentioned having a son, a daughter, or a living wife, but had already annoyed him with all the times he mentioned scoring four touchdowns in one single game.
	</p>
	<h3 id="bob_rooney">
		Bob Rooney
	</h3>
	<p>
		Bob Rooney (E. E. Bell) &amp;amp;ndash; One of Al&amp;amp;#x27;s friends from the neighborhood, and treasurer of "NO MA&amp;amp;#x27;AM." He works as a butcher, has a wife named Louise (who is a friend of Peggy), and played on the same football team as Al at Polk High. He is always called by both his first and last name, even by his wife, and it is spelled as one word on his bowling shirt. Bell was the only member of the extended cast to spend a lot of time on the Usenet newsgroups fielding questions from viewers.
	</p>
	<h3 id="officer_dan">
		Officer Dan
	</h3>
	<p>
		Officer Dan (Dan Tullis, Jr.) &amp;amp;ndash; A friend of Al&amp;amp;#x27;s who is also in "NO MA&amp;amp;#x27;AM." Surprisingly, though he is part of "NO MA&amp;amp;#x27;AM," he often arrests them for their illegal antics. However, he does admit to his friends that he is a corrupt officer, which indicates he does help out the group now and then. In one of the times he was about to arrest them, he changes his mind and joins them when he learns they&amp;amp;#x27;re trying to bring back "Psycho Dad". Though he was usually a cop, in season 6 Officer Dan arrives at the Bundy front door as an FBI agent looking for Steve Rhodes.
	</p>
	<h3 id="ike">
		Ike
	</h3>
	<p>
		Ike (Tom McCleister) &amp;amp;ndash; Another member of "NO MA&amp;amp;#x27;AM." Sergeant of Arms of the organization. Believes Elvis is still alive. The character was named after producer Kim Weiskopf&amp;amp;#x27;s best friends&amp;amp;#x27;s son.
	</p>
</div>

We have plenty of hooks to use, and we will of course have the mighty Prototype to help us walk the DOM tree. You can probably tell by looking at the the HTML source code how this going to work. Here’s the snippet of code that makes our page zing to life:

document.observe("dom:loaded", function() {
	var els = $$('div.content, ul#nav li ul');
	els.each(function(el) {
		if(!el.hasClassName('first')) {
			el.hide();
		}
	});
	$$('a.more').each(function(link) {
		var section_id = link.readAttribute('href').sub('#','');
		link.observe('click', function(event) {
			els.invoke('hide');
			els.each(function(el) {
				if (el.match('div')) {
					el[el.identify() == section_id ? 'show' : 'hide']();
					event.element().next('ul').show();
				}
				event.preventDefault();
			});
		});
	});
});

The script is pretty simple. On page load (before the images are finishing loading) we loop through all the divs containing FAQ answers, which have the classcontent,  and all the nested uls inside our main nav. We hide all the elements that don’t contain the class first.

Next, we loop through all the links with class more, read their href value and store that in the variable section_id. When one of the more links is clicked, we hide all the elements (including those with the class first) and iterate through them to see if the element is a div. If it is a div, we see if its ID matches that of the link href. If it does, we show that section, if not, we hide it.

Next, we need to show the corresponding sub list, otherwise the user won’t be able to navigate to the answers. Since we’re already tracking the event in the click function, we can use Prototype’s element function to find out on which element the event occurred. Since Prototype skips the white space for us, we know that the element clicked is an anchor tag. We then move to the next unordered list after the anchor tag and show it.

Finally, we need to stop the browsers default action of following the main category links. This may not be necessary depending on the set up - sometimes following that main link might help usability if there are no sub links.

That’s it! it’s a pretty simple, straight forward script, but there is of course room for improvement. For example, I think the code be both condensed and be made more efficient, but you could probably say the same for virtually any bit of JavaScript, unless John Resig wrote it. ;)

Comments are of course open for suggestions, thoughts and improvements!

Here is the working sample, with JS included inline for the sake of brevity.

Opening External Links with Prototype

August 29th, 2008

Since my post on opening external links with jQuery has proven popular, I thought I would port that same technique to Prototype. Yes, it’s just as laughably trite of an example, but hey, it gives me something to write about.

My example will make use of the dom:loaded event, which fires once the document has finished loading, excluding images:

document.observe("dom:loaded", function() {
	$$("a[rel~=external]").each(function(el) {
		el.observe("click", function(event) {
			window.open(this.href);
			event.preventDefault();
		});
	});
});

Like I said above, dead simple. We’re perusing the document for anchor tags containing the rel attribute external, registering a click event to the anchor tag, opening the link in a new window, and finally, stopping the browser default action, which in this case means following the link.

It’s slightly more verbose than my jQuery example, but it gets the job done just the same.

Web Voting?

August 26th, 2008

How Design Can Save Democracy has been generating a lot of buzz lately. After all, it has been roundly recognized that some folks found the 2000 General Election butterfly ballots confusing, so why not let designers address the issue?

That’s a good start, but why stop there? Why not move voting online? We can already do our taxes online and that’s much more sensitive and private data then a hacker finding out which gum flapping bag of hot air I voted for. What could possibly go wrong?

I suppose a malicious user could game the system to vote for a particular candidate or proposition multiple times. But someone could also steal your Social Security number from your online bank account, open a bunch of credit cards and retire fat and happy in the Cayman Islands.

Since no one keeps their politics private anymore anyway, what about tweeting our votes? People already plaster stickers of their favorite candidate all over their hybrid’s bumper like it’s the local basketball team so why not increase the exposure to millions of users rather than just a few fellow motorists? And while I am on that topic, it’s safe to remove those Kerry/Edwards stickers now. You know who are.

With that voting mess all sorted out, we can now focus on something much more important - the release of Firebug 1.2. If you’ve been using one of the beta versions (1.2.0b1-15) with Firefox 3 I highly suggest you update now and start enjoying the good life.

Sensei Resig has a write up about it over on his cyberspace if you want the lowdown.

Workflow

August 15th, 2008

Of all the questions I get in regards to HTML and CSS, one tops the list by a wide margin (couldn’t resist a cheap pun); what’s your workflow for building out a page template?

There is a good reason for asking this, because doing things incorrectly in the beginning will no doubt come back to bite you in the arse at some point in the development phase.

The fact of the matter is, there are lots of things to consider besides code. Down below you will find a general overview of the thoughts that go firing around my brain whenever I sit down to carve out my latest slice of hypertext pie.

Always Allot Bug Fixing and Tweaking Time

CSS and JavaScript support in browsers is eons ahead of where it was just a few short years ago, but let’s face it - the dream of coding once and having it work everywhere is still nothing but a hallucinogen induced fantasy. Figure out a percentage of how long it generally takes you to plug the holes in a fussy browser and tack that on to your total estimated development time. I suggest somewhere in the neighborhood of 10%.

Try Thinking in Terms of How Much You Can Get Done in a Day, Versus in an Hour

A lot of times we get caught up in what I like to call the Hours Game. Typically, project managers, clients, bosses (or whoever you report to), need to know how many hours something is going to take you to complete. It sounds reasonable enough. You know how many hours are in a day, you know how many hours in a day you work, so on and so forth, so it should be pretty easy to ballpark how many hours it will take you to recreate a Flash site in HTML.

There’s just one problem - the longer you work, the less efficient you become.

Let’s say you give a quote of 40 hours and you typically work a 50 hour week (minus lunches). By this rationale, it seems a safe bet to think that if you start first thing on Monday morning, you should be done by end-of-day Friday.

That’s what theory tells you. But in reality, you will probably be done closer to Wednesday. In my experience, I’ve found that developers can generally only get 4-5 highly productive hours cranked out on a given day. That’s not to say that the rest of the time is spent looking at lolcats (there is this thing called email), but it’s impossible to operate at the same high level from dawn to dusk. If you find a developer who can, you’ve struck Texas tea.

Pick One Browser to Develop In

Almost any client side engineer will tell you to develop in one browser first, then test on other browsers and platforms later. He or she may take that a step further and highly recommend that said browser be Firefox. One word: Firebug. ‘Nuff said.

You want to run your CSS in the most compliant browser available to you, but there is one major caveat - make sure you know your target audience. I wouldn’t recommend using cutting edge CSS techniques if 50% of your users are a dog’s year behind in technology and are still using IE6.

Markup and Style a Wire Frame of the Document’s Structure

I am using wire frame here to refer to the basic outline of the page which includes elements like the header, sidebar, footer etc. One thing you do not want to do is start obsessing about the micro details at the outset. There are bigger fish to fry. At this stage, you need to look out for any serious flaws or drawbacks in the design. Is the content dynamic or static? Does the layout need to be fixed, elastic or fluid? You’d certainly rather know that type of info upfront rather than coding out 200 pages to find out the header needs to flex when the user resizes her screen.

Plus, if you get carried away fiddling with line-height and letter-spacing for two hours up front, I can promise you will be like a runaway locomotive roaring past your deadline. At this point, just make sure you have the skeleton of your page.

Keep Your CSS Tidy

Most of your time will be spent in the CSS files, so it’s important that you have a structure that makes sense to you (and others if you are working on a team). Smashing Magazine has put together and exhaustive collection of ideas and tips for doing just this, so check it out for some ideas. As with most suggestions, some are purely subjective - such as reset and typography style sheets - while others, like flags, will be quite handy when you need to quickly navigate through a large CSS document.

The Devil’s in the Details

Finally, once your page is fully marked up and your base styles are in place, it’s time to make that HTML proud. Try to write as many of your rules as you can before checking in the browser. The more you check, the slower you will work. I like to check after I finish off a section or module, then tweak from there. Alternatively, some people like to code directly into Firebug and see their results in real time.

If you’re the obsessive type like myself, you may then want to take screen caps and compare them to your comps so that you can be sure that text line-heights and margins are precisely as the designer wishes. I spend A LOT of time refining my HTML/CSS but it’s worth it - in the end everyone is satisfied.

Test and debug

By far the most tedious of the above listed activities but perhaps the most rewarding. Who doesn’t get an elevated sense of self worth from setting bugs to ‘resolved’ in a bug tracker system? It can be maddening to spend 3 hours fixing a positioning bug in IE, but once it’s fixed, your breakfast will taste sweeter than it ever has before.

That three hours is exactly why we’ve factored in bug fixing ahead of time. Some bugs have well documented quick fixes while others can take a full day, which is exactly why we’ve accounted for this up front.

Design Review

Once I have all the comps transformed into glistening HTML files, I send them off to be carefully reviewed by the designer. If you can please the designer, the client will be a walk in the park. Remember: it’s their blood, sweat and tears too, so they want everything to be ‘pixel perfect’. It’s your job to get as close to that as possible within reason. Once your both satisfied, it’s time to ship that puppy off to the client and recollect what’s left of your sanity.

Forgetting JavaScript

August 7th, 2008

JavaScript has become much easier to write over the past two years with the help of top notch libraries such as Prototype and jQuery. Before getting my feet wet with either of the two aforementioned heavy-weights, I spent my time slugging it out with tedious DOM methods and ‘vanilla’ loops. It was certainly time consuming, but I knew exactly what my code was doing and would still know what it was doing six months from then.

Now, much like the rest of the world, I can’t seem to get by without jQuery or Prototype to do most of the heavy lifting for me. This is all well and good, but if/when the occasion arrives when you can’t rely on a library to plug all the holes for you, you might be surprised how much plain ole JavaScript you’ve mis-remembered.

I certainly was. I had to lean pretty heavily on the ole Rhino book - which by the way, is a book no serious JS scripter should be without - because I had forgotten stuff I used to be able to do in my sleep.

So, as a healthy exercise, I think it’s a good idea to try and write some scripts without using one of the fantastic libraries and frameworks out there, so you can spend some quality time reacquainting yourself with JavaScript. In fact, if you have some time to kill, you might want to run through Chris Heilman’s JavaScript course and work on the demos. Though the course is a few years old by now, the exercises are still worth taking a shot at to keep your skills in check. It’ll force you to think a little bit differently once you can’t rely on CSS selectors to whiz up and down the DOM tree for you.

Don’t worry - I am not suffering from a fit of dementia in which I want to do away with libraries and frameworks - quite the opposite. Why, I even helped debug a famous jQuery plugin. I just think it’s healthy to approach code from a different angle every once in a while and realize how good these libraries make our lives as developers.

Fluidesign: Reloaded and Rebranded

July 30th, 2008

Fluidesign, my home away from home, has just launched our new website and identity. We think it’s pretty groovy and we think you will feel the same way.

Of particular note is the fact that users can comment on our portfolio - as we far as we know, no other interactive agency allows this type of public discourse on their site. We like to encourage people to give us feedback wherever possible, and this puppy is no exception.

The team is still ironing out some kinks, so if you see something funky, get in touch.

I think I can safely speak for all of us at FD World Headquarters that we are amped beyond all belief to have this sucker live. The previous version of fluidesign.com served us for roughly 3.5 years. It did it’s job, got us clients and put our name out there, but after a while, it simply didn’t feel like us anymore. Now, we’ve been refined and reloaded.

Here’s to the next four years.

Update: QBN has featured our new site, woo hoo! Check it out.