[Webinar] Introduction to the Actor Model & Getting Started with the Actor Framework for LabVIEW

On Demand Webinar with LabVIEW Champion, Tomi Maila

If you are a frequent user of LabVIEW, then you’re probably already familiar with Actor Framework, the standard tool that has shipped out with LabVIEW for many years. Knowing how to maximize this tool though, is another story. The learning curve can be rather steep as it requires a paradigm shift in thinking on how to architect applications. We’ve created a new webinar with one goal in mind: to help users feel more familiar with the Actor Framework and actor model.


Join LabVIEW Champion and JKI partner, Tomi Maila in a 40-minute webinar as he introduces you to the fundamentals of the actor model for software development and how the actor model allows you to create robust and modular applications in an elegant way.

Tomi will take this theory into practice by showing how to create a simple actor-based application in LabVIEW using the Actor Framework. He will guide you through the basic components of the Actor Framework and how to effectively use them.

Join Tomi to learn:

  • What is the actor model for software development
  • How to architect applications using the actor model
  • How to launch and stop actors in the Actor Framework
  • How to add public methods to your actors

Duration: 40 minutes

Level: Intermediate

Watch Now!



Posted in Company News | Leave a comment

New Training Course: JKI State Machine for LabVIEW

Jim Kring CLA Summit Europe

Jim Kring, Founder of JKI, is a Certified LabVIEW Architect, co-author of LabVIEW for Everyone 3rd Edition, and respected thought-leader within the LabVIEW community. He is passionate about teaching and helping people to apply software engineering principles to their LabVIEW coding so they too can quickly create high-quality code for their impactful applications.

I’m excited to announce that JKI is now offering a hands-on training course on how to use the JKI State Machine (an easy-to-use yet powerful state machine template that’s made freely available to the LabVIEW community). It is the very same template that is used by the JKI team, nearly every day, and is the result of years of refinement by our team of LabVIEW™ experts.

This course is for anyone with a basic proficiency in LabVIEW who wants to create applications faster and write good, clean code (we’ll even send you home with some valuable project templates available exclusively to students of this course). The class is held at JKI’s headquarters in the San Francisco Bay Area and on-site at your company’s facilities.

What You’ll Get Out of this Course (Really, it’s Pretty Cool!)

  • Receive hands-on training from Jim Kring — he might even eat lunch with you and/or fix some bugs in your code!
  • Learn how to build scalable, maintainable software — these are the same code/techniques we use on all our projects at JKI!
  • Take home powerful LabVIEW project templates (available exclusively to students of this course) — your boss will think you’ve been working overtime and on weekends!
  • Learn how to Pass Your CLD / CLA Examsdo it the JKI Way!
  • Obtain a Course Completion Certificate from JKI — hang it on your cubicle wall, show it to your boss, and get that promotion you’ve been waiting for!
  • Get a complimentary signed copy of LabVIEW for Everyone — you can use as a monitor stand or even read it!

Click Here to Learn More About this Course and Sign Up Today

Posted in Company News, JKI State Machine, LabVIEW | Tagged , , , , , , | Leave a comment

Grid-Scale Energy Storage Powered by LabVIEW

Primus Power is a leader in low-cost, grid-scale electrical energy storage solutions with a safe, scalable, distributed flow battery system that economically serves multiple storage applications. With patented innovations in chemistry, cell design and system engineering, the company’s products offer exceptional power density and portability at industry-low prices.
Having already developed a lab prototype using LabVIEW, Primus Power teamed up with us to help develop commercial systems for shipment to customers.

EnergyPod with 14 EnergyCells

EnergyPod with 14 EnergyCells

EnergyCell Battery

EnergyCell Battery

The Challenge: Creating a system to control the electrochemical process of an industrial zinc-flow battery and to regulate and synchronize the DC power of multiple zinc-flow batteries connected in series for delivery onto the AC power grid.

The Solution: Using LabVIEW and multiple CompactRIO controllers to develop a real-time distributed system to control multiple zinc flow-batteries and LabVIEW FPGA for high-speed control and regulation of their DC power to and from the AC power grid.

Want to learn how LabVIEW helps control a flow battery for industrial energy storage and see how Primus Power’s system works? Read the full case study, Controlling Zinc-flow Batteries and Switch-Mode Power Regulation for Megawatt-scale Energy Storage.

Primus Power Case Study Icon

Additional Images (click to enlarge)

Energy Storage Applications

Energy Storage Applications

EnergyPod System Architecture

EnergyPod System Architecture

Posted in Applications, Company News, JKI, LabVIEW | Tagged , , , , , , , , , , , | Leave a comment

