Category Archives: graph

ROI for public speaking and Web 2.0; graph and case study

Amy Shuen inspired me to prepare a spreadsheet for estimating the value created by my talks. (You can open the spreadsheet in or Lotus Symphony, both free office suites.) She’ll be including some of the numbers in tomorrow’s IBM Web 2.0 for Business community call on ROI of Web 2.0 at Work. I thought I’d make the numbers a little easier to grasp, so I spent an hour and a half making this:

Full-size images at public-speaking-1.png and public-speaking-2.png.

LifeCampTO social graph

After LifeCampTO, I asked people to give me the list of people they wanted to talk to (or, well, those people’s primary keys ;) ). I’m still figuring out how to do a great little mail merge that reminds people of the keywords, but along the way, I thought I might I’d learn more about network visualization.

Here’s the resulting graph: (click on it for a larger version)

LifeCampTO social graph

So, what does this graph say?

You can see that most people have quite a lot of follow-up conversations ahead. It wasn’t the kind of event where most people walked away with only two or three conversations, although they might have smaller follow-up conversations with different groups of people. It might be interesting to do some cluster analysis around topics, and maybe someday I’ll figure out how to encode the data in order to make that analysis easier. ;) Based on this, our on-the-fly decision to have three big conversations turned out to have made sense, although it would also be interesting to try having small conversations about both popular and niche topics, and then having people come together at the end (or on a wiki).

Getting to this graph (and to the individualized graphs I’ve just figured out how to produce – it highlights each person’s connections) involved a lot of bubblegum and string.

  1. I typed in the data people had written down, using to form the upper triangle of an adjacency matrix. Two people’s sheets were missing, and one person didn’t have any connections incoming or outgoing. =( Thank you, programming competitions, for all those lovely data structures.
  2. I copied the adjacency matrix and pasted it onto itself using OOo’s Paste Special – Transpose, Skip Empty Cells. This gave me a full adjacency matrix.
  3. I used a really long and hairy OOo formula to concatenate the cells into Emacs Lisp code as an associative list, with extra information and an edge list.
  4. I copied that into Emacs and processed the associative list’s edges. I needed to do that anyway in order to be able to e-mail people personalized e-mail with all of their introductions, instead of sending one e-mail per edge. Along the way, I got the idea of visualizing the network diagram, so I spun off some code to output a full edge list in DOT format for visualization with circo.
  5. I used a command like
    circo -Gsplines=true < -Tpng > lifecampto.png

    to generate the graph shown.

  6. Then I thought it would be cool to personalize the graphs, too, so I wrote some more Emacs Lisp to generate personalized DOT files that highlighted the recipient in green and the recipient’s requested links/nodes in green, too. I used a Bash for loop to turn all those personalized DOT files into PNG files.

Example of a personalized image:

Tomorrow, I’ll work on the mail merge. =)

A little computer science is a dangerous, dangerous thing.

Digraphs with Graphviz

And for the geeks, here’s the Graphviz dot file that created the graph in How to do a lot. Posting here because I know I’m going to forget, and also because it’s so cool…

digraph {
  label = "Do things that complement each other";
  subgraph {
  programming -> writing  [label="new experience"]
  experimenting -> writing [label="new experience"]
  programming -> experimenting [label="automation"]
  experimenting -> programming [label="improvements"]
  writing -> presenting [label="content,\nopportunity"]
  presenting -> writing [label="content"]
  writing -> programming [label="reflection,\nideas"]
  writing -> experimenting [label="reflection,\nideas"]
  presenting -> experimenting [label="ideas"]
  experimenting -> presenting [label="improvements"]

I created it with the command:

dot -Nfontsize=10 -Efontsize=11 FILENAME -o OUTPUTFILENAME -Tpng

The result:

Directed graph

Living in the sweet spot

The sweet spot is the intersection of what you’re good at, what you love doing, and what the world needs. This idea shows up in lots of career books because it’s so powerful. Find your sweet spot, and you can make great things happen.

I’ve written about changing the world before, and it becomes more real every day. I do more and more of the things that make me happy in life and at work. This is what my current diagram looks like:


There are more skills I can include in these, though, but these are the most important ones.

I love what I do, I get better and better at it, and I create value by doing what I do. How did I get to be so lucky? =)

If you look at the posts I’ve shared on my blog through the years, you’ll notice that I frequently think about what I love doing and how I can do those things even better. Interests blossom into passions through practice and experience. The more I learn about something, the deeper I appreciate it. I share what I’ve learned at work, too. That almost always results in people finding some way to take advantage of my skills and passions, which is how I end up getting paid for all these things I love to do. If the company ever decided to phase out my group, I can see myself creating a business around these core skills.

How did I get to this point? One idea led to another. It started with coding. I taught myself how to program in grade school. I joined competitions throughout high school and college, and I learned a lot in the process. My interest in programming led to open source software, which got me interested in Emacs and personal information management. That led me to blog, which resulted in a new interest in writing. I’d never enjoyed writing essays for English class, but I loved writing about what I was learning. This turned into public speaking when I found out that the things I was learning also interested other people. The more I learned, the more I could help people brainstorm new ideas. The more I wrote, the more I found myself connecting with others, which also helped me brainstorm. The more I wrote and connected, the more people asked me to coach them on how to do the same. I started playing around with drawing when a friend asked me to explain something, and that kicked off yet another interest. I picked up other hobbies like photography, sewing, and cooking along the way. Then I was asked to facilitate sessions on emerging technologies, and here I am. And paperwork, well, everyone has to do that. =)

