A few things that I’m pondering and working on to various forms and flavors…

– Several of us at work pitched in to get an Oculus Rift (DK2).  We rotate through, so each member gets it one week of every 6.  Geeky fun.

– Working with the Rift usually involves an Unreal or Unity game engine interaction.  I’m not likely to built out a full scale game, so I’ve instead been looking at Javascript interactions: see Babylon.js or Three.js, both of which can apparently interact with the Rift, albeit on different browsers / via different means.  Skipping the game route altogether, one of the guys and I are working up a viz project which could be ridiculously cool and useful as a way of letting users deal with lots of views of lots of data.  But it’s a side project for both of us, so we’ll see how far and how fast it goes.

– I’ve started a new project at work.  Key elements involve Java REST services (RESTEasy versus Jersey versus..), authorization and authentication (Spring??  Java security policies??  something entirely different??), and maybe Docker.  Maybe even a bit of OpenStack.  Hitting a few MeetUps of late…  Some are better than others.  But that’s a whole ‘nother topic.

– I’ve still got an ongoing project at work that involve NLP and Neo4j (graph database) and trying to figure out how our infrastructure scales with and/or on top of it.  And how to spend limited hours being useful to that project, both because of my new project and because of budgetary concerns for the existing project.  (And because the primary developer is doing a pretty decent job – just mostly needs a sounding board and sanity check here and there, as well as a bit of customer engagement mentoring.)

– Oh, and a little bit of business development related to healthcare and some repositories of information available at the NIH.  Product vision kinds of discussions, possibly leading to SBIR grants or other means to actually, you know, pay for someone to develop a good app to access data in a meaningful way.

– I’ve tried a bit of c9.io and codio.io to see if I can do some Minecraft extension development in a virtual environment.  Objectives are two: see if I can build something cool for my kids (cool being both interesting to them, and potentially a spark to get them trying extensions on their own) and see if I can build up some sort of class lecture for use at a girls in computing kind of event.  So far c9 is winning, in terms of usefulness, though that’s mostly for my Rift oddball project.  Haven’t tried to run Minecraft on it as yet.  Maybe that’s my next thing while I wait for laundry tonight…

Things I haven’t done of late: anything with Arduinos or Furbys.  I’d still like to go back and figure out how to solder my connections to the Furby, and maybe even to a circuit board.  Also interested in trying to redo the example with Firmata/Johnny5.  But the project list is long, and the free time is always short.

Wandering through lots of ways to break code, and discovering all sorts of new things…  Keeping them here for my own mental reference – TL;DR for most of my likely readers…

  1. MongoDB
  2. Vagrant
  3. Neon

MongoDB:

  • Invoked fields with spaces in them.. See doc[“Thing with a space”]
  • Replaced those double quotes with single quotes, when invoking within a Puppet execution
  • Ran a function within a forEach to let me do a calculation for a new field – in this case, a z-score for each US state represented within a record
  • Learned about skip() and limit() – highly useful when needing to jump to arbitrary records
  • find({}, {“field1”: 1}} – return a subset of fields from a record to give me a nicer way to jump through data

Vagrant:

  • logging to help me figure out where things are ka-busted

Neon:

  • query.aggregate

 

Next up: d3!  Except that I had hoped to be well waded into d3 by this time today already.  Grrr…

 

I’ve long been a believer in the 80/20 rule.  Not the way it’s usually thought of, where 80% of the results will accrue from 20% of the input.  But the view that says the last 20% is darned hard to earn.  In fact, I’ve often believed that each incremental movement forward had a strong probability of being significantly harder than the last incremental movement.  In economics, they call it diminishing returns – getting less and less result for the last bits of effort.

So, it’s never unexpected to me when there’s a set of crazy challenges at the tail end of a project.  In fact, I’ve grown to count that as an indicator of nearness of the finish line.  The weirder the curveballs coming my way, the closer I must be to glory.  Hey, if it’s a fantasy, at least it’s a fantasy that keeps me going instead of quitting.

In the last few weeks, I’ve been working diligently on a project for OSCON.  I had some early wins, but the going’s gotten really rough of late.  Once I finally got over my fear of cutting wires to patch in a digital signal, I discovered that signals through wires weren’t really going to get me there.  I found a lot of guidance on infrared signals interacting with Furbys and how to run infrared from Arduino, and then discovered that my version of Furby doesn’t have an infrared sensor.  That’s OK – I have experience driving Furbys with sound, based on my Women In Computing efforts.  Hmmm – not thinking that the piezo that comes with my startup kit is going to do quite what I want.  But Adafruit has a Wave shield… uh, I’d have to assemble it, which will require soldering.  And it’s not available in our area, meaning it _might_ get here sometime Monday.

