Microsoft – fast path to insanity – RDP ‘Access Denied”

So, I spent a lot of time trying to set up a simple thing:  remote desktop to a Windows Server 2008.  What a pain.  First, you have to install both the service and the licensing server, and then configure the service to see the local license server.  This is silly when you get 2 local connections for admin purposes without needing a license!  WTF?  Seriously?  Then it still didn’t work with the mysterious “Access Denied” failure.  I finally found this:  http://blogs.technet.com/b/askperf/archive/2010/07/08/the-case-of-the-mysterious-access-denied-aka-more-on-service-hardening.aspx from MS and changed the registry setting (which was damn hard to even find it).  It’s in HKEY_LOCAL_MACHINE-SYSTEM-CurrentControlSet-Services-TermService.  I’d done NOTHING to the box yet it was set to  LocalService.  Changing it to be NT Authority\NetworkService fixed the problem.

Several points:

1.  Microsoft, it’s a frickin’ server.  It’s probably going to run headless.  You should aut0-enable remote management.  Having to go manually install a pile of crap is a waste of my time.  On linux it’s just there, and it just works.

2.  Microsoft, something is buggy.  If a default install has a setting that makes it fail silently, you suck.

Net perception:  I’ve not used anything from Microsoft other than Word that has just worked recently.  I won’t even go into how much I hate the Win8 GUI (Classic Shell is the only savior there).  Big company, slowly dying on the vine, potentially too stupid to know it.  You need a management shakeup and a return to your roots.  If I were you, I’d  take a page out of OSX book and adopt linux as the base and build a Windows GUI on top of it.  You need to do something.  If my client didn’t use this Windows server I’d have punted it long ago.

VeriFone Fail

 

 

I spent eight years making digital signage systems that didn’t do this. VeriFone seems to have a lot of reports of dead screens. Makes me wonder who is doing the Engineering.
verifone-fail-upload

Kids ‘invent’ a smart stove

I mentor a group of kids aged 11-13 in Lego Robotics for the First Lego League (FLL). They are competing tomorrow in a ‘regional’ competition since they did well enough in the San Francisco competition to move on. A huge part of the competition is that they have to invent something that solves a problem around the theme – and this year it’s “Senior Solutions.” They do ALL the work. I mentor, but it’s all them.

The decided that seniors leaving the stove on and risking a kitchen fire was a problem, and they invented a smart stove to help make that more safe. They even built a Lego Robot prototype to show that using an IR sensor you can detect if the stove gets too hot and turn it off (they used after market parts from Dexter Industries for that part, which is OK by the rules since it’s not part of their mission robot). But they needed to share their idea with a big audience, so they decided to make a web page. All I did for them was spin up a web server and copy files across. It’s all their work.

So, if you’d like to help out some 11 year old kids, go take a peek at the one page website they made. The product is called the SmartStove.  They need to say how many folks have read about it, so I installed an awstats page.  We’re at about 126 as of this morning.  We have only today to get viewers.  Will you help spread the word?  It would have been nice if they got the web page done earlier, but hey, they are 11.  Minecraft and Halo 4 is still a huge distraction, as was sports and homework.

So please, take a minute and go read it!

Private Cocoapods

Cocoapods is an amazing tool to organize the libraries used in your iOS and Mac application code trees.  Sure, you can use git submodules…  maybe.  But  they are not perfect.  Cocoapods is far better.  It still uses git, it lets you easily handle dependencies (including around target iOS version) and it’s a snap to set up and use.  But, I wanted to be able to use it for private libraries too.   Both in my day job at Rackspace and personally, I have code that is not open source that I’d like to use in more than one project.  I spent a few hours figuring out the details on how to handle this and I’m documenting it here.  If nothing else, I know now where to look it up next time!

