Armed with a text editor

mu's views on program and recipe! design

February 2008

Bento: week 7 Posted 2008.02.26 21:11 PST

This seems to be the week of leftovers. I've taken to trying to cook about twice the rice a bento needs, and refrigerating half of it. It doesn't make a lot of difference, but it's fewer times that the rice cooker has to go from zero to sixty each week, which can't be a bad thing. It also keeps available the option for fried rice every other day. Maybe I should have some tomorrow if it works with the short grain rice I started using Friday of this (last) week...


Yay leftovers. Sunday we decided we had to use up some chicken and spinach, and I'd remembered this dish we'd made a few years back. So we made it again. It yielded four chicken rolls, of which you can the top two of four slices which amount to about half of one roll. It was just as good room temperature as warm, although I would have liked some more of the tomato based sauce.


No creativity here whatsoever; instead just some duplicate leftovers, and some frozen fruit fresh from the freezer. While the berries generally manage to thaw in a couple hours, this fruit was still somewhat frozen in the center.


Yay, I got a new bento box! Now, not only do I have an extra day between forced bento box washings, the two-tier approach will result in much creativity...once I get the hang of it. Today I packed too much into it, not realize quite how big the gobo tempura really was, nor how little room the top tier really has for veggies (the center of the top is a little depressed, so there's less room than there looks like).


Not only did I pick up a new box, I bought some Japanese style rice: a Tamaki Haiga (still has some of the rice germ) short grain rice from California. Immediately out of the rice cooker it's obvious how much more this rice sticks together. It's nifty! It would actually work for making onigiri! You can eat it with chopsticks without driving yourself nuts! All sorts of benefits over Jasmine rices. Can you tell I like it so far?

The millet salad was something I threw together earlier in the week when I wanted a nice raw vegetable and grain salad. Having not cooked millet before, the way it puffed out rather surprised me, so this wasn't the effect I wanted. But it was tasty in an interesting (but not wonderful) way. Good enough to eat, at least.

After a surprise lunch at work, I really ate this on Saturday. Cold. Man that rice sticks together!

(0 Comments ) (0 Trackbacks) bento

Bento: week 6 Posted 2008.02.18 17:44 PST

Once again I ended up with four bentos this week. Only this time it was due to an unexpected company lunch, resulting in a delayed bento and no need to make one the next day. If they ever do that to me on Friday...well it's not like it's ever hard to find something to do with good food. I had my leftover copy of the shirataki noodle dish for dinner Friday as it was.


Sunday night I think I took ill, but had already overcome the shivery fever symptoms by morning. I wasn't too sure what would happen next, so I went with a fairly bland bento. I don't know if the carrots are already starting to show their age (the one horrible disadvantage of pre-cut baby carrots) or if my taste buds were off, but half of my carrots tasted horrible. The rice and kidney beans is approximately what it sounds like when you just put them next to each other like I did. Nothing special. This bento isn't really one I'd recommend unless you do want something bland.


I'd picked up these noodles a while ago. They're really convenient, since they don't need any additional cooking, they don't have a strong flavor so they can go with anything, and they're just ready to go even after a week in the refrigerator. Just drain them, cut them down to a manageable size, and enjoy. And don't forget to cut them.


I can barely remember Wednesday of last week; I think the interesting news on Thursday must have wiped it out of my head. However I do remember this bento. I was tired of rice, and far too interested in whether making lentils in the rice cooker would work out correctly. So I tried. It does. Next time I just need a better plan for how to use said lentils.


No bento today - the company sprang for pizza. It's good pizza, but it's not bento. And by that I mean it involves waiting in a line to get to the pizza, which is infinitely inferior to having your food ready when you want it. But tasty and free is worth the wait. And tasty bentos are worth the wait; see today's bento tomorrow:


This was yummy, even a day late, and a bit more chilled than I'm used to. It seems that my holy trinity combination of flavors is the soy-sauce, mirin, rice-vinegar, miso combination I keep using. It goes really well on chicken, tofu, probably even on fried rice but I've not tried yet. A teaspoon or so each, maybe as much as two teaspoons of soy sauce, provides much needed flavor, and works as well at room temperature as it does hot.

(0 Comments ) (0 Trackbacks) bento

Bento: week 5 Posted 2008.02.12 18:01 PST

This week was a little unusual, with both a snow day I worked from home, and a vacation day. Mind you, I'm not complaining about the time out of the office, but it does hurt the habit just a bit.


Monday I finally made a bento fried rice using onions, and threw in some enoki just for luck. Yummy! The newcomer to my lunch, aside from enoki, were a pair of dango. Specifically mochi an dango. I think. Either way I love 'em.


Tuesday was a simple brown rice and black bean main course, accompanied with some favorites. Today I used my newly acquired bamboo sushi mat to try to roll the tamago-yaki tighter. I think they came out a little better, but more due to improving my cooking process than due to the mat. Maybe something else will need the mat more later; for now, it seems like an unnecessary toy.


Snow day! We had heavy snows starting on Tuesday (not unlike those starting Thursday the week before), so I decided to work from home on Wednesday to fight neither traffic nor winter. Actually I fought winter a bit, shoveling our driveway a couple times. As I write this entry nearly a week later, most of the snow we got then is still present on the sides of the driveway, and the sides of our roads, although of course some of it came later as well.


Guess what - Thursday I unveiled my other recent new toy: kurogoma, or black sesame seeds. Under them are some eggs inspired by Just Bento's iri tamago recipe (but executed much more poorly). I was in a rush to create these and did them at my normal tamago-yaki heat and used a spoon. For the results shown on Just Bento's blog, I think you really need to use chopsticks, and perhaps a slightly lower heat. Under the eggs are leftover fried rice like Monday's. And mmm dango!


Vacation! But I made bento-style foods outside of a bento anyway. I'm really starting to want a two-layer bento box. I think it'll let me (and force me) to be a little more creative about the food I take, and I want that challenge. But I told myself I'd wait until at least week 6 to see if I was still doing this before getting any more boxes. One week left!

Lessons Learned

I think I'm learning less on a weekly basis now that I'm not completely new to bento, but there's still plenty of lessons that come up when trying new things. Like the iri-tamago failure (which was still yummy so I don't mind), or actually remembering to use onions in my fried rice. Sometimes when I end up making bland food I wonder if I'm doing something wrong, but then I just think back to the sandwiches this has replaced, and I'm quite happy with the trade. Life's too short to eat turkey sandwiches every day!

