Quasi Object Blog http://quasiobject.com/blog Blog covering web development, information architecture and interaction design New Work from 2011, Plans for 2012 http://quasiobject.com/blog/57/new-work-from-2011-plans-for-2012/ Last year was a good one. I was lucky enough to work steadily throughout the year on some great projects. I've added some of said projects to the portfolio: SunGard, Bojangles', InVue Power Up, Wire Rope Exchange and BAM Architects. I can only hope for similar prosperity and clientele for 2012.

At the end of 2011, I made conscious effort to consolidate my focus. Accordingly, I've dropped several of my half-baked side projects and languishing domains. For the projects that made the cut, there are a few minor developments on the horizon and some grander plans, but I won't get into those until the time is right. As well, look for Quasi Object Labs here soon.

Finally, I will breathe some new life into the blog this year. I realized that what is posted here doesn't have to be anguished over or amazingly articulate (not that any previous posts were either). Basically, whenever Twitter's 140 characters don't cut it, I'll probably post those thoughts here. Expect some cross-posting from Forrst, too.

]]>
Mon, 02 Jan 2012 18:02:00 -0500 http://quasiobject.com/blog/57/new-work-from-2011-plans-for-2012/#comment
Updated Logo, Website http://quasiobject.com/blog/55/updated-logo-website/ I've been wanting to make a few tweaks to the Quasi Object logo for a while now. The original Q came from a font I created back in college and it didn't have the exactness I felt warranted by the services it represents, web development.

Accordingly, I rebuilt the logo based on a 4x6 grid, with each block as one unit. For the blocks with rounded corners, I further broke them down into a 4x4 grid and rounded the corner at 25%. Whether it needed to be done or not, it at least appeases the OCD gods (for now).

Of course, once I started fiddling with the logo, that made me want to take a look at the website. I ditched my homegrown setup for Kohana 3 and expanded the site out with dedicated project pages, an about page and a contact page. The plan is to keep iterating on this throughout the year, but I wanted to start fresh for 2011.

Last but not least, I added all my notable work from 2010 to the portfolio. Out with the old, in with the new. Here's to a successful, productive 2011, everyone!

]]>
Mon, 03 Jan 2011 13:32:00 -0500 http://quasiobject.com/blog/55/updated-logo-website/#comment
Allowing Flash Uploads Through Apache Authentication in .htaccess http://quasiobject.com/blog/54/allowing-flash-uploads-through-apache-authentication-in-htaccess/ Occasionally, I run into issues uploading files through Flash to a development or staging site protected by Apache authentication. I've seen all kinds of recommendations to bypass the authentication, but nothing ever worked.

Recently, I realized you can limit the authentication to GET requests only, which leaves POST requests completely open. As it does leave POST open, I would only suggest using it for a development or staging environment.

<Limit GET>
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /path/to/htpasswd
Require valid-user
</Limit>

Since discovering the use of the <Limit> directive in .htaccess, I've seen this workaround mentioned several other places, sometimes using the <LimitExcept> directive instead. <LimitExcept> produced an Internal Service Error for me, so I can't vouch for it. Nevertheless, as the information is somewhat buried in comment threads and forums littered around the web, I wanted to post it out in the open for other frustrated developers out there to find and use.

]]>
Fri, 19 Nov 2010 13:04:33 -0500 http://quasiobject.com/blog/54/allowing-flash-uploads-through-apache-authentication-in-htaccess/#comment
Silent Uproar Search http://quasiobject.com/blog/53/silent-uproar-search/ I recently relaunched Silent Uproar with some designs from art director and designer Clay Johnson at With. One of my favorite parts of the new design from Clay is the search overlay. When he first sent me the screen, I hadn't seen anything quite like it before and knew it might take people off guard, even with something as banal as a keyword search. Technically, it wouldn't have been possible without using @font-face embedding and OFL typefaces like League Gothic. Maybe it could be a tad clearer on the usability side (i.e., there's no submit button), but I was happy to put form over function in this case.

]]>
Wed, 03 Nov 2010 12:05:00 -0400 http://quasiobject.com/blog/53/silent-uproar-search/#comment
Change is Coming http://quasiobject.com/blog/52/change-is-coming/ The longer you neglect something, the easier it is to neglect. Case in point: this blog hasn't been updated in over four months. Nevertheless, I've got about eight projects to add to the portfolio, a few tweaks and a possible face lift for this website. Not to mention, the handful of client and internal projects that are currently in progress.

