Category Archives: democamp

Sketchnotes from Democamp Toronto 29, June 2011

UPDATE: 2011-06-10: Made demo notes more visual. =)image Highlights from Social Leverage talk by Howard Lindzon. Keep an eye on the sentiment for your industry, figure out where there’s momentum, build domain expertise, and get in the game. image 500px, TitanFile, High Schore House,, We are TO Tech, Alphaslides. (Click for bigger version.) I liked High Score House’s demo the best. They’d obviously tested a lot and had fun along the way. =) Sketched with Autodesk Sketchbook Pro on my Lenovo X61T. Sketchbook is my new favourite note-taking program. Even though it doesn’t have Microsoft Onenote’s handwriting recognition and search capabilities, it encourages me to draw more compactly and to use more colours, and it’s more reliable. See other sketchnotes if you want to explore! (Update: @truejebus says TitanFile is hosted in Canada.) What did you think about Democamp Toronto? Have you blogged about it? Please share your thoughts and links in comments! Also check out Tom Purves’ writeup.

Behind the scenes: Livin’ la Vida Emacs

In October 2006, I gave a short presentation on Livin’ la Vida Emacs (or the Emacs editor as a way of life). It was well-received—in fact, so well-received that folks in the audience anticipated my punchlines and I ended up shifting parts of my talk around. ;)

People said:

Last, and certainly not least was Sacha Chua. If we could harness it I'm pretty sure we could power a few small cities of the energy that's contained in this one, tiny person - especially when you get her talking about Emacs. Sacha's demo, entitled, "Livin' la vida Emacs" was hands down the most entertaining of the evening. Sacha has basically taken this simple, extendable text editor and pushed it about as far as it can go - at DemoCamp10 she pulled back the curtain and showed us all her little systems and apps she's created in it. I like my GUI/Windows so the whole text-based thing isn't for me but it certainly was interesting to see just how strung out she's got that machine.

Ryan Coleman

Sacha Chua showed off what can be done in the scriptable environment, in this case emacs, as she went from Text editor, to a.i. doctor, to game engine to task / email organizer and beyond. Sacha was six feet tall on that stage, even though she did not actual levitate at anytime (although she came close, as always). A Tour de force of the Emacs, a text editing tool built in a interpreted lisp language environment, bascially a personalized productivity platform which allows for massive customization. Sacha had the crowd entertained and enthralled. (Sacha blogged her own impressions and mentions that Emacs was speaking to her!)

Ian Irving

Within Toronto’s Web community, Sacha Chua has become one of the leading “personalities”. Armed with infectious enthusiasm, charm and smarts, she would be an excellent person to hire once she graduates from UoT. The key question is how best to use her talents. It would probably be as a customer service rep, who can come into a bad situation and get everyone happy by the time she leaves. If I was an HR person from Microsoft, IBM, etc. I’d be knocking on Sacha’s door ASAP.

Mark Evans, consultant

Why? Probably because in addition to my natural sugar high, I was also presenting something that was awesomely, arcanely geeky. =)

I hadn’t figured out how to make a screencast on Linux, so the actual display on my screen is lost to time. I do, however, have the source code that I used to step through my speech--including speaking cues, as I didn’t want to mess up the presentation in front of Toronto’s technorati! So here’s the source code, for your amusement. I set up two of my function keys to go forward and backward, executing the parenthesized expressions. I also set up a hidden window that could handle my speaking cues so that Emacs could remind me what the next "slide" was before I transitioned to it, for smoother flow. emacspeak-speak-buffer is a function that reads the current window's text using the Emacspeak speech interface with the Festival synthesizer I'd configured. At some point, I switched to a more interactive demo, but I still had the speaking cues remind me of the sequence. So yes, Emacs really was telling me what to say. ;)

;; Emacs as a text editor

