August 9, 2008

making

making is hard. Its hard because there are always things to do that pull you away from making. I haven't spent nearly as much time making photographs as i have reading or working.

Now, for me, working is making. I make software. Big software that involves big money, big headaches and big fun in interesting proportions. My sense of balance is skewed lately (for a long time now, really) and i have been trying to reprioritize.

A recent twitter quote from why the lucky stiff and the recent making series on 43folders (part 1 - Bad Correspondence, part 2 - The Job You Think You Have and part 3 - One Clear Line) were very refreshing because they are very close to what i have been thinking about lately.

when you don't create things, you become defined by your tastes rather than ability. your tastes only narrow & exclude people. so create.

from http://twitter.com/_why/statuses/881768089

I am making the normal (read, ridiculous) amount of stuff at work and re-evaluating everything else to make more at home. Working less outside of normal hours, ignoring other stuff and just making time to work on stuff i have been neglecting. Wish me luck!

August 4, 2008

Growth, Creativity and Failure is OK

From the NYTimes early in July, If You're Open to Growth, You Tend to Grow. The gist of this article is that your attitude towards your potential has a huge impact on how you grow in your career. I have certainly seen that in my professional life. The people i have the easiest time working with have a real can-do attitude and a positive attitude about problem solving. Nothing makes me cringe more than "I don't know how to do that. Period. End of discussion." There are thousands of things i don't know, but very few of them stop me from thinking about a problem or trying to tackle it if i need to.

Also, a radio interview with the amazing Andrew Stanton, of Pixar and Innovation lessons from Pixar: An interview with Oscar-winning director Brad Bird from the McKinsey Quarterly. The thing i like about reading about Pixar is that they have an amazing ability to try things and fail in private before releasing something successful. Pixar seems to take a long view to team building and employee development and their work shows the difference between 'projects' (most films animated or otherwise) and something built by a real team that grows over the long term.

August 3, 2008

First Visualizing Data Nodebox Conversions

I spent some time this evening with Nodebox and "Visualizing Data" by Ben Fry. I did encounter a couple of quirks and a few things i needed to re-implement in python, but i managed to get through the first couple of example applications in the book. Basically, i can load the map graphic, load the center point and the random data tab-delimited text files and plot circles on the center points of the map.

Nodebox Map Example Output