Lately, I've been trying to be an active participant on Forrst, a new community for designers and developers. That community is motivating me to learn from and share more information with my peers. Hopefully, a steady stream of tips and snippets will again flow through these pages before too long.

How many times can I do these "it's been a while, I'll do better" posts before I'm the boy who cried wolf? I'll try not to make it a habit.

]]>
Fri, 20 Aug 2010 17:49:03 -0400 http://quasiobject.com/blog/52/change-is-coming/#comment
Minor Yet Irritating Flash Bug in Mac Firefox 3.6 http://quasiobject.com/blog/51/minor-yet-irritating-flash-bug-in-mac-firefox-36/ Shortly after upgrading to Firefox 3.6 on the Mac, I noticed a lot of Flash elements offset by one pixel on the top and left. I thought I was going crazy, until I downgraded to 3.5.x and it went away. I tried to find a workaround or explanation, but there was none. Like I said, minor yet irritating.

Apparently, it crops up if the elements are centered and if the browser window is sized to an even width. Thankfully, Mozilla now recognizes the bug, it's become a priority and is working on a fix. (Note: this is not an issue with 'focus' or 'outline' CSS properties.)

Indeed, this is a minor issue, but if you have any Flash elements that are width or height sensitive, chances are they're affected to this bug. I posted this note to save any of you Mac Firefox folks out there the headache of tracking down this issue.

]]>
Fri, 09 Apr 2010 12:33:51 -0400 http://quasiobject.com/blog/51/minor-yet-irritating-flash-bug-in-mac-firefox-36/#comment
Brantley Barefoot http://quasiobject.com/blog/49/brantley-barefoot/ Designer, art director and friend Brantley Barefoot just launched a simple, new portfolio. I helped get him up and running, with ExpressionEngine as a back end. Toggle the background with "w" for some added fun.

]]>
Tue, 06 Apr 2010 11:52:10 -0400 http://quasiobject.com/blog/49/brantley-barefoot/#comment
Is it 2010 Already? http://quasiobject.com/blog/48/is-it-2010-already/ Last time we talked it was November 2009. I've been slack on the blogging and slightly overwhelmed with work (which I'll never complain about, just stating the facts). For brevity's sake, I'll just provide the highlights.

I provided a little Flash and Papervision3D assistance to BigNoise on the NASCAR Hall of Fame home page. Then, I worked with my pals at Nice Outfit, handling development on a website for Los Angeles graffiti legend RISK. After that, I helped launch a website and partnership with Serious&Ly in Richmond, VA. Most recently, I built a website for African American string band Carolina Chocolate Drops and Crips founding member Greg “Batman” Davis (via R. Rock Enterprises).

On the horizon is a web app launch for Novelope. With Serious&Ly, there are projects ongoing for Work Labs' new, internal collaborative app, Lab Rats, and the launch of a digital media label, The Acme Thunderer. As well, I'm gearing up for a few in-house projects and will make an effort to keep the blog fresh with content. 2010 already sounds busy — I hope I can keep up.

]]>
Fri, 05 Mar 2010 12:38:26 -0500 http://quasiobject.com/blog/48/is-it-2010-already/#comment
Interaction Elasticity http://quasiobject.com/blog/47/interaction-elasticity/ Jakob Nielsen occasionally drifts into utopian usability fantasies in which he tries to convince us that we should all stop using Flash and Photoshop. On the other hand, he occasionally publishes ideas that are valid.

I recently browsed a year-old article on Interaction Elasticity that contained this:

A path with 5 easy clicks is vastly superior to one with 3 difficult clicks. And a menu with 10 easily understood items is better than a menu with 7 obscure ones.

To put this in context, I was debating the use of a dreaded drop-down menu when I came across said article. For me, Nielsen's quote argued against things like drop-down menus, since providing a clear logical navigation path to subpages (even with 2 to 3 clicks) would be usable, clean and better for information architecture.

Note: I'm downplaying the traditional drop-down. I think rollovers that are more akin to widgets or what Nielsen calls a Mega Drop-Down aren't so bad.

]]>
Fri, 13 Nov 2009 00:34:56 -0500 http://quasiobject.com/blog/47/interaction-elasticity/#comment
New Work in the Portfolio http://quasiobject.com/blog/46/new-work-in-the-portfolio/ I've updated the Work section with some recent projects. Amongst the added work, there's a trio of Richmond, VA based clients, with RVA Magazine, Redsalon Organics and Sticky Rice. As well, I'm trying out an interaction video for Dalek—seems to showcase movement better than a series of images, natch.

]]>
Fri, 13 Nov 2009 00:34:50 -0500 http://quasiobject.com/blog/46/new-work-in-the-portfolio/#comment
How to Tween the Alpha Value of a Plane with MovieMaterial in Papervision 3D 2.0 http://quasiobject.com/blog/44/how-to-tween-the-alpha-value-of-a-plane-with-moviematerial-in-papervision-3d-20/ I spent an inordinate amount of time figuring out how to tween the alpha value of a Plane with MovieMaterial in Papervision 3D today. In case it saves anyone out there some time, here's how to access it:

