Now that I have a bit of slack before the next major milestone in my thesis, I’ve decided to get into Second Life. Lots of IBMers have been raving about this virtual world, and for good reason—the demo area that IBMers have put up is absolutely amazing. =) You must check it out for yourselves.
I’ve tricked out my avatar in a conservative business suit. Its
appearance closely resembles mine. Stephen Perelgut says I’m
recognizable. Now all I have to do is to find a bounce + wild
gesticulation animation that I can use as my typing animation, and it
will be a terrific replica. ;)
This is Day 2 of my Second Life thing. Naturally, I started looking at
it as more of a programming environment than a glorified chatroom.
I’ve got a number of things I want to build that might be useful for
conferences and exhibit stands. I refuse to spend time fiddling with
the appearance of objects, so all my scripts are in plywood cubes.
By combining various open source script fragments, I built a notecard
dispenser that also keeps track of who touched it. I plan to hook this
up with a registration booth or something like that in order to make
it easy for people to indicate their interest and leave their contact
I want to make a service bell that IMs the owner and makes it easy for
the owner to teleport to the given location or to speak through it.
This will allow exhibitors to wander around while making it easy for
them to be called back to their booth.
I’m thinking of other things that can take advantage of the virtual
environment. Things that can’t be done easily in real life. Posters
and navigation aids that are influenced by the number of people who
have interacted with them, accessories that match-make based on
people’s interests, a chat bot that collects data through a structured
interviews… Yay, a new programmer’s playground!
My name in Second Life is Sacha Kitchensink. When I told Stephen this,
he laughed and said that he wasn’t surprised. Hey, at least I didn’t
name myself after Emacs! ;)
Random Emacs symbol: eshell-unix – Group: This module defines many of the more common UNIX utilities as
By default, objects created in Second Life are plywood boxes. I’m not
really interested in learning how to making these cubes look like
anything in particular. I’m just interested in making them do cool
things. Someone else can put time and effort into making a replica of
a real-world object or a fantastic new device… I’m just here to play
around with programs. =)
Stephen Perelgut wanted a structured interviewer that collected data
in-world instead of requiring people to fill out a notecard or leave
Second Life and fill out a web-based form. So today, I built an
interview-bot which asks a series of questions and stores the answers.
Avatars can click on the bot to start, and can resume this
“conversation” at any time. Chatting on a separate channel means that
answers are reasonably private. The data is stored in the object and
can only be retrieved by the object’s owner.
In order to build this, I learned a little bit about how to work
around Second Life’s data limitations. You see, the Linden Scripting
Language doesn’t have multidimensional arrays. Fortunately,
LSLwiki.net has a library for accessing multidimensional arrays by
packing and unpacking lists of lists, encoded as strings. The library
is kludgey, but as long as my code looks relatively neat, everything’s
Future versions of this interview-bot will allow avatars to review,
change, and submit their answers through the Web or through e-mail. I
also hope to make it easy for owners to customize the list of
questions. A notecard would do nicely for setup. I can also make it
easy for owners to get a notecard of results.
It was fun programming the scripted object, and even more fun chatting
with the other IBMers. I met a number of interesting people today
thanks to awesome connectors like Andy Piper and Stephen Perelgut.
I can’t wait to build other interesting things in Second Life!
Random Emacs symbol: planner-read-non-date-page – Function: Prompt for a page name that does not match `planner-date-regexp’.
Learning about learning was how I found out that attitude can make
such a difference. In particular, the research on women and
math/science education showed me how much influence attitude and
self-esteem had on girls’ decisions whether they would take university
courses involving math and science. Attitude and self-esteem, on the
other hand, could be greatly influenced by teaching practices and
I saw this clearly when I was teaching computer science to first-year
university students. Some students faced each challenge with
excitement. Others were frustrated. The more frustrated they were, the
further they fell behind. I could hear some of them slipping away.
Yes, I tried my best to reach them. I’d walk around and come up with
in-between exercises to help students gain confidence by mastering
small parts of lessons. I looked for creative ways to make concepts
concrete. My very first lesson wasn’t about writing code – it was
about cooking spaghetti! (We got a lot out of that!) I kept looking
for opportunities for positive reinforcement and I helped people keep
moving forward by focusing on what they can learn in order to do
It didn’t always work, and when it didn’t work, the self-doubt in
their voices and on their faces almost physically hurt. It wasn’t
because I was disappointed that not all of them fell in love with
computers. Even if some of them were probably better-suited to another
field, I wanted to leave them with a good feeling about their
problem-solving skills—and halfway-decent problem-solving skills as
well, of course.
But yes, attitude. That feeling of “Yes, I can do this.” Or even just,
“Yes, I’ll be able to figure it out.” Or at the very least, “This
might not be my thing, but I’m okay.”
I guess that’s why, when I hear frustration possibly turning into
self-doubt, I feel an irresistable urge to teach, to try different
approaches. A little frustration isn’t a bad thing. I’ve learned a lot
by wrestling with problems. But when it threatens to go from “I’m
having a hard time solving this,” to “I can’t get the hang of this,”
to “I suck,” I find myself up and out of my chair before I know it.
Is this a good thing? I don’t know. This compulsion of mine regularly
drove me to doubt my own skills when I was teaching. After class, I
could often be found huddled under my desk munching on an emergency
stash of chocolate. But I’m glad I cared, and I’m glad that I still
do. I’m glad that this caring forces me to be creative, to get out
there and learn how to do things well, to think on my feet.
And here, now, even if I’m “teaching” a class of one, even if I don’t
really have to teach… I can’t help it. I’m addicted to that aha!.
All teachers know what I’m talking about—that moment that makes
everything worth it, that reason why you keep pushing yourself
Random Emacs symbol: bbdb-pop-up-display-layout – Variable: *The default display layout pop-up BBDB buffers, i.e. mail, news.
Yay! No longer have a strict deadline for completion. Not that I
should let my schedule slip anyway, but it’s nice to know that I won’t
have to leave by Aug 31.
Random Emacs symbol: point-max-marker – Function: Return a marker to the maximum permissible value of point in this buffer.
Today is one of the floater holidays at IBM. I think floater days are
there so that IBMers in different Canadian provinces have roughly the
same number of holidays. Monday will be a civic holiday, too.
What do you do with an unexpected holiday?
What I do for work (or my studies, at least) is so much fun that I
don’t need to escape from it, so I don’t have any daydreams or
ready-made escape plans for going off to the beach or something like
Instead, I spent the morning hanging out with a friend I haven’t seen
in more than a year. I picked up two parcels, too: a care package from
my mom, and a thank-you gift from Tito Henk, Kathy’s boyfriend’s
Then I spent the afternoon reading a book on how to read. To be
precise: “How to Read a Book: The Classic Guide to Intelligent
Reading”, by Mortimer Adler and Charles Van Doren. I learned that the
although I still have to think about whether or not the Great Books
will play that much of a role in my life. Fortunately, W- actually has
books like Edward Gibbons’ The History of the Decline and Fall of the
Roman Empire, so I can go and judge for myself.
In the evening, W-, J- and I had one of my favorites: strawberry salad
with raspberry vinaigrette. She was particularly insistent on playing
store after yesterday’s math-lesson-disguised-as-play. And now we’re
watching Annie. J- has seen it so many times, but she still loves it.
I guess that’s what I want my holidays to be: a chance to slow down
and savor life, and a time to think ahead, too…
Random Emacs symbol: tramp-handle-directory-files – Function: Like `directory-files’ for tramp files.
My birthday’s coming up next week and I still don’t have any plans.
Somehow, that realization makes me feel lonely.
Is this the first birthday in several years that I’m not celebrating
with a large group of mutual friends?
Random Emacs symbol: ibuffer-map-lines-nomodify – Function: As `ibuffer-map-lines’, but don’t set the modification flag.
I think I’ll move back to PCFinancial for my banking. I don’t think
I’ll need any financial statements for my future paperwork. The hassle
of getting financial statements was the main reason I moved most of my
banking to TD, but the bank fees and lower interest rates of TD’s
savings account make it somewhat less than worth it. If I can set up
an electronic link between my PC account and my credit card…
… after I start working, I think.
Random Emacs symbol: ses-mode – Command: Major mode for Simple Emacs Spreadsheet.
|Send thesis draft to people, really.||Done.|
|Check paperwork requirements for post-graduate work permit and start compiling them.||Started|
|Revise CASCON paper.||Done.|
|Do one week + one advance post for Booksnake.||Done. Pretty handy…|
|Plan birthday event, really.||Bah.|
|Touch IBM blogosphere.||Done.|
|Pay rent and balance books.||Done.|
|Learn about sales.||Done.|
Random Emacs symbol: term-how-many-region – Function: Return number of matches for REGEXP from BEG to END.
My thesis defense is just two days away. I’ve drafted my presentation
and asked my supervisor for comments. The main thing that’s keeping me
sane is the reassurance that Mark wouldn’t have let me get to this
step if he didn’t think I’d be okay. =) The thesis defense will be a
good time to identify ways to improve my thesis. My examiners will ask
me tough questions to probe my knowledge of the subject and my ability
to think like a researcher. They want me to succeed. (Probably because
it’s less complicated than failing me.)
That’s it, Sacha, think positive… =)
Tomorrow, I’m going to U of T in order to double-check all the
arrangements. I should also make sure that I can project from my
laptop using the supplied projector. Actually, it might be a good idea
for me to go and borrow someone’s laptop with Microsoft Windows or
something like that…
Okay, I’ve posted my plan for tomorrow. I can get through this. =)
Random Emacs symbol: Info-search-next – Command: Search for next regexp from a previous `Info-search’ command.
The end is in sight. In fact, it’s in less than 12 hours. Whee!
Right. Shower, then pick out clothes.
Must remember following maxim: When in doubt, cut it out. Minimize speech!
Random Emacs symbol: define-compilation-mode – Macro: This is like `define-derived-mode’ without the PARENT argument.
zomg, I’m actually done with the defense. I need to make a few minor
revisions, but the bulk of my work is DONE!
This calls for a celebration. If you’re in Toronto, join me at the
Taste of the Danforth on August 11. I’m thinking of being somewhere in
that vicinity around 11:00 AM on Saturday morning. Call or text to
find out precisely where I am. =)
Random Emacs symbol: modify-frame-parameters – Function: Modify the parameters of frame FRAME according to ALIST.
I arrived at the Toronto Circus School
well before the start of the drop-in class. Good thing, too.
I got to see this juggling pair. They’re probably both in their
seventies. I liked watching the two of them stand side by side,
occasionally swapping juggling balls or throwing them to each other.
The other thing I ended up doing was help take pictures of a wedding
party. I guess the bride and her entourage made this their
bachelorette party! =) One of them remarked that trapeze was the
perfect training for a wedding: dealing with butterflies in one’s
stomach and all that…
Michael McGuffin and Mike Tsang should be here soon. Looking forward
to seeing them!
Random Emacs symbol: ad-make-cache-id – Function: Generate an
identifying image of the current advices of FUNCTION.
Life is good.
Random Emacs symbol: muse-wiki-update-local-wikiword-regexp – Function: Update a local copy of `muse-wiki-wikiword-regexp’ to include
Every year is better and better. This year was more intense and
tumultuous than the last, filled with challenges and accomplishments
and new opportunities. I growed a lot, too. It was painful,
particularly coming to terms with the very real stress that travel and
distance can put on relationships. But it’s the kind of pain that
forces you to keep growing, and I’m looking forward to next year and
the years after that.
The key lesson I learned this year was that of finding my own
happiness. Not that I’ve figured everything out—no, I have a long way
to go. But I’m getting better at making my own decisions and standing
up for them; not accepting just what everyone else accepts, instead
reaching for more; and also being open to the experiences and insights
of other people around me—open, but selective.
This year, I felt the limits of books and magazine articles. Some of
the things I think about, some of the things I deal with… I can’t
find best practices. I can’t find research. I just have to keep
figuring things out until I get deeper insights that connect to lots
of other people’s experiences.
I’ll share some of my goals for next year in another blog post.
I know it will be an amazing year. =)
Random Emacs symbol: message-subscribed-address-functions – Variable: *Specifies functions for determining list subscription.
Finally, a chance to sit down after one solid morning of baking! We
made cream meringue tart cockaigne and devil’s food cake cockaigne,
both from the first edition of the Joy of Cooking. The cream meringue
collapsed a little bit when we took it out of the oven, but the
meringue tasted yummy. I can’t wait to add the strawberry whipped
cream filling. I’ll practice baking this cake until I can do it
consistently well. It was W-‘s third time to make the devil’s food
cake. The cake came out beautifully thanks to the spring-loaded pans.
I’ll insist on using those pans the next time I bake a cake. ;)
I know that I can get prettier cakes from any supermarket, but those
cakes won’t have stories baked into them. Cooking is a terrific hobby.
It not only keeps me busy and learning, but also increases the
pleasures of eating and entertaining. It’s a good way to develop my
ability to track multiple things and to adjust when something doesn’t
turn out according to plan. It’s a hobby that will grow with me. I’m
looking forward to finding out what I’ll be like when I’m seventy!
Getting back to the two cakes: I don’t know how many people will come
later, or at what time they’ll arrive. But at 3:00, we’re going to
assemble, cut, and serve the cakes, because *we* definitely want them.
Random Emacs symbol: eshell-process-wait-milliseconds – Variable: *The number of milliseconds to delay waiting for a synchronous process.
I have a good reflection to share which uses the idea of fitness
landscapes, but it will need to wait until tomorrow. It deserves some
thought. Key idea: sometimes, you need to get worse before you can get
Random Emacs symbol: / – Function: Return first argument divided by all the remaining arguments.
One of the best things about blogging is being able to look back and
learn. I turned 24 yesterday. As part of my birthday celebration, I’ve
been reviewing all my blog entries from the past year.
I’ve changed a lot, and I’m going to change a lot more in the next year.
Looking back, I can see how my life is so different from what it was
then. Most of the changes feel right, as if I’m becoming more like
myself. Some don’t feel as good—sometimes even painful. I’m still the same girl who wrote about missing family, friends, and cat….
Sometimes things have to get worse before they can get better. I’ve
made a few short-term decisions that have been and will continue to be
painful or sad. Like most people, I make those choices because I think
it will work out in the long run. Not only do I think it will work
out—I think it will be wonderful.
Random Emacs symbol: calendar-sunrise-sunset – Command: Local time of sunrise and sunset for date under cursor.
My mom held a Skype party for my barkada (close group of friends) in
the Philippines. I enjoyed seeing and hearing them this morning.
They’re just as crazy as I remembered. I wish they were here with me!
I haven’t been able to put together such a large, mutually supportive
peer group over here. Maybe someday!
After we caught up, we spent the rest of the time swapping Internet
memes. After seeing the remixed Shining trailer that turned the horror
classic into a feel-good father-and-son movie, I’ve decided to track
down a copy of Stephen King’s novel and to see the movie.
<laugh> After all, I’ve already read the spoilers *and* the
I’m thinking of calling people up and chatting with them, or maybe
starting a food blog with pictures. We’ll see how that turns out. =)
Random Emacs symbol: gnus-category-read – Function: Read the category alist.
If everything goes as planned, then I’ll have a whole month of slack
this September. I’ll be waiting for the papers for my work permit, so
I can’t actually work for any Canadian companies during that time. I
have several options, including:
I’m leaning towards things that will get me out and about and with
interacting with people. Hmmm… Got any ideas?
Random Emacs symbol: c-clear-char-property-fun – Function: (alias for undefined function)
So I’m looking at a month’s long “vacation” this September. Most people
in the working world would probably kill for one of those. ;)
I don’t feel comfortable travelling because I have some paperwork that
still needs to be done. If the Canadian government says that they need
more information or an interview, I want to be in Toronto and ready to
deal with it. So a month-long trip to the Philippines is probably out
of the question. (It’d be my third trip this year, too, and someday
I’ll need to either earn bucketloads of money or wean myself off
expensive travels…) Hmm. Maybe short trips.
I’ve also asked Jane Zhang about volunteer
opportunities. I might be able to help with some workshops, and
Software Freedom Day is coming up as well.
You know what I want to do? I want to write a book, or at least get
significantly along one. Maybe about Emacs. Maybe about social
computing. Maybe about my life so far. ;) BUT I want to write a book,
and I want to see it printed and bound. Who knows? If it’s a book
about Emacs, someone might even buy it.
I’ll sit down and make a list of the gazillion things I want to do,
and see if something emerges…
Random Emacs symbol: remove-list-of-text-properties – Function: Remove some properties from text from START to END.
You know what I’d like? An easy way to keep track of the topics I’m
reading about, and a way to visualize that over time. LibraryThing or
some other Amazon-hooked services wouldn’t be a bad way to get the
data in. Then it’s just a matter of looking up the category. I can
also keep track of links between books and people, and also links
between books and other books.
First things first: find an unobtrusive way to get the data into the
system. I’ll need it datestamped and indexed by ISBN. Ideally, I’d
have this just automatically hooked into my library checkout page, but
I haven’t checked if they’ve embedded ISBNs into the checkout list. If
not, I can enter them in manually, although numbers are a bit of a
pain to type accurately.
Random Emacs symbol: floor* – Function: Return a list of the floor of X and the fractional part of X.
It’s mid-August, and a cold front is passing through Toronto. My toes
feel chilly under this blanket. Even though sunlight illuminates the
room, sometimes it doesn’t feel like summer.
W- joked that it’ll be stew time soon.
Random Emacs symbol: gnus-agent-read-and-cache-local – Function: Load and read FILE then bind its contents to
I’m getting better at fishing random things out of my head. I remember
names more easily now. Last week, someone asked me who I’d spoken to
three weeks ago at that office. Syllable by syllable, I said the first
name that came to mind: O-li-ve-ra. I hadn’t thought of the entire
name beforehand. I had just started talking, following what felt
On the way back from work yesterday, I talked to Wayne about the
driving test I’m planning to take today. He asked if I was ready for
it, as he hadn’t seen me study. I started rattling off rules and
numbers. I then told him about the Emacs-based flashcard system I was
using (flashcard.el). He was curious about the technique, so he asked
if it had a name. “I can’t remember right now, but it starts with an
L,” I said, and started playing with names. Leichnoff? No… Leitnoff?
No… Leitner? Hmm… That felt right.
I still have to work on remembering little things and staying present,
but I feel pretty good about pulling stuff out of my head. I trust my
first guess more and more now, and it’s usually right.
Maybe that saying is right, you really do just have to exercise your
Random Emacs symbol: w3m-default-coding-system – Variable: *Default coding system used to encode url strings and post-data.
ARGH! This is made-for-the-movies madness!
Random Emacs symbol: w3m-form-make-button – Function: Make button on the region from START to END.
I am so hitting the website to look for sameday tickets. If W- can
watch it with me, all the better. =)
Random Emacs symbol: data-directory – Variable: Directory of machine-independent files that come with GNU Emacs.
This week has been a tumultuous one. Trying to sort out lots of
different issues took up a lot of my time and energy. There are still
a lot of tricky bits to work out, but we’re slowly making progress.
Because other people are involved, I don’t feel comfortable writing
about it in public. (There, see? I do have a private life.) I learned
a lot, though, and I’m still learning more. I wish I could share what
I’m going through, because talking about things helps me understand
them better. Writing is difficult; even talking is. It’s easy to
forget that words can only sketch a still-evolving understanding. My
mind maps have helped me think, and maybe after a few iterations I’ll
understand a few things enough to describe them.
It hasn’t all been complicated, though. As part of my preparations for
the working world, I found out what to do about clothes that need to
be altered. I’m short and my top and bottom are different sizes, which
means it’s difficult to find ready-to-wear clothes that fit me well.
Some of my pants needed hemming. A new blazer that I picked up as part
of a suit needed to be reconstructed to fit me better. Pants were
relatively inexpensive, but the alterations to the blazer cost nearly
as much as the blazer itself. Still, I’ll be glad not to have to think
about the clothes. As it turns out, getting things done by a proper
tailor (High Park Tailoring in this case) is only a little more
expensive than getting it done at the cleaners, and you’ll get more
advice and chitchat from a proper tailor.
I also dropped my shoes off at a cobbler so that the soles can be
reinforced with rubber. I’d been meaning to do that in order to extend
the life of my shoes. I like simple designs, and good shoes can be
hard to find. I walk a lot, though. Reinforcing the soles now might
make the shoes last longer or be easier to maintain later on.
This week has also been quite a week in terms of entertainment. On
Thursday, I attended Jedediah Smith’s
long-form improv class show at the Bad Dog Theatre.
Gabriel Mansour and
Syed Dilawar were also there. Friday, I went
to Buskerfest to take some pictures of street performers. I got a
Facebook status update from Jed asking about things to do that night,
so I invited him over and we watched the fire show. Last night, W-, J-
and I went to the Ex. We had tons of fun at the Aquareve show. A
waist-high sea of bubbles reduced J- and me to squeals of delight.
Some pictures are up on my
Flickr; log in and friend me
if you don’t see them.
Tea was also fun today – nice conversation. I made meringue cookies,
which were quickly demolished. I had a number of kitchen accidents
(spilled vanilla, etc.), but W- and I both managed to not freak out
about it. =) Little things like that make me more confident.
It’s been a jam-packed week, and I’m looking forward to balancing that
with some peace and quiet.
Next week is mostly taken up by driving lessons. I’ve signed up for
the Young Drivers manual shift course. It’s a bit pricy, but I’d
rather pay a little more now for a program that everyone I’ve asked
has recommended to me, than pay lots more later if I get into an
accident. I also need to follow up with my supervisor. I’d really like
to finalize my thesis by the 31st in order to give myself some
breathing room for my paperwork.
Yes, I think the main thing I want for next week is to find that
quiet, happy center again… =)
Random Emacs symbol: gnus-score-interactive-default-score – Variable: *Scoring commands will raise/lower the score with this number as the default.
ACK! One full day of lectures! What was I thinking?! Well, I wanted a
I’ve *definitely* outgrown high-school-type education.
In other news, I heard from my research supervisor. Hooray! I should
have all the revisions done by tomorrow evening, and then it’s just a
final okay—and off to Kinko’s!
And when I get that sorted out with the university, I can go for that
post-graduate work permit…
Random Emacs symbol: eshell-occur-mode-goto-occurrence – Command: Go to the occurrence the current line describes.
Being an international student is tough. I’ve been trying to figure
out my paperwork requirements for the next few steps. My Canadian visa
is about to expire, and for a moment I worried that meant I had to hop on the next flight home.
According to this U of T FAQ, I only need the temporary resident visa when I enter Canada. I just won’t be able to leave Canada until I’ve fixed my paperwork, which will make short trips home a little harder to arrange. I hope to have this matter cleared up by Christmas, or by August next year by the latest.
Life shouldn’t be this complicated!
panicky now that I’ve figured out that I *probably* won’t be an
illegal alien. I’ll call the government help line tomorrow in order to
confirm my understanding.
The paperwork for the post-graduate work permit’s down to two weeks of
processing time, which gives me a *little* bit of breathing room, but
I’m still worried about it. My supervisor should get back to me today
or tomorrow with the final okay, though, and then it’s off to the
printers. The end is near!
Random Emacs symbol: font-lock-unfontify-buffer-function – Variable: Function to use for unfontifying the buffer.
Neil wanted to follow up on my post last 2008.08.12 about fitness
landscapes and life, so here it is:
Imagine that a bumpy surface is in front of you, like a model of a
group of mountains. Your task is to find the highest point on this
surface. However, you can’t see anything—you can only touch it with
By putting your finger anywhere and following the slope up slowly,
taking little steps, you’ll be sure to find some peak. But is it the
highest point? There could be another, higher mountain a little
further off. You may have to start again and trace up a different
mountain. Jumping far away increases your chances of ending up at a
different, possibly higher mountain. You might start out initially
lower, but you might work your way up higher (or not).
No, I don’t casually think about local and global maximums. I got
prompted by a book called “More Than You Know: Financial Wisdom in
Unconventional Places.” Chapter 19 talks about fitness landscapes and
how companies can evolve.
So I was thinking about fitness landscapes and business insights when
a personal issue came to the fore. As I tried to sort it out, I found
myself sketching a graph showing one of the reasons I had for making a
certain difficult decision. I realized that although some people
thought my decision was a step down from my “potential”, I made that
decision because I felt there was a higher peak somewhere. (And *I*
thought it was actually a step up, or at least sideways, but that’s
beside the point…)
Life is a little like a fitness landscape, isn’t it? You can make
little changes that make your life better and better (or worse and
worse, if you’re not paying attention to where you’re going). However,
you can only get so far with those little changes. Sometimes bigger
changes are needed. Sometimes you need to hike down one slope in order
to go up another. And even if you make a mistake and the other
mountain isn’t as high as the one you were on, maybe the exercise will
be good for you anyway!
E-Mail from Richi’s server
Random Emacs symbol: kmacro-edit-macro – Command: As edit last keyboard macro, but without kmacro-repeat property.
I made arroz caldo from scratch today. It’s one of my comfort foods,
and I felt really satisfied when I made it—and when I ate it! The
chicken and ginger congee was incredibly filling. Yummy!
W- and I made egg tarts the other day, too. Mmm…
Random Emacs symbol: search-ring-max – Variable: *Maximum length of search ring before oldest elements are thrown away.