OK, SparkFun builds an MP3 player – perfect – do a WAV to MP3 conversion using various tools online.  Not so fast – after dragging the family and trekking ’round the Beltway to get the part, it doesn’t work on my Arduino + SEEED Ethernet shield stack.  Just plain doesn’t fit / seat to do anything useful.  Worse, I then read that the MP3 player shield needs to take over exclusive use of certain pins, meaning it would likely cause issues even if it did seat correctly.  I foresee a trip back to Micro Center in my future…

Things got a bit better and a bit worse…  I fell back to an approach just using an SD card, but didn’t have a SD card reader.  That was what I originally went to Micro Center to get, but had decided the MP3 player was the more complete solution.  It would’ve been, if it had worked.  So, off I went to Radio Shack to get an SD shield from SEEED, on the hope that it works  more nicely with the SEEED Ethernet shield than did the SparkFun one.

Hurrah!  It fits!  I’m now fighting issues with serial ports coming and going, and even a Windows BSoD.  Code’s working intermittently.  Gonna be a long night.

 

Working with a mish-mash of shell scripts and maven files, all of which were designed to work together in an environment with specific paths and environment settings that aren’t all well-documented.  (Even better would be checked at first run from a script with a fast fail, but…)  The builds are long – very long.  So it becomes useful to do partial builds.  Very happy to find someone listing an approach for block comments in a shell script.  That way as I figure out a new hack (documented in my script, of course), I don’t need to execute everything that came before.

Link for future reference: http://stackoverflow.com/questions/947897/block-comments-in-a-shell-script

 

For my OSCON brief, I’m hooking up an Arduino to a Furby. Got the Arduino, got the Furby. Have had a near panic attack at realizing that what I’m lacking is electronics expertise. The past few days have been a whirlwind of loosely analogous electronic circuits, trying them out, and dashes of terror followed by waves of relief as first something doesn’t work, then it doesn’t work some more, I worry about whether I’ve fried the equipment, and then finally something works. The thing I haven’t yet crossed my terror boundary on yet is soldering… all of my wiring has been through unplugging, connecting in via male or female connectors (see, I’ve already learned something!), and testing to see what’s different…

Tonight, though, I had to cut a wire. Two, actually. My Furby is now dead, though hopefully only temporarily. I’ve severed his ground and power wires (black and red, pretty conventional, I’ve discovered), and will now to attempt to splice them them with new wires that’ll plug into the bread board connected to my Arduino. The bread board has its transistor and resistor and diode all nicely arranged, and pretested with a little electric motor. Here’s hoping my Franken Furby arises again! Or my conference talk next week will be slightly different than I’d planned…..

Spent Monday and Tuesday at Healthdatapalooza in DC. Key objective there was to see how the Code-a-palooza shaped up, as well as what things folks were most talking about.  Recap here is a recap of what I sent to my healthcare-focused team at work, but

Here’s the winner’s list:

1) LyfeChannel’s Smart Hero app, which gives consumers information that they can use to discuss/negotiate with their physician what they’re charging you… (LyfeChannel also won a healthfinder.gov mobile app challenge last year, so is someone interesting to pay attention to… I was also interested in their approach of going to a local IHOP to find seniors and talk with them about what the data set contained, and how they’d like to make use of it… resonates pretty strongly with how my company looks at user-centered design)
2) AccordionHealth:  had an interesting model of tracking likely side effects to help determine an overall cost. These guys combined the CMS data set with a deep data set they had from Texas, so their app only really helps folks in Texas at the moment. Very small company, two PhD students, I believe.
3) Karmadata and its myhealth.io – find a physician for your surgical procedure. For a zipcode, find a procedure, get counts of patients, procedures, and physicians. Their company provides access to healthcare data, as well as an app gallery of apps built on top of their items.

In the demos on Monday, I also heard Fred Trotter talk about the data in light of DocGraph and its new Omni solution. Fred’s blog over at DocGraph also talked about some of the other competitors who’d entered the contest.  In Fred’s presentation on Monday, he pointed out that the data had some real gaps in usefulness. I don’t think the judges appreciated the poke, though I think I agree with Fred’s statement.

Takeaway on my part: we had an interesting angle for our own Code-a-palooza entry.  Via a system processing glitch, ours didn’t get considered for the competition, but we got good feedback from someone kind enough to give us a first-level look.  I’m looking across the Code-a-palooza competitor set (winners and others) to see where we might complement their offerings.  Our solution was much more ‘help me keep up with my own record’ focused than anything I saw in the competition pool.  Think ‘Mint for Medicaid’ with a smidge of Consumer Reports as a first-cut elevator pitch..

