February 29, 2008

You have received a painting from Sacha

February 29, 2008 - Categories: sketches

080229-06.05.17.png

Why DemoCamp is one of my favorite networking events

February 29, 2008 - Categories: connecting

I love DemoCamp and the whole BarCampToronto scene. I’ve made all sorts of incredible connections there. Let me tell you a story from just this Monday’s DemoCamp17, and you’ll see why.

It was towards the end of the DemoCamp pub night, past the bar’s closing time. I headed over to say hi to Kaleem Khan, whom I hadn’t talked with that evening. He was talking to a woman I didn’t recognize, so I introduced myself and asked whether she had been to DemoCamp before. She introduced herself as Alex and said that this was her first DemoCamp and that her friend had told her about it. Kaleem joked that clearly nobody had told Alex that it would be a conference full of geeks. Alex laughed and said that she works with scientists, so geeks were extroverts in comparison. When she mentioned scientists, I perked up and told her that there was someone she really needed to met. I headed across the room and found Jamie McQuay chatting with a few other people. At the first break in the conversation, I kidnapped Jamie and steered him across the room to where Alex was sitting. I mentioned that Jamie was helping organize a SciBarCamp (an unconference for scientist-types), and I told Jamie about how the topic of scientists had come up. Jamie and Alex started chatting, and the next time I checked in on them, I heard Alex invite Jamie to get in touch with her to see if her organization might be interested in sponsoring SciBarCamp. How cool was that?

That’s a terrific example of the kind of connections I love making. By keeping my ears open, I can come across all these opportunities to connect the dots. If I know what people are interested in or are looking for, then I can connect them with the peolpe, ideas, or tools they need in order to make things happen.

DemoCamp has been a consistently fantastic place for me to make those connections. Why? I think it’s because of these reasons:

People who go to DemoCamp are interesting. They’re independent consultants, startup founders, and even the occasional big-company anomaly like me. They’ve all got something interesting about them, and they make it easy to find out what that interesting thing is.

The demos and Ignite presentations are a terrific way to get the conversation started. High-energy, eye-opening demos put everyone in an optimistic and open mood, and do away with all the small talk about the weather. My favorite opener is, “So, which of the demos and Ignite presentations did you like the most?” From there, I can find out more about why people found them interesting and what else they’re into. Plus, I can carry their compliments back to the speakers for extra karma points!

I know or know of enough people to get network effects. I’ve reached the tipping point. I get economies of scale. When I meet new people, I can usually think of people they should get to know. If I don’t know someone, I know the other connectors can help me find that person – and then I’ll know them too. I’m on hugging terms with many DemoCamp regulars, and I feel warm and fuzzy about people there because I’ve gotten to know and admire them through their blog entries, presentations, comments, and e-mail.

How can I connect even better at DemoCamp?

How about you? Been to DemoCamp? What do you think?

Notes from "Networking 2.0: Blogging Your Way Out of a Job and Into a Career"; the experience of speaking

February 29, 2008 - Categories: connecting, speaking

[mostly drafted right after I got home]

I just got back from a presentation I gave to the Concordia University Alumni Association on blogging your way out of a job into a career. My voice is a little hoarse and my feet are slowly getting reacquainted with the ground. No, seriously–I must remember not to wear those heels to presentations. But I really enjoyed sharing those stories and tips, and I’m glad that people found the presentation not only informative but also entertaining.

What did I do well?

The combination of blogging, social networking, writing, and self-development in a single talk made this one really pop with passion. I love sharing my experiences and tips on social media because I can’t wait to see what other people will do with it, and if there’s anything I can do to help them get over that rut, that’s awesome! This passion and all the practice I’ve had talking about these topics made it really easy to get up there and focus on making a connection.

I used the rule of three all over the place: passion, skills, and network; "I don’t know what to do, I don’t have the time, I don’t know who’ll read it;" remember, reflect, reach out; start a blog, share regularly, reach out. This fractal structure helped me prepare the presentation (not too long, not too short), remember what I was going to say, and show some semblance of order in the presentation.

I put in some effort and a few dollars into visually fixing up this presentation with stock illustrations from stockxpert.com. Most of my presentations have been plain text (white on a black background, usually), but I felt like giving graphics a try. The coordinated graphics I use helped make my presentation feel more fun for me. Practice will help me get better and better at communicating visually as well as verbally…