(0 Comments ) (0 Trackbacks) bento

Using quilt for inplace tooltips Posted 2008.02.09 16:39 PST

As I talked about earlier, I have a patch for showing inplace tooltips on a gtk+ treeview. Furthermore as it's nearing time to update it, I wanted to record the steps necessary to do so and to apply it.

Most of what I know about quilt I learned from this quilt howto hosted on alioth. So I'm by no means an expert; rather I know just enough to be dangerous. So here are the steps a Debian user can use to update and refresh my inplace tooltips patch.

First: set up quilt. Here's my modified /etc/quilt/quiltrc but feel free to put the equivalent in your own ~/.quiltrc instead. The first line is critical; the others just simplify the patches.

QUILT_DIFF_ARGS="--no-timestamps --no-index"
QUILT_REFRESH_ARGS="--no-timestamps --no-index"

Second: get the build dependencies and source.

% sudo apt-get build-dep libgtk2.0-0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.

% apt-get source libgtk2.0-0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Need to get 23.6MB of source archives.
Get:1 unstable/main gtk+2.0 2.12.7-1 (dsc) [1565B]
Get:2 unstable/main gtk+2.0 2.12.7-1 (tar) [23.5MB]
Get:3 unstable/main gtk+2.0 2.12.7-1 (diff) [89.4kB] 
Fetched 23.6MB in 54s (430kB/s)                                                
dpkg-source: extracting gtk+2.0 in gtk+2.0-2.12.7
dpkg-source: unpacking gtk+2.0_2.12.7.orig.tar.gz
dpkg-source: applying ./gtk+2.0_2.12.7-1.diff.gz

