Wednesday, July 22, 2015

Riding bikes: zero to sixty in one day

We've been trying to get our boys to learn to ride their bicycles for years. They never really liked riding with training wheels, and when we took away the training wheels, they wanted them back. (That didn't happen.)

When we lived in Magnolia, Andrea and I took the boys to the Discovery Park basketball court to learn to ride a few feet. Jacob dug his heels in so far that it took convincing Reed to ride to motivate Jake to try it. They each rode unassisted for a few feet before promptly declaring their retirement from the sport.

A couple weekends ago, when Andrea was away for the day with one of her clients, I decided we'd take some baby steps toward riding bikes. I was so committed to baby steps, in fact, that I told them they'd only be riding a few feet. I drew a start line and the finish line. By the time Jacob saw how short a distance he'd have to go (which apparently was motivating for him), he decided he'd write the word "FINISH."

As I'm sure is the case with most kids learning to ride, his body tensed up and he began to shake when he mounted his bike (which, by the way, he named Sophie). I told him that he would only have to try it, I'd help him, and he'd have to go no farther than the finish line.

He made it across once with me holding the bicycle seat the whole time. We returned to the start and did it again. And by the third time, I was able to let go for a fraction of a second. By then, he was so terrified that he declared he was done and went inside to read. Then he and Reed decided they wanted to go to the store on their scooters.

Maybe it was the three mile round-trip on scooters that made them see the folly of their scooting ways. Maybe the painfully slow uphill trek. Maybe Reed's exhaustion that required I backpack his scooter and try to ride with him on the seat and me dangling precariously off the edge of my seat. Or maybe just the incredibly small successes earlier in the day that had time to reassure him. Either way, not long after we got home -- and after Andrea had returned -- Jacob was ready for another go on his bike. Our second round of the day went from a second or two of solo riding to twenty feet to nearly the length of our street with an unassisted, controlled stop. 

It was an unqualified success -- so much so that a few minutes later, when I went inside for some water, Reed came inside looking for his helmet and exclaimed, "Jacob's going to help me learn to ride my bike!"

As exciting and heartwarming as that was -- not only because of the brotherly love from both sides but also because Jacob was so quickly turned around on his opinion of bikes -- I figured he wasn't ready to help his brother. I returned outside and ran Reed through the same process. After he was able to do the same, Andrea and I called the grandparents to let them know of our major breakthrough.

While on the phone -- and without any help from us -- they had both learned on their own to start from no momentum, to ride around in circles, and even to control their balance while riding uphill.

Tuesday, June 16, 2015

Don't punt parenting to teachers

As with many big companies, we have many non- or tangentially-work-related distribution lists. On one of those lists, someone yesterday asked this (paraphrased) question:
I have a two-year-old. How and when do I decide what education to give my child (public vs private; Montessori vs traditional; etc.)?
And because this person made it clear that they were soliciting any advice, I chimed in. Here is my verbatim response:

Okay, since you are soliciting any advice, I’ll go on my tirade, starting off with: Don’t fret.

“The study found that low-income students from urban public high schools generally did as well academically and on long-term indicators as their peers from private high schools, once key family background characteristics were considered," according to the findings. [emphasis mine]

I believe many studies show that genetics and family involvement are the biggest factors in students’ success. Which teachers your child has aren’t nearly as important. After all, your child will spend a few hours each day with a teacher, but he or she is spending much more with you. That said, this may change as kids get older and their peers become their bigger influences instead of Mom and Dad.

So for your two year old, just try your best every day. That doesn’t mean you have to do your best, just keep on trying to do well J

FWIW, my focuses (caveat emptor!) have been on:
  •  reading to my kids early and often (language skills, vocabulary), making sure they’re following along (“How many dwarves are in Bilbo’s house? Who do you think is at the door this time?”)
  • building emotional intelligence (when reading books or watching movies, stopping to ask, “What just happened? How do you think that makes so-and-so feel?”)
  • working on imagination, self-reliance, and a connection with nature; I really enjoyed Last Child In The Woods)

Perhaps not Dear Abby-caliber, but while I'm not an expert in real life, I do play one on email lists.