First of all, get standard cocopods set up and tested.  Follow the easy instructions on their github page.  My learnings are based on the great work published by Marcio Massaki at i.ndigo.com.  His starting point is to clone the master Spec repo.  I didn’t want to do that for my private repos since there would never be a need to do a pull request (PR) upstream.  If I want to merge upstream, I can always just add podspec files into the repo that’s created by the stock installation.  When you install Cocoapods it creates a .cocoapods folder in your home directory.  The ‘master’ folder located there is a clone of the master repo already.  Here is how you can edit that repo to contribute public podspecs for general use via a PR.

But, to make a private repo here is what I did:


cd ~.cocoapods
mkdir fogbridgepods (or whatever you want to call your repo)
cd fogbridgepods
git init
mkdir <lib name>
cd <lib name>
mkdir 0.0.1 - or whatever version you want to start with
cd 0.0.1
subl <lib name>.podspec

then I edited – ignore the details in this – it’s a fork of an open source library that’s not been updated in 3+ years that I’m updating. It’s a good example that I don’t mind sharing publically. Your private file would need to insert your own details per the Podspec format.


Pod::Spec.new do |s|
s.name = "MongooseDaemon"
s.version = "0.2.0"
s.summary = "An objective-c wrapper for embedding the mongoose http web server in iPhone apps."
s.homepage = "http://myutil.com/2009/6/15/simple-way-to-embed-a-http-server-into-your-iphone-app"
s.license = 'BSD'
s.author = { "Greg Herlein" => "gherlein@herlein.com" }
s.source = { :git => "https://github.com/gherlein/MongooseDaemon.git", :tag => "0.2.0" }
s.platform = :ios
s.source_files = '*'
s.documentation = {}
end

Make sure you pay special attention to the s.source and make sure there’s a tag defined and that your code in GitHub has that tag.  I found that I had to include the “s.documentation = {}” or it would fail on appledocs trying to create docs.  The template you can create with

pos spec create <lib name>

does not include the s.documentation line.  Without it my pods were failing because the command to appledocs was missing the name of the podspec file.  I don’t seem to see anyone else with the problem, so maybe I’m wrong?  If you know what I was doing wrong, ping me.  Otherwise, it works great if that line is added.  Make sure you check your spec file with:

pod spec lint <lib name>.podspec

Don’t skip this step!

Then you will need to create a repo on github for this Spec folder.  Go back to your private spec holder root and do the normal git commit/git push to get it into GitHub.  You must do this, since the pod toolchain checks the Spec repo when it runs and it fails if there isn’t one.

Then, test out your work.  Open XCode and create a dummy project.  Close XCode.  Open a shell into that folder and create a Podfile.  My example one looked like this:

platform :ios, '5.0'
pod 'AFNetworking'
pod 'MongooseDaemon'

Note that I added one library from the main Spec repo and one from my private repo.  Run the command

pod --verbose install

Note that I run the verbose setting since otherwise it’s totally silent and if it blows up you scratch your head for awhile.  I sure did.  Then, open XCode with the workspace file – not the project file! (use the xcworkspace not the xcodeproj file)

open  testMongoose.xcworkspace

Just like that you have a very nice setup that included both a public and private library.

Updating a Code Tree
During my playing around I was playing a lot with making changes to the Spec file and seeing it’s effect. It took me a bit to realize that once I had already run pod install that running it again was not having the effect of updating things. Sure enough, cocoapods actually does a smart thing and they don’t update your libraries out from under you. You have to specifically run

pod --verbose update

to force it to go re-read the repos. Otherwise it will use cached data. Those cached git folders are stored in the folder ~/Library/caches/CocoaPods/Git/ so you can always just blow away that folder to force a complete redo if you want. But the update command is far easier.

 

 

 

Happy New Year!

All of December seems to be a blur for me – too much business travel, a lingering sinus infection, the holidays…  can it really be 2013 already?  Indeed.

