posts by tag

design (64)
Flickr Video

Several months ago I posted about Flickr Video. For the most part, I was in favor of neglecting it. My position hasn’t changed, really, but I feel compelled to give kudos on their implementation.

I’m relatively satisfied about the way Yahoo has introduced this (inevitable) feature. I personally like how they’re intertwined with the photos. I didn’t really expect that. One might not even know video is supported by Flickr until it’s time to upload. Even the URL for a video is of the form ”/photos/[user]/[id]”.

I think limiting the length of a video to a max of 90 seconds was a good move, too. I know that won’t last, but the initial 90 second limit may weed out those who were wanting to use Flickr as a YouTube clone.

Considering the impossible reality that Flickr would remain 100% based on photos, overall, I think video couldn’t have been introduced any better. That’s not to say I’ll ever upload a video, but it is what it is. And considering the millions and millions of Flickr users, all with different concerns about video, I think they’ve met both sides of the argument on common ground.

Adobe Cards

Adobe Cards is awesome. I can’t stop watching it. For whatever reason, it’s entertaining and keeps me tuned in each time.

The movie interface is nice, too. It’s nice that dragging the slider doesn’t cause hard jumps through the movie. It just sort of continues at the normal pace.

It’s entertaining, smooth, high quality, and a good design. I think it’s an excellent showcase for what’s possible with the new Adobe Creative Suite 3, so a job well done in that regard, too.

Design is in the details

Here’s a great article from A List Apart called, Design is in the Details.

It’s worth reading even if you’re already a hotshot designer, because it may refresh your motivation and remind you that design really is in the details. At least, that’s what it did for me.

Introducing the new Portfolio

Finally. It’s done. And here it is.

I’ve been wanting to do this ever since I cleaned up this site, but kept putting it off because I knew it would be a job. Don’t get me wrong, I enjoy this stuff, but toward the end I just wanted to finish it. It’s bitter sweet I suppose.

The design will remind you of this site, but that was intentional. There are plenty of subtleties that make each of them their own, but overall they both have that left justified, white column, right-hand sidebar feel. Plus the colors are nearly the same. Again, it was intentional.

The part that I may have enjoyed the most about this whole process was getting rid of that last little bit of slop from the old portfolio (if you’d even call it that) that I had on this site. I removed like 12 actions, 2 models (and hence, 2 database tables), and tons of views and helpers. It felt good. I left it alone during the last cleanup because I knew I would be back in here once I finished the new portfolio.

Why Is There Still a Portfolio Tab?

Rather than eliminate the portfolio section entirely, I’ve decided to integrate the new portfolio using REST (courtesy of ActiveResource), so it’ll just automatically update itself. I didn’t go crazy or anything, though. I’m more-or-less just giving a brief listing of the projects and photos. However, I did put a notice at the top of every portfolio page to alert those ghostly internet wanderers that there’s a new sheriff portfolio in town.

IE Blows

And like always, IE drove me nuts. I think I’ve got most of the kinks worked out, but I’m sure there are plenty I’ve yet to discover. Probably the biggest annoyance during this whole process was the non-support for alpha-transparency in .png images. I think that’s all I used, so initially, IE6 looked ridunculous to say the least. The fix I’m using has a hard time catching every CSS background-image (especially concerning the response of an Ajax call), but it’s better than nothing. I’ve decided to let the petty stuff slide for now, but let me know if you see anything major.

RSS Feeds

There’s a project feed and a photo feed (which I’ve also linked up at the top of this site). Oh, and the feeds don’t give you per image descriptions, just per photo/project descriptions. And for a photo you’ll get the image itself in the feed and for a project you’ll get the first of many screenshots. But again, no image descriptions in either case. So to see everything you may have to click over to the site itself. Boo hoo.

If you’re seeking more details, I’ve posted the new portfolio as a project within itself. I believe there are 16 screenshots and I explain a little bit about each one. Check it out if you’re so inclined.

Over the next few weeks you should see a flood of content as I try to get caught up. I think I previously had 10-12 projects here, so I at least have that many right off the bat. Then there are a few that I’ve been neglecting for a while.

So that’s it. Feel free to post your thoughts. Goodnight.

CSS browser selectors

Theoretically, one should be able to design a site in FF, Safari, Opera, and IE7 without using hacks (IE7 being the questionable one, of course). And I’m usually able to do that, but when matching designs down to the pixel, even those browsers sometimes behave a little differently. I mentioned before how I usually approach that issue, but I think I may have found a new solution.

This is relatively old, but somehow I’ve missed it completely: CSS Browser Selector (source). It’s a smidgen of javascript that allows you to use CSS selectors (such as .ie7, .webkit, .gecko, etc) to target the imperfections among various browsers (and versions thereof). For instance:

.ie        #hdr { background-color: #111; }
.ie7       #hdr { background-color: #333; }
.webkit    #hdr { background-color: #555; }
.gecko     #hdr { background-color: #777; } 
.win.gecko #hdr { background-color: #999; }

I think the selectors are pretty self-explanatory. I’ve tested this out to some degree, and it seems to work incredibly well. I’m actually using it on a project at work. No more conditional comments! It’s pretty slick, I think.

Of course, then there are those who will say, “What if javascript is turned off?” Fine. You got me. My feeling there is, a person who browses without javascript won’t notice a few unaligned pixels, anyway. Plus, you’ve gotta draw the line somewhere, and that case is probably a foot or two past my line.

Golf Trac screen shots

Unfortunately, it has been a while since I’ve worked on Golf Trac. The end of grad school got a little crazy, and with the holidays and everything, it has been on the back-burner (I hope to have it finished by spring, though).

I’ve been keeping track of the progress by posting screen shots on Flickr, but always kept the images private. I for one enjoy looking at designs “in the making”, so I feel somewhat obligated to share. Prepare yourself… I’m unveiling to the world: Golf Trac screen shots! It’s pretty basic, but I think that’s a good thing. If nothing else, you can at least get a feel for the interface. Enjoy.

Nice rating interface

summize.com is a site that scours the internet for discussions and reviews of a product. I don’t know how legit the algorithm is, but it does a couple of cool things.

Firstly, it sorts the results by “helpfulness” instead of “highest/lowest” ratings. Secondly, it has some really nice (visual) rating scales. At a glance you know how many people rated it and the majority vote (everyone knows red is bad and green is good). It also provides percentages for each piece of the rating when you hover over the sections.

In my opinion, it’s a much better interface than the traditional star rating; however, it also allows you to view the ratings as stars, if you’re so inclined.

Site updates