Today, another non-expert responded with, among other blasé comments, this scathing rebuttal to my email:
I disagree with Adam, as with my schedule my child often spends 10 hours a day with his teachers. It’s important to me that the time they spend with him is positive and will help in authentic ways. 
This person didn't say how old their child is, but if you assume somewhere in the 7-12 year range, they should be getting 10-11 hours of sleep per night. This means your 7-12 year old who is with their teacher 10 hours each day is spending less than 30% of their waking weekdays with you.

But then there's TV. A few years ago, Nielsen noted that kids 6-11 get an average of 28 hours per week of screen time. It's only that low for this age bracket "due in part that they are more likely to be attending school for longer hours." So if you assume a heavy skew toward the weekend -- nine hours on each of Saturday and Sunday and "only" two hours each weekday, that 30% of waking time drops to 15%.

When Andrea was a teacher in Minnesota, she regularly told me of parents from the Catholic school that were on either end of the spectrum. Some were so heavily invested in their kids -- perhaps in large part because they were shelling out money for a private education -- that they knew all the teachers, knew their kids' classmates, and were involved in the classroom. Others apparently felt that the tuition they paid gave them a free ride to punt their responsibilities to the school. "My Timmy is so talented, I just hope you can see it. What are you doing to make sure he succeeds?"

If your kid is in school for ten hours each day, and if you don't think your parental involvement (or lack thereof) is still the biggest influence (along with genetics) on your child's success in school and in life, then you're doing it wrong.

Sunday, May 17, 2015

Flambe: a retrospective

When I was a kid, my Mom kept all of her recipes either in her head or on hand-written 3x5 cards in the cupboard. Over time, she got organized and put everything into some software for Mac called Mangia.

Years later, in the early 2000s, she found that Mangia was discontinued, and all of her recipes were stuck there. Being a computer science student at the time, it either fell on me or I volunteered to come up with something better.

I spent entirely too many hours writing what I planned to be the Next Great Recipe Program, Flambé, with the ability to share recipes online and request recipes from the worldwide community of cooking enthusiasts. I endeavored into writing clever spiders that would collect tens or hundreds of thousands of recipes from other online databases. (To this day, I still have several zip files hundreds of megabytes in size containing gathered recipes.) I wrote interesting regular expressions to be able to split an ingredient such as "1T brown sugar, packed (optional)" into constituent components quantity (1), unit (T), item (brown sugar), remarks (packed) and isOptional (true). I put many of these recipes online on a searchable database for anyone to use, either with the program or without.

Dat splash screen

I spent hundreds of hours doing this in part because I really enjoy cooking. I have fond memories of helping Mom in the kitchen with chocolate chip cookies, no bake cookies, peanut butter cookies (my favorite as a child), and more, and I still love spending time in the kitchen.

Just the same, my program kind of sucked. I focused heavily on features that weren't really that useful. (Peer-to-peer sharing of recipes via an HTTP server built into the program? What was I thinking?) So it comes as no surprise that the worldwide community of enthusiasts never showed up. My program was used pretty much exclusively by my immediate family. But I did learn a good deal and had a good time doing it.

Every now and then, though, my brother would email me asking how he could upload a recipe to my online database, or whether I have this or that recipe. He's the last known user of my terrible software, so rather than hasten the death of Flambé (which quite possibly is the correct path), I decided to drag it on by whipping up a "quick" revised version that has the core functionality.

While Flambé never really went anywhere, I was fortunate to work on a project at work this spring for the OneNote team in which we make it extremely easy to save recipes from websites into your OneNote notebook of choice. Maybe there's hope for my recipe-sharing utopian dream yet.

Tuesday, March 31, 2015

Fresh laser-cut flowers

When we went to Las Vegas back in 2006, one of the souvenirs we bought Andrea was a light switch plate from the Bellagio with her favorite flower, a hydrangea. This plate was a fixture in our bathroom from the day we returned until the day we moved to Seattle.

Unfortunately, our new house uses the larger 'rocker' style light switch instead of the traditional toggle, so this face plate is relegated to our junk drawer. Enter The Garage, where yet again, I am etching metal. This time around, I went a little more deliberate than the douglas fir face plate.