MovieMaterial(plane.material).movie.alpha

The DisplayObject3D class has an alpha property, but it doesn't seem to affect the material inside the object. I can't say I completely understand why it works, but it works. Note: The "animated" property of your MovieMaterial must be set to "true."

Oddly, this does not work:

plane.material.movie.alpha

Even though "plane.material" seems to be a MovieMaterial object, "movie" comes back as an undefined property when compiling. I'm sure it has something to do with data type information in AS3 that I don't quite comprehend yet.

In case this happens to be a weird version issue, I'm using OS X 10.5.8, Flash CS4 and Papervision3D 2.0.869. Lastly, here's the gotoAndLearn() forum thread that pointed me in the right direction.

]]>
Thu, 01 Oct 2009 19:15:47 -0400 http://quasiobject.com/blog/44/how-to-tween-the-alpha-value-of-a-plane-with-moviematerial-in-papervision-3d-20/#comment
WordPress 2.8 Schema Change Bug http://quasiobject.com/blog/43/wordpress-28-schema-change-bug/ Normally, WordPress is a good platform to manage simple websites and blogs. Despite the recent worm outbreak, if you keep it up to date, I still recommend it. However, when digging into the innards of the system, you occasionally come across a bug here or there that boggle the mind. Case in point, I recently stumbled across an attachment bug in the core files caused by a database schema change by the WordPress team. As far as I know, attachments have been a tried-and-true part of WordPress since version 2.5.

I discovered the bug after a client started using the WordPress iPhone app to manage their blog. No matter what I tried, uploaded photos weren't being attached to posts. It became an issue, because the theme I built required images to be attached to posts in order to display properly. Moreover, I started noticing many regular posts' images were randomly not attaching, even when posting through the regular admin.

After an hour of scanning code and searching the web, I found out WordPress had changed their post ID fields to bigint(20) UNSIGNED as of version 2.8. Well, this change broke image attachments in the XML-RPC script and in the admin when uploading media prior to saving a draft. Coincidentally, it also broke attachments via the QuickPress feature on the on new WordPress Dashboard.

To fix the XML-RPC page, I applied this patch. Since the field is UNSIGNED, the temporary ID of -1 the XML-RPC function uses is invalid. However, that didn't address the admin bug. That's when I found the MySQL workaround by 3 Dog Media:

ALTER TABLE wp_posts MODIFY post_parent BIGINT(20) NOT NULL DEFAULT 0;

That query essentially removes the UNSIGNED attribute from the post_parent field in the wp_posts table, thus allowing the temporary negative IDs WordPress is still using, depsite the schema change. Note: The MySQL change fixes those all negative ID issues, so feel free to just apply that schema fix to your database.

Normally, I don't recommend core changes, because future updates will wipe them out. However, according to the bug ticket, the issue is deemed an edge case and won't be addressed until version 2.9. It's up to you to handle it until then.

]]>
Thu, 10 Sep 2009 13:48:24 -0400 http://quasiobject.com/blog/43/wordpress-28-schema-change-bug/#comment
Activity Streams http://quasiobject.com/blog/41/activity-streams/ A couple months ago, I watched David Recordon's presentation at Webstock 09 on Vimeo. He covered a lot of ideas about how to build a better open social web.

A quick Google search on Recordon lead me to the Diso Project website, which aims to "facilitate the creation of open, non-proprietary and interoperable building blocks for the decentralized social web." The DiSo Project lead me to a blog post from Chris Messina about Activity Streams.

From the Activity Stream draft spec:

For the purpose of this specification, an Activity is a description of an action that was performed (the Verb) at some instant in time by some actor (the Subject see Section 6.1 (Feed Subject)), usually on some social object (the Object). An Activity Feed is a feed of such Activities.

Facebook and MySpace have already adopted Activity Streams as the standard way to disperse users' activity data out to the web.