I had to reimplement a few things:

  • the Table class from the book was ported (mostly) to python. The API is a bit simpler since python is more flexible with types.
  • i built a processing module in python with the following methods:
  • processing.lerp - linear interpolation between two values
  • processing.norm - figures out the relative position of a value in a range (ie, norm(2, 0.0, 4.0) is 0.5
  • processing.map - Takes a value between 1 range of values and maps it to the equivalent spot in another range. This method is poorly named since python has a map method that does what a programming language should do for map().

The processing module will hold most of the stuff i needed to reimplement from processing.

I have posted the Nodebox Project and required libraries for you to download and play with. I should probably clarify the license on this code and put it in version control, but that is a task for another time.

August 1, 2008

Processing and NodeBox

I have played around with processing on and off for a few years now. setpixel told me about the app pretty soon after it came out. I have never spent much concentrated time working with it, though. This year, at pycon, i learned about NodeBox, which is essentially processing for mac os x using python instead of java. I have also dabbled a bit with that app, but to no real end.

I have a copy of Ben Fry's new book Visualizing Data and have been reading through it every once and a while. I decided today to try to work through that book and translate the examples to python along the way so i can learn nodebox a bit better and get through some more hands on processing work.

This morning at the coffee shop, i made a quick example app to run in both nodebox and processing just to get things started. The design is a simple stairstep of squares with changing fill and stroke colors. Even this simple application shows some interesting differences between nodebox and processing (as well as java and python).

Processing

Processing Design

Code sample:

    int sizeWidth = 600;
    int sizeHeight = 600;

    void setup() 
    {
      size(sizeWidth, sizeHeight);
      background(.7*255);
      noLoop();
    }

    void draw() {
      for (int i = 0;  i<20; i++) {
        fill(ceiling(i*40,255));
        stroke(ceiling(i*20,255));
        rect(i*40, i*40, 40, 40);
      }
    }

    int ceiling(int inputVal, int ceilingVal) {
     if ( inputVal > ceilingVal ) {
      return ceilingVal;
     } else {
      return inputVal;
     } 
    }

Nodebox

Nodebox Design

Code Sample:

    sizeheight = 600
    sizewidth = 600

    def background (w,h):
        size(w, h)
        fill(.7, .7, .7)
        rect(0, 0, w, h)

    background(sizewidth, sizeheight)

    for i in range(20):
        fill(i*40/255.0, i*40/255.0, i*40/255.0)
        stroke(i*20/255.0, i*20/255.0, i*20/255.0)
        rect(i*40, i*40, 40, 40)

While this sample design is very simplistic, there are a few interesting points that i learned while making this example.

  • processing will not automatically cap color values at 255 if given numbers > 255, so i needed to make the ceiling() function to keep the behaviour between processing and nodebox the same.
  • nodebox has a richer rect() method that lets you specify corner radius. The stroke will follow the corner radius settings. I haven't dug into processing enough yet to figure out the equivalent method for drawing rounded rectangles, but it is definitely possible.

May 11, 2008

social media in a nutshell

from Clay Shirky's Web 2.0 presentation of April 23, 2008

Here's something four-year-olds know: A screen that ships without a mouse ships broken. Here's something four-year-olds know: Media that's targeted at you but doesn't include you may not be worth sitting still for.

February 2, 2008

cabin building animals

ava and i made a video tonight while juliana was at a sleepover.

enjoy!

January 27, 2008

OMG! The alternative weekly, like, totally knows me!

this was my horoscope from the first Shepherd Express of the year (and the first horoscope i have looked at in a year or more):

Aries (March 21-April 19): I urge you to spend 2008 turning all of your pretty-good-but-half-developed notions into a few brilliant, fully formed ideas. While you're at it, melt down your hundreds of wishy-washy wishes and recast them into three driving desires. This is the Year of Pinpoint Aim, Aries, also known as the Year of Lasering Your Focus and the Year of Seeing with Fierce Clarity. Psych yourself up for a major campaign to cut the crap so the essence can shine.

You heard it hear first. Watch out for my Fierce Clarity, suckas!

January 21, 2008

Stop Motion Weekend

The girls and i have been having a lot of fun with iStopMotion this weekend. I picked it up as part of the MacHeist bundle.

First we discovered a sleepy snake wandering through the attic.

Next, Juliana tried to make friends with the snake, but it had other ideas:

Then this afternoon, Ava and I worked on a short tale of some hungry little pets.

The best thing about the snake attack video is that Ava worked as the director of photography while juliana directed and acted in the piece. They put this together by themselves while i was downstairs having some coffee!

Next up i think we are going to try either some whiteboard drawing or some pencil sketch and eraser animations. Juliana may even like to time lapse some of her watercolor paintings.

January 13, 2008

MacHeist - cheap software to raise money for charities

MacHeist is a sale that is running right now (the deal ends on january 23rd) that packages up a bunch of great independent mac software for a bundle price of $49. Now, this is a deal in and of itself (some of the software goes for more than 50 dollars by itself), but you can elect to send 25% of your purchase prices to one or all of a set of charities listed on the site. As of right now, they have raised $75,000 for charity and if they hit $100,000, they will also add PixelMator, the really lovely looking, layer-based image editing application, to the mix.

I purchased my bundle today after a friend from work pointed me to it and i am pretty excited. Snapz Pro and iStopMotion are the standouts to me and i can't wait to start making some animated shorts with my girls. :)

So if you are reading this and have a mac, what are you waiting for??? If you want to give this deal a shot, you can use my referral link.

December 14, 2007

mt open source

YAY!

Movable type is now officially, truly open source!

I have been using movable type for (/me goes to check my earliest entries) the beginning of 2003. In that time i have watched the application grow from a simple, beautifully constructed perl application to a beautifully constructed perl based publishing platform. I have a (sorely under-maintained) plugin - MTRecentImages and have set up blogs for family and friends.

Now that the release has been open sourced i am getting ready to roll it out to our many-hundred engineer team at work with some customizations to integrate into our environment better.

Congrats to the MT team for a continually improving product and platform and for keeping the platform open for all of us.

October 21, 2007

trying out the new umbrella with my flash

i started getting back into the craft of photography recently. This is my first good shot with a little umbrella i picked up on friday. Nothing spectacular, but enough to get started wtih.

August 3, 2007

DDJ Architecture & Design World: Randy Miller's "Agile Architecture"

Randy (Granville) Miller is an architect for Microsoft. He has a Microsoft blog. Last week i attended his session, "Agile Architecture" at the Dr. Dobb's Architecture and Design World Conference.

His talk started with a quick overview of agile and its benefits. As a side note, i was amazed at how much of that talk was happening at the conference. I assumed (there i go again) that it was so prevalent now that it was roughly a given. Apparently i assumed incorrectly.

After that was out of the way he talked for a bit about the place of architecture in agile methods and the disconnect between engineering practices and an entire business process or system. He used a quote from Kent Beck that is really spot-on:

My bias in writing XP originally was towards the programmers. That’s my background. That’s who I identified with on teams. However, the past five years have taught me that software development can’t be “the programmers and a bunch of other people�if the goal is excellence. Without balance between the concerns of everyone involved, some people will be unable to contribute to development, and their views are important to the team’s success.

My team's nearly 2 year experience with Scrum has certainly proven this out. In fact, Scrum's biggest benefits have materialized in communications and project management benefits over strict engineering benefits. While combining multiple roles on a single team is a fundamental agile tenet, the role of Architect is not often discussed and less so in an Agile Context. XP, Enterprise Scrum and Microsoft's MSF stuff were mentioned as methodologies that discuss the architect and architecture. The notion that architecture was unnecessary in an agile project was brought up as a fundamental myth about agile practices. After nods all around, he made his first suggestion: build stories to verify the architecture in a deployed sense, not on paper. For a client server application, build the client and the server with a really simple interface or a stub, but make it real. Put it in your environment and let it run. The appeal of making a design tangible is pretty interesting, even if it gets difficult for a lot of cases.

The rest of his presentation focused on the concepts of shadows. Working or existing code can cast what he called "Trailing Shadows". Reverse engineering databases into ER diagrams, java code into UML diagrams, etc. In my team, this has been incredibly valuable. It is a common sense task to take stock of what you have and document it, but i really like the term Trailing Shadows as an indicator of architecture. The mixture of a legacy code base and an expanding engineering team makes that particularly necessary for my team.

On the flip side of that, he talked about "Leading Shadows" from a design. Our leading shadows could come from whiteboard sketches, notebook pages, quick visio diagrams, etc. He stressed that these shadows should turn into working code within an iteration and not devolve into Big Design Up Front. Following on this discussion, he stressed building scaffolding for these sketches, writing tests for them and getting them into your continuous integration environment. A chart from his presentation shows the ideal progression of leading and trailing shadows over the course of a project.

Shadow Architecture Graph

As part of a retrospective after an iteration, review the shadows, suggested Miller. If you have leading shadows still, you need more development. If you have trailing shadows, then you are done with this architectural change.

The final interesting part of the talk was a focus on the inverse relationship between project size and the length of iterations/integrations. He gave an anecdote about the size of the team for the last Visual Studio release (~4-500 developers) and the 2 month iteration size. They found that they spent a ton of time doing integration testing and conflict resolution. This seems like a no-brainer, but is often hard to put into practice.

The shadow architecture concept is part of the Microsoft System Foundation for Agile Software Development. On that basis, i am going to do a little reading on that system. I don't develop for windows or use Visual Studio, so we'll see what is applicable.

Miller's talk was one of my favorites at the conference and helped me get some perspective on the "What is my sprint to sprint role as an architect?" question. His speaking style was great, the presentation flowed well between his material and the audience questions.

Juliana on Same Title Different Story

Chris has been running a site called Same Title Different Story for a while now. The mix of styles and stories has been pretty cool to listen to. For his third story, "Electric Current", he asked Juliana to contribute a story. After a little talk about what the title meant and what her story could be, Juliana wrote a second Super Cat adventure. I helped her clean up her sentences a little bit (basic stuff, not content) and we recorded the story on my macbook.

Check out her story and let me know what you think! Same Title Different Story

July 29, 2007

Dr. Dobb's Architecture and Design World

I spent most of last week at Dr. Dobb's Architecture and Design World in Chicago. While the name caused some of my colleagues to snicker, the conference had a great schedule, so i signed up.

Before i talk about any specific talks, i have a few comments on the conference itself.

  • The food and drinks could have been much better. Coffee was scarce and competition for a cup fierce. The boxed lunches got old quickly and there was no breakfast served, despite 8:30 start times for 3 of the 4 days.
  • Many talks needed a quick test before attendees were allowed to ask a question. Too many questions in talks with the word "agile" in the title either complained that agile was too hard for their app/company because of INSERT REASON HERE.
  • Much of the talk was about finding a place for Architecture in a process that is often interpreted as meaning, "Look ahead only 1 or 2 iterations. As long as we do test driven development, a quality product and architecture will emerge." Various speakers and attendees addressed this differently, but the conversation was very interesting.

I left the conference with several pages of notes to work through from many great talks. Here are just a couple of notes.

  • My favorite practical talk was Neal Ford's "Building DSLs in Static and Dynamic Languages" (download Neal's slides (pdf). Neal walked through some background on DSLs and then took 3 approaches to building one: building fluent interfaces (think method chaining) in Java, a Groovy example that cleaned up the java syntax and finally a Ruby DSL. He stressed knowing the syntax you want to be able to write and building towards that. Neal was a fantastic speaker and the session was a lot of fun.
  • Scott Ambler's keynote "Evolving Agile: Time to Address the Uncomfortable Issues We’d Prefer to Avoid" focused on the results of a recent Dr. Dobb's survey on agile methodologies. An interesting takeaway from his talk was the prevalence of modeling practices (from whiteboard to formal tool) in teams reporting successful agile projects. Scott focused on simple techniques and a sort of just in time modeling done at the beginning of an iteration for a limited scope.
  • Randy Miller from Microsoft gave a great talk entitled "Agile Architecture" and focused on guiding teams towards an architecture without resorting to big design up front. Modeling was a key technique he used, but as with Ambler's talk, common sense was the main rule. Model what you need to model to show what you have and where you are going based on what you know now. He also told an interesting anecdote about the last Visual Studio release. They had 4-500 developers working on 2 month iterations that resulted in a ton of time spent dealing with integration. The newest release that is in progress has apparently moved to shorter iterations.

I will be presenting some of my notes and thoughts to some of my coworkers in the next couple of weeks, so i will post some more info about specific topics and presentations over the next few days.

September 23, 2006

Crossing the Hoan Bridge

Approaching the Hoan

Since we live in Bayview, we end up using the Hoan Bridge quite a bit. It is a cool bridge that has a lot more history than i realized. I had always recalled hearing the Hoan called "The Bridge to Nowhere" (immediately causing the Talking Heads song "Road To Nowhere" to nestle into my brain), but i didn't really know the full story. While searching around for the proper spelling of the Hoan (Hohne? Hohn? Hone?) i came across a more elaborate history of the Hoan Bridge at the Wisconsin Highways web site. Pretty neat stuff. I had always thought that the bridge was only completed in the 21st century, but I was wrong. A section collapsed and was brought down for repairs in late 2000. Crazy!

Lake Michigan from 794 on the Hoan Bridge

I snapped these two shots off the bridge on a recent trip to the park with the girls. Ya gotta love the Holga + really old neg film + brilliant blue + good scanner combination.

Archives