Things folks were talking about that I thought were interesting: OpenFDA (FDA data + APIs released giving access to more than 3 million adverse drug event reports), BlueButton (common means of sharing data across systems – intended to give you access to your personal health record), Open mHealth (another means of sharing data across systems, including things like FitBits), and even a bit of SMART platform came up. SMART is interesting to me because of it’s at least on-the-surface analogies to OWF – it appears to have had a resurgence of activity of late. Also tracking something called PCORI (Patient-Centered Outcomes Research Institute). All leading to – wow, a lot of things to explore and decide whether they’re worthy to track further.

Take a look at this NPR article for more news of HealthDataPalooza. The Kojo Nnamdi Show was also broadcasting from the conference on Tuesday the 3rd – you can listen in or read the transcripts from its site. Looks like the live chat held online has good info too…

One more healthcare world announcement of note that got mentioned at HealthDataPalooza as an aside: iOS X includes HealthKit platform, which is a means to bring together your quantified self fitness / other health data. Interestingly, they’re partnered with Epic. Uh, though this Forbes article points out that others have done that before (Google Health, Microsoft’s HealthVault)..

So a month and a half ago, I proudly announced that I’d been accepted as a speaker to OSCON, on the strength of the a topic called ‘Arduino + Furby Broken Build Notification – Oh, You’ll Want to Fix It Quick’.  The pit-stop ahead of OSCON is Next Century’s annual Women In Computing Day (link is for news of 2013 event… 2014 event is June 8), where Furbys will headline the Robotics talk area.

So what appeals to young ladies, roughly in the area of 8-12?   Why burps and farts, of course!  (Research acquired through both my own daughters who are suspect through parental influence, and through their friends, and through work with young ladies in our church over the years.)  Grand accomplishment of the afternoon: an Android app that allows a user to push a button and make a Furby fart _and_ burp on command.  I think Women in Computing will be a grand success.

Have had reason to do some new things with Git of late.

git archive: exporting and then zipping up or tarring up my git repo, minus any of my .git folders. Otherwise known as: not accidentally shipping my personal credentials out with my repository. (Note: yes, I’m aware that there are other means of storing credentials, such that they don’t end up in your .git/config areas… I just hadn’t configured them at that point for that project…)

git checkout-index, as discussed on StackOverflow: alternate approach to exporting, ala svn export.

Either of these hep better than this:
$ find . -type f -not -path ‘./notThisDirectory’ -exec cp ‘{}’ ‘/c/Development/toThisDirectory/{}’ \;

The problem with the above is that, although it nicely didn’t merge in the ‘notThisDirectory’, it did copy in my .git/config, thus making my separate local repository copy get remarkably confused about where it should push/pull from…

Testing our build instructions, so I want to ensure I _know_ the state of the machine on which we’re building. No good if my machine has some wonderful thing cached on it that we miss recognizing needs to be there. Seems like a perfect use for a VM.

I’ve previously done a (very little) bit with Vagrant, as I worked with an Ansible script that we hope to make clearly useful/usable for setting up a build/rebundling environment for OWF. But my Vagrant/VirtualBox/Ansible (etc) skills are weak. Time for a test today.

I have vagrant 1.4.1 installed from previous explorations.
Tried originally to add an Ubuntu 12.04 image to my Oracle VirtualBox directly – blocked by lacking a username and password. (And no, ‘ubuntu/reverse’ didn’t work… saw it, tried it, didn’t work.) So, per guidance on http://www.vagrantbox.es/….

$ vagrant box add “Ubuntu 12.04” “http://cloud-images.ubuntu.com/vagrant/precis
e/current/precise-server-cloudimg-amd64-vagrant-disk1.box”

$ vagrant init “Ubuntu 12.04”

$ vagrant up

$ vagrant ssh “Ubuntu 12.04”
— hmmm, doesn’t work

$ vagrant status

$ vagrant ssh default
… And I’m in!

 

Now to do my installations…

# need administrative privileges

sudo su

# need to update my machine’s knowledge of how to get / where to get packages

apt-get update

apt-cache search npm

apt-get install npm

(I’m now at v 1.1.4 for npm and v0.6.12 for node)

 

Hmmm – attempting to follow the next instruction:

npm install -g grunt-cli…

Didn’t succeed.   Very unhappily.

So, did an npm search – got an SSL Error – CERT_UNTRUSTED.  Aha – I’m not configured with a cert…  This stackoverflow helped….

 

OK, so now the issue is that grunt-cli won’t install because my version of Node is too old: grunt-cli needs at least 0.8 of node

Having challenges getting the two aligned…

 

OK, here’s where VMs are good things..

$ vagrant reload default

And this time around, I’ll start with the apt-get, but avoid getting node via it…

Hmmmm – no dice…

 

OK…

$ vagrant destroy

and now rebuild the thing, this time by setting up a shell script provisioner, so I can more rapidly iterate…  Using ‘Vagrant: Up and Running’, by Mitchell Hashimoto, to give me the magic mojo to put in my Vagrantfile.  (I’m going the simple route and using a shell script provisioner…)