BUILD2 – Learning to Pilot the SnakePlane

This article is by c2willis and originally appeared on the Alteryx Engine Works Blog here: https://community.alteryx.com/t5/Engine-Works-Blog/BUILD2-Learning-to-Pilot-the-SnakePlane/ba-p/436434

Ideas are important

It’s important to be prepared; ask any scout! I am an avid reader of the Community forums, and one particular idea piqued my interest. So I mocked up some controls for the potential tool in an App using the Interface tools and Interface Designer.

interface designer.png

With this rudimentary preparation and a couple other ideas to which I could pivot if needed, I walked into the conference room in Nashville, not really knowing what to expect.

 

BUILD for good, or for ‘other’ good

This year, BUILD2 had five different tracks, including the Alteryx for Good track which was back for the second year. The other tracks had varying degrees of requirements and openness, including an Open track where the participants could build anything they wanted to build for Alteryx. So far, I was feeling good about my selection to build a tool for the community.

 

Socializing the project

Most of the tables in the room were packed, and discussion about the emerging projects was lively, bringing a pleasant excitement tinged hum. The SDK track section didn’t have as many participants as other tracks, and many of us came with projects to work on. In the end, I ended up working on my own, but I had picked a project that was manageable so I was still feeling okay about my choice.

My recommendation for future attendees is to build a diverse team in the lead up to Inspire and make room to pivot and expand when you arrive. There are good reasons to plan ahead, and also to expand when necessary.

 

Connect with the Alteryx team

There were several Alteryx team members in the room, and it was a prime opportunity to meet them face to face and discuss the SDK platform in more detail. Along with the Solution Center and UX Lab, BUILD2 was among the best opportunities I had this year to meet and discuss the Alteryx platform with folk who work on it every day.

Additionally, the Alteryx team provided support through the day when any of the teams had questions. I had a couple typos in my HTML file that was blocking progress for a while, and I got help to debug them faster than I could have done it myself.

 

Make it fun

Most importantly, I was committed to enjoy the experience in general. I wanted to have fun learning new SDK things, meeting new people, and building a fun tool. The competition was a way to do all of that, but also meant that I needed to submit something at the end of the day. Akin to a compressed college class!

For my project I picked a Python related name – Slither – to complement the fun SnakePlane name. And to go with a cool name, I searched for a free, and copyright free, icon to include in my YXI package. I feel good about the choice; it shouts ‘Slither’. Even if it has nothing whatsoever to do with the tool functionality.

icon.png

 

Include a sprinkle of functionality

Fun name and icon sourced, now I added in some Python code to make it useful. This is where I started to doubt my choice, because I hit the aforementioned errors in my HTML SDK widgets. It’s amazing how much time debugging can suck away from core development, but every lesson is valuable even the embarrassing ones!

Finally I was able to build the core functionality, and submitted the project by the deadline.

 

Lessons learned

Along the way I learned a lot about SnakePlane, but the first thing I’d like to share is actually about using the power of Python to your advantage. This was the first attempt at moving the GUI data name values from the OrderedDict (workflow_config) into the SimpleNamespace (user_data) for later use:

python1.png

And after working in SnakePlane for a while, it turned into this:

python2.png

The second thing is to read the tasks.py code, because the ‘build’ and ‘package’ invoke tasks have positional parameter options for reading from different ‘src’ locations, and packaging the code to different ‘package’ locations. This will be very helpful to me as I start to build a catalog of tools for our company.

python3.png