NIWEEK SESSION TEAM-BASED DEVELOPMENT AND SOURCE CODE CONTROL NOTES

AUGUST 03 2010

Here is my notes for the wonderful session by Elijah Kerry on team based development in LabVIEW.

Team-Based Development and Source Code Control

With Elijah Kerry, LabVIEW Product Manager

File Organization on disk

  • Establish guidelines early
  • All files should be stored within root

Project Explorer

  • Manage all app resources
  • Track dependencies
  • Perform file operations
  • Deploy to hardware targets

Use advanced features

  • Classes
  • Libraries
  • xControls

Tips

  • Use project explore to fix conflicts
  • Auto populating folders
  • Virtual folders

Source Code Control / Change Tracking

  • Source code control is communication layer between developers
  • Central repository
  • revisions to keep track of changes

TortoiseSVN:

  • Integrates with Windows Explorer
  • Ability to check out, check in
  • Diff can show differences between changed VIs
  • Merge can merge changes from two VIs into one
  • JKI TortoiseSVN plugin can revert VIs and update links
  • Tip: set skipSVNFolders=true in LabVIEW.ini
  • Separate compiled code from source file in LabVIEW 2010

Code reuse / Package Management

VI Package Manager

  • Ability to bundle all necessary files and dependencies into a package with only certain VIs exposed to the end user
  • Auto increment versions of VIs, track package version, push new versions to clients
  • Define custom palettes of VIs and restrict access to others
  • Can scan a project for packages that are needed

Packed Project Libraries

  • Distribute and deploy LabVIEW libraries as a single file in LabVIEW 2010
  • Decrease build times
  • Deploy the VI hierarchy with a single file
  • Simplified code deployment

Visit ni.com/largeapps for more info


The session was quite good with a lot of helpful tools and tips that I know I will use.

NIWEEK FIRST SESSION: STATE MACHINE VS STATE MACHINE

AUGUST 03 2010

Through my employer, I have had the amazing opportunity to attend NIWeek! The keynote today was great, lots of new hardware and demos for them.

I also attended my first technical session, State Machine vs. State Machine, a very interesting talk about two LabVIEW software architectures. For what they're worth, here are my notes for that talk:

State Machine vs. State Machine

JKI, NI, and G Team

Why?

  • Explain details behind great tools
  • Engage in hearty banter over the best way to architect big applications
  • Save time
  • Team dev
  • Spend time designing app not framework
  • Minimize Risk

JKI State Machine

  • A fundamental structure - Low level structure template
  • Easy understood by the novice
  • Easy to scale and extend - uses events and queues
  • Not complicated, requiring minimal dependencies

Demo

Big hunk of code, has idle case, initialize case, etc. Uses line separated string for states. Uses event structure to handle front panel events and adds state lines to string queue. Event structure in idle case. Ability to add states without editing state machine. Has local data, has "state fulness". Data in cluster defined in initialize. So two wires, one for states and one for local data. String arguments passed with state, data is based to states.

Other information

  • Leverages one communication method: User events.
  • Easily add components which can send messages
  • Easily adding listeners to those components
  • Get info out: Public events, other component register for events, easy to implement one-to-many architecture

Top Level Baseline Framework (TLB)

  • Leverages over five years of modular design
  • Intended as a top level VI
  • Suitable for single to moderately complex UIs
  • Easy to build into EXE
  • Easy to navigate with the assistance of limited color on the block diagram

Modularity important

Demo

  • Uses "creator" VI to create Baseline
  • Large screen size, uses color
  • uses producer-consumer loops, event loop producer
  • Has modules to run at start
  • Most of logic code fits on one screen
  • Starts by initializes queue (queue hidden by VIs)
  • All user data in cluster in shift register in typedef
  • All data available to all other states
  • User data updated at once using "Value Updated" event for all controls

TLB LabVIEW Exports

  • Event driven command response messaging design pattern
  • Designed in LVOOP
  • Contains both input and response messages
  • Dynamic events using objects
  • Created hooks to outside world using VI Server
  • Command and response are objects

Hopefully I'll be able to post more notes from the other technical sessions I'm attending. Thanks for reading!

COMMENTS ARE HERE

JULY 13 2010

Well, I implemented comments which I hope will allow people to ask questions or suggest improvements to what I post here. All comments are moderated to cut down on spam, so as long as you don't act spammy, you should be good!

COMMENTS COMMING

JULY 12 2010

Just as a programming note, I'll be adding comments to the site pretty soon, so there could be some down time. Don't worry, it will be worth it.

In the meantime, you could check out this tutorial on adding RSS feeds to your Rails app. As you can see from the RSS link at the top, it worked pretty well here.

HELVETIREADER ON SAFARI 5

JULY 07 2010

When I first came across Helvetireader, I thought it was the greatest thing. It basically re-skins Google Reader's interface in a much more minimal and beautiful interface.

However, there was a catch: no easy way to use it in Safari. Sure, you could install it as a user stylesheet, but you can only have one of those at a time. Using Firefox or Chrome didn't cut it for me, nor using Fluid (it might for you).

Then came Safari 5 with it's extensions. A lot of great extensions are available now, including one User CSS. With this extension, you can have as many user stylesheets as you want, each restricted to a subset of websites. This is great, I thought to myself. Then I remembered Helvetireader.

Long story short, I can now use Helvetireader with ease. Here's how to do it:

  1. Get User CSS. Install it by double-clicking the downloaded file.

  2. Go to the User CSS Manager and fill these fields in:

    • Name: Helvetireader (or something else if you so desire)
    • Domains: http://*.google.com/reader/view/* (or something to that effect)
  3. For the "Styles" field, download the Helvetireader stylesheet and paste all the code in.

Here's a screenshot of it in Safari 5: Helvetireader in Safari 5

And that's it. Now you can enjoy reading your RSS feeds in minimal, helvetica bliss.

RUNNING ON RAILS

JULY 05 2010

Well, after some hiccups with switching hosts (mostly due to me), lukepike.com is now running on Rails! I'm going to write up a guide to how I made this site, as it was a very educational experience for me and hopefully can help others as well.

What I can tell you now though is that developing in Ruby is glorious. Coming from PHP, it's like a breath of fresh air. Or a thundering stream of fresh, cool air. That works too.

Also, I just wanted to do a shout out to my new host, RailsPlayground. I had a few issues getting my app to run (.htaccess problem, I didn't have it right), but they responded amazingly quick and helped me to get running pronto.