I rehearsed the entire talk while reading my speaker notes, recording it as an MP3. I looped over this recording during my commute today. This helped keep the topics in my mind. I also printed out a few pages of slide handouts (9 slides per page) to visually anchor my talk as I rehearsed it mentally. During the actual presentation, this practice helped me remember the key points I wanted to make for each slide. Giving myself permission to say things differently helped me not only avoid anxiety (which would have made it even harder to remember what I wanted to say!) but also work within that flexible framework to match the interest of the audience.

I built interactivity into the talk, with two networking breaks and a number of shows of hands. One of the things I love about speaking to a small audience is the challenge and experience of listening while I’m talking. I’m not always good at this. My own enthusiasm sometimes makes it hard for me to slow down! But the physical experience of listening to people’s eyes, people’s postures, people’s smiles, feeling that itch in my hands and in my bones as I find myself attuned to their energy… Wow.

What can I do better next time? (Yes, see, I really do this!)

The key thing that will make this even better would be to make sure someone else is in charge of recording. ;) You know, someone who’ll remember to bring fresh batteries instead of dead ones, someone who’ll remember to actually start the voice recorder, someone who’ll get all of that sorted out. When I’m out there, I’m just too caught up in the moment, in the opportunity to connect with people,

I could use some more planning. I’m glad that people felt comfortable asking me questions throughout the presentation. I completely forgot about defining what a blog is in the first place, silly me, and other things like that which I inevitably discover right after the projector’s turned off. Such is life. Next time, I’ll try listening to my recording with my newbie hat firmly on.

And I should probably bring along a fishbowl and collect people’s business cards or e-mail addresses so that I can make it easier to keep in touch after the talk! =)

Wicked Cool Emacs: BBDB: Keeping track of contact dates

February 29, 2008 - Categories: emacs, wickedcoolemacs

I hadn’t realized just how much I missed my Big Brother Database until today. Three networking events packed into one week meant that I hadn’t set aside enough time for follow up, and I felt my memories of the conversations getting a little hazy. Fortunately I’d taken some notes on my Palm, but I knew I had to get it into some kind of contact management system quickly, and Gmail Contacts just wasn’t compelling enough for me. So it’s back to Emacs, plain text files, and a surprisingly sophisticated contact manager.

I also promised to do some work on the book today, so everything dovetailed nicely.

The following bit of code helps me filter displayed contacts to show only the people I haven’t contacted since a certain date. This is handy for remembering to keep in touch with old friends, for example. Or at least it would be handy if I used it more often and if I actually sent the letters that pile up in my e-mail drafts and my snail mail outbox… but at least it’s a step in the right direction.

If you want to know who you have or haven’t talked to in a while, you need to do two things. First, you need to keep track of when you talked to people. Second, you need to generate reports.

To be able to quickly add contact notes to BBDB records, add the following to your ~/.emacs:

ch6-bbdb-ping.el:

