Archive for the ‘General’ Category

Three Years Of Updates

Wednesday, August 30th, 2017

It’s been a super long time since I posted. I think it’s the second kid – the amount of free time really drops down when you don’t have free time when the one kid naps! Of course, it’s all been more than worth it.

Here’s a little glimpse into some of what’s happened in the last three years since 2014:

-I’m still doing much the same thing at work, but I’ve shifted back to a more individual contributor role, and not mostly management all the time. I still have a healthy mix. Ultimately, I get to feel like I really built something or solved a technical problem most days, and that’s the thing that keeps me motivated. So 2017 has been a good year at work as a result of this change.

-Evie is doing amazing. She starts kindergarten next week, and she couldn’t be more ready. Yesterday she used a little notebook and wrote a book about her life so far. No fear about any spelling mistakes, which is such a big improvement on confidence from even six months to a year ago. She’s an awesome kid and really fun to be around and play with. Her favorite new joke that she wrote all herself: “Why do cows love swimming in the waves?” – “Because waves are caused by the moooon.”. We just started watching Star Wars together and her excitement is a lot of fun.

-Grace is similarly lighting up our lives with her bubbly personality, kindness, and awareness for her age (3 and a half now). She is already a little mediator among all the family members, always sharing any food or toy she has, and often piping up just to say: “Daddy” or “Mommy”…. “I love you”. It just melts our hearts.

-I spent a lot of my free time the last three years playing Magic. As always, I get a lot out of having a cerebral hobby that I can really puzzle over all the time. I had a few good finishes which go on the ‘permanent’ record, which is cool. Also got one medium-sized tournament win which I saved the certificate for and framed. Overall, I won at about 55% which I’m happy with given that I seem to not really be a natural at it. It’s a bit on the downswing now with an increase in kids activities, and a diversification of hobbies in general. Not sure how much I’ll be into it going forward.

-I’ve been slowly getting into beer brewing; just made the third batch a couple months ago (Belgian Dubbel). It was ok – a little too hoppy, and we need a more consistent temperature and carbonation. But we’re not using any pieces of the Mr. Beer kit any more, so it feels more real. It’s fun to have something to improve on, and something that is a great conversation topic with lots of people in our lives.

Overall, things are going even better than they have any time in the past, especially with our little family of 4. Lots of positives and I feel very grateful for where we’re at in basically all aspects!

Crafting vs Untangling

Saturday, April 26th, 2014

One of the things I think a lot about during my day job is what motivates people to passion, particularly software developers working on a large integrated system. I’ve certainly learned a lot over the years about the differences between people’s worldviews and styles, and met many developers who derive their satisfaction from technical work in all kinds of ways that never would have even occurred to me.

The most interesting axis of differentiation I’ve run across is the spectrum between engineers who like to craft, build, and own new things on the one hand, and engineers who like to unravel deep and intricate mysteries on the other. These are not mutually exclusive, but I’ve found that everyone has a comfortable spot somewhere on the continuum where they can derive maximum joy from their time spent at work.

Build from scratch

Engineers who are fundamentally crafters have a similarity to the stereotype of a “startup developer” – the desire to be in on the ground floor, see the fruits of your labor, and have a big hand in the direction of a product. Pride of ownership is a big part of job satisfaction, and being publicly viewed as the creator of something is a deeply satisfying ego boost for these folks. They tend to enjoy demoing their feature and working with customers to implement it, even when those become long tasks that take them away from future programming.

Reveal the mystery

On the other hand, engineers who are problem solvers at heart find pride in their ability to understand what no one else can, and dig to the heart of an existing issue more quickly than other people. They can thrive on pressure and get their joy from the “aha” moments that happen in private, as another layer of the puzzle falls away and they reach deeper understanding. These folks can easily be happy doing systems programming on a large codebase, where there is complexity by the truckload for those with the desire to untangle it.

Be true to yourself