(progn ;; Setup
  (defvar democamp/presentation-file "~/democamp.el")
  (defvar democamp/cue-buffer "*DemoCamp*")
  (defun democamp/next ()
    (let (start sexp)
      (with-current-buffer (find-file-noselect democamp/presentation-file)
        (setq start (point))
        (setq sexp (buffer-substring-no-properties start (point))))
      (eval (read sexp))))
  (defun democamp/previous ()
    (let (start sexp)
      (with-current-buffer (find-file-noselect democamp/presentation-file)
        (setq start (point))
        (setq sexp (buffer-substring-no-properties (point) start)))
      (eval (read sexp))))

  (defun democamp/repeat ()
    (let (start sexp)
      (with-current-buffer (find-file-noselect democamp/presentation-file)
        (setq start (point))
        (setq sexp (buffer-substring (point) start))
      (eval (read sexp))))
  (defun democamp/say (text)
    (with-current-buffer (get-buffer-create democamp/cue-buffer)
      (insert text)
      (goto-char (point-min))
      (call-interactively 'emacspeak-speak-buffer)))
  (global-set-key (kbd "<f12>") 'democamp/next)
  (global-set-key (kbd "S-<f12>") 'democamp/previous)
  (global-set-key (kbd "C-<f12>") 'democamp/repeat)  

;; Window register a
  (menu-bar-mode 1)
  (tool-bar-mode 1)
  (set-face-attribute 'default nil :height 200)
  (find-file "~/hello.txt")
  (democamp/say "I don't know why people are so intimidated by Emacs. It's a text editor. It has menus and toolbars and everything.")
  (frame-configuration-to-register ?a)) 

  (democamp/say "Spell-check, too.")
  (load-library "flyspell")
  (load-library "emacspeak-flyspell")
  (setq emacspeak-flyspell-highlight-personality nil)
  (flyspell-mode 1))

;; Emacs learning curve
;; Frame configuration b
  (find-file "~/tmp/learningcurves.jpg")
  (democamp/say "So why are people terrified of Emacs?"))

  (set-face-attribute 'default nil :height 700)
  (sit-for 1)
  (animate-sequence (list "Livin' la Vida Emacs" "DemoCamp10" "Sacha Chua" "Oct 23, 2006") 1))

  (set-face-attribute 'default nil :height 200)
  (democamp/say "Emacs comes with a psychotherapist.")
  (democamp/say "an adventure game")
  (democamp/say "random geek stuff")
  (hanoi 3))
  (democamp/say "even Snake")
  (democamp/say "And of course, my favorite game, Nethack.")
  (load-library "nethack-config")
(democamp/say "Some of it is useful")
;; Flashcard
  (democamp/say "Flashcards")
  (load-library "flashcard-config")
  (find-file "~/notebook/japan/japanese.deck")
  (goto-char (point-max)))
;; With fortunes
  (democamp/say "And you can mash things together")
  (load-library "fortune")
  (setq fortune-file "/usr/share/games/fortunes/computers")
  (find-file-other-window "~/notebook/japan/japanese.deck")
  (goto-char (point-max)))

;; Planner
(democamp/say "Now the wild stuff starts.")
  (democamp/say "Emacs: more than just an editor. It's a way of life."))

;; - Show tasks
(democamp/say "I use Emacs to manage my tasks with Planner.")
(democamp/say "I can even keep detailed time logs!")
  (load-library "/usr/src/planner-el/planner-timeclock-summary.el")
  (planner-timeclock-summary-show (planner-today)))

;; - Show notes
(democamp/say "... blog...")
;; - Jump to URL in w3m
(democamp/say "... surf the Web (with tabbed browsing and a custom keymap!)")
33;; - Jump to URL in Firefox
(democamp/say "Although sometimes you really want Firefox.")
;; - Jump to task from mail message
(democamp/say "I can hyperlink to pretty much anything.")
(democamp/say "People's contact information")
(democamp/say "E-mail, etc.")
(democamp/say "Which comes in handy when I need to create tasks from mail messages.")
;; Add note to BBDB from mail message
  (democamp/say "Keeping track of the number of recipients")
  (planner-visit-link "pos://~/.gnus#19820"))
(democamp/say "BBDB indicators")

;; Reply to message with nickname,
  (democamp/say "CRM in e-mail: Nicknames...")
  (planner-visit-link "pos://~/.gnus#16025"))

