Corso Systems

View Original

ICCX Build-a-Thon Challenge 1

Corso Systems was proud to participate in the Build-a-Thon Challenge for Inductive Automation’s ICC X in the fall. This year’s setup is different, it starts with 20 integrators. Through Challenge 1 the top 10 scoring integrators will move to Challenge 2, then the top 5 progressing to Challenge 3. From there (presumably) the top 2 scoring teams will move on to the final round at the Ignition Community Conference (ICC) in September.

Since we are a remote company to begin with, Corso Systems used our normal tried and true collaboration methods of Google Hangouts, Slack, and an Ignition development gateway running in the cloud.

We ended up in 5th place overall for Challenge 1. One of the early exercises was not especially friendly to remote teams, since the animation in the window was a little too slow to show up correctly on our screenshare—and we were only allowed one session. But, the rest were pretty well in line with what you would expect from a puzzle/riddle based game and it was a fun time all around!

Let’s get into the Challenge! *Spoiler alert: We are showing you the questions, but decided to leave out all of the answers in case Inductive Automation releases this challenge to a broader audience at some point. Full disclosure, our very own Andrew Geiger spent an hour after the challenge recreating the memory game from round 2 and it is now awaiting review on the Ignition Exchange.

The Build-A-Thon Challenge 1 Setup

The first stage of the Build-a-Thon challenge was designed to mimic a popular ICC activity: a tour of the Inductive Automation office. At various popular stops on the tour, there was a picture of the location and an associated challenge. The route through the office is shown below with the various icons indicating each challenge. As we all worked through the challenges, the map displayed each teams’ location in the challenge. You received 500 points for completing a challenge, and the first team to complete all 10 got 10,000 points. The overall points awarded were reduced by 500 points for each subsequent finisher, with a Superchallenge at the end worth an additional 600 points.

Ignition Build-a-Thon Challenge Round #1

This first question was a riddle. Looking at it after the fact, it’s really easy to figure out. But the answer involves part of the Ignition platform that we haven’t found many use cases for with our customers. So, it took us a moment to come up with the answer. We managed to get it relatively quickly and snaged our first 500 points.

Round #2

Welcome to the Thunderdome! Round #2 is a game. In this case, it was a version of the popular electronic game, Simon, where you are given a pattern of button presses to repeat. Each time you put in the sequence, it gets longer by one square and you have to input the entire string of presses before the timer runs out.

This one clearly stumped us as it took thirteen minutes to solve. We struggled because the animation was spotty at best over our Google Hangout. Each lighted color square was only on for a brief instant. It also required intense concentration towards the end and anytime someone chimed in with a suggestion, it broke focus and we had to start over. Finally we got it all figured out.

Cool idea, but poor execution for this format.

Round #3

Now we get into some typical SCADA screens! Round three featured a common(though not typical) PID graphic where a number of tanks with various valves connecting them are filled by pouring liquid into tank A. Some valves are open and some are closed, restricting the flow between the tanks. To solve it, we clicked on the correct tanks in order and were given the code so that we could move on to the next round.

Round #4

Round four continued on a “what do you know about Ignition” route with an architecture question. We needed to specify how many overall server connections there would be in a hub and spoke architecture system.

This question generated some healthy discussion and we solved it relatively quickly. At this point, we were moving up in the ranks surpassing some companies with 10x as many folks as Corso Systems—which is always a fun spot to be in!

Round #5

This round started the trend of “one session for the entire company” as a limiting factor. We were simply given a URL.

Going to the URL in a browser returned the text on the right. This indicates we used an HTTP GET to load the URL which is what type of HTTP call a browser uses. It was asking us to POST something to the URL which is relatively difficult to do in a browser, so requires a tool like Postman.

Using Postman is really easy, but getting it all lined up when we weren’t prepared to have it open got interesting. Then we had to pass the URL around and work through the cacophony of 15 people talking. That was a little difficult to handle, but we got it squared away in short order and the POST call returned the code we needed to move on to the next round.

Round #6