My (limited) experience has been that the majority of programmers fall into the first camp. The desire to craft brand new seems to spring naturally out of the engineering mindset, so this tends to be the comfortable mode of working for computer science students and new graduates. The ability to self-identify on this spectrum and choose work that best fits your personal bent is an under-appreciated talent that more software developers should spend time honing. I expect that reaching a better understanding of this concept would be helpful for most developers’ job satisfaction and avoid burnout or boredom that might otherwise be unexplained.

 

Neil Freeman’s “Electoral College Reform” Map

Sunday, March 3rd, 2013

A few weeks ago a pretty cool map popped up on the internet: it’s a redrawing of U.S. state lines to create fifty regions with equal population. The goal is to end the disparity between popular vote and electoral college vote, and normalize the value of each person’s individual vote in both presidential and congressional elections. You should check it out here if you haven’t seen it, it’s quite fascinating: http://fakeisthenewreal.org/reform/.

There are many things I like about this map. It’s drawn based on both population distribution and commute patterns, so few people will have to cross a state line to drive to work despite the massive redrawing. The state names are whimsical but logical, based mostly on landscape features whose names we don’t usually see in common usage at least in other parts of the country. “Big Thicket” and “Firelands” look like they come from a fantasy novel, while “Shenandoah” and “Atchafalaya” are compelling for their unusual lettering and sound. I can’t help but imagine the map as describing an alternate reality United States, where history and culture are divergent just like the state boundaries. How different would history have been if there were no Mason-Dixon line? What would happen to college and professional sports if the states were so sharply divided between rural and urban?

As much as I like the map (to be fair, I’m likely to buy the poster once it’s available), there are a few ways in which it bothers my inner nerd:

1. There’s no quadripoint; no equivalent of the “4-corners” intersection between Colorado, Utah, New Mexico, and Arizona. This is disappointing since it’s one of my favorite quirks of the current U. S. layout. Quadripoints seem to me impossibly unlikely without some human intervention in border definition, which the current U.S. layout certainly had a lot of (witness the presence of so many straight lines). I suppose it’s inevitable that a programmatically-generated map is almost certain to have few such quirks, but it feels like some amount of human expression is lost in the transition.

2. It removes the elegant game mechanic of the unequal distribution of voting power between the House and Senate. The current system, where large states get over-represented in the House and small states get over-represented in the Senate, has always struck me as a clever way to create interesting discussions about how different types of legislation benefit different subsections of the population. I really like that it leads to different value systems and platform distributions between the two houses; it seems like this would likely contribute to more thoughtful legislation in the bills that can pass both houses. If we instead tried to make each state equally well-represented in both houses, the only differentiator left would be the longer term length in the Senate.

 

Big stairs, little person

Monday, January 28th, 2013

Today I got to experience the joy of watching my baby girl climb stairs after dinner. This is one of my favorite things to do these days. I’m sure it will turn out to be just a phase for her and she’ll soon move on to other challenges, but right now she’s fascinated with learning the mechanics of the climb.

The thing that surprises me most is how much thought she puts into each movement. I had always generally assumed that babies just sort of ambled about randomly and only discovered how to crawl, walk, and climb by accident, but now I’m not so sure. In a scary environment where she understands that every move matters (don’t worry, I’m right there ready to catch her the whole time), she’s much more deliberate and thoughtful. When she gets herself stuck in a precarious position, she then has to think about what limb to move next and where to lean to get untangled. Those few seconds where she freezes and I can see her slightly shift her weight around test each handhold and foothold are a precious window into how much control and understanding she has of the way her body works and moves.