I spent the last day or two upgrading this site to run the latest and greatest Rails 2.0.2. Obviously, I didn’t want to upgrade without using what made me want to upgrade in the first place, so there I was, yet again, rewriting my code to be much leaner and meaner. This is probably the largest refactor I’ve done in terms of restructuring, but it desperately needed to happen.

Briefly, here are the (noteworthy) changes:

  • fixes/modifications for Rails 2.0.2 compatibility
  • complete revamp of the code base, now supporting a RESTful design
  • posts are now located at /posts/:id instead of /posts/:year/:month/:day/:permalink (sorry to break your bookmarks)
  • archives now act like real archives (you can no longer get to posts for December of 2007 by visiting /posts/2007/12, instead try /archives/2007/12 – the same goes for tags: /archives/tag/:name)
  • removed “featured project” from home page
  • added popular tags and recent comments in place of “featured project” on home page
  • removed popular tags from sidebar and increased del.icio.us bookmarks to show 12 instead of 8
  • implemented a new API module used to cache del.icio.us bookmarks and flickr photos (still have more changes to do there)
  • added an admin namespace to replace inline editing (feels much cleaner to me)
  • rearranged/removed several controllers/actions to make more sense

That’s basically it. Most of the changes were behind the scenes, except for the new addition to the home page. The only section that didn’t receive any attention was the portfolio. And that’s because I’m working on a new portfolio that will eventually let me get rid of the half-assed effort I have now. When I’m finished with it, it will be its own beast and live at its own (sub)domain.

UPDATE

I added support to map the old URLs, as well as the new ones. So bookmarks (like there are any) should still work.

MooMonth calendar

Here’s an interesting approach for displaying calendar events: MooMonth calendar. And here’s a demo to see it in action (make sure you click on a date twice).

It’d have to be on an app that had intense event-scheduling to alleviate the fact that a full-screen calendar might be an overkill solution. Still pretty cool, though. It makes me want to build something with a calendar.

CSS hacks

CSS alone is great, but CSS plus standard browser support would be even better. Unfortunately, I doubt that will ever happen, so we hack. I’ve finally limited my browser concerns to the following four: Firefox, Safari, IE7, and IE6 (with IE6 slowly dropping off the list).

As I’m sure you already know, the problem is mainly IE. I had high hopes for IE7, but I have to accommodate it, too. Before IE7 I used the * html hack (or “holy hack” as they call it) for my IE fixes. Since IE7 behaves differently than IE6, but is still not right, I need to attack it as a separate entity. I personally believe conditional comments to be the best alternative for this. It’s ugly, but most hacks are.

Here’s the top of (most of) the sites I build…

<link href="/stylesheets/default.css" media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/safari.css" media="screen" rel="stylesheeet" type="text/css" />
<!--[if IE 7]>
<link href="/stylesheets/ie7.css" media="screen" rel="stylesheet" type="text/css" />    
<![endif]-->
<!--[if IE 6]>    
<link href="/stylesheets/ie6.css" media="screen" rel="stylesheet" type="text/css" />
<![endif]-->

It’s important to note the order, too. Always put the default styles at the top, then override them with the hacks. Oh, and in the safari.css file, just make sure your styles look like this:

/*\*/
html*ul#content-nav {
  top: 128px;
}
.
.
.
html*div#sidebar {
  margin-left: -10px;
}
/**/

And remember, in order to override behavior you have to define the selector the same way in your hacks file as it were in the default file due to specificity (ie if you have div p.errors in the default file, you can’t expect p.errors to override it since the latter has a lower specificity).

If you have other suggestions, I’m always interested in better ways to hack CSS.

A few more well-designed sites

A few designs I found appealing, in no particular order…

  • http://www.cabedge.com/—Extremely plain, but well suited for what it is. It’s hard to miss the floating clouds and isolated introduction paragraph, which was obviously their intention.
  • http://jinabolton.com/—This one is for the logo pretty much… I think it [the logo] is awesome.
  • http://oaktreecreative.com/—All around great design. I love the white strip through the middle. And while it’s somewhat of a trend, I’m partial to the “one concise sentence to explain what we do” idea.
  • http://www.rikcatindustries.com/—It’s a common misconception that color is required for art/designs to be appealing, but I think this site proves otherwise (as does black & white photography).
  • http://www.blogonize.com/—It sort of has that “blogger” feel to it, which in a way gets old, but in a way is still nice.
  • http://www.positionlab.co.uk/—The upper half of this site is what draws me in. The colors blend well and it’s kind of cool that they used a topographic map background to play off of their slogan. Simple and clean always works.
  • http://9rules.com/—I love the 9rules leaf. I don’t really think of 9rules as a social network, but I guess it is. Anyway, I enjoy the main page design.
  • http://www.turncolor.com/—This is another case of brown and blue and how well it works. There’s hardly anything to this site, but I think it’s a perfect blend of color. I love the “scratchiness” of the header, and the contact form is awesome. It’s hard to believe brown can be so inspirational.

UPDATE

Buzzword: Adobe online word processor

For online word processing I choose Writeboard because of its simplicity and textile support. But anymore, the options are endless. Buzzword is probably the latest option for online word processing, and it looks really slick. Edit mode is the actual document, so there aren’t any text areas, which is nice. Also, all of the options are integrated very well (especially the inline commenting). It was built using Adobe FLEX.

While textile is a much-needed feature for me, I also have a hard time using something that is ugly. Personally, I see Google docs as ugly. Buzzword, however, is on the other end of the spectrum. If you don’t particularly enjoy the “Flash” feel, you probably won’t like it. But the documents are extremely nice looking. It feels as though they can actually be designed, which I like.

If I were one who needed to collaborate and had a real purpose for online documents (such as for work), I would almost have to use something that produced Buzzword-like documents. If online document writing/collaborating/sharing is a need for you, it’s worth checking out. Seriously.

Tabbed navigation tip for Rails

UPDATE see the refactored version here

A very common pattern in a lot of web applications is a tabbed menu with the current tab highlighted. Last night I spent some time refactoring the navigation in Golf Trac, and I thought I would post what I did, just in case someone is new to this and goes overkill on the implementation.

First of all, Rails in its entirety thrives off of conventions. It’s inspirational to say the least. I’ve embraced a conventional way of thinking in my tabbed menu implementation, so let’s get down to business.

Tabbed navigation for actions only

For this example, I’ll use a public_controller, which contains a few actions that aren’t restricted behind a login. Just to get you excited, here’s what the end result will be:

navigation ['login','register','about','tour']

