Roger just told me about http://jajah.com , which promises to make life *really* sweet on my unlimited incoming plan. =)
Random Emacs symbol: gnus-del-mark – Variable: *Mark used for del’d articles.
I’m starting to get the hang of using my Moleskine notebook to keep
track of people I need to send information to, and people are starting
to rely on the fact that I’m generally good at followup.
Last night’s Halloween parties were terrific. I met lots of
interesting people at Choco Sol (720 Bathurst St, my new favorite
chocolate place). Looking forward to getting to know them better.
I slept at four in the morning and got up after noon today. After
catching up with my Moleskine and my contact records, I worked on my
progress report for IBM, and it turns out that I’ve gotten a fair bit
Tonight, I might have a Hack Night. I might as well sit down and learn
how to do Google Maps mashups and everything. =) Although Roger’s
around, so plans might change. We’ll see.
Tomorrow, I’m meeting John Oxley, head of
community evanglism for Microsoft Canada. I’m looking forward to
learning more about what technology evangelists / advisors do, and
what skills I need to develop to beocome a really really really good
Random Emacs symbol: bbdb-message-cache – Variable: alist of (MESSAGE-KEY BBDB-RECORDS) cached in order to avoid updating
I had hot chocolate and a terrific conversation with
John Oxley, director of community evangelism at
Microsoft Canada. He told me about Microsoft evangelists. It seems
like such a terrific fit! And the phrases he used – finding heroes,
telling stories – resonate with what I want to do. I’m looking forward
to exploring that opportunity. Perhaps we can co-adapt. I’d love to
work on skills that they’d find useful, and they can adapt the job
description to take advantage of my background and interests.
I was glad to hear that they’re coming around to seeing people as
people instead of just as consumers. ;) I love how companies are
gaining faces. They may have lost Robert Scoble, but they’ve learned
the importance of having human connections! John said that they’re
moving more towards thinking of relationships, which is one of the
things I’ve gotten really interested in.
In the course of the chat, John asked me what languages I program in.
I rattled off a few – Emacs Lisp leading the list, of course. He had
seen my resume online, so he knew that practically all of my
experience was with free and open source software. I told him that was
because open source was how I could work on things that mattered, even
as an undergraduate in a Third World country. I loved learning from
other people’s code, and I still do. Microsoft won’t—can’t!—make me
spread fear, uncertainty and doubt about open source. =)
What about IBM? If I can do Enterprise 2.0 evangelism, then it would
be tremendously exciting to get in on the ground floor and help shape
the technology. I’ve gotten to meet so many amazing IBMers through
blogging and social bookmarking, and that kind of a connection isn’t
just something to walk away from! I also really, really enjoy mashing
together all the Enterprise 2.0 services. =) If IBM can help me make
*just* the right career for myself, then they’ve got dibs on my brain
for taking that chance on me and giving me all these wonderful things
to play with.
IBM doesn’t quite have an evangelist track, though. I’ve been advised
to look into technical pre-sales or business analysis. If Microsoft
comes up with something that’s an even better fit for my interests and
goals, I’ll consider them. After all, they have “evangelist” as a
proper career path! =) I really want to be around lots of other people
who do what I do or want to do, and I’d love to go to conferences and
summits to meet other developers and evangelists.
John asked me what I wanted in a position. I want products and
services that I’m passionate about and people I love working with. I
want to get out there, meet people, and help them succeed by
connecting them with other people I’ve met, showing them tools they’ll
find useful, and supporting them as they figure things out. I want to
always be learning something new, always be playing around with
something cool. The more I learn, the more I can give to more people.
I want to be part of the community, and I want to help start
communities elsewhere. I want to bridge worlds. I want to tell stories
about the cool stuff other people are doing, and what people can do.
I like the picture John painted of evangelism. I’m going to do
something like that. What company I do it with depends on a number of
factors: the specifics of the career, how I feel about the company’s
solutions, the connections I have, the testimonials of other people
within the organization… I’m looking forward to sorting that out
next year! If I go with Microsoft or another company, that’s okay – I
think I’m creating enough value for IBM to make my fellowship more
than worth it, and I’m going to keep ties with them. =)
Here’s a sample job ad for the “enthusiast evangelist” position John
mentioned. This isn’t for Microsoft Canada, but it gives a good idea
of the kind of work involved.
Come join the team that is changing the way Microsoft is connecting
with influential end users as an Enthusiast Evangelist for the EMEA
(Europe, Middle East and Africa) Headquarters. Our connection with
ÃƒÂ¢Ã‚Â€Ã‚Âœinfluential end usersÃƒÂ¢Ã‚Â€Ã‚Â lies at the center of MicrosoftÃƒÂ¢Ã‚Â€Ã‚Â™s continued
long term success as a platform company.
Candidates will be young graduates coming from a technical, marketing,
media or other appropriate background and can prove to have a deep
passion for technology. Participants must have excellent English and
interpersonal communication skills.
Candidates are strategic thinkers, able to balance individual
creativity with working as a team and will have a high degree of
customer and partner focus.
We have created for you a program called MACH (Microsoft Academy for
University Hires). Of this program, the candidate will participate in
the Marketing programme which is a two-year international graduate
course that will make the graduate familiar with the marketing culture
The first year is structured academy training, and the second focuses
on career development. The programme is for participants with less
than 18 months of work experience. Though challenging, they equip the
participants with the skills and know-how required for a rewarding
- Passionate about digital lifestyle and rich consumer experiences across different mediums and technologies.
- Individuals may come from either a technical, marketing, media or other appropriate background.
- A deep strong understanding of this end user community proven by participation in online communities and/or user groups.
- Flexibility in regards to work schedule and travel.
- Solid understanding of the competitive products (hardware and software) and how to differentiate Microsoft from its competitors.
- Strong communication and negotiation skills.
Candidates are born communicators with a passion for, and solid
knowledge of the influential end users, the blogosphere and online
media and most things that are part of the Digital Lifestyle.
The candidate will need to show the potential to develop strong
leadership and program management skills as well as cross group
collaborations skill and knowledge of the field.
To be successful, this candidate will need to show pragmatism and
willingness to roll up the sleeves and get the job done!
I’d love to talk more with people in both companies doing the kind of
stuff I want to do so that I can get a better idea of what it’s like.
But yeah, exciting times…
Random Emacs symbol: gnus-summary-catchup-and-goto-next-group – Command: Mark all articles in this group as read and select the next group.
I started tracking e-mail sent on 2006.09.01 with a
nifty piece of Emacs Lisp code I wrote just for the
purpose. Now I have two months of interesting data which include not
only e-mail but also the occasional in-person contact or phone call
that I remember to note. It’s not complete – e-mail’s the only thing
that gets automatically tracked – but it does give me interesting
information. Here’s the contact report for your amusement:
It’s sorted by overall frequency and then by regular frequency.
Warning! Parentheses follow.
(defun sacha/count-matches (regexp string) (let ((count 0) (start 0)) (while (string-match regexp string start) (setq start (match-end 0) count (1+ count))) count)) (defun sacha/bbdb-contact-report-as-alist (&rest regexps) "Creates a list of (name count-regexp1 count-regexp2 count-regexp3)..." (setq regexps (reverse regexps)) (delq nil (mapcar (lambda (rec) (when (bbdb-record-name (car rec)) (let ((reg regexps) (notes (bbdb-record-notes (car rec))) list) (while reg (setq list (cons (sacha/count-matches (car reg) notes) list)) (setq reg (cdr reg))) (cons (sacha/planner-bbdb-annotation-from-bbdb rec) list)))) bbdb-records))) (defun sacha/bbdb-alist-sort-by-total (alist) "Sort ALIST by total contact." (sort alist 'sacha/bbdb-contact-sort-predicate)) (defun sacha/bbdb-contact-sort-predicate (a b) (and a b (let ((count-a (apply '+ (cdr a))) (count-b (apply '+ (cdr b)))) (or (> count-a count-b) (and (= count-a count-b) ;; If equal, look at the subtotal of the rest (sacha/bbdb-contact-sort-predicate (cdr a) (cdr b))))))) (defun sacha/bbdb-kill-contact-barchart (alist) "Kill a barchart with the contact report for ALIST." (kill-new (mapconcat (lambda (entry) (concat (car entry) " | " (mapconcat (lambda (count) (if (= count 0) " " (make-string count ?-))) (cdr entry) " | "))) alist "\n"))) ;; Usage: (sacha/bbdb-kill-contact-barchart ;; (sacha/bbdb-alist-sort-by-total ;; (sacha/bbdb-contact-report-as-alist "2006.09" "2006.10"))) ;; Then yank (paste) this into another buffer
Random Emacs symbol: standard-display-cyrillic-translit – Command: Display a cyrillic buffer using a transliteration.
A few days ago, I posted a matrix of
great ways to spend time.
Simon liked the idea, so last night, we held a Hack Night – a concentrated pair-programming sprint to make something cool.
We both wanted to play around with the Google Maps API. What better
way to learn how to use it than to prototype a new interface for his
voice messaging system that would allow users to select phone numbers
by drawing polygons?
I’d told him about the point-in-polygon algorithm some time ago.
(Hooray, formal computer science education!) He found a Perl program
that implemented the algorithm, and had also put up a simple
experiment using Google Maps and draggable markers.
While he wrapped up some other stuff, I brought myself up to speed by
quickly flipping through tutorials and mailing list archives. I
must’ve browsed through fifty or a hundred pages – not reading for
full comprehension, just indexing it so that I’d know what was out
there and where to find things.
Along the way, I found several resources that were just what we
needed. Several mailing list posts spoke highly of PostgreSQL’s
geometric operations, which meant that we could replace the Perl
script with a very efficient SQL operation. I also found a user
interface that was exactly like the design Simon wanted to make.
Assembling the pieces was really easy. We ripped out the code we
didn’t need and tweaked the script to do what we wanted. It was a lot
of fun pair-programming with him. I still haven’t gotten the hang of
his keyboard layout, so he did most of the typing. (The keyboard was
straightforward QWERTY, but the Powerbook layout means I hit the
function keys by mistake all the time.) I kept an eye out for little
errors and thought about what to do next. Sometimes I kicked him off
the computer in order to try something out. (When I had to hit
Ctrl-Option-Shift-S to save the file over FTP, I grinned and suggested
that Emacs would be far less RSI-inducing.)
Great results for a two-hour Hack Night. We wrapped up at midnight
because I had breakfast plans, so I couldn’t stay up too late. We
couldn’t help talking about ways to optimize it, though – using a
synthetic integer primary key to speed up joins, denormalizing the
database, etc. It was a lot of fun working on that with him, and I
look forward to other Hack Nights.
So yeah, I’m a geek’s dream. <laugh> And this Hack Night thing?
Well worth repeating. Maybe we can hack on my research prototype next…
On Technorati: simon
Random Emacs symbol: nobreak-space – Face: Face for displaying nobreak space.
I’m back on the wagon of tracking every expense. There’s a certain
satisfaction in knowing that every cent is accounted for. This time,
I’m using John Wiegley‘s excellent
Ledger command-line accounting
tool. It works with plain text, of course.
I’ve just figured out how to do my fancy earmarked accounting thing.
I’ve partially sorted out my cashflow, but I’m not sure how much I’m
supposed to receive over the next few months or what’ll happen when I
start working. For peace of mind, I’ve earmarked enough money to cover
tuition, rent, and food.
I want the earmarked money to be tracked separately from my real
savings so that I know how much money I can actually touch, but I want
to leave it in my regular high-interest savings account so that I can
earn interest on the whole amount. So I need two reports: one showing
what I can consider free and clear, and another that reconciles with
the account summary from the bank (includes earmarked accounts).
Here’s the transaction setting up earmarked rent:
10.28 Earmarked for rent [Savings:Earmarked:Rent] $4365 [Assets:Savings:PCFinancial]
and every so often, I’ll post transactions that look like this:
11.02 * PCFinancial ; Transfer for rent payment Assets:Savings:PCFinancial $-485 Assets:Checking:PCFinancial $485 [Assets:Savings:PCFinancial] $485 [Assets:Checking:PCFinancial] $-485 ; Automatically transfer rent money from Savings to Checking ($485) ; This is still part of my earmarked savings until it goes out of Checking ; So ledger -s -c bal shouldn't show it as part of my real checking account ; or my savings account, but as part of Savings:Earmarked ; but ledger -R -s -c bal should show an increase in checking and a decrease in savings 11.05 ! University of Toronto Assets:Checking:PCFinancial $-485 Expenses:Rent $485 [Savings:Earmarked:Rent] $-485 [Assets:Checking:PCFinancial] $485 ; Now decrement my earmarked savings ; And make sure that Checking reflects actual balance ; And that savings is unchanged from before with virtual transactions
The ! signifies a pending transaction that has not yet been cleared,
while * signifies a cleared transaction. ledger can do
partially-cleared transactions too. This is pretty nifty.
Makes me want to have more to track…
Random Emacs symbol: shell-script-mode – Command: Major mode for editing shell scripts.
I tweaked my blog design slightly, using a real-life photo instead of
my icon and taking a few things off my sidebar. I might even add
accesskeys one of these days. Who knows…
Random Emacs symbol: mail-extr-disable-voodoo – Variable: *If it is a regexp, names matching it will never be modified.
Another idea for the activity matrix: learning a
foreign language. Japanese? Spanish? Maybe Spanish – I know a few
people who can practice with me.
Or maybe I should get more deeply into Ruby…
Random Emacs symbol: mouse-autoselect-window – Variable: *Non-nil means autoselect window with mouse pointer.
I was in bed all day yesterday thanks to a very annoying fever and the
beginning of a sore throat. It was very nice of Simon to come over
with chicken soup, a salad, and the best medicine available. =) I
didn’t really feel like eating, but he watched over me and made sure I
Now I feel much better. Good, because there’s much work to be done!
Random Emacs symbol: planner-multi-task-link-as-list – Function: Return the page links of INFO as a list.
I keep daydreaming about a totally split keyboard. Something like the
Combimouse, I guess. I hope they
commercialize it soon, ’cause I so don’t have the hardware hacking
chops to do http://www.thecraftstudio.com/bcboy/keyboard.html …
Random Emacs symbol: quoted-printable-encode-string – Function: Encode the STRING as quoted-printable and return the result.
I went to Michael McGuffin’s birthday party. I enjoy spending time
with him, his wife Alice, and their kids. There’s just that sense of
reality, of being human, of making that connection. It’s very
different from the high-energy tech or event-ish parties I sometimes
go to. It feels more intimate, more real. These are the friends in
front of whom you can be vulnerable, and because you can show them
your weaknesses, you also delight in sharing with them your joys.
Here’s an excerpt from the letter I wrote him:
One of the things that helped me get through all the
culture shock and the loneliness was that unreserved openness with
which you welcomed me. You took me into your life and into your circle
of friends. You made me feel at home. And you gave me quite a bit of
advice about graduate school, too.
I wish all the best for them. Seeing them reminded me that I need to
visit them more often. Maybe I should take Alice out for hot chocolate
and another massage… And I should bring back one of those pop song
books for her guitar-playing, too. Hmm…
On Technorati: friends
Random Emacs symbol: bbdb-display-message – Command: Do nothing and return nil.
I’m taking some time off from cramming my KMD2004 project to write a
review of Emacs 22 prerelease for Don Marti. It’s a great excuse to
look at all the cool new features I’d been taking for granted in my
I love the stories people tell through their code and their
documentation! For example, take Calc mode. You’d expect it to be a
simple desk calculator, right? No, it can do “arithmetic on rational
numbers, complex numbers (rectangular and polar), error forms with
standard deviations, open and closed intervals, vectors and matrices,
dates and times, infinities, sets, quantities with units, and
algebraic formulas.” It has tons of other features, too.
How did a calculator get so big, the way all Emacs features seem to
grow and grow and grow? Check out the History and Acknowledgements
section of the info manual for Calc. Here’s the story from David
Gillespie in the manual:
Calc was originally started as a two-week project to occupy a lull in
the author’s schedule. Basically, a friend asked if I remembered the
value of `2^32′. I didn’t offhand, but I said, “that’s easy, just call
up an `xcalc’.” `Xcalc’ duly reported that the answer to our question
was `4.294967e+09′—with no way to see the full ten digits even though
we knew they were there in the program’s memory! I was so annoyed, I
vowed to write a calculator of my own, once and for all.
I chose Emacs Lisp, a) because I had always been curious about it
and b) because, being only a text editor extension language after all,
Emacs Lisp would surely reach its limits long before the project got
too far out of hand.
To make a long story short, Emacs Lisp turned out to be a
distressingly solid implementation of Lisp, and the humble task of
calculating turned out to be more open-ended than one might have
Emacs Lisp doesn’t have built-in floating point math, so it had to be
simulated in software. In fact, Emacs integers will only comfortably
fit six decimal digits or so—not enough for a decent calculator. So I
had to write my own high-precision integer code as well, and once I had
this I figured that arbitrary-size integers were just as easy as large
integers. Arbitrary floating-point precision was the logical next step.
Also, since the large integer arithmetic was there anyway it seemed only
fair to give the user direct access to it, which in turn made it
practical to support fractions as well as floats. All these features
inspired me to look around for other data types that might be worth
Around this time, my friend Rick Koshi showed me his nifty new HP-28
calculator. It allowed the user to manipulate formulas as well as
numerical quantities, and it could also operate on matrices. I decided
that these would be good for Calc to have, too. And once things had
gone this far, I figured I might as well take a look at serious algebra
systems for further ideas. Since these systems did far more than I
could ever hope to implement, I decided to focus on rewrite rules and
other programming features so that users could implement what they
needed for themselves.
Rick complained that matrices were hard to read, so I put in code to
format them in a 2D style. Once these routines were in place, Big mode
was obligatory. Gee, what other language modes would be useful?
Scott Hemphill and Allen Knutson, two friends with a strong
mathematical bent, contributed ideas and algorithms for a number of
Calc features including modulo forms, primality testing, and
Units were added at the eager insistence of Mass Sivilotti. Later,
Ulrich Mueller at CERN and Przemek Klosowski at NIST provided invaluable
expert assistance with the units table. As far as I can remember, the
idea of using algebraic formulas and variables to represent units dates
back to an ancient article in Byte magazine about muMath, an early
algebra system for microcomputers.
Many people have contributed to Calc by reporting bugs and suggesting
features, large and small. A few deserve special mention: Tim Peters,
who helped develop the ideas that led to the selection commands, rewrite
rules, and many other algebra features; Francois Pinard, who
contributed an early prototype of the Calc Summary appendix as well as
providing valuable suggestions in many other areas of Calc; Carl Witty,
whose eagle eyes discovered many typographical and factual errors in
the Calc manual; Tim Kay, who drove the development of Embedded mode;
Ove Ewerlid, who made many suggestions relating to the algebra commands
and contributed some code for polynomial operations; Randal Schwartz,
who suggested the `calc-eval’ function; Robert J. Chassell, who
suggested the Calc Tutorial and exercises; and Juha Sarlin, who first
worked out how to split Calc into quickly-loading parts. Bob Weiner
helped immensely with the Lucid Emacs port.
Among the books used in the development of Calc were Knuth’s _Art of
Computer Programming_ (especially volume II, _Seminumerical
Algorithms_); _Numerical Recipes_ by Press, Flannery, Teukolsky, and
Vetterling; Bevington’s _Data Reduction and Error Analysis for the
Physical Sciences_; _Concrete Mathematics_ by Graham, Knuth, and
Patashnik; Steele’s _Common Lisp, the Language_; the _CRC Standard Math
Tables_ (William H. Beyer, ed.); and Abramowitz and Stegun’s venerable
_Handbook of Mathematical Functions_. Also, of course, Calc could not
have been written without the excellent _GNU Emacs Lisp Reference
Manual_, by Bil Lewis and Dan LaLiberte.
Final thanks go to Richard Stallman, without whose fine
implementations of the Emacs editor, language, and environment, Calc
would have been finished in two weeks.
I’ve had a lot of these two week projects. I wasn’t supposed to get
hooked on Planner. It was just supposed to be one of the components of
my fourth-year undergrad project. It turned into a way of life and my
main open source project for almost three years.
Most people look at Emacs and they see an editor with way, way, way
too many features. How many people need to do in-line matrix
calculations, anyway? I might never use it (then again, who knows?),
but I think it’s terrific that someone just sat down one day and put
it in. When I look at Emacs, I see more than a text editor. I see a
community of hackers and a tradition of tinkerers. It’s awesome. =)
History and Acknowledgements
Random Emacs symbol: enable-kinsoku – Variable: *Non-nil means enable “kinsoku” processing on filling paragraphs.
All sorts of goodies in the new Emacs 22. I’ve just sent a ZIP of the
article and some images off to Don Marti, and I
look forward to merciless editing. I won’t be able to post it on my
blog until some time after it gets released, but that was fun to
I had to trim so much material from the individual sections.
Post-thesis, I should really start an Emacs column…
Chatting on #emacs gave me an interesting idea. You know, that Livin’
la Vida Emacs talk I gave at DemoCamp would be great as a
polished talk that I could take on a tour. Post-thesis (or maybe
mostly-done-thesis), I should take to the road and go across US and
Canada talking about tech and meeting up with all sorts of cool
people. It’ll be a great excuse to visit Google and Amazon, which must
have lots of incredibly cool Emacs users.
Random Emacs symbol: remember – Command: Remember an arbitrary piece of data. – Group: A mode to remember information.
My parents figured out how to send me the sun. My mom must’ve sent it
that first day I saw snow outside the window…
I feel so loved. Can’t help but cry. In a good way. =)
I love my parents to bits. They’re the best. Ever.
Pictures later, after class…
Random Emacs symbol: gnus-article-strip-all-blank-lines – Command: Strip all blank lines.
I was this close to buying a laptop mouse at the University of Toronto
computer shop. I’d picked out an intriguing mouse/trackball. I was
reasonably certain that it was going to behave like a regular mouse,
but I don’t like taking chances with hardware.
I asked about demo models. None. Return policy? Final sale.
I can understand their reluctance to deal with opened blister packs,
but I see no reason why they shouldn’t invest in having floor models.
Mice are like shoes. You have to try them on.
This Saturday, I am going to shop for a mouse. I should also see
if I can convince anyone to fix my power supply in exchange for
And I’m not going back to that shop again, if I can help it.
Random Emacs symbol: widget-image-insert – Function: In WIDGET, insert the text TAG or, if supported, IMAGE.
It really does make such a difference.
That’s it, my future place will be decorated in bright, warm colors.
Pictures of the sun mobile… ummm… after I finish cramming this
paper. Which could be next week.
Random Emacs symbol: load-with-code-conversion – Function: Execute a file of Lisp code named FILE whose absolute name is FULLNAME.
I spent the week steadily working on various school deliverables – CAS
project report, KMD2004 essay on open source in developing countries,
and MIE1402 readings.
I enjoyed spending time with Simon, too. Hack night on November 1 was
*tons* of fun. We learned a lot about Google Maps and PostgreSQL’s
geometric functions. It was so much fun pair-learning. We could keep
each other on task, and my breadth of background was helpful. We
should do that again with something else, like Ruby.
I also had a terrific time having hot chocolate with John Oxley. I’m
starting to figure out what I want in a job.
Somewhere in between, I found the time to write Emacs Lisp code to
produce a contact report for September and October.
I also tweaked my blog design to be a little simpler and cleaner.
It was a very good week in terms of people. Over the week, I sent out
lots of cards. I figured that, well, I have all this blank
stationery lying around… I might as well use it. Having stamps on
hand certainly helps! I need to buy another pack of US and
Simon came over on Monday just to hang out and breathe. As previously
mentioned, Hack Night on Wednesday was tons of fun. And he visited
again on Saturday to take care of me while I was sick… =) There,
see, he does make time.
Halloween parties were fun, too. I got to hang out with Leigh and her
friends. The red leather dress (“So this is the famous red leather
dress?” – Leigh) got a number of compliments. =) I told them how my
mom picked it out for me, and some of the other things my mom’s asked
me to try out… <laugh>
I had a three-hour conversation with my mom over Skype. We initially
had problems with feedback between her speakers and microphone, but we
sorted that out when she plugged in earphones. Voice quality was
pretty good. It was great chatting with her about the different things
that were going on, and my dad had an interesting theory about
Microsoft’s interest in me. ;) You’ll have to ask me about it; it’s
The week ended with a wonderful dinner at the McGuffins. Michael
turned 30. Seeing them reminded me that I need to spend more time with
those folks – I like them a lot.
A very good week indeed. =)
Random Emacs symbol: gnus-level-default-subscribed – Variable: *New subscribed groups will be subscribed at this level.
I’m at Enterprise2.0Camp right now. Tom Purves
gave a good overview of what Enterprise 2.0 is and what it means for
businesses. “Social media” is fine for Web 2.0, but it raises eyebrows
in business. Tom suggested “tacit media” as a better term, and went
into more detail.
Bryce Johnson pointed out a difference
between barcamp.org wiki and usabilitycamp.org wiki – barcamp wiki was
where organization happened, whereas usabilitycamp wiki happened after
the organization. Tom shared something from Office 2.0: “A blank wiki
is a room without chairs.” (Esther Dyson)
Comments: Seeding a wiki can affect how it goes. Any best practices?
Tom suggested deliberately making small mistakes, which encourages
people to look for how to edit it. Another person points out that this
also lowers the psychological barrier to entry – things don’t have to
be perfect. There are social issues, though, such as implied
permissions. Bob Logan pointed out that you can’t design emergence.
Alex Petrov noted that you can’t predict innovation if you’re going
bottoms-up. Tom acknowledged the loss of control, but talked about
unorganizations that emerge as well.
Another person explicitly distinguished between innovation and
collaboration. Innovation is never really been successful without some
sort of direction, he continues. A wiki is like a blank piece of
paper, which is difficult to work with. Tom replied that collaboration
is a good stepping stone toward innovation or the dispersion of
innovation. The first person continued that R&D expenditure has no
correlation to the performance of the company. Innovation is a very
different function than collaboration. Another person talked about
skunkworks and the possible value of having a skunkworks wiki, which
could be a very powerful tool. Greg Van Alstyne supported Tom’s point
that innovation requires diffusion and adoption, and differentiated
innovation from invention. You have to see it happening in a network.
The person beside him talked about emergence and levels of complexity.
Another person talked about the nature of a corporation as a tree
structure, push instead of pull. You have to fuse them together. Tom
wondered if wikis need critical mass, and if the software isn’t as
good as they thought.
Deb brought the conversation back to the empty wiki. Anything
successful has at the core of it a real problem, so that people have a
motivation to do whatever. Carsten pointed out that it needs to be
appropriate. Bryce brought up the idea of voice. Tom agreed that
different kinds of media fit different tasks.
Brent Ashley pointed out that there’s a
certain constituency of the population who are going to be involved.
So we need to draw out the people in the organization who would be
good adopters of these tools, so that the tools will be built by
people who care about it. Tom agreed absolutely. Firestoker saying:
“Learn to stop worrying and love your 1%.” Rohan said that the key is
to make sure that something there is important. People don’t want to
be left behind. As long as what’s on the wiki is a hobby thing, then
they’re not going to go there. Jevon of Firestoker: A moment of
crisis. Work gets done and operational efficiencies come into play. In
that moment of crisis, it’s a chance for leadership to let go and give
up some of their silos. It’s after that point that we see innovation
and collaboration really come into play, because that’s when people
trust the space. Carsten: I think what makes collaboration
unattractive is the lack of integration. The browser is the great
equalizer. [But it's not integrated into the applications that I live
in, like Outlook]. Maybe the wiki is not all that appropriate or
Jevon: Story about Big 5 banks. They had computers in managers’
offices, but no one was reading e-mail because computers were handled
by their secretaries. Then the CEO sent the final paper memo, and then
everyone used e-mail.
Person: If you build technology that does not conform to the way
people behave, no one will use it. Noted problem with signup wiki. UX
experience is the story. The experience of using a device should
complement what you want to use it for.
Random Emacs symbol: char-property-alias-alist – Variable: Alist of alternative properties for properties without a value.
It is often helpful to think out loud on my blog, where I can be more
informal and less structured. =) I’m working on an actor-network
analysis of open source in developing countries, so I’ll think about
pieces of it over here before editing it into a more scholarly form.
Okay. Network dynamics.
It is instructive to start with the closed-source view of the world.
Software developers in developing countries can take proprietary
software solutions such as Microsoft Office or the Oracle database
server, develop solutions on top of it, and sell these solutions to
the local market. This allows developers to meet the needs of the
market without spending a lot of time writing everything from scratch.
The solutions also gain credibility through their association with
global brands. However, this presents certain problems:
Cost. Although studies of the total cost of ownership show that
labour costs far outweigh license costs, these studies do not reflect
the case in developing countries where labour costs are lower and
licence fees are disproportionately high due to weak currencies and
other factors. See really crazy chart of GDP per capita vs licencing
costs for Microsoft Office.
Trade imbalance. Think of all those dollars flowing out of the
country… I heard that Microsoft partners make 9 dollars for every
dollar Microsoft makes – but that just means that 10% is going out of
your economy, versus open source which lets you keep all the value-add
inside the country.
Lack of deep access. Without access to source code, developers
can’t customize closed source programs to really fit local markets
through localization, customization, integration, etc. in ways
unanticipated by the global developers or in ways that were not
profitable for the global developers to support.
Dependence. Local software developers become dependent on the
proprietary software companies, which could change its licencing terms
or discontinue product lines.
Random Emacs symbol: gnus-article-strip-all-blank-lines – Command: Strip all blank lines.
(This is not even a draft – more like table-napkin scribblings for my article for a class I’m taking)
So how does open source change the picture?
Open source acts on local developers by making it possible for them to create low-cost high-value-add customized IT solutions for local consumers or even the export market. Here’s how it works.
The local audience wants low-cost customized IT solutions. Developers
don’t really have that option with closed-source software, which means
there’s an underserved local market. This provides the economic
incentive for developers to explore open-source software.
First, local developers can start by selling mature open source
solutions, particularly in terms of infrastructure (mail, file
servers) where open source software has been proven to do well on the
global market. They can configure the systems and provide support.
Local developers can customize open source solutions or building on
top of those platforms. For example, they could develop a
database-backed website using open source tools and integrating other
open source modules. This is even more attractive for local developers
because they retain all the value added.
Lastly, local developers can offer products and services to the global
market. For example, Infoweapons built an IPv6 DNS and firewall
appliance using open source code. This allows local developers to take
advantage of lower labour costs. It also contributes to a trade
surplus. Deep access to source code and skills learned in the process
of working on open source make it easier for developers to create
innovative world-class applications.
On Technorati: kmd2004
Random Emacs symbol: gnus-article-strip-all-blank-lines – Command: Strip all blank lines.
(This is not even a draft – more like table-napkin scribblings for my article for a class I’m taking)
Working on open source also has indirect benefits for local
developers. Surveys show that open source development helps developers
learn some skills more effectively than they would in formal computing
courses.(Give examples, cite link)
Because most open source projects are freely available for download,
developers can experiment with new technologies at little financial
risk. In the process of customizing and packaging the software for
use, local developers improve their technical skills. Open source code
and customizing it allows local developers to learn from projects far
larger than any they could work on in a formal computing course.
Because open source is typically developed by large,
geographically-distributed teams, tools such as version control
systems and mailing lists are essential. Open source developers
quickly learn not only how to use these tools, but also how to work
with other people.
Developers who contribute code and other resources back to the global
open source communities can also benefit from informal
apprenticeships. Their contributions can be peer-reviewed by more
experienced developers, and they can get feedback from users and
co-developers around the world.
Open source provides a way for developers to improve their skills and
gain real-world experience even if proprietary software companies do
not have development opportunities in the area. Open source can also
be a form of nearly-free knowledge transfer between global developers
and local developers.
Random Emacs symbol: cross-disabled-images – Variable: Non-nil means always draw a cross over disabled images.
(This is not even a draft – more like table-napkin scribblings for my article for a class I’m taking)
Developers who go into open source can develop or strengthen their
connections to other actors in the network.
On Technorati: kmd2004
Random Emacs symbol: bbdb-offer-save – Function: Offer to save the Insidious Big Brother Database if it is modified. – Variable: *If t, then certain actions will cause the BBDB to ask you whether
Taking a break from my KMD2004 cramming to post this cautionary note from an IBM evangelist (see, they do exist):
Being an evangelist has it benefits, but you soon get
tired of the frequent flyer miles; the anonymous hotels; the
loneliness; the adulation of knowing the right thing at the right
time. I canÃƒÂ¢Ã‚Â€Ã‚Â™t tell you if now is a good time to jump, or not, what I
can tell you about mistakes, theyÃƒÂ¢Ã‚Â€Ã‚Â™re the only thing that you can truly
call your own.
This is something to keep in mind. I’m excited about living on my own,
but someday I might tire of it. I’m looking forward to going on all
sorts of speaking tours, but someday I might get tired of going up on
stage or being “on” all the time. Someday I might get tired of always
being in a different timezone from the people I love. Someday I might
hate missing birthdays or casual get-togethers.
But while I’m young and unattached and eager to learn, I might as well
sacrifice that comfort for learning. I want to learn how to listen,
how to connect, how to sell. I know how to converse with a hundred
people. I want to learn how to converse with thousands. I want to
learn how to speak geek and speak suit. =)
(Thinking of it, though: If I’m going to be travelling a lot, it
won’t be fair to uproot my cat from sunny Philippines where she gets
fed regularly and where she can hang out with our other cat… I miss her!)
On Technorati: career
Random Emacs symbol: recompile – Command: Re-compile the program including the current buffer.
… Oh my goodness, a Distinguished Engineer blogged about me… Gwee!
… and if only to drop in on blogs like this and say hi, those
six months were worth it! <giggle>
Random Emacs symbol: paragraph-ignore-fill-prefix – Variable: Non-nil means the paragraph commands are not affected by `fill-prefix’.
Although open source can greatly help developers advance in their
careers and provide low-cost, custom solutions for local markets,
other factors discourage local developers from gaining open source
First among these factors is the lack of time. Most open source
developers are employed by software companies. In a software industry
where the benefits of open source are not clearly recognized,
developers are unlikely to have the leisure time to experiment with
Second, language may pose a significant barrier for local developers.
Local developers who are not comfortable with English may find it
difficult to participate in most online communities, where English is
used as a common language.
Third, customers may need to be educated about the benefits and risks
of open source. Customers may prefer the brand name of an established
proprietary solution, or may resist change. Customers who have read
about open source may be too optimistic about the benefits it can
offer, only to be burned. Developers must carefully manage
expectations as they sell solutions to their customers.
Lastly, some actors actively work against the adoption of open source.
This is discussed in the next section.
Open source solutions can directly cut into the revenue stream of
proprietary software developers and distributors. Some proprietary
software vendors adapt by offering open source products. Other vendors
attempt to discourage open source adoption through aggressive
discounts of closed source software, marketing campaigns, and even
anti-open-source articles and advertising.
Use trackers enforce the copyright of proprietary software products by
imposing heavy fines on organizations found to violate the licence,
but do not educate users about more affordable open source
alternatives. This has the effect of stifling the local IT industry
due to higher capital requirements. Use trackers can also harass
companies that develop with open source projects through audits and
Proprietary software companies and use trackers such as the Business
Software Alliance also exert a powerful influence on the very frame of
the controversy. The metaphors chosen and promoted by these
organizations are based on physical property and use words such as
theft and piracy. Open source advocates argue that the near-zero cost
of duplication and distribution of software makes it fundamentally
different from physical goods. Because proprietary software companies
have successfully framed the debate on their terms and laws and public
understanding reflect these changes, open source advocates have a more
difficult time arguing the benefits or even the legality of their
Proprietary software producers can also weaken support for open source
through litigation. Patent disputes can scare developers and consumers
away from contested software, or even open source in general. Patent
disputes generally play out on the global stage, but affect the public
perception at the local level as well.
The open source license is a controversial tool. Different actors
within the network attempt to align other actors according to their
goals, and how these actors resist the attempts of other actors.
On Technorati: kmd2004
Random Emacs symbol: message-syntax-checks – Variable: *Controls what syntax checks should not be performed on outgoing posts.
That’s what my previous blog posts and this morning’s list of actors
come to: seven pages, double-spaced. Add another page for the actor
network map, and I’m getting close to the *maximum* of 10 pages.
Tomorrow I’ll go through it, add references to back up my wild
assertions, and edit it to be more scholarly. =)
Thanks for putting up with my blogorrhea. I really appreciate being
able to think out loud. If you have any ideas, feel free to comment!
Random Emacs symbol: url-bug-address – Variable: Where to send bug reports.
I stayed up late last night and didn’t feel too well this morning. In
fact, I ended up getting out of bed at 2. =( No sunlight whatsoever
today, although the splash of color from my sun mobile made me smile.
But yes, it’s just one of those gray days.
My dad said that anyone can do what they love to do. The mark of a
professional is doing it even if you don’t love it at the moment. I’m
still learning how to do that. I procrastinated a bit by making new
cards. But there’s much work to be done and many deadlines on my
Step by step. I just need to keep moving forward. =) I’ll get through
Random Emacs symbol: with-temp-message – Macro: Display MESSAGE temporarily if non-nil while BODY is evaluated.
These strange things called “mornings” are actually pretty interesting. ;)
In an effort to reset my sleep cycle, I slept at 11:30 PM last night -
or tried to, at least. After tossing and turning for a while (darn
cough!), I eventually managed to sleep.
Worked out great. I woke up for some unknown reason at 4. Went back to
sleep, woke up at 7:30. Managed to get myself out of bed without too
much fuss. Had a leisurely breakfast and another run-through of my
goals. Headed to the lab to work on my research proposal.
It’s kinda odd that I spend more time revising my proposal than
actually doing research. There’s something a little wrong there. Must
work on research more.
… After I clear the rest of the hurdles on my horizon…
Random Emacs symbol: type-break-interval – Variable: *Number of seconds between scheduled typing breaks.
I added more diagrams to my research plan. I’m starting to get the
hang of drawing diagrams. What do you know – they *can* actually make
things clearer after all…
Random Emacs symbol: w3m-int-to-char – Function: Return the argument unchanged.
Filling out another event registration form… Hmm. Maybe I should be
the CTO of Adphoto. ;) Let me ask my
mom… That might involve a little more work than occasionally
resetting passwords or checking out website hosts. >laugh>
Random Emacs symbol: calendar-interval – Function: The number of months difference between MON1, YR1 and MON2, YR2.
I’ve been too busy to blog this weekend (gasp!), but I’m happy to
report a productive week. I spent Monday writing an Emacs 22
pre-release review for Don Marti of LinuxWorld.com. I’ll send the
author contract on Monday. (Yay! Another $350 for writing!)
I attended Enterprise2.0Camp on Tuesday, and I shared some of the
things we talked about at CASCON2006. I’m getting a little tired of
saying that I don’t have the answers to the questions I raise, though,
so I should probably sit down and help figure things out. ;) It was
great catching up with Tom Purves,
Goran Matic, and the rest of the Camp folks.
I spent Wednesday concentrating on my KMD2004 paper, blogging most of
my raw thoughts as a way of getting around writer’s block. See,
blogging can be productive procrastination… ;) I’ve been slowly
reworking the blog entries into a more scholarly form on my hard disk.
Thursday was a bit of a blah day, though. I was feeling low-key
because of the different things I needed to work on. I was supposed to
meet Jed, but he was offered free concert
tickets, so we postponed dinner. I did end up making a nice set of
business cards, though. People like the new design which includes a
Friday was a very productive day. I woke up early and rewrote my
research proposal, adding all sorts of nifty diagrams. After that, I
hung out in the Emacs channel on IRC for a bit. I had fun catching up
with people there while waiting for Jed to call.
Jed and I had dinner at Simon Sushi on Spadina, then went to the Night
Lights event at King’s College Circle. We met Quinn there, and then we
headed to Second Cup for warm beverages. Chatted a bit. Ran into
Pavel Zaitsev. Went back to the Night Lights
thing, hung out for a bit, then headed over to meet Simon, Shane and
Lara, who had attended a lecture by Deepak Chopra. It was fun hanging
I insisted on walking Quinn home, partly for company and partly for
security. Good thing Simon and I accompanied her, as there was a
homeless person sleeping right in front of her door. She had to go in
through the back entrance.
I spent the weekend deepening my connections to people and getting a
fair bit of exercise. I learned something on Saturday about how I
prefer to spend my time, but that’s worth a separate blog entry. Other highlights: dinner with James Iveniuk, Mike Bailey, Simon Rowland, Roger Yang, Eyal, and Mariette. We passed by the arcade, too, where I beat Simon at driving and shooting! I don’t know if I’ll ever let him live it down. ;) We played foosball there, then went to Graduate House for even more foosball and some table tennis. Fun. =)
On Sunday, I went to the Toronto bead fair and picked up whatever I
needed to make necklaces and earrings. I have a few diodes and chips
I’ve been meaning to make into stuff for a while now, and I wouldn’t
mind I also picked up a rather classy set of rose glass beads that
look almost like pearls, and I’ll probably make an elegant choker or a
Sunday evening was terrific, too. Gabriel Mansour pinged me about hanging out. Given that he lives in Markham (near IBM, in fact), it was a bit of a mission for him to commute downtown in order to hang out for a few hours – but it was well worth it, I think. He probably didn’t expect to be given seatwork, though. ;) I gave him a stack of index cards and some colored markers, and told him to brainstorm what he wants to do with his life. ;) I like knowing what my friends are interested in and what they want to do… Anyway, that was good. =) We chatted over hot chocolate / tea, but then my contact lenses really started bugging me.
Very good week. Wrote a lot, learned a lot, and managed to sneak in time for deep socialization. Looking forward to next week!
On Technorati: weekly
Random Emacs symbol: whois – Command: Send SEARCH-STRING to server defined by the `whois-server-name’ variable.
I woke up at 7 today after dreaming of the last section of my progress
report. Going to bed with an unfinished task means I end up doing it
literally in my sleep. <laugh> After some puttering about at
Graduate House, I made it down to the lab. Got through a whole bunch
of tasks, although I wasted a fair bit of time playing Nethack. (Level
10 wizard! Woohoo!)
It was a good day work-wise, although I’m embarrassed to say that I
was dozing off in the middle of statistics class. Bought chocolate
during the break, which greatly helped. Note to self: bring emergency
Picked up a new book from the library. Finished it today, too. Good
book, and well worth keeping in mind. I’ll post my notes soon.
I learned a little more about life today, or at least I learned about
something I’ll need to learn more about. For some reason or another, I
don’t get along very smoothly with one of my roommates. I’m in the
process of learning more about keeping a place tidy, and have been
doing relatively fine: I manage to get laundry done once in a while,
I’ve got nice dishes that I keep spotless, and I even manage to tame
my desk clutter once in a while.
Having finished my major tasks earlier than I expected, I decided to
do my chores a day before the deadline. I soaked the mop in a solution
with the new organic cleaning liquid I bought (it’s really nifty!),
and started mopping. She was preparing a salad for dinner at the time,
and pointed out that I hadn’t even swept the floor. I listened to that
and glossed over the rest of her disparaging remarks. I normally
vacuum the floor before mopping, but she found fault with that when I
did the floor three weeks ago, so I was wondering if the mop alone
would do. Anyway, it was easy enough to set aside the mop and sweep
the floor in preparation.
Falling into the rhythm of sweeping, I found myself reflecting on how
this was actually a good thing, not a stressful one. I remarked that
although I had survived a summer on my own without getting into
trouble with the cleaning staff, and that I was glad that she was
helping me learn higher standards. Upon hearing this, she told me not
to be so (bleeping) condescending and that I’m allowed to be a (bleep)
sometimes. I told her that I’d rather not be one, whereupon she sighed
and told me to just never talk to her again.
The situation made me think about the power of filters. If people have
a positive filter, bad things aren’t so bad. If people have a negative
filter, it’s hard for anything to get through. Perhaps my mistake
(aside from forgetting that first bit! <laugh>) was acting upon
my reflection and thanking her when she wasn’t ready to be thanked. I
have to admit that it took me a little time to sort through all the
different ways to react, and I could feel my neck muscles tense. But
I’m learning how to see the good…
I think the best thing for me to do, then, is to listen beyond her
harsh choices for words for the feedback that will help me improve my
own standards of neatness. I don’t think she’ll notice improvements -
it becomes all too easy to focus on the negatives and all too hard to
see growth – but I can affirm myself.
Granted, I sometimes wish I could have something like the close
roommate relationships my mom had when she was in college. But this
isn’t a bad way to learn interpersonal skills (and come to accept the
fact that I can’t please everyone!).
I have to confess one teensy little thing, though. Thanks to her, I’m
learning the importance of modulating my voice to a lower pitch. When
she’s chatting with people in the living room, it’s all I can do to
put on the headphones. So there, things *can* get on my nerves…
I’m looking forward to learning how to live completely on my own, but
living with others has valuable lessons as well.
Sharing this with you because it’s something I’m still learning. Who
knows, maybe the reminder that there is space between stimulus and
response may help you too… =)
Random Emacs symbol: mail-extr-disable-voodoo – Variable: *If it is a regexp, names matching it will never be modified.
That shouldn’t be the case. <laugh> I’m starting to think that
it wouldn’t be a bad idea to leave a party early (well, at least not
very very late) in order to go home and blog about it and other stuff…
Random Emacs symbol: gnus-button-handle-library – Function: Call `locate-library’ when pushing the corresponding URL button.
When Mira Jelic and Jyotika Malhotra told me about UsabilityCamp, I immediately signed up. Good thing I did, too. The event filled up quickly and more than a hundred people were on the waiting list. If last Tuesday is anything to go by, the next UsabilityCamp will probably fill up in a few hours! <laugh>
It was great crossing over into a different world and learning more
from user experience designers who focus more on user interactions
instead of code. My favorite presentation? I can’t decide between Ilona Posner’s demonstration of these very cool immersive devices that let kids (and adults!) experience what it’s like to be a cat, frog, or butterfly, or Michelle Ivankalc(sp?)’s talk about the physical design of objects.
I really enjoyed getting to know a bunch of new people, too. I met
Paul Forest, who’s on the steering committee
of the International Game Developers’ Association (Toronto Chapter).
He’s looking for a development job, and has experience in everything
from C++ to Java to .NET. Richard McCann
asked me about technology evangelism when he noticed it on my nametag,
and we ended up talking about his newly-fored company called
IdeaFarmer. I met Veau Trotter for the second
time (first was at Enterprise2.0Camp). I met Daniel Tsang again, too, and we chatted a bit about FreshBooks, a web-based accounts receivables system. He told me about monkeyonyourback, which I should definitely look for. I also got to know Robin Ward, and we got into an animated discussion of extensible software (Emacs for me, Firefox for him). I should ask him about the Firefox extensions he wrote…
I was particularly glad to have an opportunity to chat with Mira Jelic and Jyotika Malhotra, both of whom are very cool people (in both tech *and* style!). Kudos to them for organizing a great event, kudos to Ilona Posner for pulling in more sponsors and speakers, and kudos to everyone for making the event tons of fun!
Random Emacs symbol: gnus-summary-pop-article – Command: Pop one article off the history and go to the previous.
If you’ve been wondering why I haven’t been blogging lately, that’s
because I’ve had just *so* much to do and so many interesting events
to go to. Last night’s planning party for the Mesh Web 2.0 conference
was definitely worth the late night. It was held six months after the
conference, apparently by sheer accident. Just like the conference,
the planning party was full of totally awesome people.
I really enjoyed catching up with Mark Evans and thanking him for his blog post about me, which my mother has no doubt printed and framed. Stuart and the rest of the Mesh organizers were there, of course. It was nice catching up with Michael O’Connor Clarke and learning of his love of Heinlein books.
I met tons of new people, too. Sulemaan Ahmed and I had a lot of fun explaining the benefits of LinkedIn and other business networking sites to Lesley Sturla and anyone else within earshot. Craig Borysowich has a company called Imagination Edge. Adam Clare‘s awesome. He runs a blog called Things Are Good. How can you not like that? Rob Schaumer and Eric are cool, too. Rob’s into personal development, and has just started blogging. Joseph Thornley and Chris Clarke are both from Thornley Fallis, and Chris Clarke runs a blog called Student PR. That’s nifty. Mark Ruddock looks like an interesting person, too – “entrepreneur in residence”? Wayne Gomes and I chatted a bit about the value of blogging. I briefly chatted with Gary Grant and Lars Hansen, too. Connie Crosby told me about her library blog. Jeremy Wright remembered me from Mesh because of my little black Moleskine notebook. Kevin Magee introduced himself just as I was heading out, telling me that I looked like an IBMer. He remembered that I’m an evangelist. =) (See? Memorable!)
And of course, it was a great excuse to catch up with Brent Ashley, Leesa Barnes (whom I haven’t seen since August!), Craig Saila (I will finally get to sit down for hot chocolate with him on Saturday), David P. Janes (who reminded me to blog more often), and other folks.
This is starting to read like a society column focusing on the Toronto tech scene… <laugh>
Anyway, great party, awesome mix of people, tons of fun, now time to decompress.
Random Emacs symbol: load-in-progress – Variable: Non-nil iff inside of `load’.
I’m telling you, my mom airmails me every penguin stuffed toy she
comes across. =) And snack food, too. And Christmas cards, hint hint.
Now that’s a care package…
And I love how she reassures me after roommate difficulties by
blogging about her experiences with roommates long long ago. It’s nice
to hear other people’s stories…
Random Emacs symbol: View-scroll-line-forward – Command: Scroll forward one line (or prefix LINES lines) in View mode.
|209||messages sent locally|
|13||messages sent internationally|
|2||roaming messages received|
Sept 11 to Oct 10
|46:00||US and roaming minutes|
|257||messages sent locally|
|42||messages sent while roaming|
|7||messages sent internationally|
Aug 11 to Sept 10
|1:00||US and roaming minute|
|495||messages sent locally|
|3||messages sent while roaming|
|6||messages sent internationally|
On Technorati: phone
Random Emacs symbol: gnus-group-uncollapsed-levels – Variable: Number of group name elements to leave alone when making a short group name.
I’m munching on a special chocolate mix from Choco Sol. The slab of
sun-dried, bicycle-powered and volcanic-stone-ground chocolate
contains cacao, agave, amaranth, vanilla, cinnamon, ginko biloba, gotu
kola, and ginseng, and is supposed to be good for memory and
I hadn’t heard anything from my KMD2004 groupmates all weekend, so I
was rather worried about the integrative summary that we were supposed
to pass on Monday. I couldn’t find any drafts on the wiki or the
shared workspace. If I had to write everything from scratch by myself
just to make sure that we’d get it in before the deadline, I was going
to do so. They could always make it up to me for the next assignment.
I wasn’t looking forward to working on a Sunday night, but I hadn’t
had the time to work on it during the previous week. Besides, I could
consider Saturday as my downtime day for the week.
I sent my groupmates e-mail telling them I was going to write the
summary, and I gave them my MSN and Yahoo! instant messaging details
just in case they were online on a Sunday night. I started a document
on Google Docs (formerly known as Writely)
and sketched the outline just like I’d blogged my way past a writer’s
block for my background article.
I was pleasantly surprised by the quick response of my groupmates. MJ
sent me an instant message on MSN. I asked him to reformat the
appendices to have consistent citation styles while I worked on the
summary. Dave came online after a short while. After some trouble with
the invitations, we managed to get everyone on the same page.
I set up a group chat using Bitlbee, the IM to IRC gateway that I use
to chat within Emacs. We coordinated our actions using instant
messaging while I fleshed out the summary. Dave couldn’t work on the
document right then, but he could look over my work to see where the
article was going. I added some notes about the structure of the
document so that we had a coherent, logical flow.
My computer crashed twice because I ran out of memory. (OpenOffice +
Firefox + Emacs = not good!) Good thing I was drafting the document in
Google Docs, which auto-saved the document every few seconds and
allowed people to keep reading it while I rebooted.
I sketched the document and condensed my paper before fatigue set in.
I left the paper in their capable hands, and I’m sure it will get done
I couldn’t imagine doing this without real-time collaboration tools
like instant messaging and Google Docs. Imagine what it would have
been like, having to e-mail documents around? It would have been such
a hassle for me to keep people up to date.
Hooray for Net collaboration and awesome groupmates!
Random Emacs symbol: menu-bar-mode – Command: Toggle display of a menu bar on each frame. – Variable: Non-nil if Menu-Bar mode is enabled.
This week, I concentrated on schoolwork and got quite a lot of things
done. Mark and I submitted my CAS project report and request for more
funding. I wrote an essay modeling the effect of open source on
developers in developing countries according to actor-network theory,
and I’m relatively happy with my analysis. I’ll post it after I get
feedback from the professor. I also worked a little bit on my
statistics assignment, although I’ll probably go for the extension on
that assignment. (5% reduction for an extra four days? Sold!) I worked
on my research prototype too, exploring different ways to geolocate
IBMers for my search engine. And I’ve just blogged about the
integrative summary due tomorrow…
How I managed to find the time for all the other things this week, I
don’t know. At Tuesday’s UsabilityCamp and Wednesday’s Mesh planning
party, I met so many cool and interesting people. I also got told that
I must be the best branded student at the University of Toronto, and
more than a few people remembered me as a tech evangelist. ;) I’m
I read a good book, too. Robert G. Allen’s book “Creating Wealth” is
well-written and advises people to get into real estate, providing
many concreate examples and strategies. I find “Creating Wealth” to be
a better read than Robert Kiyosaki’s books, like the “Rich Dad, Poor
I started a new hobby: jewelry-making. I had picked up beads and other
materials at the Toronto Bead Fair last Sunday. On Tuesday, I made a
four-stranded bracelet with faux pink rose pearls. It’ll look even
better once I figure out how to do knots properly. I wore the bracelet
to UsabilityCamp, making the malong I wore look even more formal. I
made matching earrings, too.
And Friday – Friday was fun! To celebrate Simon’s 26th birthday, I
conspired with his friends and family to toast him at a surprise party
with cheese and champagne. I had to drop a few hints to make sure that
he’d keep the evening free. His surprise and happiness was well worth
the agony and excitement of anticipation. =)
Saturday was odd, though. Simon and I ran into one of those cultural
crossed wires, which I’ll probably blog or LJ or e-mail at some point
when I understand it better. Things are better now, but I still need
to think it through.
Oh, Happy Feet was a *delightful* movie. I’d watch it again. =)
Terrific week for growth, even though some of that hurt a lot…
On Technorati: weekly
Random Emacs symbol: pre-command-hook – Variable: Normal hook run before each command is executed.
My sister once told my boyfriend that if he ever needed to find out how to love me,
he could just look at the friends I have around me.
People here found it so sweet that I organized a surprise party with toasts. But I’m not the only one who organizes parties with testimonials. <wry laugh>
It’s odd to think that this doesn’t come naturally to all people.
Random Emacs symbol: gnus-article-strip-all-blank-lines – Command: Strip all blank lines.
It turns out that the suite meeting isn’t tonight. Maybe Thursday.
The place is so quiet. Perhaps I’m learning to need music. I’ll buy
another set of earphones tomorrow, and I’ll start using the iPod more.
Looping over one of Bach’s fugues, I guess.
I’m looking forward to watching a musical with a good friend tomorrow.
I need to feed my soul…
Random Emacs symbol: shared-game-score-directory – Variable: Directory of score files for games which come with GNU Emacs.
When Kaleem invited me to dinner with Betsy Weber, chief evangelist at
TechSmith, I immediately cleared my
schedule and accepted. After all, I could make up for classes by
reading, and I could always catch up with the DemoCamp folks at the
afterparty. How often do I get to talk to established technology
It was *well* worth it. I can’t believe I had that opportunity to
learn about tech evangelism (Hi Betsy!) *and* tech journalism (Hi
Saleem!), two of my favorite career choices. The lifestyle Betsy
described of going to conferences, building relationships with
passionate users (and sometimes really unhappy users!), bridging the
gap between developers and users… Wow. I want that. I want to do
that. The constant novelty and exposure to brilliant people that
Saleem described also appeals to me. I’m thrilled to hear that there
are such wonderful career choices out there, and that they’re a natural
fit. As Joey de Villa
said at the DemoCamp afterparty, technology evangelism is the
best job for a technical extrovert. I want to finish my schoolwork as
quickly as possible so that I can start working on stuff like that.
On the way back, I mentioned that someone on the emacs channel had
pointed out that I was 4th on a Google search for
Saleem fact-checked it on his cellphone, of course. We were both surprised to find my site listed as the second and third hit. Whoa.
Probably not for long, but hey, cool!
So, plenty of warm and fuzzies from a totally awesome conversation, an
energizing afterparty, more encouraging career direction, a couple of
hugs, and a thoughtful gesture by Kaleem. Fantastic day. What an
awesome way to start my week. I’ll send them hand-written cards
Random Emacs symbol: redisplay-dont-pause – Variable: *Non-nil means update isn’t paused when input is detected.
Some days the laundry piles up, and up, and up, and then I realize
that my favorite malong is at the bottom of the heap and it would be
silly for me to rescue it again considering that I had dug it out of
the crumples and folds thrice or four times already.
Then I strip the sheets from the bed and dig up all my towels, sort my
clothes into things I would trust to the washing machine (only my
linen and the pajamas that no one ever sees) and everything else to be
washed by hand. My drying rack is limited, so I pick my favorite
clothes out from all the rest and throw them into a growing pile of
red and orange against the bare gray concrete walls and gray carpet of
my room. The rest stay behind, like the kids always chosen last for
games. I feel no guilt. Life is too short to wear clothes you don’t
The basket now empty, I throw the linen into it and trudge downstairs
to feed it to one of the racks and racks of laundry machines. While
the machine chugs, I divide the hand-washing pile into clothes that
can stand hot water and clothes that require cold water or separate
I have a disturbing number of clothes that require particular care,
but I like them too much to give them up. Besides, hand-washing is
almost meditative. Plunging my hands into sudsy water that’s almost
too hot, then into soapy water almost too cold to bear, I remember
Japan and its baths.
And then it is a matter of wringing things out and hanging them up to
dry, taking care to separate the items that bleed. Oh, how the malongs
want to color all of my clothes red and purple, and the jeans want to
color everything blue! Now my hand-washed laundry is neatly laid out
at the foot of my bed, all before the machine has finished washing my
load of sheets. I finish hanging up my clothes, and head down to put
my sheets into the dryer.
Random Emacs symbol: gnus-article-strip-all-blank-lines – Command: Strip all blank lines.
If Microsoft Office crashes, it usually gives you back the
auto-recovered document. Unless, of course, it crashes again while
you’re trying to save the auto-recovered document from the last crash.
This is not fun.
However, it’s entirely my own fault for not saving often, and there’s
no point in getting stressed out about it anyway.
So I will trudge on with the rest of this paper, and tell you fun
stories about Wicked some other time.
Random Emacs symbol: search-forward-regexp – Command: Search forward from point for regular expression REGEXP.
Have I mentioned yet how much I *love* the University of Toronto
library? Full-text access to the Harvard Business Review, hello…
Random Emacs symbol: file-cache-minibuffer-complete – Command: Complete a filename in the minibuffer using a preloaded cache.
There are few things in life that are better than finding out that one
of your favorite cafes has live music on the night that you feel
you’ve accomplished enough work to just kick back, relax, read a book,
and enjoy life.
Yes, life is good. Life is very good.
Random Emacs symbol: imenu-generic-expression – Variable: The regex pattern to use for creating a buffer index.
No one in Web 2.0 can spell. But Wesabe looks interesting. It’s a Web 2.0 budget tracking thing with tips. It rocks. Tagging is an interesting idea.
I should also put getrichslowly on my more-frequently-read blog list…
Random Emacs symbol: calendar-set-mode-line – Function: Set mode line to STR, centered, surrounded by dashes.
I’ve figured out a terrific way to read IBM blogs. They’re automatically prioritized, too. I read it in Emacs, of course, and I have a quick way to comment on things while I’m offline. The only thing that could make it better would be to autopost comments…
Random Emacs symbol: eshell-var-load-hook – Variable: *A list of functions to call when loading `eshell-var’.
You gotta love this life. Friday night at a cafe, hot chocolate with my best friend, plenty of good books to read. I just finished breezing through Information Anxiety 2. And I’ve just stumbled across “What Should I Do With My Life?”, by Po Bronson.
All we need now is a comfy couch…
Life is good.
Random Emacs symbol: prog2 – Function: Eval FORM1, FORM2 and BODY sequentially; value from FORM2.
After watching Wicked last Wednesday with Wayne Young, I realized that
I’d been missing out on so much by not watching more musicals in this
I love showtunes. There’s just something magical about the way people
sing and dance and tell stories. I love the way songs foreshadow each
other and are reprised. I love the structure of the songs, building to
a crescendo or thrilling me with their depths.
And watching the musical was so much better than just listening to the
music on Internet radio! Now, listening to the music, I can see the
production in my mind’s eye. I get goosebumps remembering Elphaba’s
songs “Defying Gravity” and “No Good Deed”.
I can’t wait for the next musical. Maybe I’ll pick up an appreciation
for opera along the way…
Random Emacs symbol: previous-char-property-change – Function: Return the position of previous text property or overlay change.
Kudos to Dean Michael Berris for telling me about a newly-formed organization for technology evangelists!
The first conference is on December 4. It looks *TOTALLY* awesome.
Are you passionate about technology? Do you thrive on making a
difference in people’s lives with your passion for technology? Do you
get confused sideways looks with raised eyebrows when telling people
that you are a Technology Evangelist? If so, GNoTECon is the event for
you. It is the industry’s first conference to discuss technology
It would be *SO* wonderful to meet all of these evangelists. Guy Kawasaki! *The* Guy Kawasaki! Squeeeeeeeee…
I’ve e-mailed my supervisor to ask if I can take the final exam early. I’ll move heaven and earth to be there. And you know me, I’ll make a splash somehow.
I feel a little like Peter Pan. If you believe in my technology
evangelism, clap your hands and help me make this happen!
So, does anyone know anyone in Santa Clara with whom I can stay?
Random Emacs symbol: prin1-char – Function: Return a string representing CHAR as a character rather than as an integer.
Wrapping up with schoolwork requirements has kept me very busy. We’re
nearly done with the knowledge media, culture and society course: only
two more requirements to go. The statistics course is also wrapping
up. I don’t think I’m quite cut out to be a researcher. Slicing and
dicing numbers looking for relationships isn’t nearly as fun for me as
going out there and making things happen. Still, I’ll get this last
bit of coursework out of the way.
I’ve also made a lot of headway. It amused me to hear from Stephen
Perelgut that on all the different metrics Pranam Kolari used to
measure influence within IBM’s blogosphere, I was consistently in the
top three. That despite really only coming in once a week, and being a
student at that. ;) Who can tell what I’ll do when I focus on this? I
must finish my thesis quickly so that I can find out! I spent Friday
prototyping, and have made much progress.
This week has been *fantastic* in terms of my career. I had dinner on Monday with the chief technology evangelist of Techsmith, Betsy Weber. She confirmed many of the things I love about technology evangelism, and said that she really enjoyed her job. Joey de Villa, developer evangelist at Tucows, said that technology evangelism was the best job for a technical extrovert. And then Dean Michael Berris told me of the newly-launched Global Network of Technology Evangelists, which will be holding its first conference on December 4! I’ll move heaven, earth, and final exams to be there.
The best thing about this week, though, was learning so much about
life. The ripples of last Saturday’s misunderstanding taught me much
about love, and I’m still learning. On a long walk around the chilly
University of Toronto campus, Gabriel Mansour shared one of the really
difficult challenges facing him. I learned so much from that
conversation, and I hope to have helped him by listening. I watched
Wicked with Wayne Young and learned how much fun it was to share
something like that with a friend. I had a wonderful conversation with
Wayne Young and Quinn Fung over dinner on Friday, and then again with
Quinn, Roger Yang, and Naomi on Saturday, and I got to catch up with
Craig Saila as well. And I finally got to talk to my mom again this
morning, although Skype didn’t work… Darn technology!
One of the things that struck me the most about this week was
something Wayne said in our conversation with Quinn last Friday. He
mentioned how the previous generations prioritized work first, then
their relationships, then themselves. This generation puts self first,
then relationships, reasoning that if the first two are sorted out
then work will naturally fall into place. I had told them a little bit
about my distress this past weekend, rationalizing it away by saying I
need to focus on getting my act together first in terms of career and
a place to live. Quinn gave me The Look and told me not to run away
from things like that. I really appreciate having friends like them.
Quinn’s right. Wayne’s right. Many many conversations and drafted
letters and read books later, I’m starting to understand a little bit
more about life. I feel optimistic about things. Between Simon’s trip
to Florida to visit his grandparents and my trip to California (we
hope!) to visit evangelists and my six-week vacation in the
Philippines (yippee!), we won’t get to spend a lot of time with each
other, but I’m sure we’ll work things out.
So that’s been my week so far: a lot of learning about life.
Next week is also going to be a little hectic. I’ll be wrapping up
coursework, for the most part. I need to convince
Mark Chignell to let me take my final exams
early so that I can go to California to meet those technology
evangelists. Something tells me that this is a Good Thing to Do, and
that it will definitely be worth it. =)
On Technorati: weekly
Random Emacs symbol: set-process-plist – Function: Replace the plist of PROCESS with PLIST. Returns PLIST.
I read on Metroblogging Manila that Libreria is closing. Was that one of the places my mother and I visited on our jaunt through second-hand bookstores? Memories…
Part of growing up, I guess, is learning how to deal with questions
Be gentle with me for the next few days, please. I am sad.
Explanations will follow when I understand myself a bit more.
Random Emacs symbol: setf – Macro: Set each PLACE to the value of its VAL.
Thanks again to all those whose hot-chocolate thoughts and
conversations reminded me that the world is actually quite a wonderful
place, even though it throws you for a spin once in a while.
Life is going well. Research is going well. Love, ah, love is making
me learn. But it’s all good.
Random Emacs symbol: ido-work-directory-list – Variable: List of actual working directory names.