ETC’s Unison Paradigm system provides facility-wide lighting control that is powerful and flexible to support small systems through to the largest and most complex lighting control needs. Touchscreens, elegant wall stations, and advanced control from apps provide a sophisticated face for userswhile occupancy sensing, daylight harvesting, and time-scheduling capabilities provide the maximum energy and budget savings. Integration with building systems is also simple for the greatest flexibility.
The system uses distributed processing over a network, with up to 120 Architectural Control Processors to a system. Configuration of the system is done using the LightDesigner software running on Windows.
Carallon has been involved in the Paradigm software development for ETC since 2005, and it is one of our most extensive and complex software projects. We talked to some of the software engineers involved:
Leo Khale - Director of Engineering was in charge of the large scale architecture of the original comms and code structure across the suite, and has subsequently overseen the addition of a variety of hardware products to the family over the years.
This was the first project Nick Bulleid - Lead Software Developer worked on after joining Carallon as a Graduate Developer, and he was responsible for fixing bugs and developing new features for the software. After 5 years working in different areas of the company, he's now returned to the same project as the Project Lead, managing a team of five developers and liaising with clients to create new releases of the software.
Chris Love - Senior Software Developer is responsible for developing new advanced features in core systems while mataining compatibility with older versions. His work includes modernising the systems to allow an already huge project to continue growing, and supporting increasingly large deployments.
Leo: Working on a real-time comms stack across multiple platforms, protocols and hardware with very different capabilities was a challenge. For example, we had to work with everything from 10Mb Ethernet to low-bandwidth Lonworks and simple radio wireless protocols. This at times required heavy optimisation of transport code to achieve reliable, high-functioning performance across the different platforms.
Nick: This was my first big feature - developing the Energy Management suite of tools for monitoring the energy usage of the lighting in a building. It was definitely an interesting challenge, as it touched almost every part of the project. It was a great introduction to the desktop apps, embedded processors and touchscreen UI that I now work with every day. It's also good to hear about large sites that are using these tools to reduce their energy usage.
Chris: It's been really interesting for me to see how far we can push the scale of the control systems beyond where they were originally designed. That said, we once had to do an almost "ground up" rewrite of one of the core systems, which was very challenging. We would find things that had "just worked" before now suddenly didn't, and needed careful design around it to maintain compatibility and functionality. It taught me a lot about the need to understand where we are now, and where we want to be before getting started.
Leo: Modifying the original design to accomodate major new features years later (e.g. server/multi-project support) which were not envisaged in the original product design. This required careful balancing of existing code reuse and new development to deliver on a feasible timescale and not just start from scratch.
Nick: Some of the most satisfying work I've done on the project has been in rearchitecting parts of the system to ensure it still works effectively after 10+ years of code changes. This can mean updating to new coding standards, adapting to scales that were unimaginable when the project was first started, and ensuring that new features are added with due consideration to what has come before. The fact that the core parts of the project are still being used to power sites across the world is a testament to the quality of the code produced at Carallon.
Chris: Designing a system for the real world is hard. Users have ways of working that developers may not expect, so you can't just change things to be "better". The xkcds about breaking workflow (https://xkcd.com/1172/ and https://xkcd.com/763/) come to mind very often! Sometimes it's also necessary to compromise your design for a new system to ensure it can work seamlessly with an old one, which can be difficult, but it keeps us on our toes.
Leo: It's been very rewarding to work on a project that is still considered best-in-class and heavily developed, even a decade after launch. It's required discipline in multiple areas: following good software principles like encapsulation to avoid the codebase becoming a mess or too interdependent and prone to breakage; taking time to address technical debt and refactoring, not just continually adding features to an unstable base; documenting the code properly to allow delegation and team growth; and thinking about team succession and training people across the various parts of the application to ensure the project can survive even if the original developers move on to other projects.
Nick: This project has taught me so much about managing a large-scale code base, and about diagnosing potential issues at client sites, often with little to no access to the equipment in use. As a project I've worked on since joining the company, it's taught me how to develop code in a business environment, it's where I've learned how to lead a team, and how to work with clients to ensure we're able to deliver on the business' priorities. The project is unique in the company in terms of the scale of systems it can support, so I have learnt important lessons in how to manage that scale which will prove invaluable when working on new projects, even if they are smaller in scope.
Chris: I've learned how to work around ingrained limitations that restrict immediate possibilities, and design flexible solutions for the future. I've also come to appreciate the importance of good specification, and will now always chase after it before embarking on a solution or settling on a design. I've learned so much working on this project, it's definitely made me stronger and more creative as a developer.