What Facebook and MySpace are doing is a great first step, but the usefulness of this format would be completely realized if we could work towards something like what Chris Messina described in his blog post (i.e., "consume activities based on human-readable content types, rather than by the service name on which they were produced"). Meaning, it wouldn't matter where you uploaded your photo, posted your blog or updated your status, we could all follow each other independently of which network we were on. Sure, this is like what FriendFeed now offers, but as Messina said, we could offer this without "hardcoding support" for the myriad social networks' API or feed format. It would just be up to the individual services to build in support for Activity Streams (which is merely a beefed up Atom feed).

This may be another pie-in-the-sky movement for the social web, but this is the first one (since Microformats) I've seen that looks useful.

]]>
Wed, 12 Aug 2009 12:14:18 -0400 http://quasiobject.com/blog/41/activity-streams/#comment
Ongoing Web Fonts Coverage http://quasiobject.com/blog/40/ongoing-web-fonts-coverage/ Safari 4 and Firefox 3.5 are surely the impetus for all this web font discussion. Designers and developers can see the promised land, but it's just out of reach. Nevertheless, here are two more good articles on the current state of things:

]]>
Sat, 25 Jul 2009 14:59:49 -0400 http://quasiobject.com/blog/40/ongoing-web-fonts-coverage/#comment
Paste Your Taste http://quasiobject.com/blog/39/paste-your-taste/ Last.fm recently added a feature to their profile pages that I thought was great. "Paste Your Taste" assembles a block of text describing your overall top music picks for use on social networking profiles.

For example, my current selection is:

I'm into indie, rock, alternative, electronic and experimental, including: Thrice, Queens of the Stone Age, Squarepusher, Plaid, The Avett Brothers, Radiohead, dredg, The Dillinger Escape Plan, Poison the Well, Muse, Mastodon, The Books, The Walkmen, Shiner, Incubus, Against Me!, Spoon, mewithoutYou, Iron & Wine, The Beatles, The Decemberists, Arcade Fire, He Is Legend, Death Cab for Cutie, Paul McCartney, The Smashing Pumpkins, Annuals, Codeseven, Slow Runner, Nine Inch Nails, Foo Fighters, Aphex Twin, The Knife, Ebu Gogo, Prefuse 73, Head Automatica, Silverchair, Deftones, Far-Less, Kaki King, Clark, Cory Branan, Killswitch Engage, Maximo Park, The Life and Times, Elliott Smith, Department of Eagles, Bloc Party, M83, The Streets.

Check out my music taste: http://www.last.fm/user/heyrevolver

Compared to the other technology working on their site, the "Paste Your Taste" functionality is nothing special. However, it solves a common problem—albeit a minor one—and makes it very easy to share your own taste in music. A great example of a feature that compliments the service while requiring minimal development.

]]>
Tue, 07 Jul 2009 12:42:44 -0400 http://quasiobject.com/blog/39/paste-your-taste/#comment
A2 Hosting July Discount http://quasiobject.com/blog/38/a2-hosting-july-discount/ I normally would not post this kind of thing here, but my hosting company, A2 Hosting, is offering a 40% discount on hosting purchases for the month of July. The coupon code is economystinks (expires 7/31/09). That will get you a technically unlimited, reputable shared hosting account for around $4.77/month. There have been a few hiccups along the way, but I've been very pleased with their support.

]]>
Wed, 01 Jul 2009 15:30:35 -0400 http://quasiobject.com/blog/38/a2-hosting-july-discount/#comment
Web Fonts Follow-Up http://quasiobject.com/blog/37/web-fonts-follow-up/ Since my last post on web fonts, a pair of new websites have launched related to the cause. One is proposing a big step forward, while the other is a nice resource.

Typekit from Small Batch Inc. aims "to develop a consistent web-only font linking license." According to their blog:

We've built a technology platform that lets us to host both free and commercial fonts in a way that is incredibly fast, smoothes out differences in how browsers handle type, and offers the level of protection that type designers need without resorting to annoying and ineffective DRM.

With a free version promised from the outset, it sounds like a great offering. However, the mentions of a "low-cost way to grow" and "scalable professional version" leaves me a little apprehensive. I'm not making any judgments until they launch the service, but facing recurring charges for the unforeseeable future doesn't sound like the best solution.

