Using a Logitech Touchpad as a light switch for Philips Hue light bulbs

March 25th, 2016

Our nursery lacked any light switches but did have some wall sconces.  As part of redecorating the room prior to making it a nursery back in 2013, I replaced the old sconces with some newer ones from Rejuvenation and installed a set of three Philips Hue light bulbs.  As Philips did not yet have a good remote lightswitch (which they’ve recently released), I had to hack together something to allow the bulbs to be controlled by a switch near the door.

My first attempt was to use an X10 wireless RF wall switch through an Insteon PowerLinc USB gateway to some custom python software, but this was quite flakey as I’ve had bad luck getting the PowerLinc to reliably send me signals for extended periods of time, plus this relies on X10 which is fairly unreliable.  (This used the crazy control path of a button push resulting in X10-over-RF to  X10-over-powerline to USB to an HTTP-over-ethernet request to the Hue hub to ZigBee RF to the bulbs.)

Even from the beginning, I also setup an experiment (which has worked quite well) of having a cron job run every few minutes and update the color temperature of the lights based on the time of day — warm lighting in the evenings and cool “daylight” in the mornings.  This has worked quite well both for the Hue bulbs I have in my office as well as those in the nursery (and in the Lightstrip I’ve recently added above some windows in our living room).

Looking around for better ways to control the light bulbs, I had trouble finding any sorts of reasonably priced RF switches with long battery life and a robust way to get control information to a Linux machine (my preferred gateway to my home automation).

What I did find was the “Logitech Wireless Touchpad with Multi-Touch Navigation” which was $25 at the time:

I have software running on my Linux machine that reads this as a USB Input device and then sends out commands to the bulbs via the Hue hub.  This gave me two mouse buttons (left and right) which I repurposed for “on” and “off”.  I was able to use the gestures as additional input control.  A single finger up/down gesture can be used to dim the lights.  Two fingers left/right adjust the color temperature of the lights (or the hue in color mode).  Finally, a “three finger up” gesture puts the lights into “dim red mode” which is particularly good when getting munchkins ready for bed or when stumbling into the nursery in the middle of the night.

Source code is available here on github, although it is meant as a starting point for someone wanting to play with this, and is NOT an easy-to-use off the shelf solution for someone not used to home automation hacking in python.  It relies  on isaackelly’s python-hue library.


The Rebel Alliance S-Wing “Mamaroo” Training Pod

March 19th, 2016
Shortly after our son was born back in 2013, we got a used Mamaroo swing for him.  The Mamaroo’s design looked enough like something out of a sci-fi movie that it inspired me to decorate it like a Star Wars X-Wing, cutting out the decorations using our Cricut.

S-Wing Training Pod

I designed the decals in Inkscape and then used Sure-Cuts-A-Lot to cut them out of repositionable adhesive-backed vinyl.  For the Rebel Alliance logo, I used an SVG off of the wikipedia page.

I cut some additional copies of the artwork and used it to decorate my laptop.

The svg and scut2 files are available here for anyone who is interested in using them.

Building a Little Helper Tower

September 27th, 2014

With our little munchkin now being very curious whenever we’re working in the kitchen, I decided to build him a Helping Tower based on plans from Ana White.  I haven’t done many woodworking projects in awhile, and certainly none of a larger size where finish quality mattered.  The end result came out quite nicely and is being enjoyed so far:


Given the amount of time that would be involved in making it, I decided to use maple which also better matches the other furniture we have in our kitchen.  I ended up making a bunch of modifications to the plans:

  • Due to the stock available, the corner posts ended up being 2×2′s and other dimensions were adjusted accordingly.  I had to make adjustments to a few other pieces as well based on the stock that was available at Anderson McQuaid.
  • Based on someone else’s idea, I also put in slats to allow the adjustable platform to be moved up to be a counter-height high chair.  I will need to put in safety straps before using it this way, however.
  • I routed the top to give it a more finished look.  I also made more decorative feet to match the feet I added to our kitchen nook table a few years back.
  • The anti-tip feed on the side facing the counter can fold inwards to allow it to get closet in to the island.

I used a Kreg Jig for the first time to create the pocket holes and it worked very nicely and made assembly fairly straight-forward.  Clamping in-place prior to screwing in turned out to be critical.  The end result is quite sturdy.

More photos are here.

The tower is finished with Zar’s Honey Maple and then three coats of General Finishing’s Toy Maker’s Finish.

Read the rest of this entry »

Making a board book inspired by the Hobbit

June 8th, 2014

(For pictures of all of the pages, click here.)

