h1

Obama get’s same map

June 24, 2009

I installed my map in my office back in September, and just read a blog post detailing NatGeo giving the same map to the President as a gift.  Although his is actually a map cabinet that holds lots of maps.  Kinda kewl to have pix of my office and the oval office in the same blog.

h1

iPhone OS3 Upgrade breaks eReader Bookshelf

June 24, 2009

After upgrading to v3.0 of the iPhone operating system the eReader Pro application can no longer switch what book your reading.  A big problem.  The reader still worked, but if you finished a book (as I did last night) and tried to open another one you’re kinda just lost… it didn’t crash, it just didn’t go to the bookshelf.

To the developer’s credit their company, Fictionwise responded to an email I sent complaining with this:

We apologize for the trouble. A fix is currently in progress. We do not have a definite time for when it will be made available at this time. But it should be soon.

The most surprising thing about the response is that I got it about 5min after sending the complaint.  Expected response from this kind of thing is days, not minutes.

I found reports of this problem in a couple places, but only buried in the iTune store application reviews did I find the work around: Delete eReader Pro and re-Install it.  This gives you a chance to open a new book – but has the side effect of deleting all the books you’ve downloaded as well as resetting your application preferences.

Had I got this from fictionwise I would have been much happier.  Ideally I would have liked to find a great big, top of the page kinda support link on their help pages detailing the problem and the work around.

h1

Chinese Curse

June 10, 2009

Even though there’s no official link to anything from China, I like the Chinese Curse – it gives you a lot to think about:

  • May you live in interesting times
  • May you come to the attention of those in authority
  • May you find what you are looking for
h1

Disassembly Inspired

May 15, 2009

I’ve been encouraging the boy to understand how things work – and decided a fun way to do that would be to take things apart, after all that’s what I did at his age.  So we headed to the Flea at MIT on a hunch they might have some fun stuff to take apart.

IMG_4096

Turns out it was the perfect place to find exactly what I had in mind.  The place is a geeks dream come true.  So much old technology I didn’t know where to start.  I was tempted to buy an old oscilloscope, as their were at least a hundred of them in different stalls. 

I ended up finding a reel-to-reel tape recorder a guy was selling for $50.  I started talking him down on price and asked, “Does it still work?”

He replied, “Perfectly.”

I told him the plan was for me and my son to take it apart, and that I didn’t want to ruin something that still worked well.  He agreed and told me to take the reel-to-reel recorder sitting next to it for free.  It weighed 30pounds easy and I had to carry it all over the place.

IMG_4101

Nick really enjoyed it – although maybe next time I’ll get something that we can see working first and maybe keep plugged in (low volt DC something) to watch it work.

IMG_4104

Anna was along for the whole ride – and I had a screw driver ready for her.  Instead she played repoter with the stuffed weasel beanie baby she got at the Flea at MIT.

IMG_4106

They really don’t make things like this any more – hardly any plastic.

IMG_4108 IMG_4112

The kewlest part of this device in my mind was that it had vacuum tubes.  I was tempted to try to get the amplifier part of the thing working and maybe build a small guitar amp or something… but my ambition escaped me.

Here’s a pretty kewl shot with the tubes visible:

IMG_4120 IMG_4121

We got it apart as much as we good – with a ton of screws and bolts lying around.  The carcase sat on the table for a week or so – hard to dispose of that much metal.

 

IMG_4125

All in all the project was a complete success.  Quality dad-kids time and maybe a little education.

h1

Display Version / Revision Number in Flex / Actionscript

March 31, 2009

I wanted a method to show what the version or subversion revision number a user was currently running.  The main reason is to determine what code base was being run by users reporting problems I thought we fixed, or not seeing functionality I thought was complete.

Most people are familiar with this functionality exposed via the “Help->About” menu on a desktop application.  Web developers need to do this differently, as there typically is no outer application menu. 

Being a flex application, I have the ability to modify the context menu users see when they right click.  This was part one of the puzzle, and that answer is well documented in this post by Kenny Lin.  The way I have my SDK wired, much of the code documented there did not trigger the autocomplete on my system, but it compiles and runs perfectly.

Getting the revision number is the hard part.  We currently use subversion as our source code repository, and it has a global revision number – what most developers would refer to as the build number. (Due to the fact that we now do a build every time we do a subversion update, see below.)

Subversion has a technique called keyword substitution which allows you to put a string in a file like $Revision$ and every time that file is updated on the repository subversion will update that string with the correct number.  I thought I was done right here – but the problem is that subversion only does this substitution when it updates a file, i.e. when a developer edits it.  I added this to our main application file, and it worked the first time I updated it, but it turns out we don’t update that file very often anymore.

The biggest piece of the puzzle was an autobuild process which is triggered by subversion updates.  My very simple build script generates a subversion info file using this shell script command:

svn info > assets/svnInfo.txt

I embed this file in the application via this technique which is only a couple lines of actionscript code:

//Embed a text file that is autogenerated by the build process
//it contains the revsion number of the project from subversion
[Embed("assets/svnInfo.txt", mimeType="application/octet-stream")]
private static const svnInfoText: Class;