Next, The League of Moveable Type (no relation to the blogging platform) simply provides "well-made, free & open-source, @font-face ready fonts." The fonts are available under a Attribution Share Alike Creative Commons license for personal and commercial use. Most members just want to see what you do with their fonts, but a credit in your website's colophon couldn't hurt. The files themselves are either TTF or OTF—so, you'll just need to convert an EOT for Internet Explorer using WEFT.

]]>
Wed, 24 Jun 2009 11:57:08 -0400 http://quasiobject.com/blog/37/web-fonts-follow-up/#comment
Progressive Enhancement http://quasiobject.com/blog/36/progressive-enhancement/ David Bliss at Odopod recently posted a rundown of how his company handles Flash and SEO. He used the term "progressive enhancement" to describe the technique. According to Wikipedia:

Progressive enhancement is a strategy for web design that emphasizes accessibility, semantic markup, and external stylesheet and scripting technologies. Progressive enhancement uses web technologies in a layered fashion that allows everyone to access the basic content and functionality of a web page, using any browser or Internet connection, while also providing those with better bandwidth or more advanced browser software an enhanced version of the page.

This strategy is something I've been employing for a while, but without the terminology to succinctly describe it. As Bliss mentioned, with SWFObject, SWFAddress and the Flash Search Player from Google, it's becoming easier and easier to confidently sell SEO and Flash together. Next time you pitch a client, wrap this process up as "progressive enhancement." It would be nice to make the term an industry standard.

]]>
Mon, 15 Jun 2009 12:46:30 -0400 http://quasiobject.com/blog/36/progressive-enhancement/#comment
RVA Magazine http://quasiobject.com/blog/34/rva-magazine/ Back in April, I launched a redesign for RVA Magazine. I collaborated with Richmond, VA designer Gabriel Ricioppo of Brandbuilt on the project. RVA is one of the most widely known culture magazines in the Richmond area. Their old website didn't allow them to adequately showcase the massive amounts of content they generate on a weekly basis. I went with Drupal to deliver the amount of functionality the magazine required while staying on budget. The site also utilizes quite a bit of third-party services: Twitter, Flickr, Vimeo, Yahoo! Pipes, ShareThis and Issuu.

Nearly two months after launch, the RVA staff is still publishing tons of weekly content, their sustained traffic is up over 100% and they're regularly the first result when searching for RVA on Google.

]]>
Mon, 01 Jun 2009 19:33:00 -0400 http://quasiobject.com/blog/34/rva-magazine/#comment
Twitter is Not a Silver Bullet http://quasiobject.com/blog/33/twitter-is-not-a-silver-bullet/ E-dreamz, an interactive firm in Charlotte and where I interned at during college, recently published a blog post discussing the "similarities between Twitter and Inbound Linking strategies." Simply put, Twitter has mutated into another way for businesses to hock their wares, while the real draw of the service is from nothing of the sort.

For me, Twitter is the asides between the conversation. Quick commentary and reflection, no matter how mundane, is what has made Twitter successful socially. Twitter is not a notification service for your latest blog post—that's RSS.

Setting up a Twitter account doesn't automatically create the appearance that a business is "connected" to its customers either. As Merlin Mann commented in a recent podcast from SXSW (I'm paraphrasing): setting up an account on Twitter does not make you Zappos—putting resources behind serving your customers makes you Zappos. It takes time and effort, like everything else.

]]>
Fri, 27 Mar 2009 15:35:58 -0400 http://quasiobject.com/blog/33/twitter-is-not-a-silver-bullet/#comment
De Facto CMS for Bands http://quasiobject.com/blog/32/de-facto-cms-for-bands/ I'm a big fan of music. I'd like nothing more than to make a living developing websites for bands and helping them cultivate their online presence. Only one thing stands in my way: bands don't normally have a lot of money. If most local bands spend more than a couple thousand dollars on a website, it's just not going to be cost effective for them. Since the budgets are normally tight in comparison to the work involved, it's usually best to think creatively. With a little ingenuity, content management for band websites could be run completely off a few third-party services. The three services I've been looking at are Virb, Muxtape and Reverbnation.

Virb just launched a new version of their website, after an 18-month overhaul. Of the three, Virb seems to be the current, best option for the design conscious. As expected, you can manage news, tour dates and upload music. Additionally, Virb offers unlimited audio uploads, an RSS feed for news and a highly customizable, clean audio player, however no RSS or iCal feed for tour dates. While the social networking aspects are currently in place, using Virb as a band CMS is still not completely there. However, a Virb API and Virb Push service are in development, which could provide direct access to content on Virb band profiles.

