Entries Tagged 'design' ↓

HOWTO: Learn Stuff Efficiently

I enjoy learning new skills and technologies on my own, and it occurs to me that there isn’t a lot written on the subject.

I’ve been developing this approach for about 20 years and here’s a brief summary of what I find works for me.  It may not work for you, and that’s OK.  But give this a try, refine your own technique, and share what works!

  1. Choose a topic/technology outside your comfort zone.  This is self-evident; you can’t expect to learn anything new if you’re working in a sandbox you’ve already mastered.
  2. Make time for yourself.  Lots of it.  You can’t expect to dig into a topic deeply if you’re distracted by email, phones, tax deadlines, bills, dinner, family, friends, and bathing.  Seriously, these things have to take a backseat, you’ll come across as a recluse, and people will hate you.  Accept it.
  3. Set a goal.  It might be as simple as a “Hello World” or something more complex.  However, it should be something you think you can attain and which will make you happy to see completed.  So, choose something reasonable and within reach.
  4. Code until you get stuck.  Keep pushing small, obtainable goals until you get to a point where you are baffled or sleepy.  This is the time to take a nap.
  5. Before you take a nap, read something.  Your brain runs threads in the background while you’re sleeping.  Don’t waste that CPU power thinking about Angelina Jolie.  Instead, search for guidance on the thing that’s got you stuck (either with a colleague or online), or read (or re-read) a chapter in a coding book that’s relevant.
  6. Sleep until you wake up.  This might be 3 hours, 6 hours or 8 hours; your brain will sleep for as long as it needs to process the information you’re trying to absorb.  NOTE: At this point the thought of having a regular sleep schedule should make you giggle.  You should sleep and code when you feel like it, which likely will not be on any particular schedule.
  7. As you fall asleep, meditate on the questions you’re trying to answer.  The intense concentration available to you as you are nearing sleep will enable you to define and isolate the problems at hand, and this will provide a kind of “normalized grist” for your brain as it prepares to do your heavy lifting for you.
  8. When you wake up, you will have some answers.  You may not have all the answers yet, but you should have some fresh insights that will enable you to blast past your last impasse (wow).  This should give you some encouragement and allow you to repeat the cycle (3-8) again.

I’m presently employing this technique to learn Objective C and Cocoa Touch for the iPhone, and it’s working great.  This is the sort of thing that society will not allow you to do continuously (unless you’ve evolved a significant number of support mechanisms) but you should be able to get away with it at least some of the time.  It delivers great results for me.

And for those of you to whom I owe emails, bear with me; I will get back to you shortly.

My Talk at eComm 2008: Imagining Roomba Asterisk and More

I spoke at eComm 2008, held this year in March 2008 at the Computer History Museum in Sunnyvale California.  I’ve been involved in the VoIP and open source telephony world for the last several years as a contributor to Asterisk, hacker on OpenSER and several other projects small and large involving tearing down the 100 year old telephony infrastructure and replacing it with something better different.

If you’re a part of the Asterisk community, you know that I have a certain amount of notoriety as The Roomba Guy.  In a visionary fit of silliness during the Christmas holiday week in 2005, I decided it would be interesting to play with the Roomba API and see if I could hook it up to a Linksys WRT54G wireless router.

  • The Roomba uses an RS-232 CMOS 3.3V interface
  • The WRT54G has an RS-232 CMOS 3.3V interface
  • The Roomba supplies a 14V DC unregulated power output
  • The WRT54G can run off about 12V DC and has voltage regulators

You can see that based on this, the rest is inevitable.  The Roomba has a 7-pin mini-din connector that provides the power and the RS-232 connection, so I made up a cable that goes from that connector to the 10-pin serial header interface on the WRT54G.

I got the serial port working pretty quickly and could send basic hex commands like start and stop to the Roomba.  My friend made up some mounting “rails” to hold the WRT onto the top of the Roomba, and now the thing was autonomous and could be controlled via an SSH session established via WiFi.  The WRT runs the White Russian OpenWRT Linux distribution.

The prospect of controlling the Roomba using SSH or a web interface wasn’t too compelling.  I happened to be aware that some folks had success getting Asterisk (the open source telephony PBX) working on the WRT.  So, I thought, what if we could put Asterisk onto the WRT and control the Roomba with that?

So, I did.  Asterisk was easy to install on the WRT and in pretty short order I had cooked up an Asterisk dialplan that tied the telephone keypad to actions on the Roomba.  2 is forward, 5 is back, 6 turns right, 4 turns left, 5 stops, etc.

I was demonstrating this at Astricon 2006, a few months later, and my friend John Todd suggested that we contact Allison Smith, a voice artist of some renown and the “voice of Asterisk” — she supplied all the default english prompts for Asterisk.