You might immediately think that each link passed in is the title of an action and the route is generated by appending _path on the end. Actually, that’s pretty close. The problem I had with that quick-and-dirty implementation was the ambiguity of the named routes. For example, in Golf Trac a user can create a New course and a New round. Well, that means I have two “new” things. I couldn’t generate a named route such as new_path because it’s ambiguous.

To alleviate this problem, I’m using controller.controller_name to make the routes unique. I’ll just give the implementation (I made a pastie, as well) and mention a thing or two about it afterward.

def navigation(links)
  returning html = "<ul>" do
    links.each do |link|
      html << "<li class='#{css_for(link)}'>#{build_link_for(link)}</li>"
    end
    html << "</ul>"
  end
end

You could use content_tag instead of explicitly writing out the <ul> and <li> stuff, but sometimes I find this easier on the eyes. The css_for(link) method just pulls out a lengthy if condition (better readability) to determine if it’s the selected tab, but for completeness, here are the details:

def css_for(link)
  controller.action_name.downcase == link.downcase ? 'current' : 'plain'
end

The build_link_for(link) method simply generates the link with the appropriate named route dynamically, but again, here are the details:

def build_link_for(link)
  link_to link.capitalize, send("#{link.downcase}_#{controller.controller_name.downcase}_path")
end

Now, that’s how to select the current tab for a list of actions within a controller, but what if you wanted to select the current controller, too (i.e. nested tabs)? It’s simple. All you have to do is check if the controller.controller_name.downcase instead.

Modified for controllers and actions

In Golf Trac, I have a sidebar which has a menu that highlights the current controller, then in the corresponding content area, a set of tabs for each major action within that controller, which also get highlighted upon selection. So my navigation helper is more complex, but not by much:

def navigation(links, from_layout = false)
  returning html = "<ul>" do
    links.each do |link|
      html << "<li class='#{css_for(link, from_layout)}'>#{build_link_for(link, from_layout)}</li>"
    end
    html << "</ul>"
  end
end

Also, you’d have to modify the css_for(link) method to accept the from_layout parameter so it would know if it was supposed to check the controller or action name. Here’s how I’m currently doing that:

def css_for(link, from_layout)
  controller.send("#{from_layout ? 'controller_name' : 'action_name'}").downcase == link.downcase ? 'current' : 'plain'
end

It’s basically the same thing, only I’m determining if I need controller_name or action_name based on the from_layout parameter. And the build_link_for(link) method needs updated, too:

def build_link_for(link, from_layout)
  controller_path, action_path = "#{link.downcase}_path", "#{link.downcase}_#{controller.controller_name.downcase}_path"
  link_to link.capitalize, send("#{from_layout ? controller_path : action_path}")
end

It’s the same deal here. If it’s an action, then I need the route that has the controller name appended to it. The nice thing is the more frequent situation (view templates) would not require a true or false parameter (since it’s defaulted to false), so it keeps the API nice and clean. And you’d only have to add it in your layout once, like so:

# views/layouts/[whatever].rhtml
navigation ['login','register','about','tour'], true

Here are the routes that would work with the above example:

# config/routes.rb
map.with_options :controller => 'public' do |path|
  path.login_public '/login',       :action => 'login'
  path.register_public '/register', :action => 'register'
  path.about_public '/about',       :action => 'about'
  path.tour_public '/tour',         :action => 'tour'
end

TODO: determine a way to not require an extra parameter (from_layout), but have the helper know where it’s being called from and act accordingly.

Conclusion

Currently, I’m using this implementation to navigate around five controllers (in the sidebar) and 13 or so total actions (in the content areas). I personally like passing the text that I want to display as tabs, but that’s just one of the hundred ways to dynamically construct a tabbed menu in Rails. Whether or not you do something like I’ve shown above, I strongly recommend you setup some sort of convention to base it on. Be smart about the design and you can get so many things for free.

Good quotes worth reading

Here are a few quotes I’ve come across [from scientists, designers, photographers, programmers, marketers, etc] over the last few days, or weeks, or months. I found them to be short and insightful, so I figured I’d keep track of them here.

If everything is important, nothing is. —Unknown

Very often people confuse simple with simplistic. The nuance is lost on most. —Clement Mok

However beautiful the strategy, you should occasionally look at the results. —Winston Churchill

Reflection is like refactoring. If you can measure how much you are doing, you aren’t doing enough. —Unknown

Computer Science is the only discipline in which we view adding a new wing to a building as being maintenance. —Jim Horning

We are what we repeatedly do. Excellence, then, is not an act, but a habit. —Aristotle

The best way to predict the future is to invent it. —Alan Kay

We don’t know where our first impressions come from or precisely what they mean, so we don’t always appreciate their fragility. —Malcolm Gladwell

If you can talk brilliantly about a problem, it can create the consoling illusion that it has been mastered. —Stanley Kubrick

Buying a Nikon doesn’t make you a photographer. It makes you a Nikon owner. —Unknown

Instinct is the gift of experience. —Malcolm Gladwell

Selling to people who actually want to hear from you is more effective than interrupting strangers who don’t. —Seth Godin

You don’t need to win every medal to be successful. —Jason Fried

In many cases, the more you try to compete, the less competitive you actually are. —Kathy Sierra

If I had eight hours to chop down a tree, I’d spend six sharpening my axe. —Abraham Lincoln

Amidst all the attention given to the sciences as to how they can lead to the cure of all diseases and daily problems of mankind, I believe that the biggest breakthrough will be the realization that the arts, which are conventionally considered “useless,” will be recognized as the whole reason why we ever try to live longer or live more prosperously. The arts are the science of enjoying life. —John Maeda

Golf Trac was flagged tonight

Literally. The past couple of nights I’ve had some time to work on Golf Trac. I spent most of the time coding, but I did stop to visit a few spots that were begging for attention. One of these spots was the dull header image. I shrunk the green a bit and added a flag. It doesn’t have anything to do with “tracking” a golf game, but I believe it was a needed adjustment. I did consider something corny, like making the flag stick the “L” in GOLF, but it just didn’t look right. Maybe that’s because I can’t make a nice flag stick in Photoshop. At any rate, here’s what I came up with…

Making an icon is difficult

Typically, if I need (or want) a certain icon, I’ll dig through the tons and tons of free icon libraries to find what I’m looking for. Usually I can alter it from there if need be. But starting from scratch is a different story. I don’t have the graphic talents needed to make icons myself, or really any image that requires working at the pixel level.

Earlier this week I wanted to put an arrow-ish series of images for a “bread crumbs” trail at the top of a page. Getting the appropriate CSS classes on the list items went smoothly (is it the first? is it the first with nothing trailing? is it the last? is it a middle item? etc). But concerning the graphics, nothing looked right. I eventually just accepted my inability to create nice-looking icon-esque images. I’m not satisfied with them, but I’m afraid I’ve done the best I can.

