Tool Development : Interfaces are high mileage

I've written a large number of tools that end up deprecated.  Often times the content creation app will offer a more elegant native solution in an update, or more commonly, the pipeline needs itself changes.

Interfaces however, are much more resilient and surprisingly high mileage.  

I've built many one off animations rigs that languish, while the keyframe tool that drives it continues to find usage.  The animation UI pictured for simple commands such as zeroing out, mirroring and keying poses have been adapted to numerous foreign rigs on a number of various contracts and small side projects.

Unreal : Shader Development

Collaborating with the principle players from art and tech to deliver solutions are my favorite project highlights.  Here's a slice from my time working on Unreal Shader Development for an older Sony Online Project:

  • Initial Standard : The project's character clothing used the standard normal, specular, diffuse uber shader.  There was an interesting tweak to the specular to 'pop' more detail with front facing normals.  And that worked great on surfaces such as leather and velvet.  But not so much on on cloth and materials where specular was minimal.
  • Hue Shift Pivot : Adding a complementary hue shift to the tangent facing normals of the material colors on the character's cloth pumped up the palette.  I utilized calculations already being processed to add minimal perf cost to the process.
  • Art Direction : The art director liked the expanded palette, but felt my shaders defaults were too heavy handed with color usage.  I worked with him to dial down many of the settings(it's easier to rein a shader artist back to push him for more:).  The Lead Tech Artist also exposed a custom sample of the dominant scene light.  Changing the shader to sample the complementary color from scene lighting as opposed to local material colors.  The final look something more along the lines of the palette brilliantly achieved in Unchartered 2. 

Photoshop : Tool And Workflow Visualizations

"A problem well stated is a problem half solved."

                                        -Charles F. Kettering

One of the day to day challenges of tool/workflow development is resolving the needs and wants of diverse disciplines.  That gap can be particularly wide on complex and ambitious projects.  Many times the requests from one department will appear to conflict with what another may be asking for. 

A practical and direct way to address this is with Photoshop wireframes.  Words can be imprecise; pictures and numbers however tend to be concrete.  Photoshop->conversationw/Design->Photoshop->conversationw/Engineers, in my experience has worked as an effective means to iterate.

This process is a great aid in moving the needle forward on plans sidetracked by abstration and ambiguity.  And at times these visualizations will also serve as an ad hoc contract for the tools to implement or workflow to be setup.

Vim : Modal Text Editor

This post over at Hacker News: Vim the Six Billion Dollar Editor reminded me of just how much I love Vim.  If your day to day involves text-slinging, Vim is a bionic weapon that'll return the investment in understanding it many times over.      

It's modal nature is somewhat astonishing at first : Why would a text editor have a mode that does not input text?  The reason becomes a bit more clear when you consider that about half the time of an average text editing session is spent tumbling to and from characters/words.  And by separating those two modes, Vim effectively doubles the available keystroke space.

Originally, I struggled with a number of false starts with picking up Vim.  Persistance paid off.  And the resources that helped me most were:

  • The built in vimtutor or the browser based openvim .
  • The videos at are a gentle, practical introduction to Vim's day to day use.  These videos got me to the critical point of applying Vim idioms to my real world projects.
  • Beautiful wallpaper by Ted Naleid. (My personal variant is attached.)

I also recommend finding a nice .vimrc :

(The jj macro to switch modes will be kinder on your fingers than having to reach for the escape key.)

Vim is ~20 years old, yet IMHO manages to feel ahead of the curve.

Posterous : Discovering How Much It Rocks!

I've been using Posterous for almost two years now, but it's only recently that I've dug in and discovered how much it rocks.  Here are my favorite finds:

  • Landing page posts can be sorted by tags.  I use Posterous to document some of the experience and tools I've developed over the course of my career.  I also use it to share social posts about personal projects, product reviews...etc.  Using tags I can directly share a url to a landing page sorted for disparate topics:
  1. -   Portfolio and career topics
  2. -  Social and personal posts
  • (An added note is how remarkable Posterous support was: I received answers to my specific questions, from a person, in only a few hours!)

Posterous is by far the most hassle free and simplest way to blog, and is definitely worth leaning on for my posting needs.

Homemade Comic : Priceless (And Low Cost) Birthday Gift

Here's a comic strip that I posted to a friend's FaceBook wall for her Birthday a few years back.  She had also recently been accepted to Dental school...which she seemed a little too excited about?  Anyhows, she liked it, and I saved a buck or two on a more conventional retail gift<g>.

Attached are also a few quick throwaway thumbnails trying to hash out the idea.

I'm a dabbler by nature and generally have about a dozen projects going on at any given time.  It's the things with purpose, that I'll move to the finishing stage. 

Shaders : Hue Shifting

Nintendo characters tend to emphasize shape and volume over details.  In addition to value attenuation, a complementary amount of hue shifting can really emphasize the simplicity and beauty of this style.  And the shaders I've adapted from this approach can run on a wide set of hardware from fixed pipeline mobile devices to highly programmable CGFX/HLSL environments.  Normals are fundamentally one's best friend for getting high mileage here<g>.

Impromptu : Live Coding

Impromptu is a live coding environment utilizing Scheme(a dialect of Lisp) and is a fantastic environment for prototyping.  Developed by Andrew Sorensen, how Impromptu access and controls your Mac is beautiful and elegant.  

And before discovering the advances in Javascript and HTML5, it was my favorite technical sandbox.  Here's a small OpenGL program I wrote while learning matrices to implement ArcBall rotation:

YouTube : Invite To Earn Revenue

Just got an e-mail from YouTube to describing how my channel may be eligible to earn revenue, if I'd agree to have ads on my uploaded videos.  This got me wondering how many views/subscribers does it take to receive an invitation.

Currently my channel has:

  • 28,064 views total over 4 years (created in 2007)
  • ~1,000 views every two weeks for the past half year
  • 32 subscribers

It's pretty gratifying to receive such an offer.  On the one hand I'm really curious to see how the revenue system works.  On the other this channel is being used to host portfolio and family videos: It'd be worth seeing if it's possible to create a 2nd private/personal channel that would be low view count, but ad free.

Anyhows, one of the nicer things that the internet has offered beyond convenient shopping and naughty pictures.  For that I'm very much grateful:).