Monthly Archives: January 2013

A Non-Programmer’s Introduction to Kivy

I am the Creative Director here at Chaos Buffalo Labs; however, I occasionally dabble in programming and get my hands dirty in the code. With Particle Panda, I built the initial prototype of the tool and brought our far more talented programmers in when I wanted to polish everything up, and implement the more complicated features–like building the color wheels used for selecting your effect’s colors. This was my first real hands-on experience using Kivy to build a full-purposed application with extensive use of the .kv language. As an artist and designer with limited programming talent, the combination of Python and the .kv language is perhaps the first time writing computer code has felt like a natural process.

Previously I had begrudgingly worked with C#, Java, HTML, PHP, and a little javascript (oh yeah, and TI BASIC).  I could get these programming languages to do what I wanted, but the experience always felt forced and my goal was usually just to stop programming as soon as possible. Kivy took the headaches out of designing or implementing the functions and visual representations that I wanted. The .kv language is an incredibly easy-to-use and powerful tool for arranging your UI and passing your data around. The more I used the .kv language, the more I just kept exclaiming to myself (and my team, ad nauseam) about how clever those Kivy guys are.

Developing with Kivy feels as if the computer is meeting me halfway with a well-organized and human-readable approach, full of sensible metaphors for almost every type of graphical representation you could possibly need. I never once got bogged down in minutia, and the brilliant implementation of Kivy’s properties meant handling the data and user input was painless. On top of all that, the final result ran pretty well on even my older Android devices (Droid 1 and Asus Transformer). I hope to provide some further optimizations to the particle engine we are using, but all the other pieces function quite well.

I was also surprised that there is little room for complaint on every device and form factor I’ve seen Particle Panda run on. While on some of the lowest resolution devices with smaller screens it might be a bit difficult to grab the exact slider you want, it is still possible with stubborn attention to detail. There was no designing different layouts for various form-factors and screen sizes, every device uses the same exact layout/sizing, and Kivy scales wonderfully to all of them. Kivy is programming for the rest of us: sensible, slick, and worry free; all without sacrificing power or capability.