I won’t even go into logos. Not only are they demanding graphically, but defining a logo design is near impossible [for me]. Well, a logo that has actual meaning that is.

So I tip my hat to icon and logo designers—it truly is an extremely challenging part of design.

Revamped and absolutely positioned

A long time ago I decided I wanted this site to represent my interests, creativity, and expertise. I believe I’ve yet to achieve that until now. So, to that end, I’m unveiling yet another redesign. As you’ll notice, I’ve kept a few things from the last design (mainly the colors), but I believe it’s more aesthetically pleasing and somewhat easier to navigate.

Relocating the posts

The first order of business was to relocate the posts. Having the posts basically make up the site made me feel a bit guilty if I didn’t post frequently. Also, I began to realize how uncomfortable it was having the posts blatantly hog the site’s entrance. It didn’t quite hold true to what I wanted the site to represent, so good riddance to that idea.

Just the right width

I finally decided to ignore the 800×600 screen resolution. The last design had a fluid center column, which dealt with smaller resolutions quite nicely. However, a maximized browser on a wide screen monitor was horrendous. Google Analytics told me quite a few visitors have wide screens (and one or two, if any, used 800×600). For this design, I chose a width for each section (left, center, right), and it just so happened to be 900+ pixels. Oh well. Anyone still sporting an 800×600 resolution probably wouldn’t realize the horizontal scroll bar, anyway.

Web designer’s curse

Of course, I could come up with a ton of reasons for another redesign, but none of that really matters. A lot of people can recognize when a site goes stale and needs a new look. But to a web designer, his/her personal site goes stale much quicker than any other. It’s rather bitter sweet. I love the refreshed feeling of a new design, but quite frankly, a new design is a lot of work and a lot of time. However, it can’t be ignored until a new design is realized, hence, the curse.

Lately, I’ve been asked on several accounts to show prior work (read: portfolio), so in that regard, it feels more appropriate to put a little more emphasis on the portfolio and past experience. This is a far cry from anything professional, but I’d say it’s a step in that direction.

Perfect example of online collaboration

ConceptShare. There’s a difference between collaboration and social networking. To me, collaboration serves an explicit purpose, where social networking is an implicit bonus. To some degree, though, often “social networking” is not a bonus. It carries a negative connotation because so many new applications thrive on the network itself, rather than treat it as the implicit bonus that it is (or should be). I mean, social networks aren’t products, after all. Then there’s collaboration, which is something to build an application around, in my opinion.

Just recently I redesigned the front-end of a site according to the demands of a client. In order to show the changes, I had to upload it to a test space on the server and email a few people the link with a description of the changes I had made. Then I got several emails back with likes/dislikes and more changes to be made. It’s tedious to collect emails that have gone through several people regarding thoughts on the same concept. That’s not really collaboration, but more of a pain in the ass. It was slightly more convenient than meetings, but by the same token, ended up being much less effective.

I don’t know how long ConceptShare has been around, but it appears to solve a big problem (remote collaboration) in a polished way. I won’t list out the features, here, but rather suggest you watch their demo video.

Everything around one concept should remain in one place. As much time as I spend reading online, I’m surprised I haven’t stumbled upon more applications that attempt to put a halt to the endless hunting for emails/attachments when collaborating. Personally, I’d much rather see applications that serve a purpose over those that do nothing but waste domain space, but maybe that’s just me.

Tracker design decisions

I can’t help but to enjoy reading 37Signals’ design decisions. For those who don’t know, they’re just posts that provide a small insight into 37Signals’ design process and why they chose to do a particular something, a particular way. I’m sure most people who do the type of work that I do would agree that it’s interesting to peak inside of someone else’s design reasoning.

Garrett Dimon is an Information Architect who is working on a bug tracking system that he has appropriately named, Tracker. I’ve been keeping up with posts on the issue tracker, and I’m really impressed with some of the concepts and ideas. To save some hunting, here are the posts thus far:

  1. (8/14/2007) Bug & Issue Tracking
  2. (8/20/2007) The Tracker Status Bar
  3. (8/20/2007) Tracker Status & Comments
  4. (8/21/2007) Linking Issues in Tracker
  5. (8/22/2007) The Tracker Dashboard

Looking into other designs often help me to think outside of the box a little more, which I believe is important to keep that fresh, creative edge (assuming that I already had it, of course).

2008 Audi S5

Realistically, I wouldn’t trade the GLI for anything. But luckily, I don’t always have to be realistic. Every year, my “favorite car” is some form of Audi. I’ve been a huge fan of Audi since high school, where a friend of mine had an anniversary edition, 1 of 250 in the world, Audi S4. It was ridiculous. But of course, Audi has somehow outdone themselves each and every year since then. Take a look at this new 2008 Audi S5:

It’s sickening how nice that car is. I didn’t think that one picture would be enough, so here’s a Flickr search for Audi S5, another gallery, and a video. And of course, if there’s an Audi S5, there’s an Audi RS5 close by, which is even better yet.

When I grow up, I want an Audi.

iMac or Dell? It sure is a tough one...

I can’t afford it. I can’t afford it. I can’t afford it. That’s what I have to keep telling myself after seeing things like this (and this).

Apple designs have a way of making decisions seem so obvious. Oh and, Amie, just so you know, I’m not plotting to get a new iMac, despite how beautiful (and fast and crisp and clean) they are ;)

All out of ideas

Since the end of January, I’ve designed between 7-10 sites from scratch, and I’m currently working on another one. It’s beginning to wear me out. I don’t mind working that much, but it’s the depressing realization that I’m all out of ideas that’s breaking me down. It’s hard to be creative and do something fresh and new over and over and over again. I think I’ve hit a wall, and I have a deadline coming up around mid-August for another new design.

Sometimes I wonder if I’m moving too fast; sometimes I wonder if I like this stuff as much as I say I do; and sometimes I wonder if I just need a break from it all. It can be frustrating… very, very frustrating. But in the end, bad days come and go. I’ll move on, and probably be happy with the design. For now, though, I feel like complaining.

Say goodbye to categories

Chris was right. The categories and tags were overlapping. So I dug deep and somehow found the strength to remove the categories! Actually, you just can’t see them anymore. All of the helpers and methods are still there, and I’m still associating categories with my posts… you know, just in case. Did you think I was that crazy??? It’s definitely less redundant, and all I have to do is get used to the less-dressed left sidebar (say that three times fast) and not add anymore useless information.