Shortly after my son was born I found that I was spending large amounts of time singing tunes and reading poems out of “board books” for children.  For the uninitiated, a board book is a book for babies printed on thick paperboard.  This makes it easy for little fingers to turn, but also hard for them to tear.  In addition to reading many old classics (such as Goodnight Moon and Sandra Boynton’s The Going-To-Bed Book), I also looked for other types of “classics” to introduce.  I ordered a copy of Poems from The Hobbit, a wonderful collection of Tolkein’s poems from The Hobbit.  However, its 3″ square form factor with thin pages made it not the best book for a small baby.  While local stores such as Magpie Kids had board books like the Cozy Classics version of Pride and Prejudice, they had little to no sci-fi or fantasy for babies.  This inspired me to make a board book of Bilbo’s Old Walking Song (“Roads Go Ever On”) out of the Hobbit.

After working on it off-and-on for a few months, the finished copy finally arrived in the mail:

finished board book of Roads Go Ever On

Each page has a few lines from the poem over an (often heavily touched-up) photo, generally of a road going somewhere.  All of the photos are from my various travels and are of places including from Maine, Portugal, Croatia, Washington State, Hawaii, Russia, New Hampshire, and finally near my own childhood home in California.  I’d considered doing some other form of artwork such as watercolor, but this seemed like a good use of photos that I’ve taken over the years and also means that I can tell a story with each one as my son gets older.  I edited some of the photos to look a little more like illustrations, but I also didn’t want to go over-the-top here.  The cover is actually a composite of three separate photos.  The full set of images on each of the pages is here if you’d like to see the full book. Here is a sample page spread:

page five

I used Inkscape to do composition of the pages, gimp to do photo editing, the Ringerbearer font, and then exported them to pdf files for printing.  I did change one word in the poem (“horror” to “darkness”) as this seemed a little more appropriate for a young child’s book. Pint Size Productions did the printing and did a great job.  If you would like to print your own copy for private and non-commercial use, you can download this zip file of the PDFs and upload it to Pint Size Productions.

IPv6 by the numbers: strong growth in second half of 2013

March 4th, 2014

See my new work blog post. Excerpt:

No longer is IPv6 “just around the corner”. It’s here. In the half-year following when I last wrote about our measurements of IPv6 adoption, many of the metrics we were tracking have doubled. This is in large part due to increased adoption of IPv6 by residential broadband networks in the U.S.A. and Germany. As of December 2013, we were serving over 20 billion IPv6 requests per day, double the 10 billion per day delivered just six months prior.

Launching Forward with IPv6

May 31st, 2012

See my work blog post:

Launching Forward with IPv6


With the era of freely available IPv4 addresses nearing its end, I’m pleased to see that 2012 appears to be the year when the IPv6 Internet will finally reach maturity and launch into wide-scale commercial use.  For over a decade, the groundwork for the migration to version 6 of the Internet Protocol (IPv6) has been built, with changes to operating systems, client and server software, routers, and Internet backbone networks.  To-date, however, the availability of IPv6 content and end-users has remained slim with few Web sites being available over IPv6 and with just over 0.5% of global Internet users having IPv6 connectivity that their machines will elect to use.


Norse plaque inspired by an old fireback

May 14th, 2012

Ever since my early childhood I have fond memories of going to Camp Happy, my great aunt and uncles summer home up in Door County, Wisconsin.  The home was supposedly built as a replica of a hunting lodge from the Old World.  Installed above the fireplace was a wonderful bronze relief with a Norse design.  A viking ship tosses on a stormy sea below shields likely representing Thor and Odin, and two serpents form the border.  I have many wonderful memories of family up at Camp Happy; watching the sunset over the great lakes, eating out on the screened-in porch, walking through the woods out to High Bluff, but especially relaxing and talking into the night in the fire-lit living room.

For years I’ve had a desire to make a replica of the bronze plaque above the fireplace mantle, so last year I started on the project.  While I wanted to get an end result that was very close in style, I wasn’t aiming to end up with an exact copy.  After about six months of working on-and-off on the project in some spare time over the weekends, I was successful.  Here’s the final version installed next to my parents’ fireplace in California:

The completed plaque installed on my parents' fireplace.

To give some context, below is the original plaque installed in Camp Happy’s fireplace mantle.  While I’m not sure of its origin story, one possibility is that it is a bronze casting of cast iron fireplace fireback.

Read more to hear about the process I followed to create this.

Read the rest of this entry »

Experimenting with Cricut-assisted leather tooling

May 15th, 2011

Gears design, cut on the cricut and tooled.

