Angry Birds and Idle Time.

Angry Birds hits 500,000,000 downloads. That’s a lot, for sure, but another data point in that post really caught my eye.

  • The equivalent of 200,000 years played
  • 300 million minutes played daily
    Yowza… now there’s some perspective. It makes me wonder, what kind of things could we accomplish as a group of like minded individuals in that kind of time. That kind of time being defined as a bunch of random people picking up a task for a few minutes here and there during a day. What kind of problems could be solved? What kind of amazing discoveries? This absolutely is the domain of projects like Galaxy Zoo, SETI@Home and similar efforts. I’d be willing to be they don’t post quite the numbers that Angry Birds does. In a way that’s kind of sad. I’m not one to tear into gaming or the like, I enjoy far too much idle entertainment time day in and day out. I still consume far more than I produce, even though it’s been a topic that weighs a lot on my mind these days. That really needs to change. Those Angry Birds numbers just make me wonder what if we all did?

A Pumpkin

Blender Pumpkin

My continued efforts to learn a little Blender. I did my best to follow the pumpkin patch tutorial over at Blender Cookie. Jonathan works incredibly fast! It took me a few hours to follow through about 30 minutes of the tutorial, but that doesn’t seem too bad since I’ve done little more than build some simple geometries thus far. All the texture, materials and lighting stuff was new to me. I didn’t have time to go further, but I’m pretty happy with the results for my first attempt at a simple scene.

Busy Indicators and Many Threads

I recently ran across this post by Brian Lagunas quite by accident whilst searching for some controls, which I happily found in the Extended WPF Toolkit. It’s almost daily now that the particular problem of presenting users with feedback about the status of some background task is necessary. For a while now the System.Threading.Tasks namespace has made it relatively easy for .NET developers to work asynchronously. Presentations at //build/ focused on a lot on the languages and tooling upcoming in the Microsoft stack that will make this even easier. At some point we may be running many background tasks to retrieve information or process data, each of which might contribute to some visual indicator to the user that the system is working. But we certainly don’t want a screen full of busy indicators cluttering the application. So what would a framework look like where many asynchronous operations might contribute to some common global indicator?

I wrote up a quick jig to simulate how this might work out. Using MVVMLight or similar framework it’s trivial to create a system where busy messages are sent when tasks start and finally complete. By responding to these messages and doing some simple counting, a single busy indicator on the UI can handle any number of background tasks.

The app supplies two buttons that simulate starting a list of tasks. In this example all they are doing in the background is waiting.

When they start start, each task sends a message indicating the IsBusy indicator should be displayed while some work is being done. So, for each button press 10 background tasks are started, and until they are all completed the busy indicator will remain displayed. The management of the busy messages is all done in the BusyIndicatorViewModel supporting the UI element.

[csharp]
public BusyIndicatorViewModel()
{
Messenger.Default.Register<BusyIndicatorMessage>(this,
(message) =>
{
ReferenceCountedBusyEnabler(message.IsBusy);
});
}

private int _busyCount = 0;
private object _sync = new object();
private void ReferenceCountedBusyEnabler(bool isBusy)
{
    lock (_sync)
    {
        _busyCount += (isBusy ? 1 : -1);
        if (_busyCount &lt; 0)
            _busyCount = 0;

        Util.ExecuteViaCurrentDispatcher(() =&gt; IsBusy = _busyCount &gt; 0);
    }
}

[/csharp]

In this way any number of independent tasks can be tracked in a decoupled manner. The code is here, if you’re so inclined. ThreadingBusyIndicator.zip

Sketching

I’ve spent a few hours here and there over the past couple months dipping my toes into some 3D Modelling with Blender. I’ve been learning a lot from the tutorials and articles at Blender Cookie. In particular the vehicle modelling series has been very helpful. Here’s a snippet of my efforts so far on one of my favorite subjects, still in the early phases.
[caption id=”attachment_432” align=”alignleft” width=”300” caption=”P47 Block Structure”]P47 Block Structure[/caption]

Being a Better Programmer

Become a Good Programmer in Six Really Hard Steps

I ran across that post reading Alvin Ashcroft’s daily blog of links (Dew Drops). Every so often somebody posts something like this. I think the author does a nice job of summing things up. It’s a good reminder of the things you should be doing as a programmer, and a good motivator to focus on the areas you’ve been slacking in. Practice a lot. Lean from others. Just keep working at it. That really applies to just about everything out there.

It Can Fly

[caption id=”attachment_419” align=”alignleft” width=”300” caption=”Super Cub”]Super Cub[/caption]In the sense that it left the ground and came back again in the same number of pieces. It wasn’t necessarily pretty. I was able to put in about 5 flights this evening on the Tritle Cub that I started a couple months back. It’s still not complete, there is still some painting to go and some kinks to iron out (literally), but it was done enough to get airborne.