She was incredibly accomodating and obliged graciously.  She recorded about 20 prompts, including “forward”, “backwards”, “right”, “left”.  We also allowed for control of the vacuum and brushes in the robot.  So, you can press 1 to “start sucking” and press 3 to “stop sucking”.  Did I mention that Allison is an incredibly good sport?

So, the final form took shape.  A talking, SIP-enabled, WIFI, autonomous, cleaning, sucking, four-port ethernet switch able to run a small business phone system and clean it at the same time.  It’s really quite baroque in its overall frilly uselessness, yet still compelling in a circus side-show sort of way.

We’ve experimented with adding a camera to it, but have found that it tends to create too much power draw.  I’ve looked at using other routers that can run embedded Linux, but there always seems to be some reason why it doesn’t work.  I really don’t have the time to spend on this, and that’s probably a good thing.

But, the overall lesson is an important one:  Imagination is more important than knowledge.  Einstein said it , but it should be repeated.  As techies, we spend too much time thinking about how to solve a problem, rather than playfully considering new ways of framing problems.  Imagination is truly the plutonium of technology, and we tend to lock it up and not use it that often.  Knowledge is certainly important, but knowledge without imagination is everything that’s wrong with tech today.  Certainly the telecomm industry needs more imagination.

So, Lee Dryburgh, who did an incredible job of organizing eComm 2008 (it’s the successor to the O’Reilly produced eTel conference) posted my presentation from eComm online last week, and I wanted to share it with you.

If you’re interested in more of the Roomba Asterisk specifics, ping me and I’ll blog in more depth about it.

 

Being an iPhone Developer Has Its Privileges

It means you get to pay $99 (plus sales tax). Hopefully in a few minutes I’ll have a certificate to test apps on my iPhone!

See you at iPhoneDevCamp in New York this weekend?

We’ll be sure to have iPhone topics at SocialDevCamp East on May 10!

Design and the Elastic Mind: Opening Night

On Tuesday, I attended the press preview and opening night events for Design and the Elastic Mind at the MoMA in NYC. It opens to the public Sunday, February 24th and includes works from designers, scientists, digital artists and thinkers from across a wide range of disciplines; my projects Twittervision and Flickrvision are featured.

I strongly recommend that you check out this exhibition, especially if you’re interested in the intersection between science, design, and art. There are some stunningly beautiful and provocative pieces. While the core ideas behind many of the pieces are technical — computation, informatics, bioscience — good design is required to make the information presentable and understandable to a broader audience. Paola Antonelli, curator for Architecture and Design at the MoMA, has done a remarkable job of assembling these pieces.

Here are some photos from the party Tuesday night.

Large scale, open-source Graffiti Projection System from Graffiti Research Lab. I need to build one of these. The graffiti is “painted” where the green laser hits. Note that the paint drips “up” in this photo. You can do that with digital paint!

This still seems improbable.


Sofia Lagerkvist (right) w/partner from Front Design. Creators of the remarkable “Sketch Furniture”, which can be drawn freehand in 3-space, then rendered in plastic using a laser-based process. Insane. Create your own furniture that looks like it’s straight out of a cartoon!


This is an example of an object created with the Sketch Furniture process.

The Painstation video game; where the punishment for losing is actual pain, inflicted by a table-mounted wristband!

Adam Putter and Janis Mussat. Their project Beerfinder.ca helps beer drinkers in Toronto coordinate beer runs, navigating complex store-closing hours!


No contemporary design exhibit is complete without the OLPC!


Me and Paola Antonelli, MoMA Curator of Design & Architecture.
She curated Design and the Elastic Mind.


My favorite installation in the show, Shadow Monsters by Philip Worthington. Transforms people into amazing sights and sounds. You need to see this.


Me and Ian Spiro of fastfoodmaps.com, a Google maps project that shows the fast-food restaurants in the United States. He wishes he had more time to devote to this. He thinks Arby’s is retreating, but he wants to prove it!


“I Want You to Want Me” is a project by Jonathan Harris and Sep Kamvar, of wefeelfine.org fame. This project scrapes data from online dating sites and attempts to make sense of it. It uses a giant touch screen and is visually quite impressive.


A giant, pulsating 15′ tall “tree” made from what appear to be clear-coated fiberoptic strands. Really, really impressive piece of work. It is the “Sonumbra” by Rachel Wingfield and Mathias Gmachl.


Me and Noelle Steber of the Google Moon project. Noelle was responsible for assembling the Apollo data and is a student at MIT.


My wife Jennifer, showing off the digitally projected “Lightweeds” by Simon Heijdens.


My other project, Flickrvision


All in all, a successful evening. Design and the Elastic Mind will run through May 12, 2008! I hope you get a chance to see this exhibit in person!