General Site Information
About Me
This is a website about color science — still a work in progress, but growing.
Over my career I have built up a broad background in light and color: written materials, software libraries, presentations, and hands-on work with electronic devices using light and color sensors.
Color is a rich subject, and I hope sharing what I have learned here is useful to others.
The site is aimed at anyone working with color in a practical context — students on a color-related project, lighting designers, photographers, display engineers.
You will find interactive calculators and measurement tools covering a range of topics in light and color science.
I believe the best way to learn colorimetry is by doing calculations, not just reading about them.
The colorimetry library and the interactive tools in the toolbox are there for exactly that purpose.
The library implements a wide range of colorimetric algorithms and comes with a growing collection of spectral data — light sources, paints, displays, and camera sensitivities.
Site Design
The site is designed to work well on mobile devices.
It is a static website, with interactive features powered by CSS and client-side JavaScript — no server round-trips for the tools.
Instead of a traditional menu bar with drop-down menus, I use a small set of large icon buttons for navigation.
The layout adapts to screen size and orientation: a single column on small screens, multiple columns on larger ones.
I have implemented a dark mode to reduce eye strain in low-light conditions, which also saves battery on OLED displays.
In bright surroundings, the light mode adapts to match.
Making this work for graphical elements was the trickiest part.
All icons and graphics are in SVG format, with CSS controlling their fill color — black on light backgrounds, white on dark.
I aim to support the current versions of Chrome, Safari, Firefox, and Edge.
Consistent rendering across all of them is an ongoing challenge — Safari in particular has had issues with the multi-column layout.
The layout relies on CSS Flexbox, which requires a browser from 2018 or later.
The calculation tools use WebAssembly, which has the same minimum requirement.
Please keep your browser up to date to get the best experience.
Site Nuts and Bolts
When I first considered building this website, I thought about using raw HTML and CSS, which I’m familiar with.
However, I quickly realized that maintaining a consistent design across the site this way would be quite challenging.
It would mean repeating HTML source code across different files, which could get messy.
I turned to static site generators to simplify the design and make things more efficient.
I had some experience with Hugo, a tool that uses themes to define different web pages’ overall look and layout.
Unfortunately, I couldn’t find any design that suited my taste, so I attempted to modify an existing one, but it turned out to be too complicated for my needs.
That’s when I came across Zola, a static site generator written in Rust.
I was drawn to it because Rust programs are known for being fast and reliable. Zola is a single executable generator that includes everything you need, so there’s no need for complex installation procedures.
Although it had a bit of a learning curve, primarily since I hadn’t worked with SCSS style descriptions and template engines before, I managed to grasp it in just a day or two.
I built the theme from scratch to better understand Zola’s theme system and keep it simple.
For hosting, I chose Netlify. It offers hosting and serverless backend services for web applications and static websites. Having dealt with servers, containers, and the never-ending task of security and system updates in the past, I appreciate how Netlify’s services handle all of this for me.
Now, I can concentrate entirely on creating content. Since the site is static, Netlify efficiently serves it to users worldwide.
The entire site is published from a GitHub repository.
The content gets processed and posted automatically whenever I push updates to GitHub.
Just because it’s a static site doesn’t mean it lacks interactivity. It simply means the server doesn’t play a role in user interactions.
The interactive features on this site, especially the online tools, are powered by client-side apps.
Your web browser handles these tasks without needing to communicate with a server.
Client-side JavaScript is primarily used to create interactive user interface features and display SVG graphics.
Meanwhile, all the complex calculations are carried out using the colorimetry WebAssembly library.