the singularity of being and nothingness
Web Design

HTML5 Geolocation
Jul 9th
Continuing on from my last post regarding new client-side storage options, I decided to keep the trend of HTML5-related posts coming 🙂
So unless you haven’t visited the web in the last 3 years, you know that location-based services are super-hot right now. If social networking was the final result of Web 2.0, wiring-in people’s browsers (both position-locked and mobile) to geolocation is easily Web 3.0 and beyond. For example, with few exceptions, the vast majority of my iPhone apps have some geo-location component. Whether it’s my RedBox app finding me the closest kiosk, or FourSquare letting me “check in” to new (and not so new) locations, nearly everything I do on the web is able to be tagged with a location. Every tweet, every Facebook wall post, heck, even this blog post have geolocation data attached to them. In every possible way, the web is no longer just about “what” you are doing–it’s where you’re doing it as well.
To help make this more of an integrated reality, HTML5 will come fully-loaded with baked-in geolocation support. As with client-side storage, dealing with the geolocation options is quite easy.
Let’s take a look at a simple example. In what follows, I simply want to More >

HTML5 Storage: Goodbye, Cookies
Jul 8th
If you’ve done any web development, at all, ever, you’ve undoubtedly used–and cursed–the clunky cookie.
In all fairness, cookies are nice for what they are. You can store basic information about users and their behaviors on the user’s machine for use on your site, and they are fairly reliable. The problem with them, though, is that they are clunky. Clunky to set, clunky to expire, and quite limited in terms of storage capability–4000-some characters…lame.
Fortunately, in HTML5, we have a much better option for light-weight client-side storage (like cookies) without the clunky-ness, retarded size limits, and potential “leak” issues. Actually, we have two 🙂
First, let’s talk about the Storage object to which the two options belong. According to the proposed spec, the Storage object provides access to set, read, and remove “items” which are basically the key/value pairs that everyone is familiar with. Unlike cookies, however, the key/value pairs do not have an expiration date associated with them, and are removed either by user action or by the cessation of a session.
Enough talk. Let’s look at the options.
sessionStoragesessionStorage is an attribute of the Storage object which represents a storage area for each “origin” [read domain]. In other words, sessionStorage is a place you More >

Fun with CSS3: RGBA
Jun 20th
If you’re a web designer, there are times (I’m sure) when you’ve wanted to have a transparent background for something. After all, Web 2.0 is all about transparency and rounded corners, right? 😉
In CSS2, there were generally two ways to go about this. The easiest was to use the “opacity” property. Sure, it didn’t validate, and you had to use an alternate syntax for IE7, but still…super easy.
.opacity {opacity:.7;}
The major downside (besides lack of support) of this approach is that the opacity is applied to the entire element. So, if you have a div with a bunch of text in it, any opacity setting applied to it will rollup to whatever content is contained within the element to which the opacity is applied. Especially with text, this can make for some washed-out-looking content:
In this example, the heading has a simple color of “white”, yet it looks very washed out. This is simply because it inherits the opacity of its parent element.
So if the opacity of the content is important, the next best option is to use a .png as a background image. With this approach, we get all the benefits of background-opacity, while still preserving the natural opacity of any More >

A List Apart 2009 Web Survey
Dec 15th
If you haven't already seen, A List Apart's annual survey for people who make web sites is live and ready to be filled out by web site professionals. Despite some initial set backs, I was one of the first this morning to fill out the survey, and I encourage everyone who makes their livelihood off web design and development to fill it out immediately.
Anyway, continuing to read this blog is distracting you from filling out the survey! Go do it now!, and then come back and read more stuff here 😉
Share this:
Falling in Love with Aptana
May 17th
Yeah, so I'm really dumb. For a long time, I've used DreamWeaver pretty much exclusively as an IDE for my web projects. There's something that makes sense here, as it has pretty good HTML and CSS features, and some limited ColdFusion and XML niceties. However, it is the suck when it comes to JavaScript editing.
Today I discovered Aptana. Of course, I've used Aptana before…by used, I mean, of course, that I downloaded the free version and played around with it (especially the built in AIR support). However, I had never really used it to modify JavaScript.
Well, there is a new love in my life! Aptana is smart enough to take my JavaScript, spaghetti-code as it is, and self-document all of the functions and variables that I have set. They may not seem like a big deal, but when you have several hundreds of lines of JS code with inline comments, it can be a big pain to scroll around trying to find this or that.
With Aptana, this kind of stone-age button pecking is over. Aptana has a nice, built-in "Outline" toolbar that helpfully shows all of the functions in the selected file, along with any declared variables. Plus, each More >