Muxtape recently relaunched after completely switching gears. It's currently a public beta and invitation only, but there are seemingly big things going on behind the scenes. As hinted at on the Muxtape website and a blog post from lead developer, Luke Crawford, Muxtape is vying to become a one-stop shop for bands. It could potentially handle everything a band could require, but that capability has yet to materialize.

As it stands, Reverbnation is the most complete resource. In addition to providing the basics, the service provides FanReach mailing list management, distributed media tracking, street teams and digital distribution. They provide RSS feeds for news and tour dates. However, the provided widgets and embeds are not customizable and, frankly, pretty ugly. It's not so much that they're the most hideous widgets out there, but that they can't be integrated nicely into a design.

I realize there are many other things to consider for bands, but I'm looking at these services stricly from the standpoint of providing basic content management. To make this type of thing work, you essentially just need RSS feeds or an API. The overall idea is to update one place and have that information distributed to the various endpoints through some kind of syndication and custom widgets. It would be greate to have everything in one place as well as have some control visually, which is why I will probably wait on Virb or Muxtape to get a little further along.

One caveat is the management of photos and video. I always recommend utilizing Flickr and Vimeo (or YouTube), because I like the services and they are completely open. Virb already supports feeding in photos and video from said services. I'm sure Muxtape will follow suit. Reverbnation, however, is pretty closed, as they want to be a turnkey operation for bands. That makes Reverbnation a turnoff, in my opinion. I think bands should use every venue to promote themselves. If a photo on Flickr or a video on Vimeo leads someone to buy an album, I think it's worth managing those types of media separately. Especially, if everything is feeding into your website anyway.

]]>
Tue, 17 Mar 2009 11:41:22 -0400 http://quasiobject.com/blog/32/de-facto-cms-for-bands/#comment
Media Queries and the iPhone http://quasiobject.com/blog/31/media-queries-and-the-iphone/ Most of us are aware of how to specify media types to serve different stylesheets; the two types most used being 'print' and 'screen'. However, it wasn't until I researched a way to specify stylesheets by device that I stumbled across Media Queries.

Media Queries is currently a working W3C draft and part of the CSS3 effort, even though it was originally submitted in 2001.

A media query consists of a media type and zero or more expressions to limit the scope of style sheets. Among the media features that can be used in media queries are 'width', 'height', and 'color'. By using media queries, presentations can be tailored to a specific range of output devices without changing the content itself.

An example of how to write a media query:

<link rel="stylesheet" media="screen and (color)" href="example.css" />

Since this is a CSS3 feature, most browsers aren't going to support it yet. However, it works with Safari and should fail gracefully elsewhere. If you need to serve an iPhone-only stylesheet just set media to:

only screen and (max-device-width: 480px)
]]>
Mon, 09 Mar 2009 15:38:38 -0400 http://quasiobject.com/blog/31/media-queries-and-the-iphone/#comment
Utilizing Google Custom Search http://quasiobject.com/blog/30/utilizing-google-custom-search/ In December, I followed along as 24 Ways published their web geek advent calendar. It was one of the more helpful sets of "tips n' tricks" articles regarding web development and I recommend checking it out if you have not.

One article that was particularly interesting to me was Sitewide Search On A Shoe String by Christian Heilmann. Heilmann essentially explained how to build a sitewide search utilizing Yahoo! BOSS (Build Your Own Search Service). However, I am not a Yahoo! fan and more interested in getting something like this working with Google Search.

The idea was forgotten until I searched for something on Serious Eats, one of the better foodie blogs around. Serious Eats uses the Google Custom Search API and integrates the search results directly into their own page style. Exactly what I was after.

I hope to rework the search functionality on Silent Uproar this year. There are tens of thousands of items posted on Silent Uproar and this type of solution suits the content perfectly. With over 50% of our traffic coming from Google Search, it just makes the most sense; Google clearly has the best search service, so it benefits me to utilize their technology. I realize this isn't the best solution for every website, but it's better than not including search services in a project—especially if you have a lot of static pages.

On a related note, I was reading back through Jeff Atwood's The Importance of Sitemaps from last year. In the post, Atwood discusses how Google drives over 50% of the traffic to Stack Overflow, which parellels Silent Uproar quite well. He then goes on to talk about how sitemaps can help boost that traffic further. Putting two and two together: since Google Custom Search utilizes Google's index to display results, it would seem that creating sitemaps would give Custom Search a leg up. Low and behold, a quick Google search later and we have Sitemaps offer better coverage for your Custom Search Engine from Google's Webmaster Central Blog.