The immediate analogy that springs to mind in the Internet age is the online game QWOP. If you haven’t played it, go try it for a few minutes. I guarantee that it will make your day more interesting. To me it’s a powerful reminder of how impressive the human subconscious mind is and how much effort and calculation go into the everyday actions we don’t usually think about at all. To the conscious mind, an act like walking down the street is simple: one foot in front of the other. But this only works because the subconscious mind has learned through painstaking repetition how to move a dozen different muscles in a pattern that abstracts away the conscious mental concept “one foot forward”. Even before we’re old enough to begin to understand how we learn, we’ve already put thousands of hours into mastering an abundance of low-level skills that are just as deep and intricate as the trades, arts, and hobbies we usually spend our adult days thinking about.

It’s hard work being a baby. My daughter’s work ethic is rather stunning considering the relative scale of her movement and the amount of motor development she has to do. Imagine spending your entire day using and stretching muscles that are completely exhausted from being used and stretched the day before; it’s no surprise at all that babies can sleep like the dead every night for twelve hours and still nap twice a day. There’s a big difference between sitting and walking around with well-developed adult muscles and the baby-equivalent of training for a triathlon for six hours a day. Compared to what she goes through and how hard she pushes herself, even an exhausting day for me running around the office is easy stuff. If I worked as hard as she did, I’d get cranky around bedtime, too.

Check for write permission!

Tuesday, May 22nd, 2012

A few days ago I was making updates to my shopping list web app, reorganizing the pieces into a directory structure more logical than just “everything dumped in the top-level directory”.

After a quick round of updating all the file linking to point into the right subdirectories (including a few minutes of head-scratching to remember that I needed to prepend “..\” to hop between them), I had it partially working.

I went back and forth between the pre- and post-cleaned up revisions in git, and it seemed that no matter what I did, the cleanup broke all of my PHP scripts except the one that retrieved the list contents. All of the scripts that tried to modify the list (adding to it, removing from it, or modifying an entry) failed and didn’t do anything.

I double-checked that file paths were correct. I did copy-pasting between the working and non-working scripts to try to rule out possible causes. I even did as much line-by-line debugging as I could in Chrome, which wasn’t all that much since the failure was in the server-side PHP and not the client code.

Ultimately I had it narrowed down to a state where as far as I could tell, there was no logical difference between the retrieve script and the rest of the scripts; but still only the others failed.

Finally I realized my error:

Default permissions when I create a new folder under /Users/ in OS X

The new “/lists”  subdirectory that I had created could not be written to by the server process, because by default, new directories I create don’t have that permission flag set. So it ended up being not a code issue at all, just a directory configuration problem. Something to watch for!

Running Goals update: Fall 2011

Wednesday, November 9th, 2011

Pace graph for my longest-ever run

This fall I bumped up my max distance from about 4 miles (where I was last year) to over 5.5! I didn’t quite hit my goal of a sub-25-minute 5k, but I did get down to 25:28 which beat my previous best by about fifty seconds.

Overall I feel like I had a fairly successful running season, with slow and steady improvement throughout the year. My trick for longer runs has been listening to hour-long podcasts to keep my mind off the monotony. That got me over the hump into the 5+ mile range, and I feel like I’m now limited mostly by calf and knee soreness at the end of the long run.

Switching to forefoot striking earlier in the summer was a big help too, since I ran into basically no foot pain all year. I highly recommend trying it, even if you want to use normal running shoes (I’m not running in any special shoes, although my current shoes do have nice padding under the ball).

Soda + Keyboard

Monday, July 4th, 2011

A couple weeks ago I had a tragic accident involving a soda bottle that got too cold, and thus way too carbonated. I made the mistake of starting to open it while sitting at my computer, and it went everywhere.

The damage pattern on the keyboard was particularly interesting, because it had little correlation to which keys actually got hit with liquid. The main parts of the spill hit the kl;’ and Insert/Home/Delete/End areas, but those keys amazingly worked after being cleaned. Sadly, many others did not.

Everything circled in red was nonfunctional even after cleaning with soap + water and drying:

Keys circled in red were nonfunctional after being hit with soda

Fortunately, this keyboard is easily replaceable at at Best Buy for now. I wonder if I should buy a few extras for when it’s inevitably discontinued and more unfortunate accidents happen. Somehow, buying extras of a piece of current technology to use in the future seems wrong, though.

