Archive for the ‘Technology’ Category

Azure Hosting

Sunday, February 25th, 2018

This blog is now migrated over to Microsoft Azure! I’m interesting in checking it out as a more functional web host now that it has developed in the last few years (along with Amazon AWS). Specifically, looking forward to being able to host Python and nodejs apps that I’ve been working on, but just running locally so far.

The setup process for migrating the WordPress blog over from my old host was pretty smooth, all things considered. I made the mistake of updating WordPress on the old site before doing the export, and that update broke WordPress and caused it to start erroring on any admin page. That led to some hasty tinkering with the Javascript to skirt around the errors, and ultimately getting it working well enough to do the export. The posts and images seem to have moved over with no errors after all that, though.

Reset the Swing Timer

Thursday, October 10th, 2013

Last week we took a family road trip, and as a result I spent a lot of time driving the van through beautiful weather… but also a lot of time driving the van through rain. Owego, NY is a nice quaint town which we discovered has the tiny little downside of actually being buried in water for part of each day. We also hit the remains of something apparently called “thundersnow” on the way out of Pennsylvania.

What struck me while fiddling with the windshield wipers was a cool feature that I haven’t seen on any car I’ve owned before: when I turned the dial to increase the intermittent speed, the wipers always immediately swing (even if they weren’t due to swing yet). This is a subtle thing and it only makes a second or two of difference, but it seems to me a brilliant example of thoughtful design. The only real reason anybody would turn the dial is because they need more wiping, and they need it now, so why not oblige with not just a faster interval, but an immediate wipe?

As soon as I thought about this I was reminded of video games – it’s fairly common in Action RPGs to have an ability that temporarily increases the potency of your weapon swings, and some of these abilities actually do the same thing: they reset the swing timer so that as soon as you hit the button, you immediately get to see an attack with the new ability. It’s a nice visceral effect that gives an increased sense of control and feedback.

A similar scenario comes up in software development occasionally – I’ve seen a particular case where there’s a setting that allows changes on a web page to be immediately “auto-applied” (vs. having to queue them up and click Accept later on). If a particular user prefers the auto-apply feel, they almost certainly want any changes already queued up to be applied immediately when they turn on auto-apply. Having to turn on auto-apply but then still go click Accept is unnecessary extra work.

I’m not sure if there’s a term for this design principle of tacking on an immediate effect to a rate-modifying adjustment. I couldn’t find any references online, but without Google keywords it’s hard to know what to look for. In any case, it’s a good one to consider whenever you’re designing a switch or dial that impacts future state or user actions – is there any way to give the user an immediate effect that they likely want? Furnace manufacturers already have this figured out; they make very sure that when you crank up the heat on the thermostat there’s some kind of immediate reassuring audible or tactile feedback.



Quantified Running

Sunday, June 16th, 2013

Lately, I’ve been getting very interested in the “quantified self” movement – it’s a great combination of hobbies for me. I like that it lets me play with technology and also play with my brain psychology to push myself to improve. We even preordered a couple Fitbit Flexes, but it seems that there’s a huge production shortage because despite being released on May 15th, it’s impossible to buy anywhere and our pre-order might be shipping in July.

In the meantime, I’ve been enjoying the steady improvements to the Nike+ running software since that’s what I have on my phone for now. Last night I had an interesting run that I was pretty excited about:

Screen Shot 2013-06-16 at 9.55.38 AM


For the whole first mile and a half or so, I was able to sustain a great speed that would have let me easily break my 25:00 5k goal (I only need to average about 8:00/mile, and my pace there was more like 7:45/mile). I was surprised at how great I felt even despite the 80° heat. Then I had to pay the price when I hit a huge hill going north on the nearby road – I don’t usually run this route so I was taken a little by surprise and didn’t have the energy saved for it. Having to walk for a while there cost me about a minute and a half on my overall time, which was enough to miss the goal. Still, it was my fastest time so far for the year and I’m very happy that was able to even come in under pace for such a big chunk of it.

Psychologically, the data is very motivating; at the time, I thought I just fell apart due to exhaustion and my pacing was incorrect. Now that I can review the metrics later on though it’s more obvious just how big that climb was. An easy route adjustment or a little planning ahead and saving a burst of energy should be enough to make the difference next time. Instead of going out for my next run thinking I’m not strong enough yet, I can approach it with some confidence and some better tactics in mind.

The need for speed: responsive scrolling

Sunday, June 2nd, 2013

One of the things I try to do in my modern technological life is to be platform agnostic and try lots of different brands of hardware and software. My hope is that this keeps me sharp and aware of the greatest possible number of design trends and innovations per time spent. Practically speaking, this means that every once in a while I pick up an Android device, since most of my personal technology use has been Apple-made for the past few years (I use Windows full-time at work and for gaming at home). There are some cool things about Android, and the wide-open control and open-source feel appeal to me on a few different levels. I like widgets, customizability, and the breadth of options that are free development ecosystem provides.

Every time I force myself to do this though, there’s one thing that nags at me constantly. It seems like it should be such a simple thing and yet it’s an aspect of the user experience in which there’s a strange gulf between Apple and everybody else. Most writers would at this point reveal that they’re talking about design and quantity of 3rd-party apps, but I won’t go there. Instead, I want to talk about one very simple thing responsive scrolling. Scrolling a text region, a web page, or a list on an iOS device is a beautiful experience, where the distance between you and the machine melts away and it feels like you’re actually manipulating the data itself with your finger. The granularity and speed of the scrolling are such that it feels like sliding a physical object with no friction. You don’t have to spend brain cycles thinking about what scrolling action you need to take to get the result you want.

Inexplicably, I have never seen scrolling behavior like this on any other device. Even a fast new (at the time) Nexus 7 was very clearly doing a lot of chugging to keep up with scrolls on a complex page. There’s always a delay of at least a few seconds between finger movement and scrolling of the view. I don’t know whether this is a symptom of a patent of Apple’s that nobody wants to license, an inability of app developers to keep data processing off the main thread, or even some kind of architecture limitation of the OS. Everyone once in a while I pick up a Nook in Barnes & Noble or a Galaxy phone in the AT&T store, pull up a website, and scroll. So far no Android device has passed the same test that my iPhone 3G did in 2009, despite processors at least five times as powerful. This is hard to really see in a video, but the closest I could find was here:

I believe this difference is a representative microcosm of the type of reasons that people choose Apple devices. It doesn’t seem like there’s that much difference in hardware specs, in application functionality, or in many cases even beauty of the UI itself (I’m a big fan of 4.0+ Android), but there’s a certain level of user interaction quality that other manufacturers just seem unable to match. This is definitely disappointing to me as somebody who supports open source software and worries about the close nature of Apple’s system. It seems like such a shame to let this difference in polish tilt the balance. Then again, maybe it’s a lost cause and the same designers and engineers who could fix this in Android have already given up and gone over to the other side.

Takeaway for me in my own design and development: speed and responsiveness matters a lot more than we often think. I believe this type UI performance is one of the most unappreciated critical factors that customers consider when choosing hardware and software, maybe because it’s hard to quantify in ways that aren’t very misleading (mHz and processor cores have little real relationship to responsiveness). Time to go optimize some software – and hopefully not have to change platforms to get it done!