Solving Creative Problems with Technology: In Conversation with Coen Klösters
A lot of our work is very visual in nature, but not many realize how complex developing such projects can be behind the scenes. To provide an insight into the inner workings as well as the philosophy of Naivi we talked to our founder Coen Klösters, about why he started the company and his approach to solving creative problems with technology.
For those who haven’t heard of it yet, how would you describe Naivi?
Naivi is a software development company with a strong focus on technical innovation, creative problem solving and scalable software solutions.
What motivated you to start the company?
Naivi started as a creative outlet for my non-game related code adventures. I wanted to apply the same principles found in game development to the world of e-commerce, performing arts and art in general. I often saw ‘duct-tape’ solutions that weren’t very high performing, scalable or maintainable because a strong foundation was missing. This results in a lot of throwaway code that can’t be re-used. I wanted to change that.
One of the main products of Naivi is NAP framework. What makes NAP so innovative?
To answer that question, it’s important to consider why we created NAP in the first place.
Simply put: we missed the right foundation to create the experiences our clients were after.
Those unique experiences required us to communicate with a lot of peripheral hardware (sensors, servo’s etc.) on a low level, render complex scenes to multiple screens at once and handle large quantities of data in real-time. Existing technology never met all of those requirements, leaving us with a gap to fill every time or sub-par performance. To get the absolute most out of the computer we were in need of an engine that does not dictate any sort of pipeline. We also needed something that allowed us to (re)use and combine code quickly to iterate on ideas and setup new projects in an instant.
The end result is a lightweight ‘game’ engine that focuses on connectivity and interactivity instead of making games: a hybrid between ‘Unity’ and ‘OpenFrameworks’.
NAP Provides you with the building blocks to communicate with peripheral hardware, control robotics, automate lights, create installations and take over physical spaces. Everything in real-time using one common language. It’s an IoT engine on crack.
NAP is multidisciplinary in many aspects, could you elaborate upon that?
NAP is a framework that lets you build your own instruments, literally. It asks you the question: ‘what do you want to build’ and offers you the tools to do just that. This can be an interactive installation, a musical instrument, data-model or IoT solution. Because it’s so open it doesn’t impose any limitations on how you use it. It only provides you with a mold to start shaping your ideas quickly. In that sense it is a ‘creative engine’. Simply select the parts that make your application tick and use those to build the app you have in mind. Don’t need rendering? Remove it. The net result is a tiny package that can run on pretty much any device.
What is the project you’re the most proud of? Why?
I’m proud of all my projects. Up to this point all of them turned out well and I want to keep it that way. Every project has its own beauty to it, whether it’s a highly efficient data-model for Philips that people don’t see (but feel ;) or a fancy laser installation that challenges your physical senses. I like solving technical problems and to build beautiful software, that’s it.
What is something you wish more people would realize about solving creative problems with technology nowadays? Why is now the perfect time for solutions like NAP?
In my opinion ‘data’ is just that: ‘data’. We push it in, wrangle it a bit and push it out. But we often miss a unified way to do that. The focus nowadays is too much on ‘does it support protocol x’ instead of ‘how can we tie it all together in a meaningful way’. As software and its inherent problems tend to grow in scale a clear approach to tackle those problems (regarding complexity, stability and scale) is required. You often want to get to the core of the problem, which is your algorithm or logic, without having to spend days setting up your environment to get there. NAP allows you to create and edit an application in real-time, without having to worry about the order of initialization, resolving of internal links, where to apply your logic or initial performance. You get that and much more right out of the box.
Who do you think could benefit from using NAP the most?
‘Creative’ coders with a strong technical background that wish to get the most out of their software benefit the most from NAP. It is not intended for people starting out with code, since the principles underpinning the framework are based on more complex subjects such as a good understanding of game engine principles, type information, 3D graphics, memory management, etc.
People either love it or hate it. The one thing I often hear is that it feels empowering to work with the framework, it gives back the right amount of control but takes away the pain of setting up a cross platform build environment and the need to write your own engine. Many existing solutions make it easy to get up and running but don’t offer you the required handles to get down and dirty, tweak performance where needed and only ship what you need. I want people to feel empowered and in control when working with NAP, at the expense of ease of access.
Hardcore tools for hardcore people.
If you could give one piece of advice to those wanting to start with NAP, what would it be? What is the best way to start?
Start by compiling and running some of the demos that ship with NAP. I also started a YouTube tutorial series that explains the fundamental principles without going into too much detail. After that it’s a good idea to read the online documentation and start experimenting yourself. We also have a forum where you can ask questions.
Also: don’t get discouraged! NAP might seem daunting at first, but the principles that underpin the work-flow are relatively easy to grasp. It just takes some time and practice: ‘The best software in the world isn’t always easy to understand, but easy to use once understood.’
How do you see the future of Naivi/NAP? What are some of the plans and goals for the next few years?
We are currently working on a distributable iOS and Android package. This allows the same app to run on your phone, raspberry pi and desktop computer without any changes. We are also replacing our OpenGL renderer with Vulkan. Apple deprecated and stopped supporting OpenGL and I want to beat them to the punch. Simply put: I don’t trust Apple but have to support it because many of our users are on macs. We are also working on a computer vision and machine learning module. Napkin (our editor) is getting a new and vastly improved data-model.
Naivi is focusing more and more on embedded software solutions, applied to automotive and industrial engineering. NAP is a perfect fit for those industries. We will however keep supporting our current customers and existing applications already out there in the wild. Luckily for us most of those run just fine, allowing us to focus on new features and functionality in the future.