It’s a big year, it feels.  Huge issues sitting atop tiny balance points – which way will they go?  In the news: government spending and taxes, North Korea continuing to rattle sabers, Egypt, and that mosh-pit of forever-war called Afganistan.  The 49ers in the playoffs – what will the Giants do?  Three-peat?  What’s going to happen with Apple?  Dramatic new products?  Or incremental improvements?  Mainstream?  And Microsoft?  Do they finally shed Balmer and get new leadership that might turn it around?  And of course one I am keen on:  cloud.  Will Rackspace challenge Amazon AWS?  Inquiring minds want to know.

Whatever happens, it won’t be boring.  Happy 2013 everyone.

New Computer

So I pulled the trigger on a new Mac Book Pro.  I really agonized on what model to buy but my good friends and former colleagues really helped put it all in perspective.  My instincts were still pre-cloud:  get as much RAM as possible, lots of disk and a decent CPU so that I could run some VMs locally.  Only it’s not ‘pre-cloud’ anymore is it?  Working for Rackspace I get $200/month of employee credit for cloud services.    That’s actually a lot of cloud server/file/storage!   As long as I have connectivity, why run a VM locally?  It doesn’t really make any sense to do that anymore.  Why not offload as much as possible into the cloud anyway?  Isn’t that what I’m preaching?

So I just bought the middle-model MBP.  2.6GHz CPU, 8GB RAM, 512MB SSD.  And I can tell you it’s really fast.  So far, I’m loving it.  Now to get it all set up the way I like.  :)

Tech I’m Playing With

Well, the Giants have won the World Series and the parade is over… Ben’s wedding is past…  the floors are refinished and we’re mostly moved back in…  and a chunk of travel is done for my employer Rackspace.  What’s a guy to do, aside from some projects for side customers, raising kids, spending time with my wonderful wife, and getting ready for the Holidays?  Why, find some technology to play with of course!

The first is near and dear to my heart.  This product was something I was envisioning years ago and Jordan Du Val over at MELD has made it real.  It’s a ‘pico-broadcaster‘ and it’s basically a legal tiny TV broadcaster.  You stream media to it over the network and it broadcasts it to any digital TV within range (at least 350 feet).   Now, I see some very obvious applications in retail signage (why I wanted this so bad back at PRN).  But there’s a jillion other applications – basically any time you need to put some TVs out and have them show the same synchronized content that you control – and not have to wire them all up over ethernet.  I have some ideas around some software that I might right for these applications.  Jordan is a great guy and sharp businessman and I wish him the best – and maybe we can make a few dollars together if my software works well.

I’ve also fallen for a new sensor unit.  It’s a Node from Variable Technologies.  It’s a 3 axis magnetometer, 3 axis accelerometer, 3 axis gyroscope – with Bluetooth Low Energy (BLE) and a rechargeable battery.  BLE is the new Bluetooth 4.0 that does not require a special decryption chip for Apple products… and it’s very cool.  This sensor is the leading edge of a bunch of very cool products.  Right off the bat, imagine football players with one in the helmet so you could measure the hits (and maybe pull them if they got a hit hard enough to cause a concussion).  I can imagine it in a wristband that batters use to measure how flat and fast their swing is in baseball.  You can already buy a product for golfers that does this.  I’m very excited about cheap sensor technology like this and what it will enable.  First step:  understand it!

So this Thanksgiving season I am thankful for all the great things in my life – my kids, my wife, my house, my friends.  I am well and truly blessed.  I’ll write some more about that later this holiday.  But on a techie level, I’m also very grateful for the opportunity to play with technologies that are the cutting edge of tomorrow.  I’ve been so lucky most of my career to get to do that.  It’s not made me rich yet, but it’s been extremely fun, I’ve made a great living, and I’ve been constantly learning.  I wish the same for all of you.

The Power of Karma in Baseball – Giants win the Pennant

The San Francisco Giants overcame a 3-1 game deficit to win the National League Pennant last night.  This clearly made my whole day – cut me and I bleed Giants Orange.  But I cannot help but deeply think about karma.