Using the JKI State Machine to Interface LabVIEW FPGA Webinar

Recording of a webinar with Javier Ruiz

In this hands-on demo, Javier Ruiz, a Certified LabVIEW Embedded Systems Developer (CLED) and JKI Senior Project Engineer, will show you how to create real-time and desktop applications with the JKI State Machine for LabVIEW to interface with LabVIEW FPGA for high-speed measurement and control.

Watch this webinar to learn:

  • How to create a basic LabVIEW FPGA application
  • How to read and write signals using the FPGA
  • How to communicate between real-time and FPGA applications
  • How to interface to the FPGA directly from a remote computer
  • How to transfer high-speed measurement data using DMA

Using The JKI State Machine To Interface LabVIEW FPGA Webinar
Duration: 45 minutes

Level: Basic / Intermediate

Watch Now!


Posted in LabVIEW | Tagged , , | Leave a comment

Announcing the New “Magic Delay Fairy” Tool for LabVIEW

JKI is pleased to announce the release of the new Magic Delay Fairy Tool for LabVIEW,  a revolutionary new tool for LabVIEW developers working to solve some of the toughest system timing and synchronization challenges.

Here’s how this tool can help…

Some Bugs Need Fairy Power

Let’s say you have a bug in your code shows up as an intermittent problem. Often times, adding a perfectly timed delay into your code can cause the problem to go away… almost like magic.

.                                           DelayMagic Delay Fairy

For example, say you’re configuring an instrument’s voltage range (sending the “CONF:VOLT:RANG 0,10″ command)  and then querying a measurement (sending “MEAS:VOLT?”). Sometimes the voltage is out of range and sometimes it’s not — the instrument gives you a beep, letting you know it’s not happy. In this situation, inserting a “magic” delay between your configuration and measurement steps might help.

Here’s a video that shows what we mean…

Before Magic Delay: Code is not working! :(

Before Magic Delays

After Magic Delays: Code is “working”! :)

Magic Delay After

How does this tool work?

The Magic Delay Fairy fixes race conditions in your code by inserting magical delays into your code that are specifically tuned using advanced magical algorithms to fix your race conditions. Don’t ask how it works, because it’s magic.

Warning! You may be so excited by this great tool, you may want to prance and frolic.


Act Now! Download and Install the JKI Magic Delay Fairy Today!

Download and Install the JKI Magic Delay Fairy using VIPM.


Special Thanks

Norm Kirchner for doing the magic fairy dance
– The guy whose face is on Norm’s presentation about the Magic Delay Fairy (we’ll update this description later)
Gavin Burnell for awesome Scripting Tools.
–  Brian Hoover and Yair on LAVA for help getting screen coordinates of GObject on Block Diagram
Darren Nattinger for making QuickDrop awesomeness
– OpenG for the Wait (ms) VI with error handling :)
– Everyone at JKI who contributed to this tool

Join The Discussion

What will you do with the JKI Magic Delay Fairy?  Will it save your project?  Your job?  Your life? Tell us in the comments below!

Posted in Company News | Tagged , , , | 2 Comments

JKI State Machine 3.0 Released (Open Source)

We are happy to announce that JKI State Machine v3.0 has been released as a JKI Open Source Project (BSD license) and is available for download using VIPM.

JKI State Machine

Additionally, we’ve upgraded the sources to LabVIEW 2013 and made a few minor cosmetic tweaks:

– Built in LabVIEW 2013
– Added “Event Structure” to the “Idle?” (“”) Case Structure frame
– Cleaned up floating labels used for documentation

This is a minor release, in terms of new features, but major in terms of it being the first release as an open source project. We hope this proves to make a big difference to the LabVIEW community. If you have questions or comments, please post in our discussion forums.

Posted in JKI State Machine | Tagged , , , , , , | Leave a comment

At JKI, we are on a mission…

At JKI, our team has spent a great deal of time over the years thinking about what it is we do, for whom, and why. Now, I’m proud to publicly announce JKI’s official mission statement!


Our mission has, naturally, permeated all of our work and resulted in a lot of happy customers who call us back over many years. This mission has also resulted in many significant technical contributions to both the high-tech industry and the state-of-the-art in LabVIEW.

More about our mission

JKI is located in the San Francisco Bay Area and serves start-ups and advanced R&D groups within high-tech companies in Silicon Valley and beyond. Fast-moving technology companies hire JKI to help them get their innovative products and technology developed quickly. LabVIEW and the NI Platform are tools we use extensively to help make this possible. Additionally, we employ software engineering best practices and tools in our work with LabVIEW, such as object-oriented frameworks and architectures, fully-automated software unit testing and executable builds (continuous integration), source code control, issue trackers, and Agile development processes.