Since the overall format of the challenge was a tour around Inductive Automation’s office, each round’s challenge was preceded by an audio clip explaining what room you were in—then a link to the challenge was hidden in a picture of some part of the Inductive Automation office. For round six, this was a picture of their PLC lab.

This round was the first time we had to get into a Designer. We were given a Perspective View with a table and we needed to post this data to the given URL.

The hiccup with this round was that tables in Perspective—unlike tables in Vision—do not store their data property as datasets which would make this process trivial. We also probably shot ourselves in the foot a little all using one development gateway. That means we had fifteen people all trying to access a single view! Whoops.

The trick was to simply build a CSV file manually as a string, and post that to the URL. Onward and Upward!

Round #7

This round one was a mix of fun and technical. If we could have copied the text itself, this would have been trivial. But Travis Cox and Kevin McClusky wouldn’t lose out on an opportunity to be clever, so they posted images.

We simply went through line by line, collecting the different characters and generated the code. It was a pretty fun exercise although it was a little cumbersome to communicate the answers in the correct order over the Google Hangout.

Round #8

Based on the leaderboard, we noticed that the other teams were starting to spend a good deal of time in the last few challenges. It was time to put on our thinking caps.

Round 8 was a little more complicated compared to the last HTTP request challenge. The first step was to figure out the URL we needed to use—which was built up from the italicized words in the text above. Calling this URL returned a second riddle which was really easy to solve once we got it and required a post action to the URL.

This round was pretty clever overall, and was one of our favorites. We ran into a small delay having to communicate the URL amongst the group to get someone with Postman installed to send the answer to get the solution, but we knocked it out relatively quickly.

Round #9

This one was great if you are a regex master like our very own Andrew Geiger. The goal was to take the regular expressions on the top and the left and figure out which characters overlapped. Then put those characters in the grid. Once you filled out the grid, it became a word search.

We got about 40% of the way through when the option was pretty clear—so we guessed, and got it right!

Round #10

Round ten was a lot of fun. The first section required some knowledge about ICCs past and present. Filling that out gave us our first letter. Tweaking the controls on the second column got us another letter. The third one took some digging into the designer and ate up a majority of our time. Mini-challenge 4 was a letter search in the names of the various modules, the fifth one required coming up with the words describing the symbols. And the last one was a little tricky, but once we knew the rest of the letters it was pretty easy to solve.

Once we submitted the code we were awarded our 12,500 points! That put us solidly in 6th place, but with the Superchallenge still left to conquer, we knew we could make it to 5th place if the current team in fifth skipped the Superchallenge. Spoiler alert: they didn’t complete it, so we got into 5th place!

Superchallenge

The Superchallenge was a more traditional “CS Interview Question” style problem. Given some ridiculous string of characters you have to figure out what needs to be changed, removed, added, etc. then decode it to get your answer.

While the arguments for how we got to the solution vary, we ended up figuring it out once we had a few minds working on the problem. One of our newer hires Charles found out the trick that ultimately got us to the solution, and one of our Senior Systems Engineers, Marguerite, blurted out the answer a few minutes later once she had figured out how to apply Charles’ information to the problem. This pushed us up to 5th place!

Takeaways

The first takeaway is that speed is easy to measure. Although based on the ultimate skills required in the Build-a-Thon finals, speed is not the metric we would have chosen to find truly the “best” integrators. Yes, speed helps. If you already know everything there is to know about Ignition, you’d solve it quickly. But knowing everything and being able to design elegant and performant solutions is not the same.

That said, starting the challenge with 20 teams would be a lot of work for Inductive Automation to pore through if we did any designs in the first round. Hopefully that comes into play in rounds 2 and 3.

We’re also planning out our eventual Build-a-Thon project assuming we make it to the finals. However, given the type of project we are considering, we are planning to build it out regardless. We’ve always been a proponent of making the Build-a-Thon truly a community driven event, inclusive of everyone who works with Ignition and beyond. We will work to be the change we want to see in the world whether we are on Inductive’s Stage in September or on our own channels before then.

Obviously we left out all of the answers to the different rounds.