Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


cjcilino last won the day on August 16

cjcilino had the most liked content!

Community Reputation


About cjcilino

  • Rank

Profile Information

  • Gender
  • Location
    Austin Texas
  • Interests
    LabVIEW Architecting!
    Tinkering with all technology!
    Digital Photography

LabVIEW Information

  • Version
    LabVIEW 2017
  • Since

Recent Profile Visitors

1,352 profile views
  1. Rather than have a bunch of links floating around, I'm creating this "one stop shop" for my contributions to the LabVIEW community. This is my Cilino Suite aka "C Suite". Presentations My YouTube Channel of Presentations (bit.ly/ChrisCilino_Presentations) including: My LabVIEW Champion Interview NIWeek 2018 Keynote Presentation Soliton Customer Testimonial LabVIEW Architect's Forum Q3 2018 - LabVIEW Auto Documentation Software LabVIEW Architect's Forum Q4 2016 - Automated Build Process 2018 Certified LabVIEW Architect Summit - Everything a Software Engineer Needs to Know That Has Nothing to Do with Software Engineering My First Keynote Presentation at VIP Days in Germany Code - Reuse Libraries Automated Build System - Software Module Builder Summary: A system that turns source into exports. The exports can be of any type. Also determines build order of hierarchical modules, updates dependencies, and allows you to move the exports to the location you need for your end users to find and install the export and its dependencies. Download BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/software-module-builder.git Dependencies LabVIEW Container (see link below) LabVIEW SCC API Summary: An API designed to abstract server based source code control providers. BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/labview-scc-api.git Distributed as a part of the Automated Build system NI Package Manager Build Spec API Summary: An API to programmatically interact with and edit the LabVIEW NI Package Build Specification. BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/ni-package-manager-api.git Distributed as a part of the Automated Build system Custom Install Step Launcher Summary: Enables NI Package Manager to execute VIs as a Post-Install/Post-Install All/Pre-Uninstall action. Download: Distributed as a part of the Automated Build system BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/custom-install-step-launcher.git Software Module Template - NIPKG and VIP Summary: A template LabVIEW Project designed to be built into an NI Package and VI Package by the Software Module Builder (see above). With this template, a user need only put their code in the "source" directory and edit some build specification information and the build process will do the rest. Distributed with the Software Module Builder BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/software-module-template-nipkg-vip.git Watchdog Framework Summary: A software observer of "situations" that can notify when something of "interest" happens. The observer is the "WatchDog", the thing being observed is a "Perpetrator", and the notification is a "bark". Download BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/labview-watchdog-framework.git Sequencer Summary: A simple design pattern that organizes code on a single block diagram without the inappropriate/excessive use of subVIs. Download BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/sequencer-pattern.git Auto Documentation Summary: Think of this as Doxogen for LabVIEW. Given a Project, Lvlib or .class, this software generates report. The report is "printed" to a confluence page. The software is Object Oriented and designed to be extended through inheritance. Download BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/labview-auto-documentation.git Dependencies LabVIEW Atlassian / Confluence / Jira APIs Summary: An API that allows you to control Atlassian assets such as Confluence and JIRA from LabVIEW BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/labview-atlassian-api.git LabVIEW Container Summary: A dynamic data structure that combines the strengths of a cluster and an array. Download BitBucket Repository: git clone https://ChrisCilino@bitbucket.org/ChrisCilino/labview-container.git History/Credentials/Social Media LabVIEW Champion Page LinkedIn LabVIEW Champion Badge Certified LabVIEW Architect Badge Twitter NI.com Profile
  2. My apologies for not having much info on this page yet. I'm just trying to get the code in a presentable state and then I'll broadcast it's purpose and stuff.... And Cirrus Logic is not affiliated with NI. I'm not sure why my profile reads "NI"... hmmm.... I'll see if i can get that squared away.
  3. Description The Watchdog is composed of 3 main sections of code: Perpetrators: A perpetrator is something the watchdog knows to monitor or look out for. The most common perpetrator would be "elapsed time". We want the watchdog to notify us if a certain amount of time has elapsed. But...what if you wanted the watchdog to monitor many types of perpetrators? Disk usage? CPU usage? Temperature? Hence the perpetrator class was born and is a circumstance that the watchdog watches out for. Barks: a bark is what happens when the watchdog spots a perpetrator. You might want the watchdog to send you an email, or a text message or write to file or... Hence the "bark" class was born. When the watchdog sees a perpetrator it barks. Watchdog: this is the asynchronous engine that monitors perpetrators and barks when it spots a condition. Perpetrators and barks can be extended through inheritance so you can create your own circumstances to monitor and actions to take. The watchdog can monitor N perpetrators and preform M barks. API Example Below we see an example usage of the watchdog written using the Sequencer Pattern First, we create a perpetrator. In this case we want the watchdog to watch for time. If the watchdog is not petted within one second it will bark. Note you can build an array of Perpetrators. WatchDog Bark Configuration. Here we see three barks being configured. The first bark is a dialog box that will appear with the text "My Popup". The second is to send an email. The third is to send a text message. Last we "set the watcdog loose" to start monitoring our perpetrator. Here you can see we start the watchdog and tell it to monitor perpetrators and preform bark actions. In a for loop we pet the watchdog. Petting the watchdog reset equal to true resets the condition the watchdog was monitoring. So that if it noticed a perpetrator, it will start monitoring again. Because the watchdog is set to monitor a timeout not to exceed one second, it will bark twice. Unless the watchdog is petted again, it will always report that the timeout has occurred each time pet is executed. UML All UML and API documentation are included in the Word document per released zip file Software Requirements LabVIEW 2017 Release Notes 1.0.0-11(Watchdog 1.0.0-11.zip) Fixed spelling errors and regenerated documentation. 1.0.0-9 (Watchdog 1.0.0-9.zip) Refactored locations of files on disk to be more structured Completed documentation Using timestamp for timeout perpetrator. Updated example with instructions 1.0.0-3 (Watchdog 1.0.0-3.zip) This is the initial release. Very very alpha
  4. Have you ever needed to programmatically generate a report documenting your LabVIEW Classes? I've released an alpha version of my auto-documentation utility I designed and implemented at Cirrus Logic (http://bit.ly/ChrisCilino_AutoDoc). I designed and created the software in 4 parts. 1) An Atlassian Confluence API, 2) An Atlassian JIRA API, 3) A Class Report generation API, and 4) Two very small "applications" the demonstrate the API's usage. Not only can the APIs \ examples document your code, you can also generate JIRA tickets for the parts of your documentation you're missing. I hope you'll find this software as useful as we at Cirrus Logic have. I would consider it "mid alpha" quality, but intend on investing in it over time. You can find the software at http://bit.ly/ChrisCilino_AutoDoc Here's an example of a generated report for the members of a class The private data also has its own table that looks like There are many more features to the report, not to mention the APIs used to generate the reports. Also I've created an application to generate JIRA tickets that list the missing parts of a report. Enjoy!
  5. Overview In order to quickly and efficiently prepare source for distribution, a build system was necessary to abstract away the conversion of source into the different types of deliverables (VIPackages, Executables, dlls, ect) as well as abstract away the build order of our software hierarchy. Many have undertaken to solve this problem. I don't claim to have created a silver bullet. But I do hope that the system I've put together (and am releasing as open source) will act as a starting point for you to extend and customize to meet your needs. I've endeavored to employ good software development principles including separation of concerns, and the SMoRES principles. I'll be the first to volunteer that it isn't perfect and as always, our best software is constantly a work in progress. However, I believe the build system is at a stage to be at least moderately helpful to a handful of people in our community. Description The Application's UI The UI is designed to guide someone through the build process, allowing them to select what components or exports they would like to build, if and how they would like to be notified about the build, auto submission options, and source code control. I've attached a small video titled "Build UI Demo.mp4" below. UML and APIs All UML and API documentation are included in the Word document per released zip file Software Requirements LabVIEW 2017 NI Application Builder VI Package Manager Pro Other dependencies are listed in the Instructions per zip file. UML Overview As of 1.4.0-58 the UML looks like: Build UI Demo.mp4 Release Notes 1.4.0-123 (Component Builder 1.4.0-123.zip) Added new NI Package Manager API Added new NI Package Manager BuildSpec Utils Added procedure and documentation for the component template and its anatomy 1.4.0-113 (Component Builder 1.4.0-113.zip) Added documentation for the SCC API 1.4.0-111 (Component Builder 1.4.0-111.zip) 1.4.0-99 (Component Builder 1.4.0-99.zip) Added a few new P4 API functions allowing the creation of a session if a user is already logged it. Added Log in and log out tests to the test suite. Adding new function to tag all p4 paths in a label with the label. Resolving the input path to a p4 depot path Adding quotes around p4 paths. 1.4.0-91 (Component Builder 1.4.0-91.zip) The refactor of the LabVIEW SCC API is complete and the build process is linked to the new install location. The LabVIEW SCC API can now be used independently of the Component Build process. I've included a test suite for the P4 implementation of the SCC API. It assumes that you have checked in the two files in the "Build Instructions\LabVIEW SCC API\Test Suite\Tests\Test Dir" into perforce. 1.4.0-85 (Component Builder 1.4.0-85.zip) This is a major refactor in the SCC API. I've modeled the p4 label with a new api. This release is primarily as an intermediary release. I intend on breaking SCC out of the component builder into its own separate component in the next release. 1.4.0-81 (Component Builder 1.4.0-81.zip) Created a "proxy" api for VI Package manager interactions. Sometimes the VI Package manager api would hang. So I now call by reference and will kill and restart VIPM if it doesn't respond in time. 1.4.0-75 (Component Builder 1.4.0-75.zip ) Fixed reference counting for executable builds. 1.4.0-73 (Component Builder 1.4.0-73.zip) In the case where a user has specifically unchecked "auto increment", the build process will auto increment the build. Builds must be auto incremented. I've released a new build of the container that has a minor bug fix. Added file utility tools to aid with using "net use" to move and copy files across the network. 1.4.0-59 (Component Builder 1.4.0-59.zip) Minor spelling error in component template: "componet". Added documentation for the Custom Install Step Launcher. Added build instructions for Custom Install Step Launcher. 1.4.0-58 (Component_Builder_1.4.0-58.zip) Added the ability to export NI-Source Distributions, NI-Executables, NI-Insatllers, and NSIS Installers Released a template component that exports an NI Package and VI Package including step by step instructions Released "Custom Install Step Launcher" to execute VIs as pre install, post install and post install all actions for NI Packages. Released comprehensive documentation included in the zip file. Component_Builder_5_31_2018.zip Component_Builder_10_11_2018.zip
  6. With NIWeek 2015 around the corner community events like the "World's Fastest Coding Challenge" are getting spun up. Another one of my favorite community event is the "Challenge the Champions", a competition between 5 LabVIEW Champions (including the new LabVIEW Champions being inducted at NIWeek 2015) and 5 challengers who think they can usurp these leaders of the LabVIEW community. In case you're unfamiliar with the LabVIEW Champions program you can find out all about it at bit.ly/lv_champions. I already have three challengers who'll definitely give the Champions a run for their money lined up. So I'm looking for two brave souls to step up to the plate on Tuesday evening, August 4 at 6pm sharp. To those two challengers out there, please send me a private message by Wednesday July 29th. Fame and glory await! NIWeek 2015... 8 days and counting! All systems go!
  7. NIWeek 2015 is just a few short weeks away! Community is a huge aspect of NIWeek and one of the most popular and fun community events is the “World's Fastest LabVIEW Programmer†competition. This prestigious title has been successfully defended by NI’s own Darren Nattinger (and if you’ve ever seen him compete you understand why). But this year Darren has announced his retirement from the competition and will go down in history as undefeated for 7 straight years beginning in 2008. While we’re sad that he won’t be competing, that means there will be a new name inscribed on the coveted trophy! For those of you unfamiliar with the event, the “World’s Fastest LabVIEW Programmer†is a competition to see who can best take advantage of the many LabVIEW IDE tools, like Quick Drop and a vast array of APIs, that make it easy to crank out code at breakneck speeds! Visit bit.ly/lv_fastestcoder to learn more. Your journey to the trophy begins at the “LabVIEW Coding Challenge†kiosk in the LabVIEW Zone on the NIWeek expo floor. There you’ll face three challenges designed to put your lightning fast LabVIEW skills to the test. The two fastest competitors will be brought up on the Technology Theater stage Wednesday evening of NIWeek at 5 pm in a live, face to face race to the finish. And of course, spectators are welcome to cheer them on! Think you have what it takes to be the next World’s Fastest LabVIEW Programmer? Step up to the kiosk and let the race begin .... glory awaits!!
  8. Totally looking forward to the BBQ!!!
  9. Howdy! It's getting close.... NIWeek 2014 is almost upon us! To celebrate I put together a video for the LabvIEW Coding Challenge (linked below). To qualify for a chance to go up against Darren, visit the LabVIEW Coding Challenge in the LabVIEW Zone of the expo floor and test your skills. The two fastest coders will go head to head for a chance to go up against Darren, the world's fastest LabVIEW coder! The competition is at high noon on Thursday, August 7. I've personally written the questions and this year will be entertaining and fun.... I guarantee it. Darren's Coding Challenge Chris Cilino Certified LabVIEW Architect
  10. Hey MarcCG, Thanks for the props! It's kinda funny. I've created some "hidden VIs" for my own purposes and one of them is to return an array of references to each node in the tree. In effect I flatten the hierarchy into an array so that you can touch every element. After install, the vi is located at ..vi.lib_ApplicationToolsContainersContainersContainerTestsTesting UtilitiesReturnEntireHierachyofContainers.vi Hey drjdpowell The Containers are by-reference. I didn't want to create copies of Containers in the tree so I store references to children in parents.
  11. Well.... here it goes. This is my first LAVA post and I'm pumped! Figured I'd start out by asking for ya'lls (yes I'm from Texas) opinion on a side project I've had in the works for a while. I've developed in LabVIEW for just about a decade, even before my career at NI, and I've run into cases where I wished the array shared some of the characteristics of the cluster and the cluster had some attributes of the array. For example, I wish I was able to name and index my array elements by name like you can with the cluster while also not having to hard code that name on the block diagram with something like an unbundle. Almost like a dynamic unbundle by name... or something like that. So I've put together something I call the LabVIEW container that has the "dynamic-ness" of an array and the hierarchy mixed type named data "feel" of the cluster. It also behaves like a tree because of the "One parent - Many child" model. Here's a super short 5 minute video describing the concept and demonstrating a functional prototype. I've also created a community document that goes into much more detail and from which you can, if you so desire ( ), download the Container and give it a spin. I'm still doing a TON of cleaning under the hood, and adding things like VI documentation at the moment, but I'd like to get ya'lls feedback on the usefulness of the idea and thoughts on the API. This is something I'm really excited about and I hope that it benefits the LabVIEW community. Thanks ya'll!!!! Chris
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.