LabVIEW Craft
  • Blog
  • About
  • Contact
  • Tools
  • Resources

Let's Collaborate

1/25/2017

4 Comments

 
Jon McBee
I recently published the code behind the event-driven reactive programming examples on the Composed System Bitbucket page under the project name Stream.  Stream is open source and if you are interested in collaborating on it let me know.  Because the source code is now being hosted in a public repository I am going to remove the VIP from the Tools page on this blog, that VIP is already out of date so go to the Bitbucket page and get the latest version.
Picture

Read More
4 Comments

Actor Systems with Event Streams

1/17/2017

6 Comments

 
Jon McBee
I've spent the last few posts talking about decoupling actors using event driven architecture (EDA).  Now that we have a common vocabulary I want to show some code that practices what I've been preaching.  So I decided to take the CLD ATM sample exam twice, writing one solution as a queue driven producer consumer and the other as an EDA actor system using event streams to drive the application.  Let's take a look at both.
Picture

Read More
6 Comments

Semantic Decoupling Between Actors

1/4/2017

11 Comments

 
Jon McBee
My last post discussed the different types of coupling between actors in a data-centric event-driven application.  This post will follow up with a deeper look at semantic coupling in these data-centric event-driven applications and I will propose a way to loosen this type of coupling.
Picture

Read More
11 Comments

Merry Script-mas!

12/19/2016

3 Comments

 
Ethan Stern
Every time I hear someone claim that the NI Actor Framework is hard to use or that it "slows down the IDE", a little part of me dies inside. Advanced actor-oriented design isn't simple, you say? I wholeheartedly agree. ...But, since when did expertise with a hammer--or, let's say, the producer-consumer design pattern--suddenly make someone Frank Lloyd Wright?
Picture
If it's not blatantly obvious, I value the Actor Framework (AF) as an important part of my toolkit. It's not the right tool for every job, but it is a useful tool for many. One part of the AF I don't love is the necessary tedium of building Actor Core event-handling UIs and then dragging reference controls (for my by-reference updates) into the Class Private Data Cluster. This got me thinking... In general, adding controls to a class feels like a relatively clumsy process, even when not using the AF. I let this mild frustration stew inside my melon for years, and then I finally did something about it.
Picture
A good ol' fashioned event-handling Actor Core. (Notice the bundling at left.)

Read More
3 Comments

Decoupling actors with Event-Driven Architectures

12/14/2016

0 Comments

 
Jon McBee
In my last post I took a look at data-centric and message-centric communication and their effects on software systems.  This post will take that discussion a little bit further by connecting the idea of data-centric messaging to Event Driven Architecture (EDA).  Along the way, we will build up a vocabulary that we can use to disucss systems of actors and the types of coupling we encounter while building them.
Picture

Read More
0 Comments

Futures, Promises and Continuations, Oh My!

12/12/2016

0 Comments

 
Owen Search
Delving into the world of asynchronous and concurrent programming can be quite daunting these days.  There is a deluge of jargon and hip new libraries to learn as a newbie.  At times, it feels like the difficulty in navigating these rough waters might rightly be interpreted as a dire warning: BEWARE THEE WHO DOES NOT KEEP HIS PROMISES.  But what is a promise anyway?  And for that matter, what is a future? Or a continuation? And here I thought I was in over my head when I started threading...
While I won't even try to completely illuminate these topics in a single blog post, I hope to provide a straightforward explanation that can help a beginner navigating the waters of asynchronous programming.  Really, once you get past the nomenclature, these programming constructs are REALLY interesting and useful.

Read More
0 Comments

Message Centric vs. Data Centric Communication

12/7/2016

4 Comments

 
Jon McBee
I recently gave a presentation at a local user group on message transport abstraction and how it can be used to abstract communication between actors running in LabVIEW and thin clients running in web browsers.  During the presentation an interesting question came up regarding why I chose to make communication between my actors data centric instead of message centric.  This question triggered a lot of thinking on my part and after a few days of rumination I decided that a blog post on the topic was warranted.
Picture

Read More
4 Comments

TDD in LabVIEW - a Caraya Approach

7/3/2016

3 Comments

 
Omar Mussa
Picture
Rolling the turkey takes some skill in bowling - since this article is the third in the TDD series, I feel a tad bit of pressure to execute!  In this article I’m going to create a parallel solution to the bowling game using the Caraya test framework by JKI that will converge with the final solution in the previous articles based on the Kata solution written by Robert C. Martin.

Read More
3 Comments

Hello World

6/30/2016

1 Comment

 
Jon McBee
Typically the first program you write when you are learning a programming language is, "Hello World!".  Due to the popularity of my prior post on optimizing the traveling salesman problem with genetic algorithms I decided to write a general parallelized Genetic Algorithm Framework for LabVIEW, naturally the first thing I taught it to do was to say, "Hello World!".
Picture

Read More
1 Comment

Bowling Kata - JKI VI TESTER

6/26/2016

0 Comments

 
Russell Blake
As a follow up to the post, Bowling Kata - Unit Test Framework written by Jon McBee, I will be following the same Bowling Game Kata by Robert C. Martin using the JKI VI Tester.  Because the original kata was written in Java, you will notice that Jon and I took different approaches when translating it to LabVIEW. You will also see differences based on the unit testing tools we each used. Hopefully you will find these differences interesting and informative.  To give another valuable perspective, Omar Mussa will follow up with a post that goes through the kata using Caraya.
Picture

Read More
0 Comments
<<Previous
Forward>>

    RSS Feed

    Tags

    All
    Abstract Messaging
    Actor Framework
    Agile
    AI
    Asynchronous Programming
    Best Practices
    C#
    Complexity
    Continuations
    Control Values By Index
    Craftsmanship
    Dependency Inversion
    Dependency Viewer
    Futures/Promises
    Genetic Algorithm
    Liskov Substitution
    Malleable VIs
    Mediator Pattern
    .NET
    Object Oriented
    Object-Oriented
    Packed Project Library
    Parallelism
    Polymorphism
    Pub/Sub
    RawCap
    Root Loop
    Scrum
    Task Parallel Library
    TCP/IP
    TDD
    Test Engineering
    UML
    Unit Test
    VI Scripting
    VI Server
    WireShark

    Archives

    October 2019
    April 2019
    July 2018
    October 2017
    March 2017
    February 2017
    January 2017
    December 2016
    July 2016
    June 2016
    May 2016
    April 2016
    March 2016
    February 2016
    January 2016
    December 2015
    November 2015
    October 2015
    August 2015
    February 2015
    January 2015

    LabVIEW Blogs

    Eyes on VIs
    LabVIEW Hacker
    VI Shots
    LabVIEW Artisan
    Software Engineering for LabVIEW
    ​Wiresmith Techology
Picture
Powered by the Panda Ant

  • Blog
  • About
  • Contact
  • Tools
  • Resources