Friday, September 24, 2010

Bucket list: citizen science

Back in June I wrote a post about my Test Engineer Bucket List.  One of the items on that list was "Develop a test system that measures a fundamental aspect of the universe."  I think I've found an indirect way to scratch that particular itch: citizen science.

In the August issue of Dr. Dobb's I read an article about a recent success of the Einstein@home project: a new pulsar.  Very cool.  Also, in the June issue of Wired there's an article listing six different astronomical projects - also very cool.

I doubt any of these projects would give me a rush like building a calorimeter that sat inside the beamline at Fermilab, but it could still be fun.  Maybe I'll discover a black hole.

Monday, September 13, 2010

Visual Programming and LabVIEW, part 2

In Friday's post I wrote about the latest LabVIEW version, my reactions to it, and some thoughts on graphical programming.  This weekend I thought more about that conversation and wrapped it up with what I think LV should look like in the (near) future.

I applied for the App Inventor for Android, but I've read it takes a while to get approved for it.  When I get it and play around with it some I'll probably write a post about it.  But getting back to the Cube language thing from Friday, last month I started asking myself how would this translate to LabVIEW?  First I made a little logo, since that's the most important part.



Then I started thinking about how it would look.  It should be a stylized 3D environment: zooming in and out, pan and tilt, looking at it from top, bottom, front back, etc.  Then I started defining some details:
  • Navigation: As I just said, it would be a 3D experience.
    • You could spin the entire wire layout like you spin around a 3D graph
    • You could "peer inside" a subVI object by making it slightly transparent
    • You could "zoom" into or out of subVIs
  • Icons: All the current LV icons should probably just be 3D renderings of their current 2D versions.  But user-defined icons... THAT could be the cool part.  Imagine designing an icon for a subVI that, instead of a small square with a little image and text inside, is a 3D image of the test equipment it uses (provided by the manufacturer of course).  You could even swivel around to the back and see all the plug in options.  Cool, huh?
3D image icon of a Keithley 2400
Stylized 3D icon

  • Debug:  This option could be very slick.  When debug is turned on, you could have the option of "following" data travel from a "first-person-shooter" perspective.
Still a classic
  • Optional: It might need to be something you could turn on or off, depending on the speed of the computer's graphics processing.  Turn it off, and you're back to the 2D version of the flow.  
    • This also gets down to the choice of whether the 3D view is superficial or impacts how the block diagram is compiled.  If it's just visual, then you're fine.  If, however, certain aspects of your 3D model impact how the program runs (see, for example, "Flow" below), then you might lose that if you turn off the 3D viewing.
  • View hidden items: The "hidden" frames of a case structure, event structure, etc., could be viewable as stacked items behind the front of the structure.  It could appear perhaps as slightly separated index cards, with maybe the option to fan them out like a poker hand (which would look very cool).
Error case viewed from the front, maybe 30 degrees above the plane
  • Data Flow: This might be a tricky one.  One of LV's defining paradigms is data flow, and style guides suggest left to right.  But what happens if you can also go towards or away?  Should there be a switch in the compiler that says that code "behind" other blocks is not as preferential and should run "as time allows."  Or perhaps data on a tangentially angled line travels more slowly?  I think there are several games you could play with that idea.
  • Layers:  Mechanical modeling programs, imaging programs, and semiconductor layout programs all have the concept of layers.  Different things happen on the different levels.  Could we do something similar with LabVIEW 3D?  I alluded to that idea with "Data Flow" above, but maybe it should be more concrete.  
    • What if you defined separate layers for DB interfacing, hardware control, etc?  But instead of switching to those different different layers, you could see them physically: just zip over to that layer with your mouse.  
    • Or how about, for multi-core programming, coding on those different layers happened on different processors?  
    • There are certainly other tricks you could do.

I really like this idea of a true 3D interface.  I think the computing horsepower to do nowadays, it could improve the quality of LV programs by letting you see more details of the code, and it would be really fun to program in it.

Will this happen?  Who knows.  But if NI starts working on it, I want them to know that they heard it here first.... can I get royalties on that?

Friday, September 10, 2010

Visual Programming and LabVIEW, part 1

This is a long post, since I'm covering several different ideas I've had the last few weeks.  I'll break it up into two separate posts this weekend.
-----------------

LabVIEW 2010 is out, I've installed it, and I've played around with it for a month.  Frankly, it leaves me a little blah.  Yes, it has some speed improvements (but they improve the speed some every year) and some nifty new features (listed here) I can use.  But there is no real wow factor for me.  Maybe I'm jaded, but the last few LV releases have been solid stolid improvements on an existing edifice.  I really liked the project concept in LV8, I applauded the object oriented programming support in LV8.2, and I thought the new icon editor in LV2009 was long overdue. NI has been releasing a lot of useful, individual features each year, but there has been no overarching theme.  I'd just like to see something more from a graphical language.

I'd felt this way for the past year or so.  Then I read an article last month in Dr. Dobb's Journal about Google's App Inventor.  I followed this link to a 15 year old article about the cube language, written by a guy who now works at Microsoft.  These two items sparked some ideas.

That's enough for tonight.  Tomorrow I'll write what I think NI should do with a future version of LabVIEW.

Wednesday, September 8, 2010

The changing face of online content

Although it doesn't directly relate to test engineering, there was a good Newsweek article last month about how blogs, twittering, and crowdsourcing in general is changing.  Indirectly, it relates to what I wrote on my 3-year blog anniversary about test engineering blogs.