Super Cub Build

After a whole load of work around the house this summer I’m finally getting a chance to build my next RC plane, a 52” Super Cub short kit by Pat Tritle.

I started out this morning laminating the tail outline and wing surfaces. This is the first time I’ve attempted laminations like this and I was suprised at how easily things went. I followed the build tips on Pat’s site and as advertised, piece of cake. A little less coffee for breakfast next time might be helpful to reduce jitter.

The horizontal and vertical stabilizers went together quickly and are ready to go. Now its on to wings tonight.

[caption id=”attachment_342” align=”alignleft” width=”150” caption=”Cub Horizontal Stabilizer”][/caption]

[caption id=”attachment_340” align=”alignleft” width=”150” caption=”Wingtip Bow Lamination”][/caption]

[caption id=”attachment_343” align=”alignleft” width=”150” caption=”Cub Vertical Stabilizer”]Cub Vertical Stabilizer[/caption]

Broadcom BCM43* Wireless Setup in Kubuntu 11.04

Wireless drivers have always been a bit of an issue in Ubuntu on my MacBook. The 11.04 version seems to have this solved this for the most part as it’s auto installable in the Additional Drivers settings. However I’ve been exploring Kubuntu due to some slight dissatisfaction with the default desktop situation this release. I know there’s a lot of hate for Unity, and I’m not jumping on that bandwagon quite yet… but there are issues to be solved. That’s kind of beside the point though. I did have some issues with wireless under Kubuntu. The Broadcom wireless device doesn’t seem to show up in the Additional Drivers dialog, and it certainly doesn’t work out of the box. The missing piece seems to be the firmware for the device. The resolution turned out to be simple. I used synaptic, but use your package manager of choice.

-Install firmware-b43-installer
-Once that is complete, completely re-install bcmwl-kernel-source
-Enjoy.

Now the only thing left is figuring out why the KDE network management widget is, while stunning, very touchy.

Stack Exchange Podcast Is Back

Until they went on hiatus about a year ago, the then Stack Overflow podcast was one of my favorites. I’m glad to see they’re back at it. It’s not that I’m super interested in Stack Exchange as a specific website or technology, but the content always seems to have broader implications. Long story short Joel and Jeff are two intelligent guys opening up some of their conversations. It’s interesting to be a fly on that wall.

Android Hardware Device Debugging in a Ubuntu VirtualBox Guest

Here’s the situation. I’ve really been digging into the Natty Narwhal release of Ubuntu over the past few weeks, and felt the time was right to switch over to doing as much as I can on the OS on a more permanent basis. However, I still can’t seem to get away from Win7 as a primary OS. I still enjoy the occasional (sometimes more) FPS and have a health Steam account, and unfortunately Wine, Crossover, and VMWare’s guest DirectX acceleration just don’t cut it. After plenty of testing on that front I’ve settled on maintaining Win7 as my host operating system, but have been running Natty Alpha (now Beta) pretty much full screen front and center in both VMWare and VirtualBox guest virtual machines, settling on VirtualBox for the long haul. I still think VMWare Player is the overall better solution for VMs these days, but hardware graphics acceleration still isn’t supported for linux guests, and Unity is so very pretty that way.

So life is good, aside from the occasional Compiz crash, and my Eclipse dev enviroment is set up in the virtual machine, and not unexpectedly the first time I spin up an android emulator it just hangs. I’m not going to spend a lot of time on that since I’ve got an old HTC Eris to use for development and debugging anyway. Not as unexpectedly, the process of actually getting that talking to the debugger is… less than automagic.

But with a little effort it can be done, and after a little digging it’s pretty simple. I’m going to assume if you’ve read this far you a) have too much time on your hands and b) know enough to be able to debug android apps in an emulator or device under more normal circumstances. This little snippet strictly targets the process of making it happen within a VirtualBox guest. It so happens I’m running VirtualBox version 4.04 hosting Ubuntu 11.04 on a Windows 7 host, if you haven’t picked up on that yet.

To start off with, you’ll want to to have the VirtualBox extension pack installed which supports USB 2.0 devices. I’m also running the most current virtualbox-ose-* tools from synaptic rather than the closed source version provided by VirtualBox, since they are currently a bit buggy. The main point of contention seems to be that VirtualBox is very picky about being the sole owner of the USB connection, so you need to set up a device filter for your android device so that it’s picked up by VirtualBox before your host OS sees it. Plug in the Android device and make sure you’ve got any necessary drivers installed so your host recognizes it. Power down your VM. In the VirtualBox Manager, select the virtual machine, right click -> settings, select USB. Ensure Enable USB Controller and Enable USB 2.0 (EHCI) are checked and click add on the right hand side. You should be able to select your Android device here. Now unplug you Android device and power on the VM. Make sure you follow the instructions here to make sure your ubuntu system recognizes the device. At this point you should be able to plug in the Android device and see it register with adb. Debug away, friends.

