An effective software organization harnesses its members' creativity by using tools and processes to communicate purpose, plan, and progress while enabling contribution.  

I'll augment your software organization with my LabVIEW Architect's software skills and infrastructure / application development experience to create systems and software that harness you team's creativity.

Growing Software Engineering Expertise

LabVIEW User Group of the Year

In order to grow software engineering expertise, I created a user group system for engineers at different stages in their software expertise and across Cirrus Logic's international locations. I founded and led the Bach LabVIEW User group which was recognized as User Group of the Year at NIWeek 2018.

Creating Tools and Processes for Collaboration

Collaboration Platforms - Atlassian Confluence and JIRA

Using collaboration platforms, such as Atlassian Confluence and Jira, your software team can communicate with each other and the whole business organization.  I've architected content and project plans to serve end users, developers, architects, contractors, and managers. As a result, these stakeholders can always refer back to the information needed drive decisions and make progress, while being able to edit or add more information in an organized way.

Source Code Control

Process and standards for using source code control are critical to enabling team work and maintaining a health and stable code base. I've created standards and strategies in source code control to facilitate automated build systems and enable teams to work together. 

Build Automation

Part of software development is preparing source for consumption by fellow developers and end users.  While it may sound like a simple task, building source into exports can be as complicated as, if not more so, than the source itself. I've created a build system that abstracts complexity behind a user friendly GUI, freeing the developers to concentrate on the main application. 

At the LabVIEW Architect Forum, I presented the motivation, design, implementation, and impact of the build system at Cirrus Logic. The build system is open source and available for use from the links below.

BitBucket Repository: git clone 

Auto Documentation

Developers need to use each other's work with minimal effort. Documentation is one means to that end, though documentation's fundamental weakness is it can go stale. The only thing worse than no documentation is inaccurate documentation. I've created a utility to programmatically generate documentation from source code using Atlassian Confluence so that documentation would reflect a developer's notes in code. 

At the LabVIEW Architect Forum, I discuss the motivation, design, implementation, and impact of the auto documentation system at Cirrus Logic. The auto documentation utility is open source and available for use from the links below.

BitBucket Repositorygit clone 

Sequencer Template

Templates are starting points that accelerate developer productivity by implementing generic functionality that's easily customizable. Templates also have the added benefit of teaching and encouraging adherence to coding styles and standards. I created  the sequencer template to organize code without inappropriately hiding it behind subVIs.

BitBucket Repository: git clone 

Watchdog Framework

Frameworks enable high ROI software development by supplying complex functionality through small code extensions. However, frameworks that are hard to learn or understand can turn the ROI into a neutral or negative investment. Functionality and ease of use are key elements to a framework's value.  

In the Watchdog framework I demonstrate how to use familiar analogies and concepts to lower the learning curve. The watchdog framework is designed to monitor anything and notify you when some condition is met. The analogies are a watchdog, a perpetrator, and a bark. The watchdog looks out for perpetrators. A perpetrator could be something like your computer's RAM usage, or temperature, or time. When some threshold is crossed, the watchdog "notices" the perpetrator and "barks". A bark could be an email, a text message, logging to a file or any other action. 

BitBucket Repository: git clone 

LabVIEW Container

Low level code modules act like reusable building blocks that can be assembled in numerous configurations and combinations to create applications. Reuse enables efficient development and improves code stability since each module can be tested individually. 

I've designed, architected, and implemented numerous reuse libraries saving developer time. Once such reuse library is the LabVIEW Container, a two way linked list of lookup tables. The LabVIEW container was used to create the build automation system as well as numerous applications at Cirrus Logic.

BitBucket Repository: git clone 

LabVIEW Atlassian / Confluence / Jira APIs 

Combining modular thinking, infrastructure development, and collaboration tools can multiply your software organization's productivity.  Content collaboration platforms, like Confluence or Google Docs, often have APIs that can be used to automate tasks. I created this API to programmatically interact with JIRA and Confluence. This API enabled me to create the Auto Documentation utility.

BitBucket Repository: git clone

Nurturing Team Culture

Helping Teammates Through Tutorials and Documentation

While creating good software requires expertise, being able to convey software's value and teaching others how to use it requires just as much, if not more, expertise. Teammates must be able to use each other's code quickly. Tutorials and documentation can help lower and even eliminate the barriers to using each other's work. To create good documentation, you need to put yourself in your user's shoes.  

In "LabVIEW Community and A Slice of Raspberry Pi" I demonstrate how to convey value while instructing novice LabVIEW programmers how to use the tutorial.

BitBucket Repository: git clone