• A Chipmunk Story

    I was sitting in my living room a few days ago when my cat, Corran, wandered over and started playing with his chipmunk toy.  He was having fun, so I watched him play for a few moments … until I remembered that we don’t have a chipmunk toy.

    He was playing with an actual, dead chipmunk!  I took the “toy” away from him, and I thought that was that.

    A few hours later, I happened to glance inside my home office while walking upstairs.  Inside, I saw three little shapes lying in the shadows.  My first thought was that this was a dead chipmunk family.  I took a moment to brace myself before reaching for a light switch …

    … and I have never felt so relieved at finding dog poop on the floor!


  • Corran Pawing at Monitor


  • Profiling Linux Kernel Modules

    Code profiling is a useful technique to help find what sections of code that might be written inefficiently.  Profiling a usperspace application is well documented, but I had to piece together the process for profiling a Linux kernel module.  Here is how you do it:

    1. Make sure the oprofile package is installed on your system.  For Archlinux:
      $ pacman -Ss oprofile
      community/oprofile 1.0.0-1 [installed]
          System-wide profiler for Linux systems
    2. Set the necessary kernel .config options to enable profiling support:
      CONFIG_PROFILING=y
      CONFIG_OPROFILE=y
    3. Compile, install, and boot into the new kernel.  Oprofile uses the decompressed vmlinux image from the root of your kernel source directory to properly count kernel function calls, so make sure the machine you are testing on has access to this file:
      $ ls linux/
      arch/
      block/
      ...
      System.map
      vmlinux*  #
    4. Tell oprofile to start collecting data on the entire system.  The –vmlinux option is used to point operf to the vmlinux file from the previous step:
      $ sudo operf --system-wide --vmlinux=/boot/vmlinux-3.19.0-rc5-ARCH+

      The operf daemon will then collect data for both kernel and user level code.  You can narrow down what you are interested in using the –events option, so if you only want kernel statistics:

      $ sudo operf --system-wide --vmlinux=/boot/vmlinux-3.19.0-rc5-ARCH+ --events CPU_CLK_UNHALTED:900000:0:1:0
    5. Run your test and then stop the operf daemon.
    6. Use the opreport tool to view profiling results.  The –image-path option is needed to tell opreport where to look for modules:
      $ sudo opreport --image-path=/usr/lib/modules/3.19.0-rc5-ARCH+ -l
      samples  %       image name                app name  symbol name
      3184     2.5018  vmlinux-3.19.0-rc5-ARCH+  0:1H      memcpy
      2025     1.5912  vmlinux-3.19.0-rc5-ARCH+  1:1H      memcpy
      1426     1.1205  vmlinux-3.19.0-rc5-ARCH+  fsx       copy_user_enhanced_fast_string
      1264     0.9932  nfs.ko                    0:2       nfs_page_group_sync_on_bit
      1140     0.8958  vmlinux-3.19.0-rc5-ARCH+  fsx       _raw_spin_lock
      871      0.6844  vmlinux-3.19.0-rc5-ARCH+  0:1H      _raw_spin_lock
      800      0.6286  virtio_ring.ko            0:1H      virtqueue_get_buf
      714      0.5610  nfs.ko                    0:2       nfs_page_group_lock
      686      0.5390  vmlinux-3.19.0-rc5-ARCH+  fsx       get_page_from_freelist
      677      0.5320  vmlinux-3.19.0-rc5-ARCH+  0:1H      pvclock_clocksource_read

  • Ocarina 6.3

    I officially released Ocarina 6.3 this morning!  Changes include:

    • Improve unit tests.
    • Finish up Doxygen documentation for core/.
    • Separate tag database into multiple files.
    • Move Gstreamer from core/ to gui/.
    • Various gui code cleanups.

    The most interesting change this release is probably the gstreamer move.  Ocarina 6.2 added an audio “driver” interface to allow for faking playback when running unit tests.  This release takes the concept one step farther and moves all of gstreamer into the gui, simplifying many things.  My hope is that this will make it easier to port Ocarina to Android or OS X in the future.

    Ocarina 6.3 can be downloaded here.


  • Pepper Jack

    Pepper Jack

    Pepper jack cheese is basically Monterey jack with extra peppers mixed in.  I mixed up some jalapeño and red pepper flakes and worked them into the cheese before pressing.  This cheese needs to age until late November before it can be enjoyed.

     


  • Ocarina 6.2

    After over 4 months of development, I have finally released Ocarina 6.2!  If you’re hoping for flashy new interfaces or new features then you’re out of luck.  Most of my work this release involved splitting my GUI code into two different layers – one for controlling the actual GUI and another for GTK support code.

    This release also adds in doxygen comments for almost everything in core/.  My eventual goal here is to convert my DESIGN text file into higher level notes about the design while the code contains the documentation for each function.

    Ocarina 6.2 can be downloaded here.


  • Garlic Tomato Mozzarella

    wpid-wp-1413218714341.jpeg
    Mozzarella with sun-dried tomatoes, garlic, and truffle salt.

  • Apple Picking at Wasem Fruit Farm!

    Apple Picking at Wasem Fruit Farm!

    Ruby and I went apple picking at Wasem fruit farm with a group of my friends this afternoon.  She seemed to enjoy herself, and I got to come home with a big bag of apples!

    I brought my Nikon camera with me since I don’t take enough pictures.  It was really sunny all afternoon, so I used a UV filter to take these photos.  Note that you can click each picture to see larger versions.


  • Cheddar

    Cheddar is the most time-consuming cheese that I’ve made so far.  I’ve made two now, and both times required about 9 hours of work before I could let it sit in the press.

    What sets Cheddar apart from other cheeses is the “cheddaring” process, which pushes out as much whey as possible out of the cheese curd.  This process makes for a very firm, dry (hard) cheese.  Here is how it works:  formed cheese curds are cut into “slabs” and layered on the bottom of the pot.  The slabs are flipped every 15 minutes to push as much whey as possible out of the bottom of the stack.  After 90 minutes, the stacks are milled into 1/2 inch cubes and heated again to push out even more whey.

    At this point the cheese curds are very firm and rubbery, and must be pressed for about 36 hours to remove more whey and so the cubes can merge together.  The exterior of the cheese was bumpy, which I’m not used to seeing.  I’ve decided not to worry, since the interior was fairly smooth and solid.  Cheddar needs to age for at least three months, so I won’t know how it really turned out until the beginning of December.

    Next cheese: Havarti!


  • Yogurt Cream Cheese

    Yogurt cream cheese is actually really easy to make.  Here is what you do:

    1.  Start with one quart of plain yogurt.  I assume that a flavored yogurt will result in flavored cream cheese, but I haven’t tried it.
    Yogurt to turn into cream cheese.
    1.  Pour the yogurt into clean cheesecloth or a linen towel.  I put mine into a pot of boiling water first, to kill off any extra bacteria.
    Yogurt poured into sterile cheesecloth.
    1.  Hang the cheesecloth somewhere to drain at room temperature for about 12 hours.
    Cheesecloth tied into a bag and hung over a sink to drain.
    1.  Unwrap and enjoy your cream cheese!
    Yogurt cream cheese.
    Yogurt cream cheese.