Data Warehousing

I’m currently taking a grad class on data warehousing. As I’ve mentioned before, I’m somewhat intrigued by useful data analysis, which is the exact reasoning behind data warehousing.

After a month or so into the class, I wonder how companies and large organizations can compete without having a data warehouse. Do you know why Wal-mart always beats out its competitors and K-Mart doesn’t? They maintain one of the largest and efficient data warehouses in the business, with analysts and pattern recognition scripts to spot trends based on products, location, cost, date, time, day-of-the-week, and a million other things. Amazon.com is another prime example. I believe they’re currently generating around $3 billion per year in sales, and I bet it’s because of how well they watch customer habits and trends. Personally, I’m not one to be coaxed into buying the “recommended” books, or “some who’ve bought [product A], have also bought [product B],” but I’m sure some people bite. Actually, they’re pretty good recommendations. I’m a penny-pincher for the most part, and have considered them at times.

The size of the database is another amazing facet of data warehousing. For instance, Amazon.com runs a data warehouse around 10TB in size; AT&T is around 90TB; Yahoo! has one exceeding 100TB; and the mighty Google is analyzing a couple of peta-bytes worth of data (which is almost incomprehensible). For perspective, a peta-byte is 1,024TB, or ~20,000 PCs with 50GB each.

Designing a data warehouse contradicts pretty much all that I know about database design. It’s almost the exact opposite: de-normalize instead of normalize, optimize for querying rather than transactional processes, duplicating data becomes popular, no more relational tables (goal is to remove the JOIN), and so on. It’s definitely a different way of thinking, but interesting nonetheless.

iPhone keyboard movie

I tried to ignore the iPhone, since I’m sick of hearing about it myself (a Google search for “June 29, 2007” had the iPhone as the 2nd and 3rd results), but I can’t help but acknowledge its design. I have no desire to have one for any real reason, as I don’t like phones or mobile technology. However, I am fascinated by good design. If you read 37signals, you’ve probably already seen the iPhone keyboard movie. Despite all of the hype, it really does look brilliant. I’m not willing to pay $500 for a phone (that’s a new lens), but I’d pay $5 to use it for a day. That’s a fair trade, I think. I’m also curious to see AT&T customer base/revenue before and after 6:00 pm this evening.

Google inconsistencies in design

In their defense, consistencies among different applications may not be a valid complaint (like why the new top bar doesn’t show up in reader… and where’s reader search?) But one thing that I don’t get is their usage of “tags.” Is it a tag? Is it a label? Is there a difference? Reader has two options for organizing: add tags and add to a folder. However, they both end up with the same result… folders in the sidebar. It’s somewhat misleading, I think. Docs & spreadsheets represent tags as folders as well, where gmail chooses “labels.”

When I think of tags, I think of a N:N relationship, which means I typically tag something with multiple tags at a time. That’s exactly what they let you do, but I don’t necessarily want my feeds and files to be strung out across multiple folders. To me, folders are more of a 1:N relationship. From all aspects of a folder, there’s not one thing that says N:N relationships exist. In a file system, do you keep your files in multiple folders? Probably not. But if you could tag your files, would you give them more than one tag? Most probably would. It’s all fine, I’m just making a point (and probably being too critical). It was obviously intentional, so I’m sure they have very logical reasoning behind it.

And on a side not, after seeing the new interface for docs & spreadsheets, I would much rather have folders than labels in gmail.

Award for most complex light switch

“Just because you can, doesn’t mean you should.” In general, that’s a pretty good rule of thumb. That’s a lot of why software often gets bloated with unnecessary features. Here’s an example of when applied to a light switch: complex lightswitch. I wonder if the engineer is still proud of that, or if he/she now realizes it may be just a little too complex for a light switch.

Don't buy a Motorola Razr V3M

The $250+ savings sucked me in. I needed a new battery for my existing phone, which was about six years old. Since I was a long-time Sprint customer, I had $175 off a new phone, plus any rebate offered by the phone itself. When compared to the cost of a new battery, a new phone was potentially cheaper. So I chose the new phone and got the Motorola Razr V3M. My reasoning for this phone was mainly because of how thin it was. I don’t care about camera/video, I don’t care about music on my phone, and I don’t care about text-messaging (although, anymore, I think I’d like that more than talking). The reviews came back positive, so that’s what I got.

In this day and age, we all want things to happen now. It’s more of an expectation than a convenience, and it goes down to the milliseconds. Which leads me to the main issue I have with my phone: it’s too slow. I open it up, it hesitates to show me a screen. I hit “contacts”, I have to wait a second before my contacts show up. Speed dial takes about 2 seconds longer than my last phone, which is what I use the most. It’s hard to make an argument that waiting an extra second (or less) for something is irritating, but it is. A few other annoyances include:

  • The camera button is placed precisely where the thumb needs to be when flipping the phone open. What’s that mean? I usually turn on the camera (which takes about 4 seconds) just so I can turn it back off (another 2 seconds) before making a call.
  • If I miss a call, it will display “dismiss” or “dial” until I answer one or the other. I can just hit “end” to clear it, but it shows back up the next time I open the phone. This issue compares to the cancel or allow Mac commercial—it’s just annoying.
  • The ring tones suck, and I’m not the type to download new ones. I just keep it on vibrate all the time.
  • There are only two options for including vibration: “high and vibrate” or “vibrate only”. This may be too picky, but ideally, “low and vibrate” would be my choice when I’m not at work.

So there you have it. And just so you know, I’m probably the last person to review a cell phone, because I’m biased toward not having one at all. I just know I’d probably get something else if I could do it over.

Stepping back for simplicity

I played basketball daily for years and years. Before making a pass, I would instinctively blur the entire scene. I’ve always thought it was a little odd, but ironically, it helped me to see the court better. I’ve since come to find out that this tactic is a desired approach when a simpler view is sought, and applies to much more than basketball.

At the end of the second law in The Laws of Simplicity, there was mention of something that stood out to me: a “blurred approach” to design.

Groups are good; too many groups are bad because they counteract the goal of grouping in the first place. Blurred groupings are powerful because they can appear even more simple, but at the cost of becoming more abstract, less concrete.

Working within the details can isolate decisions. Sometimes a decision is best made from a different perspective—a broad or abstract (even blurred) perspective. It’s often good to take a step back and determine if what you see as a whole feels right.

The best designers in the world all squint when they look at something. They squint to see the forest from the trees—to find the right balance. Squint at the world. You will see more, by seeing less.

