16 November 2011

Tools

I thought it would be prudent before continuing these recent dialogues about design and the human interface to step back and frame our assessment of these somewhat abstract concepts. What is it that grounds design, that grounds interface, and interaction. I think we are led off track somewhat when we hear these words, because we’ve been told, not completely erroneously, that these higher notions are aesthetics alone, that they are no more forms of art. It’s not much of a stretch after all, to conceive great design as works of art; to equate the two as equals, though, is brutish. The two, when executed properly, express themselves emotionally. Art uses this emotion rhetorically. Design uses this emotion to communicate function. And so the essential piece, the low-order bit of the whole thing isn’t the aesthetic, because design can exist without it (though often it does so poorly); instead it is the function that design cannot exist without. And function is fundamentally contained within the tool.

Defining the Tool

What, fundamentally, is a tool then? Is it merely that amalgamation of molded iron and plastic that sat in a shiny little box in the garage when you were a kid? If it were as simple as that, one wonders why your dad couldn’t make due with the neon Fisher-Price facsimiles you had as a child when building you that treehouse you’ve always wanted. In fact a tool has little to do with where it’s found, or what it’s made of; it is in fact much more than that, and truthfully, much less.

A tool is nothing more than a solution to some problem we face.

Truly, it’s such a simple definition, but it’s one we often understand experientially rather than consciously. Consider buying a drill. We don’t go to our hardware store because our tool bench isn’t filled up to the brim – we go because we have found that we need a problem solved – in this case, our life needs more holes in it – and so we look for a solution to the problem. But logic dictates that when the person is in the store they are searching for a drill, but that’s confusing cause and effect. People don’t buy drills to make holes, but rather they find that holes are in need of making, and so they head to the store to find a way to make them. The drill itself is superfluous, it merely happens to be the best way of solving a problem.

And so our life is full of tools that represent the current best solutions to current problems. A newspaper, for example, is a tool we employ that solves the problem of knowing what’s out there; if we didn’t have newspapers, we’d have to travel to every inch of the world, everyday, to know the latest goings-on out there. Truthfully, when viewed like this, it solves an even greater problem: getting the most out of our time.

Getting Stuck with Tools

One of the biggest problems we sometimes face isn’t finding ourselves facing a problem with no tools, but rather finding ourselves choosing between too many tools to solve a problem that may not even exist. A beginning artist may walk into an art store to select a few brushes for their latest work, only to come back to the studio, see the blank canvas, and wonder if the few brushes they picked out of the thousands on display were the right ones. Why, after all, do those thousands of brushes exist unless every single one of them were needed. But the truth is that the problem doesn’t lie in the brush; you could purchase every single one from the store and that canvas in your studio would be no less blank because of it. The problem isn’t that you have the right tools to make beautiful works of art, the problem is you don’t know if your art will be beautiful. The real question you want to ask is, “How do I make things that don’t suck?”

As it turns out, we have a tool for that too. It’s called a trash can, and it’s very likely the best solution ever conceived.

14 November 2011

# Occupy

I can’t say I’m either supportive or dismissize of the OWS movement that has seemed to envelop this nation in the last two months. I can wholeheartedly agree with them about some of their concerns of the lending institutions of America – there shouldn’t be companies that both play an integral part in our prosperity, are too big to fail, and can gamble billions of dollars of American money in order to make billions more. It should be like the old engineering adage “Pick Two”, and really, truly, honestly, it should be “Pick One”. No one would be upset if these banks gambled big with their own money and lost it all. No one would be upset if they gambled big and won too, but I guess that’s besides the point. At some point the house always wins.

But what’s troubling, despite it being a major draw of many to the #occupy movement, is the largely unstructured hierarchy of the movement. It’s wat’s allowed the groups in various American cities to grow their encampments. But it may also be their eventual downfall. The movement is characterizing itself as non-partisan, anti-“Fat Cat” bureaucracy, which is really what a talk about the mation’s financial troubles should be – free from party bias, and more importantly, out of the reach of special interest groups. But these same groups have already begun to employ the movement to further their political gains – the right, of the “liberal agenda”, the left of the nation’s disapproval of the right.

Matt Taibbi [urges][taibbi] the protestors to protect themselves from these affronts to the non-partisan nature of the protests. But protection can’t come merely from denial of these labels; nature abhors a vacuum, and as unwholly natural as politcal journalism sometimes feels, they too follow the nature laws and just feel flat-out uncomfortable abouth a story with no buzzwords. What this movement truly needs is a face; a single voice that speaks for the entire campaign. It isn’t necessarily what that voice is saying this early on in the movement; merely that it is saying something, and saying it well.