In case your curiosity is insatiable, it was a diet coke + vanilla mix. And it was delicious.

Supermoon

Saturday, March 19th, 2011

Today was an interesting day for astronomers: the moon is both full and at its perigee (closest point to the Earth), creating a “supermoon”. There’s apparently a whole mythos surrounding supermoons and the natural disasters they can cause.

The story going around the news this week is that this is the closest approach of the moon since 1993, setting tonight above normal every-other-year-ish supermoons (maybe creating a super-supermoon?). I’m not sure of the exact science but supposedly tonight’s moon is 14% brighter than the average full moon.

New telescope pointing at the moon

We got out the Newtonian telescope on the deck and checked it out – very good first use. We were able to see many of the craters really well, and get a much better science of the size of some of the rock formations there. It’s a little scary to see such massive chunks taken out of the moon and imagine what would happen if the Earth had an impact that big.

Too bad we can’t really see much else from our backyard in the city!

Windows 7 + Chrome: Trick to create application shortcuts

Sunday, March 6th, 2011

I posted a few months ago about Google’s push to make web apps easier to use and feel cleaner, but apparently I missed a key feature that’s been around in Chrome for a while: Tools -> “Create Application Shortcut”.

It allows you to pin a website to your Windows taskbar, which is great for getting there quickly, but more importantly, when you launch a site using this icon, you don’t get any of the browser controls like the address bar, bookmarks, or tabs:

Pandora running from an application shortcut

Since I hate having persistent apps run inside a browser window, this has become one of my favorite features of Chrome. I already have a few of my most-used sites set up this way.

It feels like a useful way for developers to get the advantages of a web app (easier updating, easier deployment) without forcing your users to live inside a browser window and see constant reminders that they are working with a compromise.

Netbook

Saturday, February 12th, 2011

Let’s make it three posts in a row about new tech – I think I’ve about hit my quota for the year already. I’d been searching for a while for a new portable computer (intentionally not using the word “laptop”). My requirements are a little different than most peoples’, which causes some grief when trying to actually shop for one. I was looking for:

  • Light: small enough to put in my duffel bag and not feel heavy carting it around an airport. Also small enough that I can bring it to meetings and not have it be a sacrifice. My old 2005-era laptop was 5.5 pounds.
  • Rugged: I am paranoid about how long my gadgets will last, and about laptop build and hinge quality. I wanted something that could take a beating and lots of use for at least a few years. This meant buying a business-class machine, which precluded trying it out at a nearby store.
  • Upgradeable: this is only a requirement because I need a solid state drive, and I’m not willing to pay any of the laptop manufacturers’ exorbitant prices for one. I needed to be able to open it up to put in an OCZ drive from Amazon/Newegg.

I settled on the Dell Latitude 2110, which has some really nice features for a netbook. It’s got a rubberized exterior to theoretically absorb some impact if I drop it. Keyboard/touchpad quality is above average for a netbook, and the hinge is quite good – it’s actually inside the body of the laptop.

My favorite feature, though, turned out to be the screen – 1366×768 resolution on a 10.1″ screen is really sharp. It’s about 155dpi, which as far as I can tell is the sharpest screen you can get outside of something truly exorbitant like the $2,000+ Sony Z-series. It even beats the new 1440×900 13.1″ MacBook Airs.

New netbook taken apart for solid state drive and RAM upgrade

After a little bit of upgrading to maximum RAM capacity and a new drive, I installed Ubuntu and haven’t looked back. It’s surprisingly fast – even the flashy window animations and effects turned all the way up are perfectly smooth despite the single-core processor and utterly anemic graphics chip. The sharpness of the screen more than makes up for any lack in the graphics hardware – it is a lot nicer to look at than typical TN panels. The only thing it’s struggled with so far is transcoding video; I think I can live with doing that on the desktop.