Recently, our friends Ariel and Andy inspired me to try using the Cricut (a 2D cutting plotter that can be controlled with third-party software called Sure-Cuts-A-Lot) to assist in leather-tooling and provided some leather scraps to try with.  (I’d tried with the wrong type of leader before without useful effect.  Ariel suggested that it is necessary to use tooling leather.)

Of the various leather scraps I tried, it appears necessary to use reasonably thin “tooling leather” with the deep-cut blade holder.  The normal blade holder doesn’t provide enough clearance (this seems to be one major difference between them).  Setting the blade to a depth of around 4-5 seems to work fine (I haven’t extensively tried other depths).  In addition to using the deep-cut blade, I also tried using a modified bit that I made (from sawing down a nail of the same diameter of the Cricut blades) and it seems to score the leather somewhat in a way that can come out better with a wash.

Fleur-de-lis pattern before coloring.

I tried two patterns to experiment with: for the first one I used a fleur-de-lis pattern built into the Cricut.  For the second pattern, I used a Steampunk-style gears design that I put together in Inkscape.  For the very small patterns, just holding the leather to the Cricut’s cutting mat worked ok.  For the larger pattern, the leather wouldn’t hold effectively.  After trying a few glues (rubber cement, superglue) which didn’t work, I tried stapling the leather to a worn cutting mat.  That seems to actually work reasonably well, although it’s important to ensure the staple doesn’t get caught in the Cricut’s mechanism.  The biggest problem that I encountered was that the Cricut appears to lose registration for complex leather patterns, possibly due to the thickness of the leather interfering with the in-and-out rolling distance movement assumptions, or due to the mat shifting due to the leather scrap not having uniform thickness.  I will need to experiment a few more times, although I’ll need to get more large scraps first.

Following cutting the designs into the leather, I used a mixture of tools to work the leather after spraying it with water.  In addition to the basic Tandy leather tools, I also found that jewelry screwdrivers worked extremely well for tooling smaller parts of the design.  As this is my first attempt (and as the Cricut mat slipped a few times with the gears design), some parts didn’t work out as well as I’d hoped.

Following the cutting and the tooling, I then tried to color them.  For the fluer-de-lis pattern, I used a mixture of acrylic paint (Jo Sonja Burnt Umber) with antiquing medium and then wiped it off immediately.  I really like the result:

Fleur-de-lis after coloring. The pattern in the upper-left wasn't actually cut, but was embossed into the leather with my modified "nail bit" on the Cricut.

For the gears design, I then painted it using acrylic paints, also using some antiquing medium (and rubbing some of the darker color off).  Note that some of the gears pattern is off as the Cricut slipped and cut some things in the wrong places.

I’m going to have to play with making a few more other things with this technique.  I will need to find ways to minimize the impact of the Cricut slipping on the material.  In general, I think the more organic/natural/older designs may work better than something industrial such as gears.  At some point I’ll have to try making some larger pieces as well, although I have a few other projects that I need to work more on first.

Note: We seem to be using our Cricut for plenty of crafty projects, including many wedding projects.  I’ve recommended the Cricut that we have to a few people, but given that they are now suing the makers of the Sure-Cuts-A-Lot software that makes it useful to us, I can no longer recommend the Cricut.  It looks like there are a number of new entrants to this market since we got ours that are hopefully less litigious against people who make their devices actually useful, so we may explore getting one of those at some point.

Our wedding software

April 30th, 2011

When Ksusha and I got married, I decided to use it as an opportunity to write some software to manage all aspects of our wedding, from tracking guests and RSVPs to generating place cards for printing.  Given that half of the fun of wedding preparation (for us at least) was DIY projects, what better than to mix in a DIY software project?  You can see the public results of my efforts at (although most of the interesting features are hidden within the RSVP and admin interfaces).

After requests from a few friends, I finally got around to packaging up and posting this software as a starting-point for others (and you can download it here).  I’m releasing it under the MIT License, meaning you can pretty much do whatever you want with it as long as you don’t sue me, even if some bug somehow ruins your perfect day.

The djWed package is personal web-based wedding management software written in the Python Django web framework.  This is intended entirely as a starting point of code to develop from, and is not intended to be something that works out-of-the-box.  Rather, it is  software that you can hack to do what you want.

When writing software for your own wedding, one initially encounters a pleasant design constraint that is rarely encountered in software engineering: code designed to be used exactly once.  In fact, I intend to get married exactly once (now complete) and thus never use djWed ever again.

This meant that I took many short-cuts that I might not have otherwise taken, but which made sense for expediency.  For example, generating mass emails or PDF/PS output from SVG templates is fairly awkward.  However, it didn’t make sense for me to develop an elegant user experience for functions that would be executed exactly once by just one person.  Similarly, I hard-coded in that I’d have two wedding and reception venues (“MA” and “CA”) as that
simplified some code.  I was also much worse about documenting the code or developing regression or unit tests than I would have been if I was developing production software.