I started with an outline of a hydrangea I found online. Using the rocker template I whipped up, I reduced the complexity and, more importantly, the area required for the laser to hit. The resulting file was about what I planned to cut:

The final cut took under ten minutes.

The result was pretty good, though I neglected a bit of offset at the top, and some of the details on the leaves didn't get cut.

Monday, March 23, 2015

Graduating to lasering metal

Several years ago -- probably before Jacob was born -- my dad dabbled in the making of knives using very hard bimetallic blades, some Corian for the handle, and heavy gauge copper as a plug. He worked with me to make my own, which Andrea and I kept in regular use in our kitchen.

I decided to take this blade to The Garage and etch Dad's signature into the blade using some fairly high-res signatures he sent me. The resulting etching turned out rather well:

I also had an extra single gang lightswitch plate, so I grabbed an image of a Douglas Fir from the flag of Cascadia; scaled, transposed, trimmed and aligned the image to the dimensions of the wall plate. The cut turned out relatively clear, and I installed it in my office at home:

Bonus points to those of you that recognize my first attempt at etching metal.

Monday, February 16, 2015

Journaling: Because you forget stuff

When my brother went to China in 2013, he bought a beautiful leather-bound notebook for me. At the time, I didn't really know what to do with it; I draw terribly, and I don't write much. I decided, however, to use it as a (nearly) daily log of anything for which I could look back on positively. I occasionally flip through my notebook -- now about half filled -- to find things I am thankful for, progress I've made on goals or around the house, or good times I've had with our boys.

One thing I've noticed, though, is that I am often too lazy to write every day, no matter how much I want to. I have tried and am still trying different ways of outsmarting myself, such as leaving the journal on my pillow so I have to consciously set it aside before bed. Nonetheless, I occasionally find myself behind by a week or more.

While I still plan to write every day, as one of my goals of doing more software development for fun, I coded up a hastily-written, hastily-named, lightweight application and put it up on GitHub: Journal Today, which lets you write daily notes about... whatever.

The first version exe can be found here: (361kb). The program will create a SQLite database to store your notes. The entire package is small enough to be kept on your OneDrive, Google Drive, Dropbox, or what have you. (373kb) now uses DateTimes internally for better date calculations.

Friday, November 7, 2014

Pew pew meets vroom vroom

Continuing my mostly pointless exploits with Microsoft's Epilog laser, I spent a bit of time last night experimenting with etching some leather scraps my folks sent me. Using the worst piece in the lot, I started some dog identification tags for our newly-adopted rescue, calibrating the speed and power to etch and cut... well enough.

Turns out cutting leather with a laser is possible, but it burns the sides pretty good. I ended up doing the cut on lower power and using an X ACTO knife to finish it. This proved quite difficult to do cleanly with the hole. Overall, it turned out pretty well.

I thought it would also be neat to make myself a new keychain for my motorcycle, so I did a quick search and came up with this guy:

Very clean, no gradients, one color, and a rather large image, to boot. I then used the open source Potrace to turn it into a vector image. The resulting SVG contained seven groups -- one for each letter and another for the logo's shape. In Visio -- the software we use for sending print jobs to the laser -- I was able to easily dispatch the letters, change the fill and line width in the logo, and I was left with a very simple SVG that contained a single path that looks something like this:

<path d="M4735 9954 c-253 -19 ... 160 2z"/>

The relevant components of the SVG specification are the "moveto" command ("M") and the "closepath" ("Z"). Looking at the full text of the path, there are actually three polygons. Expanding the XML a little, you see the following:

<path d="M4735 9954...-1020 18z m955 -288...965 -14z m3340 -3685...160 2z"/>

This is a single path with multiple polygons. This first polygon represents the overall guitar-pick-shape. The second is the upper space in which the text resides, and the last polygon is the lower space. I simply deleted the second two polygons and was left with a very clean vector representing what would become the shape of my cutout.

Adding the image back, sizing and aligning them gives the final image to be sent to the laser.

The vector border is set to a very thin (basically zero-width) line that the laser interprets as a cut, whereas the rest of the logo is rasterized and is done as an etch.

After a test run on a higher power, I brought it back a bit and ran the final job.

Another X ACTO cut gave me the raw piece.

With a reasonable hole punched out, it's ready for use.