What You See Is What You Get…Unless You Can't See
Dec 23rd
If you use one or more of the billion and seven content managment systems out there, you're probably more than familiar with a what-you-see-is-what-you-get (WYSIWYG) text editor. These *fun* little textareas allow users to mimic, with decent accuracy, the styles and organization that they would normally apply in word-processing documents.
The original intention of WYSIWYGs, of course, was to put control of text styling and organzation for web-based content into the hands of the people managing the content, so that every bit of text-editing doesn't have to go through the web developer. The result, however, is a disaster.
Why a disaster? Well, before discussing the reasons why, try this little experiment. The next time you're around a web designer/developer, say nothing to them. Simply shift your eyes, turn your head, and randomly blurt out "WYSIWYG!!!". They will either 1.) punch you in the mouth out of built up frustration or 2.) cower in a corner as they are reminded of how they are abused by WYSIWYGs on a daily basis.
So what's the big deal?
Well, to begin, most content managers have no business even thinking the word "design," much less actively participate in it. Giving them the reigns to "make the More >

Freetime and a Brainstorm (or fart…)
Nov 26th
Within the next couple of weeks, my schedule is going to be clearing up quite a bit. Over the last several months, I've had a lot of free-lance work, which is great, but it has left little time for personal development projects that I've been wanting to do for a while now.
I currently have one that's about 25% done, so I'm hoping to commit some time to that over the next several months to wrap it up. However, what I'm really excited about is a brand new project.
What is this project? I don't really want to say at the moment because I think it's an obvious service that people want, but for whatever reason no attempt has been made (yet!) to fill the need. Well, that's not entirely true–however, the lame attempts that have been made so far really only engage a very small section of the need while leaving the greater whole unaddressed. The project I'm proposing will do both…hopefully!
The most exciting part about this service is that will be mostly driven by an API that I will have to build (there's at least one hint). While I've certainly created web services before to handle remote application needs, I've More >

On Becoming a Better Web Designer – Fancy CSS Selectors
Oct 17th
Using CSS selectors is not a difficult skill–all of us who use CSS use selectors on every line of code that we write. However, as not as many know, there are more exotic selectors available.
Blah blah blah. You can read all about CSS selectors at W3, and I don't want to rehash what has already been fully documented. So instead, let me go a different direction.
Why, you might ask, would I possibly want or need to use a fancy CSS selector like ":first-child" or something more granular like an attribute selector (a[href="http://askaninja.com"])?
Well, maybe you'll never want or need to. If you have the luxury of coding everything you do from scratch, you'll probably find little use for these. However, most of us do not have ideal circumstances like this.
Consider this: Where I work, we are using an enterprise information management software for our employee intranet. While the product itself is quite powerful, whoever built the layouts and templates that come boxed with the products are certifiable idiots. Strewn across hundreds of layout files in obscure, inaccessible (well, at least to me…) folders are inumerable styles, both external and inline, that handle the "design" of this product.
Can anyone say nightmare? Believe More >

On Becoming a Better Web Designer: A Dr. Phil Moment
Sep 15th
Over the last several weeks, I've seen my blog readership increase signficantly. I am extremely grateful for the kind words that people have shared with me, and of course, for everyone who follows my ramblings about web design.
During this time, I've had several readers contact me, seeking advice about how to get more into web design, how to improve their skills, etc. I am extremely humbled that anyone would seek my advice on this, and I have done my best to provide the best suggestions I can. So now, let me distill down some of the things I've said.
I don't want to get overly Dr. Phil-ish on this, but I think the psychology of the web designer is a crucial component to be becoming better. What does this mean? Well, I continually advocate that one of the best ways to become a better designer is to live in the billion-and-three design galleries that are out there. Let me diverge for a second and shamelessly plug my own — css-imagine.com. There, I'm done :).
In all seriousness, I believe that examining and learning from the design of others is a great way to improve. First, by doing this, you begin to More >

On Becoming a Better Web Designer – Project vs. Hourly Billing
Aug 24th
One question among a million has plagued humanity for thousands of years, and still remains without an answer. No, it's not theological, and it has nothing to do with chickens and their alleged eggs. Rather. it is the question of whether you should bid out your next job based on number of hours or a project basis.
This question is tricky, and I know every designer has a lot of different opinions about the subject. And in all fairness, all sides probably have a legitimate argument. So instead of arguing for a particular perspective, I'm going to simply explain my own view.
From the moment I began freelancing, I have always quoted my jobs on a project basis. Here's a few reasons why:
First, I worked for nearly three years in a law firm where everything was billed by the hour. While legitimate work was done, a standard practice in legal billing is to assign certain number of minutes (or hours) to certain tasks. So for example, every phone call is billable for 10 minutes worth of time, even if it's 45 seconds long.
Now in my last post, I argued that a legitimate part of billing your customer is for your expertise, and More >