(define-key bbdb-mode-map "z" 'wicked/bbdb-ping-bbdb-record)
(defun wicked/bbdb-ping-bbdb-record (bbdb-record text &optional date regrind)
  "Adds a note for today to the current BBDB record.
Call with a prefix to specify date.
BBDB-RECORD is the record to modify (default: current).
TEXT is the note to add for DATE.
If REGRIND is non-nil, redisplay the BBDB record."
  (interactive (list (bbdb-current-record t)
                     (read-string "Notes: ")
                     ;; Reading date - more powerful with Planner, but we'll make do if necessary
                     (if (featurep 'planner)
                         (if current-prefix-arg (planner-read-date) (planner-today))
                       (if current-prefix-arg
                           (read-string "Date (YYYY.MM.DD): ")
                         (format-time-string "%Y.%m.%d")))
                     t))
  (bbdb-record-putprop bbdb-record
                       'contact
                       (concat date ": " text "\n"
                               (or (bbdb-record-getprop bbdb-record 'contact))))
  (if regrind
      (save-excursion
        (set-buffer bbdb-buffer-name)
        (bbdb-redisplay-one-record bbdb-record)))
  nil)

You can then use z in BBDB buffers to add a quick note to the “contact” field of the current record. The date is automatically noted. You can create a note for a specific date by calling {{C-u wicked/bbdb-ping-bbdb-record}} with a prefix argument. For convenience, the suggested configuration binds this to “z”, because it was one of the few unbound keys I could find. Use this after you meet, call, or e-mail people, and write down a short note about the conversation you had. You might find these notes useful later on.

If you met a number of people at an event in the past and you have Planner installed and loaded, you can use {{planner-timewarp}} to set the effective date to another date. To return to today, use {{M-x planner-timewarp nil}}.

To automatically add a datestamped copy of sent e-mail subjects to people’s BBDB records, add the following to your ~/.gnus:

ch6-bbdb-message-add-subject.el:

(defun wicked/message-add-subject-to-bbdb-record ()
  "Add datestamped subject note for each person this message has been sent to."
  (let* ((subject (concat (format-time-string "%Y.%m.%d")
                          ": E-mail: " (message-fetch-field "Subject") "\n"))
         (bbdb-get-addresses-headers
          (list (assoc 'recipients bbdb-get-addresses-headers)))
         records)
    (setq records
          (bbdb-update-records
           (bbdb-get-addresses nil gnus-ignored-from-addresses 'gnus-fetch-field)
           nil nil))
    (mapc (lambda (rec)
            (bbdb-record-putprop rec
                                 'contact
                                 (concat subject
                                         (or
                                          (bbdb-record-getprop rec 'contact)
                                          ""))))
          records)))
(add-hook 'message-send-hook 'wicked/message-add-subject-to-bbdb-record)

Now that you have the data, how can you use it to filter? Add the following to your ~/.emacs:

ch6-bbdb-show-only-no-contact-since.el:

(defun wicked/bbdb-show-only-no-contact-since (date &optional reverse records)
  "Show only people who haven't been pinged since DATE or at all.
If REVERSE is non-nil, show only the people you've contacted on or since DATE.
Call with a prefix argument to show only people you've contacted on or since DATE."
  (interactive (list
                (if (featurep 'planner)
                    (planner-read-date)
                  (read-string "Date (YYYY.MM.DD): "))
                current-prefix-arg (or bbdb-records (bbdb-records))))
  (let (new-records
        last-match
        timestamp
        omit
        notes)
    (while records
      ;; Find the latest date mentioned in the entry
      (let ((timestamp (wicked/bbdb-last-date
                        (if (vectorp (car records))
                            (car records)
                          (caar records)))))
        (if (if reverse
                ;; Keep if contact is >= date
                (null (string< timestamp date))
              ;; Keep if date > contact
              (string> date timestamp))
            (add-to-list 'new-records (if (vectorp (car records))
                            (car records)
                          (caar records)) t)))
      (setq records (cdr records)))
    (bbdb-display-records new-records)))

(defun wicked/bbdb-last-date (rec)
  "Return the most recent date for REC or nil if none.
Dates should be in the form YYYY.MM.DD.  The first date in the
notes field and the first date in the contact field are used, so
dates should be in reverse chronological order."
  (let* ((wicked/date-regexp
          "\\<\\([1-9][0-9][0-9][0-9]\\)\\.\\([0-9][0-9]?\\)\\.\\([0-9][0-9]?\\)\\>")
         ;; Get the first date mentioned in the notes field
         (notes-date
          (or (and (string-match wicked/date-regexp (or (bbdb-record-notes rec) ""))
                   (match-string 0 (or (bbdb-record-notes rec) "")))
              "0000.00.00"))
         ;; Get the first date mentioned in the contact field
         (contact-date
          (or (and (string-match wicked/date-regexp (or (bbdb-record-getprop rec 'contact) ""))
                   (match-string 0 (or (bbdb-record-getprop rec 'contact) "")))
              "0000.00.00")))
    ;; Compare the two dates
    (or (if (string< notes-date contact-date) contact-date notes-date)
        "0000.00.00")))

To generate a report, use {{M-x wicked/bbdb-show-only-no-contact-since}} and specify the date. These functions are much easier to use with Planner’s date-handling functions. Planner can read dates like “-1″ (yesterday), “-7fri” (seven Fridays ago), “2″ (the second of this month), “1.2″ (January 2 in this year), and “2007.01.02″ (January 2, 2007).

You can also flip the filter by using the universal prefix argument ({{C-u M-x wicked/bbdb-show-only-no-contact-since}}) to show only the people you’ve contacted since a certain date. This is good for knowing the size of your active network. Because the filter works on displayed records, you can combine it to find all the people you talked to last year but not this year. You can also combine it with other filters to find all the people you’ve marked as friends, but who you haven’t talked to in three months. Then you can send a personalized e-mail or make a phone list, and get back in touch. And that’s how you keep track of your contact dates!