The first flight was a bit jumpy while I worked out a few trimming issues. My covering job certainly could use some tweaking as I believe I introduced a couple warps in the rudder and wings that need some attention. I’m confident that can be fixed though. I was able to work it out enough to get a few more shorter flights in to get a feel for it. It’s a big departure from my customized Lancair… you could almost catch this cub as soon as land it. It’ll be interesting to tweak over the next month and see how much some balance, trim and re-covering will shore it up. Being my first plans build I kind of expected this type of learning curve.

This was a fun first plans built project. I learned a lot. First and foremost, I’m sticking to planes with a little more substance from now on! It was pretty amazing to see all the flimsy sticks of 1/8x1/8 balsa come together into something that is remarkably sturdy for its weight. It took a bit of finesse during the build though, and I felt more like a bull in a China shop. That said, Pat Tritle makes a nice short kit, I remain curious to see his future kits.

Aside from straightening out the flight surfaces a bit, the finish needs to be completed. I decided to base the covering on the Mountain Goat Stol. Some blue on the cowl and painting in the mountains and that will be done. After that it’s just a matter of hooking up the lights and enjoying some calm evenings.

And now I believe it’s time to get back to some technical content…

Hinging and tail gears.

I made some good progress on the cub over the past couple of weeks, though I’ve been short on time to post. All the control surfaces were hinged last week and I did a bit of sanding and fitting to get everything aligned. Since practically everything is 1/8 inch balsa it’s too thin for my hinging tool, so I came up with this little Xacto jig to get a good central alignment in the wood.

[caption id=”attachment_396” align=”alignleft” width=”150” caption=”Hinge Jig”]Hinge Jig[/caption]

It seems to work out pretty well. Not perfect, but 90% of the hinges went where I wanted them - cleanly and evenly through the center.

The landing gears went together much better than expected. I hemmed and hawed over whether to build up the tail wheel with some sort of extra support to take the load off of the rudder. This is my first pass attempt.

[caption id=”attachment_397” align=”alignleft” width=”150” caption=”Tailwheel”]Tailwheel[/caption]

In the end, after some testing, I decided to just go the simple route per the plans and glue it directly to the rudder. Here’s hoping the plane ends up light and sturdy enough that it’s not a problem. By the looks of the plans and the elasticity of the .032 wire gear I believe that should absorb enough shock to keep the rudder safe. Time will tell. I’ll probably add an additional cya hinge to the bottom rudder tied directly into the fuse for some added overall strength.

Fuse Framing

Almost done with the framing and it’s starting to look like something. The fuse went together very well, just a few alignment problems/tweaks to be done. I still can’t believe how incredibly light this thing is. From experience I know it’ll sturdy up once the covering is applied, but right now it just seems like the slightest breeze would knock it into splinters. Next up is to finish up some of the remaining framing odds and ends and start sanding the surfaces to shape and planning out the gear, lights, door, etc.. But I should probably call it for the night. 17.

[caption id=”attachment_383” align=”alignleft” width=”150” caption=”Gussets for additional strength”]Gussets for additional strength[/caption]

[caption id=”attachment_384” align=”alignleft” width=”150” caption=”Joining the sides”]Joining the sides[/caption]

[caption id=”attachment_385” align=”alignleft” width=”150” caption=”Progress”]Progress[/caption]

[caption id=”attachment_386” align=”alignleft” width=”150” caption=”Coming together”]Coming together[/caption]

Wings complete

Well, almost. Still need to sand things smooth, but I finished up the basic structure last night. The left side went together just as easily as the right, though I’m not entirely happy with my work on the ailerons/flaps. I added an additional cabane strut to the center beyond what the plans called for just for the look of it. Once I finish up the fuse I’ll come back to all the parts and finish sanding/adding the lights and servos.

[caption id=”attachment_377” align=”alignleft” width=”150” caption=”Full wing”]Full wing[/caption]

[caption id=”attachment_378” align=”alignleft” width=”150” caption=”Center section with cabane struts and fuse connection”]Center section with cabane struts and fuse connection[/caption]

Wings today...

Half done. This is going quick. I was initially a bit confused with the wing spars, but once I realized the tip extensions needed to be attached (and how to do it) it all became a lot clearer. This is my first short kit (It comes with just the laser cut parts and plans, no instructions etc…) so other than some build threads online there isn’t much to go on other than deciphering the plans. It’s a lot of fun, somewhat of a puzzle. I’m sure with a few more builds under my hat it would be more second nature, but for now its a lot of double checking and learning. Perfect way to spend a Sunday.

[caption id=”attachment_353” align=”alignleft” width=”150” caption=”Aligning the right wing”][/caption]

[caption id=”attachment_354” align=”alignleft” width=”150” caption=”Completed structure”]Completed structure[/caption]


The outer bowing looked daunting at first, but it was relatively easy to shape and glue into position with a little patience and jigging.