And the following function parses the revision and puts it in the context menu:

/**
* add the version number from the subversion generated file
* to the context menu so testers can verify what
* build they are running
*
**/
private function setUpContextMenu():void
{
    var myMenu:ContextMenu = new ContextMenu();
    myMenu.hideBuiltInItems();
    var svnTextInstance: Object = new svnInfoText();
    var svnString:String = svnTextInstance.toString();
    var findString:String = “Last Changed Rev:”;
    var revisionString:String = svnString.substr(svnString.indexOf(findString) + findString.length +1, 5);
    var menuItem1:ContextMenuItem = new ContextMenuItem(”MyApp v0.1.”+ revisionString);
    myMenu.customItems.push(menuItem1);
    this.contextMenu = myMenu;
}

Getting the autobuild process up and running was the hardest part – learning the various libraries I needed and setting up the license information from adobe.  I have a lot of ideas and opportunities around that, including ANT or other build tools – but for now the simple fact that I can control the build to the level of adding this step of creating the subversion information file get’s me the functionality required. 

h1

White House "Open for Questions"

March 27, 2009

Earlier this week the White House unveiled an online system to submit questions to the President and vote on other people submitted questions.  My first reaction was very positive.  I liked the fact that I discovered this as a post in the stream on my FaceBook page.  I was eager to see what kind of technology they would be using for the system.  I have been impressed with the WhiteHouse.Gov web site team’s work ever since they switched it on at exactly 12:00pm on January 20th.

I navigated to the site and was pleased to see it was very responsive and handling what had to be an incredible number of users.  I would like to see their roll out plan and how they ensured it’s scalability.  I signed up for an account and submitted my question in about 5 min.  My question was, verbatim:

How will you prevent gaming of this system? I imagine there are special interests with the technology to get their agenda onto this system – submitting hundreds of votes for the questions they want to appear important etc

In a matter of hours my question received 10 negative votes and 7 positive votes. It didn’t come close to the 5k+ votes that the most popular questions received.

As it turns out, the people at NORML did exactly what I thought would be done.  They rallied their large following online to game the system, and all of the most popular questions in several categories were questions about the legalization of marijuana. 

So I’m a bit disappointed by the White House technology team – they should have seen something like this coming.  I don’t know if there’s an iron clad method to prevent this.  I don’t think it’s even so much a technology problem.  I am also not faulting NORML in this – as they did exactly what they were supposed to do.

The only idea I have that might help is less anonymity  in the system.  In this particular instance it might have prevented people from publicly stating their position on the marijuana issue – but more importantly, if you can tie the voting system to real people you can prevent the “multiple votes” problem, which I suspect was the case here.

There is some technology that might help as well, like the fully open online voting system called Helios.  It’s a system that uses pretty standard computer security techniques to enable people to submit votes secretly but still verify that their vote was used in the final tally.  I don’t propose that such a system be used to the point where every person who votes does the math to verify their vote was counted – but the existence of such a technique in the system would ensure that someone could audit the election, and anyone questioning the validity could do so. 

Helios doesn’t solve the “one vote per person” problem, but I believe it could be used in conjunction with some other system to do so.  What that other system will look like I have some ideas about – but it opens up privacy and indenty theft issues that mass media has convinced people are more important than things like participation in government.

h1

Taps

March 16, 2009

Got it into my head shortly after we moved into a house with a bar that a tap would be nice to have.    I spent the next 6 months thinking about it, and the last month doing the research into how I could make it happen.  Most people purchase completed systems for this sort of thing, or modify an old fridge by sticking a tap through the door.  These devices are called kegerators and there is no shortage of images of them on the internet.

My first thoughts were to modify the existing fridge under the bar – but it’s a pretty nice fridge and I realized I’m still going to want some cold beverage storage at the bar.

I found an Internet forum of people who discuss these systems and dole out tons of advice to noobs like myself.

A few days searching on craigslist and I found a pretty standard old fridge for the project, sold by a guy right around the corner from us.  I brought this home and got a keg in it to make sure my CO2 system still worked.

Next I started to drill the holes in this fridge.  I could not find a diagram of where the coolant lines were inside the old fridge – but my drill bit found one.  A loud HISS and the fridge was garbage.  It’s possible to repair a coolant line and recharge the coolant system – but it would end up costing about 5 times what I paid for the fridge.  So, that fridge is garbage now.  So much for this being a “green” project.

This crisis however turned into a beautiful opportunity.  While killing the fridge I was doing more reading online and decided that a chest freezer was probably a better choice for the system.  Craiglist to the rescue again – a little further away this time – but I acquired a Kenmore C675 freezer with I think a 13 ft^3 capacity.  It will easily hold 3 kegs + CO2 tank vs. the old fridge only holding a couple.

I spent a night drilling holes in the bar and floor and garage ceiling.  Had to cut out more than I planned on becuase my 2.5 inch drill bit wasn’t close to long enough for the whole job.  This was probably a good thing as I was able to explore what was in the various layers between the bar and the garage before drilling through them.

