Dev Camp

July 15, 2011

I’m spending the weekend at iOS DevCamp. No expectations, just curiosity.

Keeping Your Skills Current

July 10, 2011

There was an article on ageism in Silicon Valley last year that garnered a lot of attention.  Whenever such articles appear, invariably some variation on this advice is given, either in the article, or in comments:

Keep your skills current. This means keeping up-to-date with the latest trends in computing, programming techniques, and languages, and adapting to change.

But what does this mean? Practically? How do you do that?

In some cases, it’s relatively easy. Over the last decade, the Java world has featured an endless stream of new frameworks. If you are a Java developer, you could just read about the latest framework, maybe fool around with it a bit, and you were good to go.

But as a C++ developer, it was never clear to me what I should have been reading to “keep my skills current.”  C++ hasn’t evolved all that quickly.  And the places I worked often didn’t want to use “newer” (i.e. post-1998) constructs in C++, for reasons of backward compatibility, cross-platform compatibility, etc.

So every now and then I’d read a book on something outside my domain. I would find it interesting, and then six months later I had forgotten everything about it (I did that twice with SQL, actually). Because there was no opportunity to use what I learned in my daily job.

In retrospect, not knowing what  “keep your skills current” meant, for me, was an indication that I was working in a area with little or no opportunity for me to grow as a software developer. Which was a problem.

to be continued…

The “I’m going to start blogging again” post.

July 10, 2011

Okay, so it’s been nearly a year since my last post. I meant to post a description of my job transition, and the lessons I learned from it, but the new job took up so much time and energy that I kept putting it off, while the draft just sat on my laptop.

And then here we are, 10 months later.

So I’m going to post the first part, and hopefully follow up with subsequent parts in the near future.


August 31, 2010

Well, it’s been a busy few months. I’ve gotten a new job, as a iPhone developer at Loopt here in Mountain View. Which is quite a change from being a compiler developer at Synopsys! I’ll write some thoughts on that, hopefully tying in with the whole recent discussion on ageism in Silicon Valley.

I also had a very successful reading of my full-length play, Enlightenment, at Foothill College, in June. My writing has taken somewhat of a back seat to finding a new job for the better part of a year, so I’m hoping that I can get back to it.  But I am sending material out: I submitted entries to contests at the Marin Theatre and Playground SF.

Retweets ThrededTweet-style

March 24, 2010

So here’s what I settled on for representing new-style retweets in ThrededTweet. Guess which is the retweet:

I didn’t make that hard, did I?  Here’s what it looks like when you look at a retweet directly:

I like this because the addition of the picture gives an instant visual clue that this is a retweet (there is no picture there, normally). Clicking on the user icon at the bottom would open up @rschu’s user information, not @dane’s, so you can look at his tweets directly, or start following him, if you wish.

This will all be in ThrededTweet 1.3.0, which I uploaded to the App Store for approval tonight. Apple has really sped up approval times, so hopefully it will be available later this week.

March 14, 2010

So, I’ve settled on “Retweet (old-style)” old-style, “RT” retweeting, and “Retweet to Friends” for new-style retweeting:

However, that’s still not satisfying, so I’ve added an alert that pops up before a “Retweet to Friends” is completed:

But since would be annoying to tap-through before every retweet, it will only appear the first two times a user does a new-style retweet.

Retweet Conundrum

February 28, 2010

On Twitter, “to retweet” originally meant to repost a tweet, prefixed with “RT @<username>”. And ThrededTweet supports this type of retweeting.

But Twitter then introduced a new type of retweeting, where you can’t change the original tweet, and it appears as part of your stream, but with the original user’s name next to it.  I’m adding support for this type of retweeting in the next release.

But I want to keep support for old-style retweeting, which means I’ve run into a conundrum:  when a user of ThrededTweet wants to retweet, they tap the right-most button under the tweet in question and select “Retweet” from a list that includes a couple of other choices.  What do I add to this for “new-style” retweeting?  In my current development sandbox, the buttons are labels “Retweet (old-style)” and “Retweet to Friends”. I’m not sure that’s clear, but I’m also not sure how to improve it.

“Retweet (old-style)” vs “Retweet (RT-style)” vs “Retweet (editable)”?

“Retweet (new-style)” vs “Retweet to Friends” vs “Retweet As Is”? Alas, I can’t include the funky retweet icon.

Decisions, decision…

The UI Implications of Having a Big Finger

January 30, 2010

Among the settings that a user of my Twitter app, ThrededTweet, can adjust are the number of tweets that should be loaded at one time, and the time interval that should pass between reloads.  For the former, the allowed values are between 20 and 200, while for the latter it’s between 0 and 60 minutes.  These values are adjusted with a slider on the “Settings” page.

Currently (version 1.1.2 and earlier), the sliders behave in a purely linear manner. That is, the distance you have to slide the slider is the same to go from 5 minutes to 6 minutes, as it is to go from 55 minutes to 56 minutes. While this works well in the iPhone simulator, where user interface elements are manipulated with a mouse, on an actual iPhone I’ve discovered that it’s a different story. I’m 6’5″, with hands to match, and I’ve found it difficult to exercise the fine amount of control needed to hit a value precisely. If I want to reload every 5 minutes, sometimes I’ll end up with 4 minutes or 6 minutes.

In version 1.2.0, the sliders are still there, but after having a realization about usage, I’ve modified how they’re handled in a way that improves usability quite a bit. The realization is that, most of the time, people will be more concerned about hitting small values precisely than they will about hitting large values. Many people will want to select between a reload every minute vs. every two minutes, while few if any will be concerned about accurately selecting between 55 minutes and 56 minutes.

So as of 1.2.0, slider values are interpreted with an exponential function, rather than a linear function. This gives a lot more sensitivity for small values, at the cost of sensitivity for large values.

If we assume that a slider all the way left has value 0.0, and one all the way to the right has value 1.0, then the reload time can be defined like so:

reloadTime = 10^sliderValue * 6.666666 – 6.666666

For sliderValue=0, this gives a reload time of 0 minutes, while for sliderValue=1, this gives 60 minutes. In Objective-C, this is:

    int reloadTime = round(pow(10.0,reloadTimeSlider.value)*6.6666666-6.6666666);

Going the other way:

    reloadTimeSlider.value = log10((reloadTime+6.6666666)/6.6666666);

For the number of tweets to load, since the range is between 10^0*20 and 10^1*20 (20-200), the formula is simpler:

    int numTweetsToLoad = round(pow(10.0,feedCountSlider.value)*20.0);
    feedCountSlider.value = log10(numTweetsToLoad/20.0);

After making this change, I’ve found these sliders much easier to manipulate accurately on the actual phone.

Reading on Friday

January 29, 2010

I’m having a reading tomorrow in Los Gatos.  A nice change from all the tech I’ve been hip-deep in the last couple of months or so.

The Future of the Web

January 21, 2010

Tonight, I went to a fantastic presentation at the Silicon Valley Java Users Group entitled The Future of the Web According to Dion Almaer and Ben Galbraith. The short answer, as to the future of the web, was that the web will change as much in the next ten years as in the previous ten.  The story of the web over the last ten years was its transformation from static web pages (the “brochure” model) to a platform where one can write applications, albeit in a limited form. The next ten years should feature much more advanced graphics capabilities (from technologies like Canvas and CSS Transformations), to the ability of web apps to break out of their sandbox and behave like real desktop applications.

As one example of how the web experience will change, check out the Snow Stack demo. A description is here. If you have a Macintosh and Snow Leopard (i.e. MacOS 10.6.0 or later), check out the live demo here (on Safari only).