Third: apply the patch.

% cd gtk+2.0-2.12.7
% quilt import ../gtk+2.0-2.12.5/debian/patches/mu-inplace-tips.patch
Importing patch ../gtk+2.0-2.12.5/debian/patches/mu-inplace-tips.patch (stored as mu-inplace-tips.patch)

Fourth: update debian/changelog. You'll want to fix the conflict, revert the changes, or update the number.

% quilt push mu-inplace-tips.patch
% quilt edit debian/changelog
% quilt refresh
Refreshed patch mu-inplace-tips.patch

Fifth: build the packages. This takes a while.

% dpkg-buildpackage -us -uc

If anything breaks you'll probably have to run quilt pop mu-inplace-tips.patch, edit the patch to resolve the build failure, run quilt refresh, and try the build again.

Sixth: install the package, and optionally put it on hold. Note that you need only the libgtk2.0-0 package if you haven't bumped up the version in the changelog; you don't really need the others if you have, but they have tightly coupled version dependencies that complain if you don't use them.

% cd ..
% sudo dpkg -i libgtk2.0-0_2.12.7-1+0mu_i386.deb libgtk2.0-dev_2.12.7-1+0mu_i386.deb gtk2-engines-pixbuf_2.12.7-1+0mu_i386.deb
% echo libgtk2.0-0_2.12.7-1+0mu_i386.deb hold | sudo dpkg --set-selections
% echo libgtk2.0-dev_2.12.7-1+0mu_i386.deb hold | sudo dpkg --set-selections
% echo gtk2-engines-pixbuf_2.12.7-1+0mu_i386.deb hold | sudo dpkg --set-selections

Finally restart any gtk+ programs you want to use your freshly updated gtk+ library.

(1 Comments ) (0 Trackbacks) debian freesoftware gtk+ quilt

Inplace Tooltips vs. Aptitude Posted 2008.02.06 20:42 PST

A long time ago I started work to port my rudimentary treeview hack from its TreeViewHints python implementation in Quod Libet to a much more solid inplace-tooltips implementation in gtk+ itself. Inplace-tooltips are the little tips that appear as you move your cursor over items that aren't fully visible, and often appear immediately instead of after a hover delay.

For whatever reasons the patch has neither been nurtured and accepted nor denied, and has languished for most of the 19 months since I first filed the feature request. I personally suspect things varying from confusion over the term tooltips being in the name to malevolent negligence, but claiming either of those doesn't help the situation anyway.

Eight months ago I found a much better approach to it, which wrangled out some superficial bugs for free, and updated the patch. Finally over the past two weeks, I found that Debian's gtk+ package had changed its build procedure, and this time was able to figure out how to integrate my patch. Wow, what a difference it makes to use it full time. In under two weeks I'd found and filled some important gaps in my initial implementations, including fixing the tip's position when a tree is scrolled horizontally.

But building my own Debian packages comes at a price. Not only does it take significant time to build the packages, there are three options each with disadvantages.

By applying just the code patch I get all the behavior changes I long as I don't run a package update. If I run a package update, the original libgtk2.0-0 package takes precedence over my package, and offers to reinstall.

When Ubuntu makes packages, they apply a suffix to ensure that Debian's packages of the same version do not override theirs, but a newer Debian package can (so long as all dependencies are satisfied). This prevents the official package from overwriting my patched packages. However doing this causes the policy of my package to move past the testing archive and into the limbo which pulls in packages from unstable. It also requires I install some auxiliary packages due to tight version dependencies in the core gtk+ related packages.

An epoch is a special version indication that would let me continue to call my package by the same version the rest of gtk+ does, but tell the package management system it's newer than the official package. Assuming Debian never needs to bump their epoch, this would insulate me from the testing–>unstable bump, as my packages would always be even newer than the ones in unstable. However because of that it would be much harder to track when it was time to upgrade my own packages.