I was seeing the forest from the trees; that’s why I would blur the basketball court. And that’s why I often get a better view of a design from standing at the doorway of my room. Sometimes, it’s the simple view that helps the most. “It [simplicity] feeds the mind’s natural hunger to solve puzzles and to find the right gestalt.”—John Maeda

Great looking CMS at WVU

A friend of mine is working on a Rails CMS (called slate) at WVU. I’ve been following the development via slate info, as well as the screen shots on Flickr. I thought I’d take a minute to give praise to the work they’re doing.

First of all, I’m very impressed with the latest release. I personally think the interface is outstanding. slate does a lot of stuff, and from what I’ve seen, every section is intuitive and focused on the task at hand. The design itself is composed of mostly black, white, and shades of gray. This works well, because it’s easy to draw attention when you need to draw attention. For instance, by changing the sub-heading from black to bright blue, a user is subconsciously forced to pay attention—especially if that’s the only thing that’s bright blue.

I’ve never used slate, but I can tell there is an extreme attention to detail. The development schedule seems to be very realistic (even though I’m sure it doesn’t feel that way at times), which is why I think it’s turning into such a great application. There’s no “throwing it together,” so to speak. Every section seems carefully planned and designed down to the very last pixel, as it should be.

All throughout slate (again, from the screen shots) there is a brilliant use of space. Nothing is too cluttered (line-height really makes a difference). The typeface is very standard and somewhat over-sized, which is a good thing. The menus and options are clear, and they’ve gone the extra mile to make the entire interface very user-friendly.

It’s been fun following their development, and I look forward to reading about what’s to come in the future. Congratulations to Chris and Dave (those guys are the only two I’m aware of) on their hard work—it looks like it’s really paying off.

Borderless designs

I used to be obsessive about borders in a design. Obsessive in the sense that I had a hard time leaving them out. I felt as though they were necessary to crisply distinguish sections of a site. I believe I’m growing out of that, now. I’ve intentionally left the borders off of my site this time1, since I was confident contrasting colors would be just as effective. While borders are nice in a lot of instances, I’m digging sites without borders more and more.

  • Example 1—slight use of borders, but overall it’s the colors that separate the content
  • Example 2—borderless for the most part
  • Example 3—very clean design (I like this version more than the redo)

1 I realize there are a few borders here and there (code snippets, the comment form, etc), but I’m mainly referring to the content containing area, and major focal points: the site header, post headings, comments, and so on.

Impressed with Microsoft Surface

I’ve watched a video about surface computing before, but I can’t seem to remember where (or if it had anything to do with Microsoft). Nonetheless, Microsoft Surface (aka “Play Table”) looks great. At this point, I can’t imagine owning it or paying for it, but I’d definitely enjoy using it. I believe it’s initially only geared toward hotels, retail establishments, restaurants, and public entertainment venues, anyway, which is cool.

Of the hundreds of possible usages, I’d have to say becoming the table top in a restaurant/bar would be at the top of my list. In one of the videos, it shows two people ordering (or re-ordering) food by just dragging their choice to the center of the table. I don’t know that I feel comfortable saying “that’s much better than relying on a waitress,” since that’s one more step closer to total automated service, which I wouldn’t like (most of the time).

If you get a minute, you should watch these three short videos and see what you think.

Site updates and new additions

I recently got a little ambitious and decided to make a few changes. The most obvious is probably the post headings. I thought they blended too well with the rest of the site, and felt they should stand out a little more. So I did just that. I’ve also eliminated the 100% stretch of the post header and comment form. I don’t know why I did that, though. A matter of personal preference I suppose.

The new additions concern the portfolio section. It’s far from anything professional. It’s a quick-and-dirty approach, but I like having a space to collect a few of the sites I’ve built. That’s nothing new, but this time I’m using attachment_fu to load multiple screen shots per project. attachment_fu is awesome if you didn’t already know.

Something brand new is the photography section of the portfolio. There’s definitely nothing tricky there, I’m just pulling in some favorites from flickr (that I took, of course). I love looking at photos, even if they’re my own photos :-)

Oh, and I’m using lightbox v2 to display the screen shots and photos in the portfolio. The mootools version is slightly faster, but Rails already integrates with prototype and scriptaculous very well, so that was the route I took. As far as I know, everything looks good (and works) in all browsers (I haven’t made it to a Mac, however, but I don’t suspect any complications there).

Apple and an invisible interface

I’m slowly catching up on some stuff I missed while on vacation. Over lunch I read a post about an interface issue concerning touch screens: when your finger is on the screen, you can’t always necessarily see the very thing you were wanting to touch (unless it’s huge, of course). That seems like a reasonable issue, even though I don’t deal with touch screens too often. Apparently, Apple has an idea to tackle the problem by resembling an invisible interface. Meaning all of the touchy-feely stuff happens on the back of the device (they’re using an iPod in this case), while the screen on the front knows, and reacts, to your activity on the back. It seems like it could be a little awkward to use, but innovation often does seem awkward at first. It’s a cool idea nonetheless. And of all the competition, I’d bet Apple to be the company who could pull it off smoothly.

Business cards on flickr

I think business cards are really fun to design. They’re fun because the space is so limited, you’re forced to make smart decisions about what should go on it. I’ve designed two. Although I’m really lacking in logo design—I can draw up a solid logo, but often can’t get the drawing mapped out in Photoshop.

Here’s a flickr set of business card designs. It’s just as satisfying as a CSS gallery.

Heavy equipment in photography

There’s an odd/artistic appeal in heavy equipment photographs. I’ve come across them quite a few times on some of the more popular flickr photostreams. The lens has a lot to do with it, though, as I don’t think they (such as the following picture) would have near the impact if it weren’t from a fisheye perspective. Even so, it still takes a creative eye to turn an overbearing, ugly thing into something that could be worth paying for.

post headings: inside or out?

Originally, I had the post headings flush with the center column. I liked it that way, and then during one of the five times I adjusted the column widths, I accidentally left too much padding on those headings. Once I saw it, I thought it to be a good way to make the headings stand out more. But now, I don’t know if I like it. What do you think?

Yet another redesign for rpheath.com

And here’s the real reason why I have a site (read: so I can rebuild it over and over). I’ve stripped it down to the bare essentials, and found better ways to implement what was left.

This is my first 3-column layout, although it doesn’t really feel like a 3-column layout to me. And maybe that’s a good thing. Point being, I wanted something different from previous versions, and quit making it more than it had to be. I’ve yet to supply a list of full entries up front. But it was long overdue. I’m actually satisfied with the code this time, and I refused to cut corners. Now, I feel as though it’s worth the effort to make changes and enhance what’s here.

thanks to chris scharf

