Sunday, November 3, 2019

Interview with Maplesoft

John Welty, Owner of Welty Automation and Product System Support of Mestek Machinery Inc., discusses his experience with MapleSim.

Sunday, October 20, 2019

Let's Build Software Together

I'm looking for somebody who doesn’t mind context and language shifting and doesn’t like to get locked into any one technology. I like solving problems and don’t mind solving the same problem in 2 or 3 different languages to explore the problem from different perspectives.

On any given day I’ll use at least 3 languages (C#, Structured Text, and c). Some days I’ll use 6 but I like to avoid those days.

The focus of the position will be on helping me wrap existing legacy code in tests to generate data for regression testing while also collaborating with me on next generation machine control software choices and design. We will also be working together to create in-house technical documents and also end user training materials. Desire to be continuously learning and improving is a must. This isn’t the position for somebody looking to coast.

It’s a great opportunity for somebody with a lot of curiosity and an appreciation for seeing software do something in the real world other than move data around. The machines my software controls have several 12,000 pound coils of steel on them and turn that into many thousands of pounds of heating and ventilating rectangular ductwork. We use 1,500 pounds per square inch of hydraulic pressure, electric servo drives, and variable frequency drives for most of the work.

No robots but I’ve got a machine in France that is a specialized robot of sorts… but that one is an exception.

The successful candidate will become an important and influential voice in a global family of manufacturing companies. Welty Automation is just me at the moment but I work with and within the worldwide leader in HVAC Original Equipment Manufacturing. My software is running on machines worldwide. Most of these are in North America.

Thursday, October 10, 2019

Unicorn Looking to Hire Another Unicorn

I’m looking for a rather unique candidate who would like to lay down roots in a long term career opportunity in a small Cedar Rapids company providing coiled metal processing equipment all over the world with Welty Automation control software on it. I’m looking to build a collaborative team to take our control software to the next level of stability and continuous improvement while responding with agility to the needs of the market.

The person I’m looking for will be a curious problem solver with an eye towards long term maintainability. We have both an existing code base to improve upon and an opportunity to begin building a new (next generation) control on new hardware with an improved development (.NET Core) environment. There will be legacy code to learn from, a transition to manage, and a foundation for the future to lay. This position will have influence on existing electrical and mechanical engineering design choices and will need to be able to communicate with non-programmers and programmers alike while also being able to stand in front of sheet metal works and shop owners while learning the needs and concerns of them all.

Does that sound interesting to you? If so, please check out my listing:

Thursday, September 5, 2019

Employment Opportunity for Application Engineer

Welty Automation, an innovative company in Cedar Rapids, Iowa, is hiring a full-time forward-thinking Application Engineer to assist in developing next generation machine control software and in documenting, testing, and maintaining existing production code.

We offer an excellent opportunity to work in a small team environment where you will be part of a fun, dynamic, high performance group which works closely with service, sales, engineering, and manufacturing for a world-wide leader in HVAC Equipment Manufacturing (Heating, Ventilating, and Air Conditioning).

Candidates should have excellent communication skills and be comfortable making management level decisions in a timely manner. We also seek people who are creative and possess strong customer service values.

Travel requirement time is approximately 25% of this position and may include 3-5 day service trips within the U.S. and into Canada. The frequency of service trips will vary with business needs. Some travel will be short notice and some travel will be required for occasional continuing education and training.

The Application Engineer will perform a variety of tasks including:
  • Developing and documenting control application designs
  • Developing program automation applications
  • Developing and executing formal test plans and scripts
  • Troubleshooting and resolving application issues
  • Tracking and reporting project status
  • Resolving technical problems at customer locations
  • Reviewing automation application needs and documenting requirements
  • Estimating implementation effort to develop automation applications
  • Creating project plans 
Requirements include:
  • Bachelor's degree (BS) in Computer Science (CS), Computer Engineering (CMPE), Electrical Engineering (EE), Mechanical Engineering (ME) from a four-year college or university, or equivalent work experience
  • Application development experience in a high-level language, preferably C/C++ or equivalent
  • Current passport and drivers’ license
  • U.S. citizen or national, or an alien admitted as permanent resident, refugee, asylee or temporary resident under 8 U.S.C. 1160(a) or 1255(a)(1). Individuals with temporary visas such as E, F-1, H-1, H-2, L, B, J, or TN or who need sponsorship for work authorization, are not eligible for hire
Additional preferred experience and interests include:
  • Experience in motion control systems
  • Understanding of IEC 61131 programming languages (ladder diagram, structured text)
  • Experience with real-time operating systems and programming in real-time environments
  • Interest in PC- and PLC-hardware applications, mechanical and electrical systems and physics
  • Desire to work in an international team environment
  • Experience in project management
Welty Automation offers competitive compensation commensurate with education and experience with a benefit package including health, dental and vision insurance, maternity and bereavement leave, and flex-time.

Cedar Rapids has a population of 131,000.  It is served by the Eastern Iowa Airport, just minutes from downtown Cedar Rapids. Driving time is approximately 4 hours from Chicago, IL and Minneapolis, MN.

Cedar Rapids has high quality public education and excellent, accessible medical care. Two private 4-year colleges and one community college offer academic opportunities. We are 30 miles from The University of Iowa in Iowa City.  We are home to a first-class symphony orchestra, an art museum with the largest Grant Wood collection in the world, and a vibrant arts community.  Sports fans can follow the University of Iowa athletic teams.

*Welty Automation is an equal opportunity employer and will not discriminate on the basis of race, color, religious creed, national origin, ancestry, age, gender, disability, medical condition or marital status or other protected status.

Please apply on Indeed:

Saturday, August 31, 2019

Machine Control Programming Adds Layer of Puzzle Solving to Software Development

I like that machine control programming has an added layer or two of puzzle solving when diagnosing machine behavior. The operator can't see my code executing. They see the machine behaving. My program watches inputs and controls outputs. The actual behavior has electrical and mechanical dependencies.

When a machine is not working properly, it can sometimes be difficult to know who to assign to troubleshooting. I spent the better part of a day trying to remotely help a customer diagnose a problem he was having. I could tell there was a bad signal coming from a part sensor but he couldn't find a reason why. He had replaced the sensor and checked every wire connection.

I flew out that week to help them in person. I quickly proved that it was a signal problem which was causing unexpected behavior. That behavior changed the speed at which a third party piece of equipment was running which made it difficult to troubleshoot. While my software wasn't causing the problem. My program wasn't helping to diagnose the software.

I altered my program to be more forgiving of the signal quality we were seeing. As soon as we did that we were able to focus troubleshooting on that 3rd party machine. This led to the discovery of some bad components (relay, potentiometer) and ultimately to find that their wiring harness had been rubbed raw and wires were shorting out.

Trips like this teach me that I need to be more mindful of edge cases when writing control software and to provide better options for remote troubleshooting. I was glad to be able to restore some control to the situation which proved helpful to their very capable maintenance person.

Great experience using TDD this week

I had a great experience with using TDD (Test Driven Development) to implement a new feature this week while at a customer site. I started by going into the location the code would need to execute. I did this to gather available information that would be needed for the feature.

I felt like what I was adding was easy enough in my mind and started, by habit, writing in a solution in spot. I stopped and thought back on an experience the week before where I was able to use a new function to improve old code. I reset my file (using git) and set up a new test environment instead.

In this development environment, I write my code in Structured Text (IEC 61131-3 standard) and my tests have to be written in c. So I started with a test that couldn't compile and then added the function it was calling without any behavior. I did only what I needed to get to green until I had all of the tests in my inbox (as J.B. Rainsberger teaches in his World's Best Intro to TDD Course:

I was able to write it test first and do final integration tests by hand in simulation before every putting the change on their machine.

I installed and ran it with confidence while the customer watched. I had no doubts when we ran off the first part to his specifications.

In the past I would've had something ready to test sooner but would've had to debug it in front of the customer. I would've ended up adding to the section of code with a procedural solution instead of having a few useful functions .

It felt slower up front but the confidence it gave me when I was ready to install it on the machine was fantastic. I suspect it would've taken at least as long if I'd done it on the machine but it would've taken time away from the operator being able to run the machine while I was working it out. So I'd say this was a force multiplier as it gives the customer confidence to see that we can make a change confidently.

Friday, July 19, 2019

Focusing experience on a customer service call

I shared this with some colleagues who found it inspiring and I thought it might also be generally interesting to others:

On a recent trip to Dallas, I arrived at the customer’s business on a Monday morning. They’d been down in production for more than a day the week before. As I walked in, everyone in the shop looked relieved; their shoulders relaxing. They were a smaller shop that depended on their processor for making blanks to run their plasma tables and to make rectangular duct. So, the entire shop was out of commission while that necessary machine was down and essentially inoperable.

I quickly connected with my laptop and let them run the machine for a couple of hours off that. They were elated to learn that this was an available service option. Within just a couple of hours they’d built up enough blanks and ran enough duct to get the rest of the shop back up and running and profitable again.

Those were hardworking people. They were on the floor busting their butts every day in a hot dirty duct shop suffering the elements and rewarded with reduced hours. Not a ballistic owner present voicing concern over profit margins, but real people who share in those ventures. In fact, the operator’s wife was pregnant and actually went into labor towards the end of my trip and he couldn’t make it in that last day. The magnitude of lost work falls to those that are the most vulnerable; the family.

So, on this trip I gained a better perspective of just how important our machinery, controls, and software are, both personally and professionally. I saw a dozen lives with families and mortgages and car payments tightly tied to our ability to provide quality equipment and expedient service.
I used this as a wake-up call for myself and I put together documentation while waiting for my flight back. I wanted to make sure that no one ever has to be affected like this again because of a lack of insight. A point in fact, this document proved immediately helpful with another customer having a similar problem but then being able to function from their own laptop thanks to that document.

I’m sharing these notes to encourage each and every one of us to keep the thousands of lives that depend on us each day in mind. It’s more than just those of us here at the factory and our lives and families. We have many hundreds of installations which multiply that demand on us to continually look for better ways to communicate to one another and make sure there are no roadblocks to continuously improving our products, services, and customer experience.

Best Regards,

John Welty