Jump to content

Chris Cilino

Members
  • Content Count

    26
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by Chris Cilino

  1. Howdy ya'll

    Thanks for your input. Please keep it coming! I'm trying to minimize my interactions with this thread so as not to inadvertently skew the conversation. 

    I love the technical aspect of this conversation. Sounds like so far in this conversation we're exploring the "How can we do this?". I'd like to propose the additional following set of questions to summarize the virtual coffee conversations we've been having and hopefully merge the conversations (mentioned by Stagg54in the first post

    To summarize, here is the logic \ questions that have arisen:

    The primary question: "How do I (as a consumer of code) prevent unwanted effects from code I download?"

    Leads to responsibility:

    1. Who is responsible to prevent unwanted effects of code?
    2. How do the responsible parties prevent unwanted effects of code?

    There seem to be two ways to prevent unwanted effects:

    1. Prevention: don't distribute bad code
    2. Mitigation: As a user, I have bad code. I need to remove it.

    Mitigation spawns two more questions:

    1. How to notify people so they can remove bad code?
    2. Should people be forced into a system so they can be notified?

    I'm not suggesting answers to those questions, but want to also throw them into our calculus. Please feel free to comment on those questions and keep the conversation rolling.

  2. On 5/8/2020 at 4:06 PM, gregoryj said:

    Do you use the case that comes with the Canakit, or do you have to take off the case in order to use the connectors with the breakout board? Thank you, looks like a lot of fun!

    Hi @gregoryj

    Sorry for taking forever to respond. I need to adjust my notification settings apparently.

    I do use the case that comes with Canakit. I'm able to keep the raspberry pi in the case and even put the lid on because of the ribbon that attaches to the breakout board.  I got the ribbon and breakout board from Freenova. My full hardware setup is documented in the bitbucket readme at https://bit.ly/ChrisCilino_LabVIEWCommunityAndRP.

     

    And yes... it is fun! Enjoy!

  3. GCentral is taking a yearly survey to help identify trends so we have data to back decisions. We're asking for 3 minutes of your time to complete the survey at:

    https://bit.ly/GCentral_Survey_2020-21

     

    At the end of the survey you'll be able to see a summary of the results. In order to help keep the results accurate, you're allowed to take the survey only once, and requires you to sign in to your google account.

    Thank you for your time and your opinions. GCentral's success is only measured by its usefulness to you. Help make GCentral what you need it to be.

    See additional information in the GCentral FAQ.

     

    And remember: GCentral is opening VIWeek this Sunday at 9 am CTD (https://bit.ly/VIWeek_GCentralPresentation)

     

  4. Love this idea! So basically an "idea exchange". I have an idea!

    1. Does the solution exist already?
    2. Is anyone planning to create it?
    3. Can I plan it in such a way that other's can implement it?
    4. Can I start implementation so that other's can join in?

    As a community member I would like answers to all of the above quickly. 

     

    Is that a fair summary @ChrisStrykesAgain?

  5. There has been a lot of discussion, which is great, but I feel the need to reiterate GCentral's vision and mission.

    GCentral envisions a LabVIEW community making the best version of itself by improving its capability through collaboration.

    GCentral is a non profit organization:

    1. for programmers who need to find, share or collaborate on G reusable code or software engineering tools.
    2. that provides a platform for G code packages and collaboration resources.
    3.  that is independent and driven by community experts.

    GCentral's Mission

    Enable LabVIEW programmers to collaborate by

    1. removing barriers to finding / using code designed for reuse (packaged code)
    2. removing barriers to contributing code designed for reuse (packaged code)
    3. removing barriers to co-developing code
    4. using code with confidence

    GCentral is package technology agnostic / SCC agnostic 

    1. GCentral does not endorse or encourage the use of one package manager over the other, nor will we. Each community member can package their code according to their preference.
    2. GCentral does not endorse or encourage the use of one Source Code Control Provider (local or cloud based) over the other nor will we. Each community member can use the SCC they prefer.

    GCentral will ease the pain we all feel when attempting to find and use packages by

    1. index the currently available public repositories (Tools Network, GPM, JKI Tools, NI Packages) 
    2. by indexing an new, un-gated, cloud based storage location that can house any package type. 
    3. by displaying the index results in a web page / APIs, etc (see https://www.gcentral.org/ for the prototpye)

    GCentral will ease the pain we all feel when attempting to contribute packages by

    1. creating new, un-gated, cloud based storage location that can house any package type (not source). 
    2. MAYBE creating software to transport built packages from build machine to the new cloud storage location

    GCentral will ease pain we feel when attempting to co-develop code by

    1. Creating template projects for each of the major online SCC. (GitHub, etc).
    2. Coming pre-configured to build the package type of your choice and upload to the GCentral package server. 

    GCentral will inspire confidence by

    1. Making any submitted package always available. Once submitted, a package cannot be deleted apart from a GCentral administrator. As a result, you can depend on a package without fear of it ever missing.
    2. Product pages per package designed to educate on the package and author.

    The above is a summary of the CLA summit presentation I gave (https://sites.google.com/gcentral.org/website/about-gcentral)

     

    The advent of the GitHub Package Registry is very interesting. I've reached out to GitHub to provide clarity on how extensible their framework is. At time 29:44 in the presentation Michael linked above the presenter says "We have a great extension framework for adding support for new registries, which will be opening up in the future". That MAY mean we can provide plugins for their registry to recognize NIPKGs, VIPs, GPKGs. And that may completely solve the "find/use" pain point i mention above... so long as the community is ok putting their packages in GitHub AND sacrificing confidence that the package will always be available to use or link against. 

    In conclusion, GCentral's aim is to impose the least amount of infrastructure on a community member while enabling us to find/use, contribute, co-develop packages designed for reuse. GCentral will use already existing technologies to accomplish its goal and create new technologies where needed.

    • Like 1
  6. All

    In case you haven't already, GCentral could really use your help in getting CLA feedback. If you attended the CLA, summit would you mind taking 10 min to fill out the survey . 

    If you didn't get the chance to attend the CLA summit please feel free to watch the presentation. I've included the presentation outline so you can go to the parts of the presentation you find most interesting. Then we would love your feedback via the survey.

    We're up to 33 respondents and I'm closing the survey end of next week (Nov 1). We really want to make sure we gather feedback from the community so we know we're on the right track. GCentral is for us as a community. Help us make this happen.

     

    Thanks.

  7. Hi Rolf

    That's good feedback. The current UI \ UX is just a proof of concept. Once we start designing the actual UI \ UX we hope it'll be efficient to use and pleasant to look at. One other note: the indexer is open source. Please feel free to suggest adjustments by joining the dev team on GCentral's git repo. Keep in mind GCentral.org is in its infancy so we're choosing to sacrifice aesthetics for functionality to avoid bikeshedding.

    Glad to hear you think GCentral is a good initiative and thanks for your thoughts!

    • Like 1
  8. 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

    History/Credentials/Social Media

    • Like 1
  9. 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.

  10. Description

    The Watchdog is composed of 3 main sections of code:

    1. 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.
    2. 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.
    3. 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.

    2019-05-18_16h17_57.png.dea5164d08757d7bded4f14e3ff534fc.png

     

    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.

    2019-05-18_16h13_08.png.8b439feb37e98b8553d886091222aaa0.png

    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.

    2019-05-18_16h19_57.png.6f42432d0aad857b8060a5ce0a854ba3.png

     

    UML

    All UML and API documentation are included in the Word document per released zip file

     

    2019-05-18_16h54_27.png.75a0c1f6fd9b8d7cbb34c37e04a6fd7e.png

    Software Requirements

    LabVIEW 2017

    Release Notes

    1.0.0-11(Watchdog 1.0.0-11.zip)

    1. Fixed spelling errors and regenerated documentation.

    1.0.0-9 (Watchdog 1.0.0-9.zip)

    1. Refactored locations of files on disk to be more structured
    2. Completed documentation
    3. Using timestamp for timeout perpetrator.
    4. Updated example with instructions

    1.0.0-3 (Watchdog 1.0.0-3.zip)

    1. This is the initial release. Very very alpha

     

  11. 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 class718x203.png

    The private data also has its own table that looks like751x257.png

     

    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.

    large.png

    Enjoy!

     

    • Like 2
  12. 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:

    2019-02-28_11h15_24.png.25326f7b20786fc87b5e15bfc34d09cf.png

     

     

    Release Notes

    1.4.0-123 (Component Builder 1.4.0-123.zip)

    1. Added new NI Package Manager API
    2. Added new NI Package Manager BuildSpec Utils 
    3. Added procedure and documentation for the component template and its anatomy

     

    1.4.0-113 (Component Builder 1.4.0-113.zip)

    1. 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)

    1. Added a few new P4 API functions allowing the creation of a session if a user is already logged it. 
    2. Added Log in and log out tests to the test suite. 
    3. Adding new function to tag all p4 paths in a label with the label.
    4. Resolving the input path to a p4 depot path
    5. Adding quotes around p4 paths.
       

     

    1.4.0-91 (Component Builder 1.4.0-91.zip)

    1. 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. 
    2. 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)

    1. 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)

    1. 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 )

    1. Fixed reference counting for executable builds. 

     

    1.4.0-73 (Component Builder 1.4.0-73.zip)

    1. In the case where a user has specifically unchecked "auto increment", the build process will auto increment the build. Builds must be auto incremented. 
    2. I've released a new build of the container that has a minor bug fix.
    3. 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)

    1. Minor spelling error in component template: "componet".
    2. Added documentation for the Custom Install Step Launcher.
    3. Added build instructions for Custom Install Step Launcher.

     

    1.4.0-58 (Component_Builder_1.4.0-58.zip)

    1. Added the ability to export NI-Source Distributions, NI-Executables, NI-Insatllers, and NSIS Installers
    2. Released a template component that exports an NI Package and VI Package including step by step instructions
    3. Released "Custom Install Step Launcher" to execute VIs as pre install, post install and post install all actions for NI Packages.
    4. Released comprehensive documentation included in the zip file.

    Component_Builder_5_31_2018.zip

    Component_Builder_10_11_2018.zip

    • Like 2
  13. 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!

    • Like 1
  14. 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!!

     

    post-51568-0-41383500-1436986435.png

     

  15. 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

  16.  What would be very useful too is a way to visit every element in the tree.  

     

    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

    Have a look at JSON LabVIEW in the CR, as it is uses another container-like structure so might be similar (or not, as I haven’t looked at your code).  Is your Container by-ref or by-value?  Looks like by-ref as you have “Create”, “Destroy” and “Copy” methods.

     

    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.

×
×
  • Create New...

Important Information

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