For a few things, actually.

  1. Idea for a no admin interface (although I’m not using the authentication key, I did manage to get rid of the entire admin section).
  2. Idea to list posts not based on a limit, but on a period of time. However, if I go on another posting drought, rather than letting the site go blank, I’m using the month number as the limit of recent entries (so April would be four entries, May would be five entries, and so on).
  3. And finally, the eztime plugin. I’ve been dragging my feet on using this, and although I’m not overwhelmed with time formats here, I can see its power. Playing a bit in the console has shown me how intuitive it is—great choice of keywords.

keep an eye out

I’m not claiming that there are no bugs, so if you notice one, please let me know. Like I said before, I’ve tested it in [mac] Firefox, Flock, Safari, [windows] Firefox, Flock, IE7, IE6 (I hate the has layout problem). I’ve also mapped the old RSS feeds to the new methods, so you shouldn’t have to update your feeds—let me know if it’s not working. And that’s about it. I might post a follow-up on more details, but we’ll see how it goes.

CSS, IE, and conditional comments

I’ll start off by saying I despise Internet Explorer—all versions. I mentioned my desire for a fresh site, and so over the last couple of days (mainly the weekend) that’s what I’ve working on. I only have a few more hours left, mostly on admin-ish type features (as of now, I have no way to post, edit, delete anything). I’ll save the details for the “grand opening” post.

But I do want to express my frustrations with building the layout. First, CSS is amazing; second, IE is not. I know I could ignore IE, since hardly anybody I know uses it, but it’s tough for me to accept my site not working in certain browsers. It’s an unfortunate disease.

I’ve decided on a 3-column layout (my first ever). I wanted the side columns at a static width, while the center column (the content) was liquefied. Despite what you may think, that’s not the easiest cross-browser layout to achieve—for me, anyway. So I decided on 1 of the 10,000 ways this could be done. Everything was going as I expected it to (in Firefox). Those expectations also included the layout not working in IE6. And of course, it didn’t.

So I started writing some * html hacks, and got everything aligned to match Firefox. I finished it up, pulled in some real data, and everything looked good. I was satisfied. Then I thought, “well, I had better check IE7,” just to be sure. Lo and behold, the left column was missing entirely. I was livid. Here we go again.

I stripped out all of the * html crap and made separate CSS files: a default, one for IE6 hacks, and now, one for IE7 hacks. So currently, I’m using conditional comments to load separate style sheets. What an ugly pain. The thing that bothered me the most is how IE6 was closer to being correct than IE7. For IE6, I really only had to adjust the left hand column width a bit (and a few other things, of course), but at least I could see the column. For IE7, I had to entirely change the positioning. Once I found it and brought it back, it wouldn’t re-adjust with the fluidness of the center column; it would either gap or overlay it, which was hideous.

Based on what I know about CSS, Firefox did exactly what I expected. Both IE’s did not. Granted, my CSS may not have been ideal or I should have done it a different way, IE has done nothing in the past that would let me believe it was my fault. I expected more out of IE7, not less.

In closing, here’s the status. I’ve approved the layout in the following environments:

  • Windows: Firefox, Flock, IE6, IE7
  • Mac: Safari, Firefox, Flock

And all is well, finally. I didn’t bother with IE on a Mac, because I figured anyone with a Mac is NOT using IE. And if they are, they’re not interested in my site :-) And now I have class tonight and tomorrow night, so that will more than likely delay progress for two more days. Blah. I’ll keep you posted.

More web design inspiration

Just recently, I found a Web Design Inspiration set on Flickr that has a wealth of good, solid designs. There’s a brief description of each, along with a link out to the actual site. Not surprisingly, I’ve clicked through each individual design (only within the Flickr gallery—I’m not that bad). Here are a few others (not in the set) I’ve come across lately:

If you’re stuck in a rut in terms of creativity (like I am right now), you should click through that Flickr set. I don’t always get motivated just by looking at other designs (real photos actually do more for me), but today, it helped.

Typography reference from SXSW 2007

Typography is really interesting to me, as well as inspirational. Whether or not I employ all of the things I’ve read is a topic for a different day; but there’s nothing wrong with having a few good references. Not that I was there, but at SXSW 2007, there was a presentation titled, Web Typography Sucks (which is yet another reason to use Textile). The authors have put together a nice collection of references (including their presentation):

Those are some of the best articles I’ve seen on the topic. So bookmark it if you’re at all interested. I was hoping to make it my entire life as one of those to not post about conferences, but since I’ve already blown that, I figured one more wouldn’t hurt.

Awesome tool for beer estimates

I am far from the party animal; in fact, I don’t drink at all. But I came across The Kegulator and thought I’d share. A good design, good interface, and if it’s anywhere close to accurate, I give it a thumbs up.

Brown and blue match well together

Had I not come across these designs, two colors I might not choose for a design are brown and blue (together). However, these complimentary colors are very appealing. Here are a few examples I’ve come across lately:

One day, I’ll design a site in brown and blue.

Sharpening the dull CSS

Ever since its inception, this site has carried somewhat of a blur. I don’t know if anyone has noticed, but the combination of colors was making me feel like I needed to rub my eyes as if I just woke up. That’s a little hard on readability (even though most of you are probably coming through an RSS reader). Anyway, after class this evening, I took some time out to sharpen those dull colors just a bit. Nothing major, just a few HEX values darker in some cases. I also made a few other insignificant CSS/template changes while I was at it (such as a new comment form, clickable portfolio images, etc.). So if things are looking a little weird, you may want to refresh your browser to get rid of that dull CSS stored in your cache—just a heads up.

Innovative advertising for Mustang

Originally living in Atlantic City, NJ, I’ve seen my fair share of billboards; but never as unique as this Mustang advertisement. At first glance, I thought it was painted to match its surroundings, which would’ve been a bad way to handle a good idea. It turns out that it’s semi-transparent Lexan, so it’s blurred day, night, and in any weathered conditions—obviously a much better approach. That’s a pretty clever ad.

A few random and interesting things

You guessed it, here are a few random and interesting things:

And that’s all for now. Just because I find them interesting, doesn’t mean you will. But I like to record these things from time to time. Feel free to load the comments with more—‘random and interesting’ is my middle_name.gsub(/(^random and interesting$)/,'Paul').

Paper prototyping a design

I always sketch out design ideas on paper before I do any markup, as it helps to have a reasonably structured layout in mind. I’m often reluctant to use Photoshop to mock up a design, since that in itself takes a bit of time (although it does help with color). Plus, for work, putting some thoughts on paper is a quick-and-dirty way to show my boss a few designs I have for whatever we’re working on. I guess you could call this paper prototyping. A List Apart recently had an article on paper prototyping, which is a little overkill for what I would ever do (as I’d never use scissors), but there are several good scenarios for how something as simple as paper can help your design process. And personally, I think it’s fun.