In much the same way that Dr. King became the face of the Civil Rights movement, and largely shaped the debates at all levels of American life, so too do the OWS members need their own public spokesperson. Without it, #occupy will ultimately serve as nothing more than a tool to manipulate public opinion wrought by the very same people the protestors are unabashedly opposed.

13 November 2011

Reimagining the Human Interface: Part I

This piece is one in a series of pieces in which I hope to explore, and in some ways redefine what we consider to be an interface, what we consider to be interaction, and what the role the human plays in all of this. This is something near and dear to my heart, my studies, my research, and hopefully one day my career. Enjoy.


Defining the Interface

What, fundamentally, is an interface? Were it merely the boundary between two things, our classification would be quick and consise – it may be labeled as nothing more than the “membrane” that separates one thing from another. Just as the cell is surrounded by a membrane between cytoplasm and the external environment, so too can we designate the “membranes” of human interaction – the touchscreen, the keyboard, or even the quill and ink, the hammer and chisel.

A definition that includes this boundary property of the interface is by all means necessary, but it does not adequately describe what the interface is. The cell membrane, after all, isn’t merely a method of segmenting and cordoning off one thimbleful of molecules from the rest of the primordial soup; it serves as a conduit of interaction between the inner and outer partitions. It shapes and defines the characteristics of how the cell interacts with its outside environment. It fascilitates and limits the cells outward expression.

The human interface operates in precisely the same means. The tools – the hammer and chisel, for example – are our “membrane” between inner contemplation and outer thought. But the mere designation of a particular tools isn’t the role of the human interface; instead, it is how we interact with the tools in question, how we use them to convey information, and how effective they are at capturing intent. In our example, it’s the design and ergonomics of our hammer and chisel that effect our interaction, their ease of use in transcripting information that we’ve processed, and our ability to use them to convey what we mean. Understanding each of these aspects is crucial because they define how the human interface becomes useful, and guide use in future undertakings.

Note that none of this relies on knowledge of what we interact with, and what we wish to convey. It’s a subtle point of distinction, but one that certainly needs to be considered. Fundamentally, the user interface should be ubiquitous; it should be able to capture any form of cognition and convey it to the receiver in any form. Practice, however teaches us that this is typically impractical – a hammer and chisel is by no means an effective input method to a computer system, and a touchscreen device is a poor method of capturing complex emotions 1. Trade-offs are inherent in the specific design solutions, but the human interface should strive for ubiquity, or at the very least, have clear boundaries.

So what, then, is an interface? With this definition in mind, the designations expand almost endlessly. Interfaces can be input-oriented; the size, typography, style guide, and even fruequency of printings are all aspects of the human interface of a newspaper, nearly everything but the content itself. The dialers, receivers, speakers and microphones of a telephone, but not the transmittance, or the voices on either side, are part of the human interface. In short, it’s all aspects which collect, convey, or convert human inputs and outputs. And I think the future lies in refining and enhancing our capabilities within these constraints.


  1. I would argue that printed word, and to a lesser extent, even spoken word are ineffective means at conveying true emotion. We are blessed that biology has spent many thousands of eons perfecting this interface through facial expression. ↩

11 November 2011

Spoke & Wheel

There are few companies that can even function in such an organized way, and even fewer that can get it right. Disney, when Walt was at the helm, was one of them. Apple, prior to Steve’s resignation was another. I think it’s clear that the effectiveness of these companies wasn’t so much the fact that the spokes existed. It was that there was an incredibly solid axle to spin around. Both men put themselves into every aspect of the companies they built. The spoke and wheel wasn’t so much a structured decision as an organic one; bureucracy was certainly limited as these men had the need to reach all corners of their respective companies. It was more out of convenience than of true usefulness.

So is the spoke and wheel truly effective in management? Can Apple continue to spin true without their axle? Will they even remain organized the way they are? Should they? And can companies operate effectively organized like this, can they be constructed radially rather than just bloom without attentive cultivation?

These are questions that need further examination.

10 November 2011

Revisited

“When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You’ll know it’s there, so you’re going to use a beautiful piece of wood on the back. For you to sleep well at night, the aesthetics, the quality, has to be carried all the way through.” – Steve Jobs, on designing the Mac


I wanted to revisit what I wrote earlier about Walter Isasacson’s biography on Steve Jobs. I really do think, when you consider just how private Steve was in his life, that anyone could get him to sit down for an extended of series of interviews; that Isaacson was able to retain control over everything within the book (Steve thought the initial cover design looked like shit) is nothing short of amazing. It’s true that Steve did initially commission the book, and that he willingly gave up editorial control over the work, and yet, knowing Steve, actually being able to follow through on the hands-off approach is still a feat to be admired.