However, now that our wedding is finished, some friends have asked to use this code.  As such, these friends may need to live with the consequences of these decisions if they wish to start from this code base.  They will encounter many bugs, hacks, quirks, and perhaps even a few squirrels.  If you are one of these people, you are welcome to do the same as I did and adapt the code for your single use, or you can do cleanup to generalize this software so that it could more readily be used by others.  If you do clean it up and post it, let me know so I can link to it from here.

Some of the features included are:

  • Track guests and invitees (where each invitee may consist of multiple guests).
  • Each invitee has an “invite code” that they can use to login.
  • Invitees can update their contact information and leave comments.
  • Invitees can RSVP and select meals and other options.
  • Send mass emails to invitees with form-filling.
  • Web-based reports on RSVPs, meal selections, and more.
  • Spreadsheet exports of reports.
  • Gift and thank-you note tracking.
  • Generate mailing labels for invitees.
  • Table assignment tracking (but no automated table-assignments).
  • Multiple venue support (currently hard-coded at two venues in some places).
  • Integrated photo gallery using a modified version of Photologue that lets guests upload their photos.
  • Web-based editing of informational pages (HTML “page snippets”).
  • Initial import of guest information from a CSV spreadsheet.
  • Generation of printed materials from SVG templates, including:
    • Save-the-date cards with RSVP invite codes.
    • Personalized place cards (even including food selection)
    • Personalized RSVP cards
    • Personalized envelopes with artwork

Now that this is done, perhaps I’ll never need to look at this code again, although I have already reused some snippets from it for other projects.

At some point in the future, I may post some examples of printed materials generated, as well as some of the artwork we created.  (We have plenty of wedding DIY projects that I should go back and write-up here.)

Paskha mold: version 1.0

April 30th, 2011

Early Spring in our house is a time for cooking and crafts projects as we celebrate both Passover and (Russian) Easter.  Both of these holidays are great excuses to cook lots of tasty recipes that we learned from our parents and grandparents, and then to enjoy this food surrounded by friends and family.  This year was no exception, and was also the first year in over a decade when we were blessed to have my parents in-town for both holidays.

Back in Russia, one of Ksusha’s family traditions was to make Paskha and Kulich, and she has been making them here for Russian Easter for as long as I remember.  Both are very tasty!  Pascha is made from tvarog (similar to farmers cheese) with various other items such as brandied raisins mixed in.  Kulich is a cake similar to panettone (and even tastier from my biased viewpoint, causing me to pretend that Passover has ended a few days earlier than it actually ends).   To make the Paskha, Ksusha makes her own curd through a process involving whole milk, a bit of sour cream, a slow cooker, and then draining out the whey through cheese cloth.  To make the final Paskha, the curd (and other flavorings) is pressed into a specially-made box lined with cheese-cloth.

Alas, Ksusha’s family Paskha molds (“пасочница” or pasochnitsa) are back in Russia.  (A google image search shows some examples of some.)  As such, I’ve been meaning to make one for the past few years, so this year was my first try.

I used a mixture of 1/2″ and 1/4″ white ash from Rockler (both 5″ wide), as that’s what they had available.  I played with a few different design ideas initially, and then I made templates in qcad and then went down to the shop to make the parts.

In the end, I had two of the sides (with the routed grooves) be 1/2″ thick and the other two sides (with the tabs) were 1/4″ thick. I then used a dremel tool to carve designs into the wood.  One of the traditional designs is an Eastern Orthodox cross, and the other “XB” stands for “Christ has Risen”.  The resulting side panels:

The various pieces fit together by putting the tabs through the slots and then using the wood pins to hold everything together.  (One of the tabs broke when drilling a hole for a pin, but I was able to improvise.)  When assembled the box looks like:

After pressing the curd in the mold overnight, we removed it from the mold and while the Paskha was a little soft, it held its shape and the design were clearly visible.

In retrospect, I would have been better off making everything from 1/2″ thick pieces as the moisture caused the 1/4″ parts to warp (although I was able to flatten them back out by pressing them while wet under a heavy pot overnight).  I would also have been better off having the carvings higher on the pieces so that the press didn’t push the curd too close to the design.  We would also have been better off using a slightly more firm version of the curd, as this one was fairly liquid and required too many layers of cheese cloth (impacting the visibility of the patterns).

Next year we’ll have another Easter and I’ll make another version.

The final result of this effort was this year’s Paskha:

(Many thanks to my parents for taking some of the photos above while we were busy cooking and crafting away…)