Blog >

CCC Days at RoleModel Software

Theo Luciano

CCC Days

November 11, 2020

“Tell me and I forget, teach me and I may remember, involve me and I learn.”
-Benjamin Franklin

Software development is constantly changing and improving. At RoleModel Software, we know that means we must learn to do the same. To expect that what worked yesterday will work for every tomorrow is to ensure you will become obsolete.

In the last 20 years, more than 15 notable programming languages have come into being. Considering how unique one language can be from another, that’s a staggering amount of diversity; and that doesn’t even speak of the additional frameworks that have been developed on top of these languages and require their own level of expertise.

That’s where CCC Days come into the picture for us at RoleModel Software. The C’s stand for Character, Collaboration, and Craftsmanship, which are RoleModel’s adopted core values. In every project, partnership, and interaction, we seek to exemplify these values.

The quarterly CCC Days is an opportunity to learn and improve in these areas.

Our goal is to create something or learn something. The ideal situation is a joining of the two.

In the weeks leading up to the event, the team gets to put up suggestions for projects to work on. As time goes on, the list gets narrowed down based on a show of interest and relevance to what we do.
The vision can be very general; an example from this year’s CCC Days was simply getting a better handle on SwiftUI, which is a framework to build user interfaces across Apple products with the power of Swift. RoleModel Software has not had many clients coming to us looking to build with SwiftUI, so this was something several team members wanted to invest in as a possibility for the future.

Sometimes, there is a more specific goal in mind. Another project idea from this year was to replace a tool that our project manager uses called the “support scorecard”. By pulling in data from an existing codebase and also using Github and additional APIs, the plan was to create a support dashboard to automate the process, making it easier and more reliable.

After a period of vetting the ideas, we decided on a final list of projects.

TypeScript (or type definitions) for LightningCAD core

This project tried to answer the question that based on the inheritance and complexity of LightningCAD core classes, would adding types or converting to TypeScript give us an improved developer experience, even if the client codebases didn’t use TS?

Using JSON diffs for LightningCAD

An exploration of RoleModel’s LightningCAD framework to see how we could leverage JSON diffs for better undo/redo speed and capability, plus opening the door for expanded collaborative editing.

Spike WebXR rendering for LightningCAD

A feature of RoleModel’s LightningCAD framework is that it allows for 3D viewing. This project explored using VR (Virtual Reality) and AR (Augmented Reality) to allow a viewer to get an even more immersive experience of how a custom-designed solution works in reality, referencing software we’re currently working on for a client where we’ve done photorealistic 3D rendering.

GraphQL in Ruby

Those involved with this project were trying to figure out how they might best layer GraphQL on top of an existing Ruby on Rails application, and if it could be used to be a simpler way to build an API for various frontends. If it could, they also wanted to discover the strengths and weaknesses of this approach.

Replace Scorecard with Application

RoleModel uses a “scorecard” to keep track of the health of our support projects. At the moment, the scorecard requires a lot of manual inputs and it becomes burdensome to keep up to date. This project was meant to replace a tedious process that must be repeatedly done, with a platform that could automatically fill in much of the data.

Basic Page Layout Starting point

As new devices with web access continue to be released and requirements change, it is necessary to improve the responsiveness of web apps to fit a large number of different screen sizes and resolutions. This project was designed to explore responsive techniques and the possibility to generate basic layouts for new projects more quickly and with cleaner code.


This project, as I mentioned earlier, was intended to mainly get a better handle on SwiftUI and how it is incorporated. The team on this project juggled a few different ideas for ways to show their work but eventually settled on creating a companion iOS app for the time reporting and forecasting software we use at the company.

Over the next two days, the whole team got to work. I’m sure that the number of brain synapses firing during CCC Days, if converted into power, could light up a city.

Each person builds on their abilities to solve problems, to work as a team, and to think on their feet. The focus is on experimentation, and that shows itself in more ways than just learning new technology. No one expects to become proficient in a new coding language or framework in a couple of days; in the same way, good character is not grown overnight. Quality collaborative skills cannot be forced.

With our eyes on a future for software development that continues to become more complex and interesting, RoleModel Software is doing its part to ensure success with every new opportunity.