You still have to put the work into implementing Google Custom Search. However, do it once and you can use it over and over. If anything, it makes creating a sitewide search seem a lot less daunting.

]]>
Tue, 03 Mar 2009 15:23:42 -0500 http://quasiobject.com/blog/30/utilizing-google-custom-search/#comment
Web Fonts, sIFR Alternatives http://quasiobject.com/blog/29/web-fonts-sifr-alternatives/ Using custom fonts on the web, other than the dozen or so standards faces, has been "the next big thing" for the past several years. We've been teased with the proposed ability to embed custom fonts into web pages since the CSS2 specification submitted in 1998. However, until a major font foundry or company (like Adobe or Microsoft) decides to release a new set of fonts for public use, we're probably out of luck.

sIFR, the brainchild of Shaun Inman, has filled the void. Mike Davidson and Mark Wubben have picked up the torch and run with the technology. sIFR 3.0 is currently in the works and addresses a bevy of issues, like consistent font tuning across platforms. However, sIFR is both a blessing and a curse. Since each instance of sIFR becomes an embedded Flash movie, excessive use of sIFR slows down page load. Basically, if you try to use sIFR for more than headlines, then it starts to become more of a problem. While everything is best in moderation, body copy could use a little love, too.

Most folks are waiting on the CSS3 @font-face module to gain traction, but it's wrought with the same issues as the CSS2 spec. Jon Tan covers the topic more thoroughly than I ever will on this blog, so I recommend reading his blog post Making Web Fonts Work. Essentially, it's come down to a Microsoft vs. Everyone Else issue again, with IE supporting .eot (Embedded Open Types) files and other browsers supporting .otf (OpenType Font) files.

The latest buzz has been around Cufón. As its github page describes, it provides "fast text replacement with canvas and VML." The Cufón method requires converting fonts into "a proprietary format" and then utilizing a JavaScript rendering engine to display the font in a browser. I've only tested it in Firefox, but I already prefer it's implementation to sIFR, despite the fact that the text is not selectable. Apparently, it already works well cross-browser, with some known issues.

Lastly, sIFR Lite, Facelift and Typeface.js are some other contenders. sIFR Lite is essentially just a reworking of sIFR, but object-oriented and only 3.7kb uncompressed. Sadly, each have their problems, but I'm keeping my eye on them.

It's possible we may see some kind of resolution with CSS3's @font-face in the next wave of browser updates, but it really all comes down to licensing. Until a standard is settled upon, we'll continue to bootstrap custom fonts onto the web.

Related: Read the Increase Your Font Stacks With Font Matrix article on 24 Ways and learn how to construct a "font stack."

]]>
Wed, 25 Feb 2009 17:56:21 -0500 http://quasiobject.com/blog/29/web-fonts-sifr-alternatives/#comment
Specifying a Canonical URL http://quasiobject.com/blog/28/specifying-a-canonical-url/ Last week, Google introduced a format to publicly specify the preferred URL for a page. You simply add this link tag to any page:

<link rel="canonical" href="http://www.example.com/page/" />

The "canonical" attribute tells the Googlebot which URL is the preferred address for any given page. This is perfect for me with a site like Silent Uproar. We've changed our URLs several times over the 8+ years the site has been running and Google has cached 2-3 different URLs for a lot of our archived content (i.e., some with a PHP extension, query strings and/or mod_rewrite URLs).

Not everyone is going to be able to utilize this update, but Google has already fielded a lot of questions for the people that will implement it. It's definitely a nice thing to have for sites with a bit of history and duplicate content issues.

]]>
Wed, 18 Feb 2009 15:27:02 -0500 http://quasiobject.com/blog/28/specifying-a-canonical-url/#comment
Click Here Links Must Die http://quasiobject.com/blog/27/click-here-links-must-die/ One of my biggest pet peeves are "click here" links. It's the lowest common denominator method for placing links in content. I never really liked them, but I vowed to never use them and rally against the practice starting about four years ago.

Zach Dunn over at Built Internet! apparently hates them as much as I do and wrote an article to that effect. He makes the argument that "click here" links don't really mean anything in context and that if "the links are clear enough, a user should not have to be instructed where to click." Not to mention, "click here" does nothing towards improving search engine rank.

It's such a small issue, but something that's very easy to remedy. Take a few minutes to rewrite a sentence next time you find yourself linking with "click here." Think of it as providing the user with a brief description of what it is they're about to see.

]]>
Wed, 11 Feb 2009 13:08:20 -0500 http://quasiobject.com/blog/27/click-here-links-must-die/#comment
MarkerManager http://quasiobject.com/blog/26/markermanager/ I've done some basic work with the Google Maps API before, but last year I helped Nice Outfit with some advanced map work on the York County Visitors Bureau website.