A few CSS designs that stand out

Much like photos, I enjoy looking at random CSS designs. And for that very reason, I have a bunch of feeds from a number of different galleries. Here are a few of the better designs I’ve come across over the last few days.

Pixie: never design without it

I’ve been using Pixie for years now, and I don’t know how I could write CSS design something (web-related) without it. It has to be the most convenient and effective way to capture colors for a site. See a color you like? CTRL+ALT+C gives you the HTML color code for any color your mouse is hovering over. CTRL+ALT+X opens the color mixer in case you want a slight variation of that color. It has proven itself to be very handy.

Those who question innovation, think innovation

I hate to be one of the 50 million people who’ve mentioned the iPhone within the last 36 hours, but I’m going to anyway. Clearly, Apple has done something amazing for the mobile space. You can feel the innovation just by looking at this thing. Watching the video series on the iPhone site is impressive. But I’m really referring to this post by Jason Fried, it just happens to involve the iPhone.

Across the web, 37signals is known for innovative thinking, and it shows not only by their products, but their everyday blog posts. With the iPhone, a lot of people (including myself) got blown away by “its ability to do this and that,” (and that’s not to mention its visual appeal), and forgot about what truly matters: usability. Sure, it’s cool, but is it practical? Probably so, but while the rest of the world is wooing over this new toy, Jason Fried doesn’t lose focus. He goes straight at the core by mentioning an interface that requires you to stare at. He’s not necessarily claiming that as a flaw, but an interesting observation. But the fact that he’s looking past the bells and whistles, focusing on the usability of the iPhone (even though it’s Apple, and we’re supposed to just accept what they give us as perfect) says something about the way he thinks. He doesn’t let Apple’s reputation influence his thoughts.

Innovative thinking requires you to not be easily impressed, look past aesthetics, and find the true reasons for a product to exist; what problem(s) does it solve? Then again, if the design is talented enough to carry itself, and out-weigh usability issues, you may be in an entirely different category. And probably the same category Apple is in.

Seeking a single sign-on solution in Rails

Here’s a scenario for you. Lets say you’re planning to build 8 Rails applications over the next 12-18 months. These applications must all talk to one another, but that’s a separate issue from the very first problem you encounter: the login. For user simplicity, among these 8 applications, the user(s) must have only one login. For instance, if the user registers with any one of the 8 applications, they are automatically “registered” for the other 7, but cannot have access until granted (either by payment or a higher power). How would you go about this? What’s the most efficient “best practice” in terms of a single sign-on solution in Rails?

This scenario fits in nicely with what I need to start at work. The two possible routes we’ve been considering are: 1) build a custom, external users web service to manage all of the registration and 2) use OpenID. The first solution sounds appealing, only I’ve never built this kind of solution before (an API), and I’m unaware of the things I should be forewarned about. I don’t really know where to start with developing an API, but that might be another post in itself. I’ve read a little bit about ActionWebService, but haven’t delved into it heavily. I’m hoping I can build the application as a stand-alone application (the user(s) management), then extract out some methods I want for the API, and worry about that at the end. But maybe I should set things up differently in the beginning. I just don’t know, yet.

I’ve also considered just using the same database for the users information, and having a custom Users model in each application that uses establish_connection to get to the users database, but that seems to repeat too much code. Maybe there’s a way to write a plugin to hold all of this code, but then when things change, I’d have to reinstall the plugin across all 8 applications. Plus, I’ve never written a plugin, either, so I don’t know what’s involved, or if that would even work for what I need.

Ultimately, we will want the ability to login using a username/password along with the option of using an OpenID. But I believe we’re going to start with username/password logins. Anyway, do you have any thoughts on how to provide a solid, single sign-on solution for approximately 8 applications written in RoR???

Another impressive flash portfolio

Sometimes flash development intrigues me. I’ve played with flash before, and I’ve found it to be fun but challenging. I know it does a lot of the (what seems to be difficult) fancy things for you, such as tweening and custom motion paths, but it’s still challenging. I’d like to watch someone work on a site such as http://www.thibaud.be/, just so I could see how difficult it truly is. I don’t think I’d ever consider flash for a site, but there’s a part of me that would like to be proficient at it. Proficient enough to build a basic site with good flash practices, at least.

This portfolio is clever and fun to look at. Try spinning one of the tags around. Or throwing one across your screen. Then open a couple, look through them, and close them. Notice how they go down to their respective spot in the line-up? I think that’s awesome. And I don’t know if you noticed, but if you happen to click on a tag that has an embedded flash movie, while the movie is loading, the preview image is wiped out. Cool stuff. You simply can’t do those kinds of things without flash.

J, J, J, K, U, J, J, U

If you spend a lot of time on a computer, keyboard shortcuts have probably become intuitive. The “shift + end” to select complete lines. The “alt + f + s” to quickly save your progess. And more commonly, the “ctrl + x” and “ctrl + v” to cut and paste. These are common among desktop applications; but now that some web applications are mocking desktop applications, keyboard shortcuts have found a spot there as well. When used for true benefit, I think keyboard shortcuts add a lot to an application. Take Google Reader for instance. There is a lot (for me) of content coming and going, and it’s tedious to use the mouse repeatedly. Luckily, they have an exhaustive mix of easy-to-use shortcuts. Especially useful: the j/k combination, with a touch of u. Use j/k to navigate next/previous, and u to expand to full-screen (good for the longer posts). There are many more if you’re interested. With something like a feed reader, I think it’s important to be able to get through feed’s quickly; these shortcuts definitely help. I think Rails has an easy way to incorporate keyboard shortcuts into an application, but I’m not positive on that.

Possible office colors

I’ve mentioned a time or two about January and how things will be changing at work. Well, one of those things just so happens to be a new office space for our team. It’s more convenient for us to be away from the other (distracting) projects that normally surround us, and put more focus into what we’ll be offering. That’s for another post, though.

We’ve already moved into our new office space, and we’re attempting to establish a pro-creative environment where collaboration and innovation become the norm. I’ve found that a bad environment can definitely take a toll on your productivity; likewise, a good environment can support and promote productivity. So a new office space with slightly off-white walls isn’t going to cut it for us. We’re planning on painting the walls, and here are some of the shades we’ve considered:

#790003 | RGB (121,0,3)

#889A65 | RGB (136,154,101)

#BABAA9 | RGB (186,186,169)