My thoughts, especially in the first half of the book, mostly consisted of being astounded by all the unique – really, truly unique – parts of Steve’s life that I’d never been exposed to – though their documentation has been previously published in other tomes. What’s disappointing, really, is the drastic decline in detail as we get closer to the present day, especially the last fifteen years and the return to Apple. Here was a man who did something inconceivable not just in the Tech world, but in any company, and it feels brushed aside, or rushed, or just not quite right. I have the feeling that Isaacson felt that really delving deep into this side of Steve would skew the book into too positive of a territory. I wonder, and worry, honestly, that this part of his life was played down so that the book reads more balanced, more “fair”.

It’s unfortunate that this need to convey objectivity, this need to prove that there is no emotional attachment to the subject, no sympathy, only the facts. But that’s exactly what Steve was about. The emotional connection, the intuitive relation, the superceeding of logic in favor of a much more humanist relation. How could you not be moved by this man’s story? It really is a shame that the book feels as though it has cast aside this powerful bond in favor of mass-market acceptance.

It should feel like a book about Steve. Instead, it reads like a book by Isaacson.

But maybe that’s what Steve wanted after all.

09 November 2011

The End of Quick Lunches

Paleo is hard. It’s hard moving from a diet abundant with grains to one completely bereft of them. It’s hard throwing out such a fantastic staple of the Western diet, the pasta, the bread, the baked goods, the quick carb, and replacing it with alternatives. It’s harder to get real serious about it, especially with an active lifestyle, throwing out slow-carb sources such as potatoes and rice, in favor of caloric intake almost exclusively from protein and fats.

And it’s made all the more difficult being a college kid. No more late night pizza runs, the lifeblood of post-dinner meals. No more ramen, the staple in kitchens and beat-up apartments near campuses all across the country. Gone, too, is the a far larger chunk of your wallet1 spent on healthier options and fresher food.

But most disappointingly, gone is bread.

Not just the fresh-baked delight of a baguette, golden-brown and crispy on the outside, and delicately airy and soft within. It’s the Sara-Lee, the wonderbread, the nine-grain, the pre-sliced, pre-saran-wrapped down-to-earth stuff that’s truly the challenge to live without. Because without it, it means no more quick-to-prep lunches – no more sandwiches. It’s really something to be taken for granted, how simple and efficient the sandwich really is. Two minutes, and probably less if your good at it, and you have a travel-ready meal that can be consumed, if need be, in less than half the time.

So how do you replace it? That was honestly my greatest concern when starting Paleo, and it’s still not a question I’ve completely answered. But I have found two things that work, albeit to an extent:

  1. Cooking to make leftovers: One phenomenal part of Paleo, to it’s great credit, is that I’ve learned to cook protein – fish, chicken, beef, etc. – simply, quickly, and for the most part, deliciously. Mostly out of necessity, or perhaps more accurately, impatience, I’ve cut down cooking times on many meals without comprimising on flavors. Extending this further, and merely cooking a little more than I need, and I have a ready-made meal for lunch the next day. When this works, it works great – who wouldn’t love a fantastic home-cooked meal over dining hall food? Two big questions remain though - What if I don’t cook an evening meal? And what if I cook something that isn’t big enough to split up?
  2. Pre-cooking lunches: In searching for an answer to these questions, I started attempting to make big, crock-pot meals; meals that would last a week both satisfying my stomach and surviving the fridge. Chilis, stews, taco meat – and again, it was fantastic when it worked. The problem is, and is only becoming more exacerbated over the semester, is when am I going to have time to make these meals? It’s hard to step aside and devote several hours of time to cooking when papers, tests and homework are constantly looming.

So unfortunately I don’t have a catch-all answer yet. If all else fails though, I can make my way to Spain. I hear they like to take their lunches nice and slow.


  1. If you’re serious about Paleo as a college student, I would definitely look into joining a farm co-op of some sort – they offer cheaper prices for better food, and sometimes, if you’re lucky, they deliver either to your house or to some convenient place on-campus. ↩

08 November 2011

The Problem with C++

The typedefs say it all; I’ll stick with Objective-C please. Presented without comment.