One thing I’ve noted is if you need to disconnect your Android device from the VM do so with the phsical cable. Don’t be cute and select disconnect from the device menu. This cedes control of the USB device back to your host OS, which tends to bork the connection in various ways, and you may not be able to regain a connection to your guest os without restarting. Or it might just take down the whole VM. I’ve seen it go both ways.

RFID Garage Entry

This evening I finished up a quick prototype RFID entry system for our garage door. It turned out to be quite simple, yet wholly satisfying in a very geeky way. I thought I might share a bit of the process and how it went together. It’s very crude at the moment, but I’ve got plenty of upgrades planned out for the future.

[caption id=”attachment_282” align=”alignleft” width=”150” caption=”RFID Garage Entry Prototype”]RFID Garage Entry Prototype[/caption]

I started out with a Parallax serial RFID scanner. It does a reasonable job of scanning the tags. I’d love to find something that had a bit more range to apply to some other ideas, but the Parallax unit works perfectly for this. My plan was to use an Arduino derivative for the brains of the operation since I’m somewhat familiar with the platform. I decided on the Solarbotics Ardweeny as a low cost base for the ‘production’ board. That’s definitely more chip than you need for something this basic, but like I said, I’ve got future expansion plans! The only other major component is a relay that I’m using to trigger the door activation.

[caption id=”attachment_285” align=”alignright” width=”150” caption=”Reader Acrylic Assembly”]Reader Acrylic Assembly[/caption]

One consideration of the design was how to protect the board from the elements. I decided to laminate two sheets of acrylic on either side of the RFID scanner, with the inner pieces cut to allow room for the on-board chips and wire connections. The edges are filled with a silicon caulk to keep things water tight, and the front face was painted black. This somewhat unorthodox approach was purely for aesthetic reasons. The Parallax reader has a red/green LED on it that is programmed to respond to activation with an authorized RFID tag, and the acrylic allows the light to bleed around the edges in an interesting way that gives the unit a nice glow around the edges at night.

One additional benefit of the Parallax board is this code sample that takes care of reading the serial output from the RFID reader. Starting from there I added a little logic to grant access to only certain tags, and a bit of timing logic to keep multiple reads from triggering the door more than once.

From there it was just a matter of putting the pieces all together. The Parallax card wired into the Ardweeny per the comments in the code snippet. I assigned one digital out to trip the relay when a valid tag is read. The indoor pushbutton switch for the garage door is located conveniently nearby. I simply soldered two wires to either side of the momentary switch on the back of the PCB and ran them to the relay. When the tag is read the relay is tripped for 600 milliseconds, completing the circuit on the garage door switch and up (or down) it goes.

Annoying Password Prompts in Mercurial

If you maintain your own mercurial repository, you may run into the situation where it’s always prompting for username/password for every action against the server. There are a number of ways you can set up your configuration to get around this, however many of them would leave your password as plain text in one of the configuration files. Here’s how to set this up for our server so it’s stored securely.

You need to add some configuration settings to the mercurial.ini file. For windows users, this is located at C:UsersusernameMercurial.ini
Add mercurial_keyring= to the [extension] section and example.prefix / example.username to the [auth] section

[extensions]
mercurial_keyring=

[auth]
example.prefix = http://somehgurl/
example.username =

You will be prompted for your password the next time you pull or pull, but after that it will be saved. You’ll also want to make sure you don’t have the username/password combo stored in any of your synchronization paths. If you do tortoise will complain and ask you to remove it before it’ll take any action.

Jonathan Rasmusson on the Pragmatic Bookshelf

This is a very good podcast from the Pragmatic Bookshelf that talks about agile development in a broad sense. You’ll recognize a lot of scenarios from your day to day development life in here. It’s only 40 minutes. Worth a listen and some reflection.

http://pragprog.com/podcasts/show/33

Jonathan Rasmusson discusses his new book “The Agile Samurai: How Agile Masters Deliver Great Software”. As a former evangelist for ThoughtWorks, Jonathan brings a real world, hands-covered-in-muck approach to the subject of Agile development. What is Agile, really? And not from a theoretical point of view, but from the trenches? What works? What doesn’t? How do you get started? Although “exciting” might not be a word most people think of when discussing software development, Jonathan’s energy and infectious enthusiasm is apparent on this interview with host Miles Forrest.

Clone a Visual Element in WPF

I came across this interesting snippet while looking to clone a list item during a drag drop operation. Perhaps there’s a better more efficient way, but this worked nicely in a pinch:

[csharp]
public Object Clone(Object o)
{
string xamlCode = XamlWriter.Save(o);
return XamlReader.Load(new XmlTextReader(new StringReader(xamlCode)));
}
[/csharp]

it just serializes the object graph to a string and re-hydrates it to construct the copy. You have to love two lines of code that solves a problem in a hurry.

Mercurial tips

If you’re a Mercurial disciple (I am surely becoming one) hg tip is a pretty informative site with some bite sized tips on various features, hacks and ideas surrounding the popular DVCS.