davidnunez.com

David Nunez lives, wonders, tinkers and builds in Boston.

dorkbot diyCHI

Tonight there is a dorkbot-boston as part of the CHI2009 conference.

What do glitter and glue, needles and thread, batteries and wires have to do with Human Computer Interaction? What can makers and crafters teach technology researchers and designers about the world and technology? How can CHI researchers engage with Do-It-Yourself communities? This session will be a dialogue about the relationships between academia and DIY communities. It will include presentations from the workshop organizers and participants who will demo and discuss their own DIY projects and then use them as springboards for open discussions with the audience. Come to see some interesting projects and to share your own insights and experiences.

I have the pleasure of making some opening remarks; it’s a little bit of “what is dorkbot,” but I’ll be mixing in some of the call-to-arms rhetoric I’ve used before with a DIYist slant:

Read the rest of this entry »

double edged sword

I giggled out loud, had a brief moment of “Wow, I can’t believe this is what I get to do for a living right now,” and then came crashing down when I realized that it’s 330AM.

Untitled - SketchUp-3.jpg

Speculative Producing - Building Artifacts as Practical Futurism

I just listened to Eurydice Aroney’s radio piece, “The Dribble Down Effect” - (listen at http://www.thirdcoastfestival.com - Re:Sound #44)

The story is a “mockumentary” done in the style of a radio documentary you might hear as a 30-minute special on NPR. While parts were definitely funny, it didn’t seem to be presented as a slapstick humorous production (a la Chris Guest’s movies).

Instead, this was speculative fiction reported on in a very serious manner, peppered with the sound collages you come to expect from well-engineered radio stories. This particular story was about childcare in the near future. Robots watch kids (cheaper than university-educated babysitters), children have implants that provide biodata like “I’m hungry,” and society faces all sorts of questions about class differences, feminism, and the ever-present abundance of overbearing parents.

Read the rest of this entry »

Large Letters for greater creativity

I’ve recently upped the font sizes in Textmate and the terminal.

It makes me feel like my code is more beautiful, somehow.

Maybe it’s because whenever I watch a brilliant hacker give a technical talk, they put their screens up on the projector and live-code with super-large type.

Perhaps it reduces the amount of stuff that fits on my screen to a more elegant “that which matters.” Too much text via smaller font makes it difficult to focus.

It’s a cognitive hack for creativity.


Terminal — bash — 80x24-1.jpg

demo.rb — smart-lab.jpg

Monoco 18pt - Vibrant Ink color scheme for Textmate

Observations at Dev House

This Sunday I partcipated in DevHouse Boston. It was fantastic, exhausting, and maybe even inspiring.

Dev House convenes a group of people who all are working on or wanting to work on interesting projects for one, short day. At a strict time after the hack session, everyone shows off what they’ve finished. The scope of each project is necessarily small since the emphasis is on completing something.

skitched-20081209-160819.jpg

Mac demo’ing the project we worked on

There were no sponsors (aside from the venue itself, betahouse) nor after-parties; these were just smart, energetic people putting in a good day’s work on mostly side-projects. Pizza and coffee and wifi flow freely and everyone has an impressive skill set and/or project history.

Simple and effective. The organizers weren’t egomaniacal pseudo-celebrities in an insignificant web 2.0 universe. In fact, while there were provably high caliber brains with large profile track records in the room, egos seemed to have been checked in at the door.

The hangers-on that tend to flock to your average barcamp who have little substantive input to offer and just get off on going to tech events would have been really out of place here.

You’ve met these people? Their cards say “Social Media Consultant,” but you still have absolutely NO idea what they actually have accomplished in their lives to enjoy such self-importance.

They somehow show up at every technology conference and happy hour, flitting around and constantly twittering and traveling and collecting “friends” on facebook like points in a game. They name drop other, bigger narcissists with @’s on twitter as if you are supposed to be impressed by their ability to weasel into places where they are hopelessly outclassed.

Engage them in their one-way conversation at an unconference (one of 20 they helped “organize” that month) and they kvetch about how they don’t ever have time to sleep and how their many podcasts and video streams and guest blogging gigs and Uber-secret, open-source coalition of boards and specification architects is just about to launch and change the universe forever.

The have to wear costumes… COSTUMES… to SxSW so they are noticed and photographed since you have never heard of anything they’ve actually shipped before.

You fall for it once or twice or a few years. You may even chase the glory. Then the veneer fades. Then you meet people who are actually smart and are producing projects daily that chip away at real world, observable improvements in our human condition. Then you get angry or bitter or jealous at the “evangelists” and “connectors.”

You look around and wonder what the hell happened and how did so much time disappear.

Not at Dev House.

Everyone was working and the socializing was all in the context of real effort. I suspect that there would have been very little tolerance for the BS that we generously call “expertise” at your typical tech conference panel sessions, for example.

“Tolerance” overstates the case. Valueless people would probably have just gone home on their own because they would have been ignored.

Coding notes

I also got a glimpse of what I’m missing as a lone wolf freelancer. I’ve not really participated much in pair programming sessions, and realized that there are some practical advantages. For example, watching somebody’s terminal commands might reveal a new shortcut that can shave precious seconds off of trivial operations.

With somebody looking over your shoulder and simultaneously working on the same problems, you tend to be on better behavior.

There wasn’t time for much architecture or even goal-setting at the session. We just kind of went forward as fast as we could. The day before, I created an initial framework that was refined pretty quickly by the others’ input and it did the job for the day.

In this team coding environment, you have to constantly think about what you’re doing and be prepared to explain or justify your approaches. So for better or worse, I found myself slowing down– I was coding at maybe 60% efficiency.

This was maybe my second or third effort using ruby-processing (although I’ve done dozens of things (including production work) in processing, proper). It was definitely the most involved ruby-processing project I’ve done. We chose ruby-processing since more people were used to doing ruby work vs. java, and frankly, it just seemed more fun. Processing will ultimately not be sufficient for this project. We didn’t even get into “real” graphics stuff.

I got stuck on some of the issues that “just work” in processing like file inclusions that were a result of our ruby-processing choice. Nevertheless, I do think that using some of the ruby idioms, combined with the ruby expertise in the room made for a more rapid development.

The last version control system I’ve used w/ more than one coder was subversion. I’ve migrated all my active projects to git lately. Git merges, etc, are something I don’t usually deal with as I’m almost always a lone programmer on a project, so I needed some reminding on how to address those in git.

Criticism was constructive, for the most part. There were some people who took conversations off on digressions, but that’s to be expected (reminded me of some of the better undergrad comp sci classes)

Get something done in a day, and you get the respect of at least a few minutes of attention and genuine questions or suggestions.

Most normal people took Sunday off.

lifecasting as a digital notebook

I had a meeting this morning which I think will help seed a nice, grand project over the next year. We discussed creating an augmented workspace to be used in a laboratory setting. This is the brainchild of Jason Morrison and Mac Cowell of diybio.org. (see the Seed Magazine article featuring Mac and his work)

The concept, called SmartLab, looks to be a fun way to reapply and improve on some work I have done previously in interface design, multitouch tables, and creative workflow research.

The project will involve prototyping a physical workbench (with integrated projection, multitouch screen, and image capture facilities), writing some system software, and developing a user interaction that will stretch my imagination in strange and useful ways.

Read the rest of this entry »

My grand project

I moved to Boston right after July 4th of this year and have had the opportunity to introduce myself to lots and lots of new faces.

I took for granted that Austin was a relatively smaller town and that I could go to just about any tech-related meetup and find at least one person that I knew.

So the question, “what do you do?” has had me stumped for a while now. When most people ask that, they really want to know “how much money do you make” or “can you even relate to my self-important world?”

I’ve been doing web and software development of some sort or another for the past decade with an occasional foray into non-profit organizational work and things like dorkbot and robotic puppets. There are also many things I aspire to and am working towards. I looked at web stuff as bread and butter.

I no longer introduce myself as a web developer or Rails guy. Ballast. All of my current gigs involve art or robots or innovative software. It’s a good place. When I consciously made the decision not to pursue web stuff as a source of income the universe rewarded me by presenting just enough non-web opportunity to keep my income pipeline fuller than it’s ever been while keeping the stress level way down.

I’m happier when I’m doing work that’s more creatively fulfilling.

I’m also realizing that if I keep all of my creative work closed up in a box out of fear or relentless tinkering, then it’s as good as “never done.” Nothing is more unflattering than trying to convince someone of the value of a perpetual “closed beta.”

As a side effect, I find that the people I’m wanting to meet deal in the currency of provable accomplishments and not vaporware ideas. Nobody cares about the network of people I know (since nowadays, it’s super easy to reach anybody via social media tools). Spinning multiple plates badly is not attractive. They aren’t even interested in what I can do.

The only thing that matters is, “What have you done lately that’s remarkable?”

Cal Newport defines Grand Projects as

any project that when explained to someone for the first time is likely to elicit a response of “wow!’”

There is a huge difference in multitasking because you are disorganized and consciously multitasking so that you accomplish interesting grand projects.

Interesting people are often involved in multiple grand projects, but they really only can get one completed at a time.

So the better question is “What project are you working on right now that fires you up the most?”

I’d like to live a life of prolific creativity. I’d like to introduce myself with infectious enthusiasm over some project I can literally put into somebody’s hands.

I’m working on a meta-grand project, then. I’m fired up about figuring out what creativity framework I need so that I and lots of other people can have a relentlessly creative output of accomplishment.

I won’t spend all of my time ruminating over the creative process rather than actually creating things. That’d just be procrastination. I am spending quality time doing research and building infrastructure that facilitates creative output. These ideas are to be field tested by me and eventually others.

I’ll probably blog about that research on occasion, but only when I have something provable to say or an artifact to share.

Most of the time, now, I want to talk about the projects that result from my creativity experiments.

I may, at some point in my life, call myself a technology artist or creativity expert. For now, I’m a guy making things.

This post is a response to the Holidailies writing prompt “Introduce Yourself.”

What we can learn about multitasking from machines

I’ve been thinking a lot recently about focus and dealing with many projects at once. I’ve heard many people say that it is difficult, if not impossible, to be 100% committed to more than one endeavor at any time. Furthermore, the more stuff you have on your plate, the more everything simultaneously suffers. In an opportunity dense world, not everything has equal value. Indeed, I can relate to having spent too much time on value-poor projects in pursuit of a paycheck. I can identify at least a couple of occasions this year where really amazing opportunities had to be passed over because I was in the middle of client work deadlines.

Jon Lebkowsky writes about the difficulty of multitasking

I was good at balancing many tasks, I could keep a lot of balls in the air without dropping them. As I matured, I realized that depth has more value than breadth, and in recent years I’ve been trying to learn to focus and do a few things well.

Jon is an interesting guy who is smart and involved in many worthwhile projects. I like to think that most of my friends fall into this category of diverse interests and passions. But how do we cope? When a thousand things come at you and all of them seem equally interesting or even lucrative at the onset, how do you decide which are most important? I’m still figuring out what my personal filters need to be.

In the meantime, there are projects to complete and things to accomplish.

How computers multitask

I distinctly remember a project in a computer architecture class where we designed multitasking systems and applications that ran on top of them.

Inside your PC is a device called the Central Processing Unit (CPU) which is, loosely, the “brain” of the computer. Its primary function is to do math as quickly as possible.

When somebody says they have a 3.0Ghz computer, they are referring to the CPU’s speed at doing math. 3.0Ghz translates into 3 billion arithmetic operations per second.

We’re only counting very simple binary operations (add, subtract, bitshift, etc). However, if you do enough small bits of math, and you do them very fast (ex, 3 billion per second), things like youtube videos and email emerge.

When you turn on your computer, you likely have dozens of programs that load automatically. The computer itself runs an operating system (ex. Windows or OS X) that, in turn, has dozens or hundreds of processes that need to run all the time, like the subsystems that deal with file management or the mouse cursor display. As soon as we load our email program or web browser, the computer adds a whole new set of threads of activity on top of the current workload.

So you are taking the limited resource of tasks per second and dividing it up among a large set of activities. That’s why when you have 50 applications open at once, you might notice the computer starting to drag (or why you have to reboot every once in a while to “clear the deck.”)

However, from our human perspective, most of the time, it appears the computer is not even breaking a sweat despite the myriad tasks it’s completing about every second. Never mind that you can easily identify the CPU on an opened computer because it usually has it’s own cooling fan or large spiky projections that help distribute the heat generated by so much math. The computer works really hard to be that fast.

Here’s the thing: our puny human brains are actually faster. MUCH faster. But we’ll get to that in a little bit.

The CPU can, roughly, do only one math operation at a time. Most interesting things a computer can do require billions of math operations to complete. If a computer only had to do one interesting thing at a time that required multiple steps or tasks, the fastest way to complete that single problem is to begin at the beginning and work through until it’s completed (i.e. not to get sidetracked doing anything off of the critical path).

So let’s look at an example.

Suppose a computer has a problem that requires 10 small math operations to complete and lets say that the computer can only process 10 math operations a second. This means the computer will accomplish this problem in 1 second:


Untitled.jpg

It follows that if a CPU can work only one small step at a time, then if it has 2 complicated projects to complete each with 10 small steps, it takes 20 steps, or 2 seconds to complete. The diagram below shows the computer only working on one complicated project at a time. It completes the first project and then starts the second project. This is called “sequential processing.”

Untitled-1.jpg

If computers actually worked that way, we would be so frustrated that we would bang our heads on our keyboards and probably spend more time outside.

Right now, your computer is doing, easily, a few million extremely complicated processes (ex. the video rendering that causes these words to show up at the right place on your screen). If you had to wait for the first million projects to complete before the computer started the next million, it would take minutes for your mouse to move a couple pixels in any direction.

So we need something like this:


Untitled-2.jpg

Notice how we haven’t saved any time at all. However, the perception is that lots of things are finishing at around the same time. That’s all computer multitasking is about — it’s just getting things finished at a time which seems acceptable to the end user.

For complex problems which require many steps, the computer maintains a set of holders in its memory called “registers.” At any given time, as the computer is working through a multi-step problem, it can take the state of everything it is working on in its CPU and put all the values into some of the registers. It can also load up a different collection of values from another group of registers and pick up where it left off. This is basically how the CPU can keep track of many complicated problems in various states of completion. This process is called “context switching” and happens every so often (i.e. millions of times per second.)

We can amend our previous example by adding context switching tasks. The worst case scenario has you switching projects after every task. Let’s simplify and say that a context switch takes the same amount of time as any other small task.


Untitled-3.jpg

Whoa! We almost doubled the amount of time required to complete just two projects by adding context switching. In fact: we get exponential increases of time for every new project we add a multitasked project just because of the overhead of having to think about a different set of information.

Computers deal with this in several ways:

  • They optimize the time it takes to context switch by storing as minimal amount of information as necessary to continue working on a problem.
  • The engineers who build CPUs design chips so they are physically able to context switch faster than anything else.
  • They add more brains. The only way a computer can physically do more than one math problem at a time is by adding additional CPUs. So when we hear “Quad-core CPU” you have 4 math machines working at the exact same time. This adds a whole new layer of complication because how you split up a problem among multiple processors will affect the speed of your computer. The Saguaro 2 supercomputer has hundreds and hundreds of core CPUs and requires elaborate water cooling systems to keep it from melting down, but can handle 50 trillion math operations per second.
  • They can reduce the number of times they context switch by chunking their problems differently. Rather than switch between every task, for example, they might switch between every 5th task.
  • They can pre-process complicated tasks so that they are prioritized and broken up into parts that will complete faster. Major branches of computer science deal with the serious math behind this approach.

Multitasking is a tough problem for a machine. There’s a huge amount of computer science around how you schedule and prioritize tasks and how they are broken down so that the most complicated projects don’t consume too many resources at the wrong time. Many times a “faster” computer is not faster at all. The software is just tweaked, via mathematics, to deliver finished projects sooner. Projects which deliver the most perceptual impact (ex. graphics processing) are usually prioritized.

Human Multitasking

Our brains are capable of about 100 000 000 000 000 000 operations per second. That is at least a hundred thousand times faster than the fastest super computer requiring all that water cooling and government money.

So why are we so bad at multitasking?

We, thankfully, do not perceive each of the trillions of operations required to observe, wonder, tinker and build things in our world around us. On a conscious level, we do not manage the the tiny tasks of our brain computers.

We operate on a higher level. Our self-awareness is an application running on top of a really fast wet operating system. However, as is of any abstraction, as we simplify and aggregate functions, we start lose flexibility and power. We don’t have complete control over ourselves. We are prone to mental illness (bugs in our synapse programming), there are daemon processes that run on autopilot, backing up our memories and making sure the graphics displays of our visual processing render with a reasonable precision. Reasonable, but not perfect.

What’s a puny human mind to do when we can’t add CPUS (yet) and are limited by our core OS? We have to reduce our context switching. It’s the only way to get multiple interesting things done.

  1. Eliminate tasks to reduce context switching.
  2. Chunk tasks so you get as much done on one project before you must switch to another.
  3. Focus on projects which provide the most perceptual impact. Those projects which provide you the most value, recognition, and velocity towards your passions should deserve more cpu time.
  4. The final task of a project is the most important task. All effort should be placed on getting the final task crossed off the list. “The quicker you finish, the quicker you finish.”

I think those four things are easier said than done.

As a parting shot, after reading many self-help productivity books and blogs, trying to implement system after system of productivity, and listening to people who might know better, I’ve come to the conclusion that getting things done can actually be boiled down to one word:

Decide.


jellyfish installation at charles river museum of industry

jellyfish_crmi_2008_10_25.jpg

I created a piece for the Willoughby & Baltic show at the Charles River Museum of Industry in Waltham, MA.

jellyfish is an interactive projection of 40 animated sea creatures. The jellyfish float and propel themselves slowly based on a collection of mathematical simulations. The viewer approaches the wall and the animals scatter away from her shadow.

I am a member of Willoughby & Baltic, a hackerspace recently started in Somerville, MA, and the halloween show was our first group exhibition. There is a short write up in the Waltham Daily newspaper.

The show goes from October 30 through November 2 from 5:30-9:30PM at the Charles River Museum of Industry. 154 Moody Street, Waltham, MA

testing pingback

I’m testing pingback for older post

Archives

about

David Nunez is a technologist and designer working on projects that apply engineering in unusual contexts. He curates dorkbot-boston, a monthly gathering of people doing strange things with electricity. His recent project, Bytes and Bots at the Children's Museum of Houston, engages students to explore programming ideas through an animatronic lobster and bird. Previously, he designed the multitouch table used to play the Electric Gongs, a set of instruments for the Austin Children’s Museum. His robotic marionette, El Quemira, won multiple blue ribbons at the 2007 Austin Maker Faire.

Twitter @davidnunez

david at davidnunez.com
512.366.3330