I convinced my friend Chris to come help on a Thursday night – he’s very willing to help with beer related projects – and we assembled the various parts of the system in one night with only a single additional trip to Home Depot.

The main design goal of the system aside from delivering carbonated beer to the tap is to keep that beer cold all the way to the tap.  If it gets warm in the lines it will come out as foam and then settle into flat beer.  There are a couple of ways to do this – the expensive way: coolant lines and a compressor in the fridge, and the cheap way: a blower motor blowing cold air from inside the fridge up a pipe with the beer lines in it.  I chose the cheap way. 

Here’s the freezer chest in the garage under the bar:

IMG_3437 

There’s a 2inch PVC pipe coming out the side insulated with foam.  The 2×4 skirt around the top is there to raise the lid a little (some homebrew kegs are to tall) but mostly to avoid having to cut into the freezer – which I was more than happy not to do.

Inside the freezer are the kegs and the CO2 system:

IMG_3440

There’s a blower motor attached to a blower hose that goes up into the 2in PVC pipe.  The beer lines go inside this blower hose.  The blower pulls cold air from in the freezer and blows it up the hose alongside the beer lines.  This air goes to the tap on top and then returns to the freezer on the outside of the blower hose inside the PVC pipe.  There’s a little spill in the freezer from a mistake I detail below, and I plan to clean it all out after I kick these two kegs.

There are two lines run up to the taps – but I only have one D coupler (keg tap) so I only have one beer online at the moment.

The interface between the freezer and the outside world:

IMG_3435

Here we see the external thermostat – becuase beer is very sensitive to temperature and the freezer doesn’t have a setting warm enough for beer. 

Inside the tap tower:

IMG_3426

Here is where a mistake was made – I used a thin walled hose to deliver the beer initially (all they had at Lowes) and it leaked. The hose clamp just wasn’t able to get a good seal no matter how tight it was. So when we first turned it all on the beer leaked back down the hose all the way down into the blower motor.  A quick trip to Home Depot and I got 20ft of nice thickly walled 1/4″ hosing.  This new hose sealed perfectly.

The finished project:

IMG_3422

There’s probably a drip tray in my future – and I’m currently running the beer through 20ft of hose.  The advice is to get the hose too long and shorten it to get the flow rate you want.  It’s currently pouring a little slow, but there’s very little foam and I’m afraid to mess with it.  There are also probably some tap handles in my future.

We had some folks over for my son’s bday party and the tap worked perfectly.  Spent a lot of time outside with the kids this weekend as well and it got me thinking of having a quick-change tap system to dispense beer inside the freezer.

All in all – it was a lot of plumbing and the biggest thing I would have done different was to get the right hose from the start.  I also will probably seal up/insulate the 2×4 skirting a little better as it get’s warmer – but currently the outside temp is colder than what I want inside the freezer.

I also need a name for the whole thing.

Cheers!

h1

Safety Whistle Necklace

February 21, 2009

Just in time for the family ski-vaca I finally got around to crafting some lanyards for the safety whistles I bought a few months ago.  The kids are under 10 and we’ll be skiing in bounds the whole time – but it was a fun project and if I get them to wear them every time they ski and hike it might make a difference some day.

Materials:
Wind Storm Whistle, purchased from Campmore
2 meters of Cord per Lanyard: MINOR Cord, 3mm I bought a 15M roll from EMS

The Knots:
Sizeable Necklace Knot

Boatswains Knot

The boatswains knot is purely decorative. I suppose it holds the whistle at the midway point which might be handy, but the main reason I use it is because it’s exactly what the knot was designed for.

The sizeable necklace knots work pretty well, and allowed me to make 4 identical lanyards that’ll fit both the wife and I as well as the kids.  I’m not sure what the name of this knot is though.  I think it’s fashioned after a noose – which is not a good image to have making something that’s going around your neck.  If anyone has any advice on a better knot or technique to use here I’d love to hear it.

Oh yeah – pix:

A completed whistle and lanyard

IMG_3747

The sizeable knots

IMG_3749

 
The Boatswains decorative knot

IMG_3750

h1

Pathatique Line Niner

February 15, 2009

Made it to line nine today – In the last video I decided to stop playing it from the beginning and focus on the section being learned. This will cut down on the length of video I need to upload etc.

At my current rate I should be done before opening day – but I fear there are some hard parts coming up that might take a lot more time then what I’ve laid down to date.

I am very much enjoying this goal BTW: It’s motivated me to find all the missing ivory chips from the keyboard and fix them. Who knows – I might get the piano tuned someday soon!

As usual: To track my progress start here:
http://spreadsheets.google.com/pub?key=pCoR2s6yl9fw3B1rC1N1vdw

h1

Voice Synthesizer

February 9, 2009

Played with a bunch of these when I was a kid – figuring out ways to make them swear mostly – but this one is the best I’ve heard.

I used it to updated my voice mail greeting.

I have to assume the developers tested it a bit with this one.