Currently I gave up on the first, and am still trying the second. I've run into one major hitch: aptitude doesn't work how I want it to. In particular I'm running with my suffixed package version 2.12.5-2+0mu, and unstable now has 2.12.7-1:

% apt-cache policy libgtk2.0-0
  Installed: 2.12.5-2+0mu
  Candidate: 2.12.7-1
  Version table:
     2.12.7-1 0
        601 unstable/main Packages
 *** 2.12.5-2+0mu 0
        100 /var/lib/dpkg/status
     2.12.5-2 0
        900 testing/main Packages

Because I'm beyond testing (which I have as my default), apt and aptitude want to attempt to keep me at unstable (my fallback) because it appears that's where I was before the update. I'm not ready to make this leap; I want to make it when 2.12.7 reaches testing. So I employ the next trick in the book: hold.

Hold is supposed to tell aptitude to ignore this package during normal upgrades until I explicitly tell it to install a newer version. But it just doesn't work. If you visit aptitude's bug page and search for hold it becomes obvious that there have been lots of problems with hold, and most of them are still unresolved. Most of them have to do with synchronizing aptitude's list of holds with dselect (and apt's) list. But if that were all, I could work around it. Instead aptitude doesn't even follow its own holds:

% dpkg --get-selections | egrep 'gtk2-engines-pixbuf|libgtk2.0-0|libgtk2.0-dev'
gtk2-engines-pixbuf				hold
libgtk2.0-0					hold
libgtk2.0-dev					hold
% sudo aptitude unhold gtk2-engines-pixbuf libgtk2.0-0 libgtk2.0-dev
% sudo aptitude hold gtk2-engines-pixbuf libgtk2.0-0 libgtk2.0-dev  
% sudo aptitude safe-upgrade
The following packages will be upgraded:
  gtk2-engines-pixbuf libgtk2.0-0 libgtk2.0-dev 
3 packages upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
Need to get 6061kB of archives. After unpacking 12.3kB will be used.
Do you want to continue? [Y/n/?] n

Now that I've seen this sloppy behavior among others, and seen just how many long standing bugs there are against aptitude, I think it's time to go back to dselect, apt-get, and deborphan. Too bad; aptitude seemed like a good idea at the time.

(0 Comments ) (1 Trackbacks) debian freesoftware gtk+

Bento: week 4 Posted 2008.02.04 20:49 PST

Four weeks already? I wonder if I'm counting weeks into 2008, or weeks into bento...


Monday I mostly finished off left-overs, but treated myself to some sliced cucumber this time. The ume is grand, as was the stir-fry. It's kinda funny that all these years I've disliked smaller onions because I was cooking dinner for three or four people. But now that I'm cooking lunch for one, they're perfect. Also, instead of my usual two-egg tamago-yaki, I made a three-egg because there were three eggs left in the carton. That'll save me some time tomorrow.


This miso-chicken over rice on Tuesday was awesome. There's nothing like upping the flavor of cooked chicken with a little miso. But I'm out of my usual add-ins, so this bento was a little more boring than usual after the chicken.


Wednesday was this week's bean day! Nothing special to report. Except that I'm still out of my usual add-ins; maybe I'll stop at a store and pick something up... I pulled some fruit out of the freezer this morning, and while it does wonders for the fruit's appearance, it's certainly much less convenient.


Time for a change - enough rice bentos! Thursday I made a soba bento, inspired by poor memory of yakisoba recipes, and made without consulting any. It was tasty goodness, but I don't have a clue how close it was to a real yakisoba. Probably almost nothing like it, really. Since it was snowing something fierce, I didn't head to any good bento supply stores on the way home.


Vacation! After the wonderful drive home Thursday night, slip sliding around on snowy roads, I wasn't particularly interested in going to work. I worked from home, and was too lazy to make a bento. Perhaps four a week is better for me. As I write this the following Monday, they're talking about a reprise of the snow storm Tuesday-Wednesday. Lucky us!

(0 Comments ) (0 Trackbacks) bento