These tools and techniques enable rapid development; the ability to iterate and change the software quickly as the requirements change. This helps JKI’s customers to continue to innovate and evolve (or even pivot) their product throughout the R&D process.

Are you building a next generation system or high-tech product?

If you’re in need of a team to help you build a next generation instrumentation system or product, give us a call — we’d love to chat with you about your project.

Want to join a great team and use LabVIEW on exciting projects?

And, if you’re a passionate engineer who loves LabVIEW, likes working with an amazing team, and wants to help high-tech companies create innovative products powered by LabVIEW, check out our careers page.

Join Our Team

Posted in Company News | Tagged | 1 Comment

JKI Open Source Projects

We are excited to announce that JKI has officially launched its open source software projects on GitHub.


JKI strongly believes in contributing to the open source movement and has made several of its LabVIEW libraries and tools available under the BSD License, a very commercial-friendly and permissive free software license (meaning, it’s very safe to use in your proprietary and commercial software applications and you won’t have to share any of your own code with anyone).

For starters, we’ve open sourced the JKI State Machine, JKI State Machine Objects, Command Line Build Tools for LabVIEW, and we’ve got plans to release a lot more projects very soon.

You can find out more information on our JKI Open Source Projects page here:




Posted in Company News | Tagged , , , , , | Leave a comment

CLA Summit 2013 Europe: “Public Events for Modules” Video & Slides Now Available

I had the pleasure of being invited to speak at the CLA Summit Europe 2013, at NI France in Nanterre (just outside Paris).  This was a fantastic event and it was a lot of fun to meet CLAs from around the world (and especially Europe) and learn from them about this year’s theme: Interprocess Communication.  The food was also terrific — I’m just sayin’ :-)

My talk, titled “Public Events for Modules,” was about a technique for Interprocess Communication in LabVIEW using Dynamic User Events as a core aspect of one’s software “modules” (classes, libraries, components, or whatever modular programming style you’re using in your LabVIEW applications).

In addition to showing how to expose Dynamic User Events for your modules, I showed some of the ease-of-use benefit this technique offers to both developers and users of software modules.  I also show some of the caveats and gotchas of this approach.

This was a really fun talk to give and I hope you enjoy it!

Here’s the video of the presentation:


Download the presentation slides here:


Posted in Events, LabVIEW | Tagged , , , , , | Leave a comment

#4 Best Practice for using the JKI State Machine: Use macros instead of “chaining” together sequential states

In my last post on JKI State Machine Best Practices, I explained the #3 Best Practice: Keep the Original Size (i.e. don’t grow the structures).  In this post, I’ll tell you which best practice came in fourth place.

The #4 Best Practice: Use macros instead of “chaining” together sequential states

Here’s what we mean:

A “Macro” is a state that simply builds up a list of other states; calling the macro is like calling all the other states in the list.


Note: There’s no actual work done in a “Macro” frame/state of the Case Structure. We simply add a sequence of states to the front of the queue.

Example of Good Practice: Using a Macro to Invoke Three States

Here’s an example of a macro that calls three states, sequentially:


Macros make it easy to understand the flow of the code; it’s obvious that a call to a macro will execute a sequence of states, and it’s easy to see what that sequence of states will be.

Example of Bad Practice: Chaining Together States

Here is an example of “chaining” together states to create a sequence, where each state in the sequence call the subsequent state:


This is much less desirable than a macro, because:

a) It’s not obvious that a call to a state my result in a call to the chained state — In the above example, it may not be obvious that a call to “State 1″ will result in a call to “State 2″ and then a call to “State 3″



b) It is much more difficult to reuse states/code in other sequential operations, because each state in the chained sequence is tightly coupled to the sequence. For example, it is impossible to call “State 2″ in the above example without it invoking “State 3″.

It’s hopefully clear, now, why macros are so useful and why chaining states may get us into trouble.

Looking ahead, there may be cases where you need to build up a macro dynamically/conditionally, depending on the state of system. And, you might not have that information at the time when you construct the macro. In these cases, there are some special techniques we can use that we’ll talk about that in a future blog post. Stay tuned!

We’d like to hear about your best practices for using the JKI State Machine. Please post comments and suggestions, below.  And, if you have ideas for making the JKI State Machine better, please post them to our Idea Exchange.

And a note from our sponsor: At JKI we use the JKI State Machine every day to help our our clients get their innovative high-tech products and technology to market fast. If you need help taking your system software to the next level or reach an important milestone, contact us to learn more about our services.

Posted in JKI State Machine, LabVIEW | Tagged , , , , | 5 Comments