In game 2 Matt Holliday slid past the bag at second and went hard into Marco Scutaro trying to break up a double play (video).  It was widely considered a dirty play - certainly by me. The second baseman is supposed to be able to keep the bag in front of him and the sliding player is supposed to start sliding before the base.  As long as the sliding player can still touch the base as he goes past, it’s legal and a hard slide is expected.  But Holliday waited until he was on top of the base to start sliding and he went very much past the bag in a very football-type slide, hard into our second baseman.  I should point out that Marco Scutaro is a huge part of why the Giants even made the playoffs.  He’s been that amazing story of the older player (36) we acquired at the deadline who comes in plays inspired baseball and takes the whole team to the next level.

When the slide happened, my stomach clinched and I thought it was all over.  ”His leg is broken” I told my wife that instant.  ”We’re screwed.”  Luckily, it wasn’t broken, and amazingly Scutaro played that night a few more innings (including getting a hit that drove in a decisive two runs).  The fact that he was not completely knocked out of baseball is a miracle.  The fact that he could still play that night, and through the series, was simply a gift from Heaven.

Now, Matt Holliday felt bad.  He’s not a bad guy by all accounts.  He was just a bit too zealous to win, and he crossed a line.

And I think that the baseball Gods were watching.  Scutaro was amazing for us all the second half, but in the NLCS he batted .500 with two walks, scored six runs and drove in four – winning the Most Valuable Player award for the series.  The final out had Matt Holliday at the plate.  Sergio Romo made a great pitch and Holliday popped it straight up into the rain filled sky – and it came down right into the glove of who else?  Marco Scutaro.

Karma, with icing on top.  I think that slide was the beginning of the end of the Cardinals season.  They were an amazing team, with an amazing Manager (Mike Matheny).  They overcame so much, just like the Giants, to even be on the verge of the World Series.  The had the Giants against the wall for three straight games, but frankly, the last two were not really even close.  The Giants played solid baseball.  The Cardinals made error after error and let many un-earned runs score.  Breaks did not go their way – throws hit bases and ricocheted the wrong way.  A hit by Hunter Pence on the Giants shatters his bat but the ball bounces three times against his bat (see the super slow motion) so the trajectory of the ball was very weird, fooling the Cardinals shortstop and letting runs score.  Nothing could go right for the Cardinals after they got to that three game to one advantage.  It was like they were cursed.

They were.  Baseball karma.

But the Giants had to play right to take advantage of it, and they did.

 

Shuttle over the Golden Gate


End of the Manned Spaceflight Era?

The Space Shuttle will do a flyover of the Bay Area tomorrow morning.  I remember being in 9th grade and going on field trip to Albuquerque NM (I lived in Las Vegas NM at the time) to the NASA Symposium and NM State Science Fair.  It was an overnight trip.  We stayed in barracks at Kirkland AFB and the event was at UNM.  NASA Engineers showed movies and gave talks about the proposed shuttle – and what great things it would do for our space program.  They showed us drawings, we got to hold heat shield tiles and discuss the computers that would be needed on board and the fairly radical new fly-by-wire flight controls needed to land the thing.  I was 15, and I was hooked.

And tomorrow I will go outside and watch the end of an era as it flies over on it’s 747 carrier plane.  And I will reflect a bit.  33 years ago I was enamored with the future of manned space flight.  And now we experience what may well be the end of manned space flight in my generation.  It’s sad.  And tremendously stupid.  Our National investment in the space race fueled the biggest technology revolution ever.  The advances in computing, materials, instrumentation, analytics, manufacturing…  in effect, the emergence of the US as the technology leader of the world – all came from our race to the moon and the space programs that followed.

So tomorrow will be a bitter sweet day.  I’ll enjoy seeing the shuttle, of course.  But I’ll also lament that we seem to be putting all our bright minds on how to sell more ads and build more networked social media systems instead of what was once the most noble of dreams:  the manned exploration of space.