We built an interactive map to mark locations based on category. The map needed to toggle sets of locations on and off through checkbox controls. I knew how to mark a single location, but was a little unsure about adding, tracking and removing multiple markers. As well, the functionality needed to scale as the bureau added partners.

Luckily, Google provided a link to the open source MarkerManager, since their GMarkerManager is deprecated. The tool is part of the GMaps Utility Library project, which provides quite a few nice extensions to Google's functionality. As you'd imagine, the MarkerManager class allows for management of hundreds of map markers.

While this is not the most exciting topic, I'd suggest bookmarking the library for when you need to do a little bit more with a Google Map than the built-in API offers. There's even an AS3 library for Flash developers.

]]>
Mon, 09 Feb 2009 17:45:01 -0500 http://quasiobject.com/blog/26/markermanager/#comment
PHP Filter Functions http://quasiobject.com/blog/25/php-filter-functions/ Late last year, I bookmarked a post on PHP filter functions. I've been using PHP for about 8 years and I've never heard of them. According to the PHP manual, the "filter extension is enabled by default as of PHP 5.2.0." Beforehand, it was an "experimental PECL extension," which might explain its mystery. If you're stuck with less than PHP 5, you're probably out of luck.

Technical details aside, the filters do what you'd expect: filter data. These filters could potentially replace most regular expression validation. Better yet, they provide a nice way to standardize this type of functionality. The workhorse function of this family is:

filter_var($value, $filter)

You simply pass it a variable and a predefined filter flag (or flags). Common filters provide validation of just about anything can you think of: email address, URL, string, integer, float, et al. The function returns a boolean FALSE if a value doesn't pass the filter.

In addition, the filters can also sanitize values. Those flags include sanitization for strings, quotes, special characters, et al. For starters, think of it as a replacement for cleaning GET/POST data with magic_quotes and/or mysql_real_escape_string.

The function that got me the most interested is the big brother to filter_var:

filter_var_array($data, $defintion)

Pass it an array of values, an array of filter definitions and it will give you back an array of results. With a little work upfront, you could streamline form validation with this function. I've got a validation class that I've been using for the past 2-3 years and I'm ready to rework it completely in favor of these filter functions.

I'll follow up this post with some impressions, once I get my hands dirty. However, I wanted to share this with anyone looking to step up their validation.

]]>
Tue, 03 Feb 2009 16:16:10 -0500 http://quasiobject.com/blog/25/php-filter-functions/#comment
New Work, I'm Alive http://quasiobject.com/blog/24/new-work-im-alive/ December and January were both busy months, hence the lack of posts. Though, that's not much of an excuse. It's not like I can't spare 15 minutes, but I digress.

I've updated the Work page to include the new Dalek site I worked on with Nice Outfit, a site for Ramseur Records' folk-rock band Samantha Crain & the Midnight Shivers, a site for Jim Avett's gospel album and a little Google Maps API work on the York County Visitors Bureau website. I plan to discuss some of the nuts and bolts that went into these projects, but that's another post.

I've got a few more projects in the works and slew of blog posts in the tank. Time to breathe some life back into this blog.

]]>
Tue, 03 Feb 2009 13:52:57 -0500 http://quasiobject.com/blog/24/new-work-im-alive/#comment
Google Analytics Tracking for Adobe Flash http://quasiobject.com/blog/23/google-analytics-tracking-for-adobe-flash/ This week at Adobe MAX, the Google Analytics team unveiled Google Analytics Tracking for Adobe Flash. According to Google:

This feature is a translation of the current Google Analytics tracking code into the ActionScript 3 programming language that dramatically simplifies the ability to track Flash, Flex and AS3 content. This new Flash tracking code provides all the rich features of the current JavaScript-based version, including campaign, pageview and event tracking and can be used to track Flash content such as embedded videos, branded microsites and distributed widgets, such as online games.

Developers have the choice of using a Flash Component or a AnalyticsLibrary Component, for complete control over tracking objects directly in AS3.

For more detailed information, check out the introduction and implementation guide over on Google Code. Then, watch the video demo on YouTube.

]]>
Thu, 20 Nov 2008 12:17:59 -0500 http://quasiobject.com/blog/23/google-analytics-tracking-for-adobe-flash/#comment