Where do I go from here? With a strong foundation like this, I can see opportunities to grow almost everywhere. I’m looking forward to improving my facilitation skills. I’m not bad at facilitation. I’m not consistently good yet, and someday, I might be. I love working on my core skills and adding new ones. I can’t wait to figure out what I’ll learn how to do next, and how I can share that with everyone!

Find your wall

The Sewing Hype Cycle
The Sewing Hype Cycle
(Apologies to Gartner ;) )

I like sewing because it frustrates me.

I start optimistically enough. I pick out a pattern. I choose fabric. I tweak the pattern. I cut out pieces. I start sewing them together.

Seams don’t quite line up. Threads break. Pins prick. I hit my lowest point: the facings are flapping about, the clothes don’t quite fit, and I’ve just sewed a seam that I have to rip out. I wonder why I put myself through this agony when I could buy better-made clothes for less than what I would spend on fabric.

I stop and put my work away. The next day, I take the unfinished pieces out and keep going. Somehow, it turns into something that looks okay.

I’ve never had a “flow” moment during sewing. It’s a struggle all the way to the end. That frustration is important. It’s why I do it.

It’s a good kind of frustration. It’s not a “life is unfair” kind of frustration. It’s not a “people suck” kind of frustration. It’s the frustration of knowing that there’s something I don’t know, or something I’ve skipped, or something I haven’t figured out.

It’s the frustration that accompanies learning things that don’t come easy to me, like a wall with hardly any handholds.

I learn, and I learn how to deal with that frustration. I learn when frustration and fatigue push me into making mistakes. I learn the value of sleeping on it. I learn how to keep thinking about how to do things better even when I’d rather do something easier or more fun. I learn how to experiment. I learn that I can find a way over, under, around, or through things that frustrate me.

I learn how great it feels to climb that wall.

I learn that there’s always going to be another wall, and another, and another – and that’s okay, because the walls help me learn.

I learn not to fear walls by trying them, just as I learned not to fear falling by intentionally doing so.

It’s tempting to spend your time on easy escapes. Find your walls. Deal with that frustration, and keep going.

Waking up: looking at my data

Whenever I manage to wake up early a few days in a row, I feel great about it. But I don’t do it consistently. I spend a couple of days waking up before 6 AM and enjoying a good spurt of writing, and then I find myself slipping back into later bedtimes and later wake-up times (~ 7 AM) or hitting the snooze. Clearly there are some things I still need to tweak about my system.

Time-tracking means I’ve got a way to see what my current sleep patterns are like:


  • Average sleep length when waking up before 6 AM: 7:09
  • Average sleep length when waking up after 6 AM: 8:47
  • Average sleep time for wake-up times before 6 AM: 9:45 PM, which is a bit of a stretch but is doable.

Here are the questions I’m thinking about:

  • Is it a matter of getting to bed earlier?
  • Would it help to disable snooze entirely?
  • Is it a matter of setting my alarm clock even earlier? (Ex: Set it for 4 AM so that I eventually get out of bed at 5 AM.)
  • Would it help to set our programmable thermostat warmer in the morning, or promise myself a hot cup of tea when I get up?
  • Would it help to set my snooze interval to 5 minutes instead of 10?
  • How about if I find a way to turn my Android into a light clock? (Using Tasker to bring up a bright app, maybe…)
  • What if I give up on waking up early and instead shift to more of a night owl schedule? Advantage: can sync up with W-. I’ll need to figure out how to give my personal pursuits the creative energy they need, though.

Hmm. More things to hack…