;; and show how it shows up in BBDB record and ping code
  (democamp/say "... notes...")
  (planner-visit-link "pos://~/.gnus#18804"))

  (democamp/say "... pings...")
  (planner-visit-link "pos://~/.gnus#16932"))

(democamp/say "... filters...")
(democamp/say "So those are just a few examples of the crazy stuff you can do if you have an infinitely tweakable environment.")
(democamp/say "Sacha, remember to plug in the speakers.")
(democamp/say "Demo Campers, welcome to Emacs. What else do you want it to do?")

I love pushing the envelope. I love getting to know my tools inside and out (I enjoy reading source code!) and then making them do things other people can’t imagine. I love tweaking processes in real life, too, making them better and better every time. That’s just part of the way I work have fun. =)

How can you rock your next technical demo?

Visual notes – Gary Vaynerchuk and Democamp Toronto 24

Funny aside: When Jay Goldman handed Gary Vaynerchuk a bottle of water, Gary offered it for sale. Little things like that reinforce story. Key take-aways: Passion and patience are everything. Hustle. Out-care others. Offer good stuff. Pay attention to everything. How do you scale? By trying. image Notes from the demos and the pub, before I broke my fountain pen: image Explanations for scribbles upon request, or when I can make time for it! =)

Democamp was lots of fun

After I unpacked and put away all my stuff, I headed to No Regrets to catch Democamp, Toronto's awesome techscene get-together. I missed the Democamp scene while I was away!

Project Who's Who is underway. We'll figure out what to do with all these photos soon.

I think the coolest thing to come out of this is that we'll adopt Will Pate into our group. He'll like hanging out with them, and we'll like him too. He's a geek with a great sense of humor, and he's around our ages. Yes, we'll assimilate him if he lets us. =)

Random Emacs symbol: menu-bar-emerge-menu - Function: Prefix command (definition is a keymap associating keystrokes with commands).

mencoder rocks for editing movies

I used my Sony Cybershot digital camera to take a video of my presentation at Democamp last night. The file weighed in at 400+ MB! After a bit of trial and error, I figured out how to use mencoder to crop to just me bouncing up and down and talking excitedly about Emacs. =) Here's the incantation I'm currently using:

mencoder -ss 111 -vf crop=275:300 mov07578.mpg \
         -of mpeg -oac mp3lame -ovc lavc -o emacs.mpg

I might need to tweak it a bit more. Still, mencoder is fun!

On Technorati: , ,

Random Emacs symbol: w3m-w3m-retrieve - Function: Retrieve web contents pointed to by URL using the external w3m command.

Not among strangers

It's amazing, looking out over a crowd of some 70 people and realizing that very few of them are strangers. It was my first DemoCamp presentation. I jumped at the opportunity to wear my beautiful white suit (I *love* that outfit!), but neither the suit nor the stage (MaRS is big!) imposed any distance whatsoever. It felt as if I was sitting around a table with good friends who indulged me by listening to an enthusiastic demonstration of my latest cool hacks.

It helped that there was a low table that I could put my computer on so that I could do my demo without hiding behind the podium. (I hate podiums and other things that stand between me and the rest of the people!) The microphones were good, too. I left the podium microphones in place, and my natural presenting voice was strong enough to get picked up without effort. And of course, a warmed-up sympathetic crowd was just *wonderful* to work with... =)

I can't wait to work on a few more things. A lower voice might be easier to listen to, as long as I can still keep my warmth and humour. A slightly higher table would've been nice. More structure for the hacks, maybe a clearer message? But it was a fun presentation, and I'm glad I got the chance to show people something crazy and fun.

I'd like to refine this presentation even further. I have an important message I want to share with as many geeks as possible. I want people to push the boundaries, to imagine what's possible when software can be customized to that extent. Maybe the benefits will trickle down to everyone else, the way wild ideas in research prototypes can be taken into the mainstream...

On Technorati: , ,

Random Emacs symbol: emerge-revisions-with-ancestor - Command: Emerge two RCS revisions of a file, with another revision as ancestor.