#if defined(_MSC_VER)
#pragma warning ( disable : 4786 )
#endif
#include "itkSize.h"
#include "itkIndex.h"
#include "itkImage.h"
#include "itkImageRegionIterator.h"
#include "itkPoint.h"
#include "itkSphereSpatialFunction.h"
#include "itkFloodFilledSpatialFunctionConditionalIterator.h"
#include "itkPNGImageIO.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkCannyEdgeDetectionImageFilter.h"
#include <fstream>
#include <iostream>



int main () {


const unsigned int Dimension = 2; 
typedef unsigned char PixelType;
typedef itk::Image< PixelType, Dimension > ImageType;
typedef itk::ImageRegionIterator< ImageType> IteratorType;

ImageType::Pointer image = ImageType::New();

ImageType::SizeType size;
size[0] = 256;
size[1] = 256;

ImageType::IndexType start;
start[0] = 0;
start[1] = 0;

ImageType::RegionType region;
region.SetSize(size);
region.SetIndex(start);

image->SetRegions(region);
image->Allocate();

double spacing[ImageType::ImageDimension];
spacing[0] = .5;
spacing[1] = .5;
image->SetSpacing(spacing);

double origin[ImageType::ImageDimension];
origin[0]=0;
origin[1]=0;
image->SetOrigin(origin);

ImageType::PixelType pixelValue='X';
for(int i=0;i<256;i++) {
    for(int j=0;j<256;j++) {
        ImageType::IndexType pixelIndex;
        pixelIndex[0]=i;
        pixelIndex[1]=j;
        image->SetPixel(pixelIndex,pixelValue);
    }
}

IteratorType it(image,image->GetRequestedRegion() );

for( it = it.Begin();!it.IsAtEnd();++it) {
    it.Set('O');
}

  for(int strat = 0; strat < 4; strat++)
    {

    typedef itk::SphereSpatialFunction<2> FunctionType;
    typedef FunctionType::InputType FunctionPositionType;

    FunctionType::Pointer spatialFunc = FunctionType::New();
    spatialFunc->SetRadius( 25.0 );

    FunctionPositionType center;
    center[0] = 128;
    center[1] = 128;
    spatialFunc->SetCenter(center);

    ImageType::IndexType seedPos;
    const ImageType::IndexValueType pos[] = {2,2};
    seedPos.SetIndex(pos);

    typedef itk::FloodFilledSpatialFunctionConditionalIterator
      <ImageType, FunctionType> ItType;

    ItType sfi = ItType(image, spatialFunc, seedPos);

    switch(strat){
    case 0:
      {
        sfi.SetOriginInclusionStrategy();
      }
    break;
    case 1:
      {
        sfi.SetCenterInclusionStrategy();
      }
    break;
    case 2:
      {
        sfi.SetCompleteInclusionStrategy();
      }
    break;
    case 3:
      {
        sfi.SetIntersectInclusionStrategy();
      }
    } 

    for( sfi.GoToBegin(); !( sfi.IsAtEnd() ); ++sfi)
      {
      sfi.Set('c');
      }

    }   

    typedef itk::ImageFileWriter<ImageType> WriterType2D;
    WriterType2D::Pointer writer2D = WriterType2D::New();
    writer2D->SetFileName( "PartE.png" );
    writer2D->SetInput( image );
    writer2D->Write();

    typedef itk::ImageFileReader<ImageType> ReaderType;
    ReaderType::Pointer reader = ReaderType::New();

    reader->SetFileName("Tiger.png");

    ImageType::Pointer image1 = reader->GetOutput();

    typedef itk::Image<float, Dimension>    RealImageType;
     CastToRealFilterType;
    typedef itk::RescaleIntensityImageFilter<RealImageType, CharImageType > RescaleFilter;
    typedef itk::CannyEdgeDetectionImageFilter<RealImageType, RealImageType> CannyFilter;

    float variance = 2.0;
    float upperThreshold = 0.0;
    float lowerThreshold = 0.0;

    itk::CastImageFilter< ImageType, RealImageType>::Pointer toReal = CastToRealFilterType::New();
    RescaleFilter::Pointer rescale = RescaleFilter::New();
    CannyFilter::Pointer cannyFilter = CannyFilter::New();

    writer->SetFileName( "filteredImage.png" );

  rescale->SetOutputMinimum(   0 );
  rescale->SetOutputMaximum( 255 );

  toReal->SetInput( image1);

  cannyFilter->SetInput( toReal->GetOutput() );
  cannyFilter->SetVariance( variance );
  cannyFilter->SetUpperThreshold( upperThreshold );
  cannyFilter->SetLowerThreshold( lowerThreshold );

  rescale->SetInput( cannyFilter->GetOutput() );
  writer->SetInput( rescale->GetOutput() );


    writer->Write();

}