👩‍💻 GLSL is a pretty low-level language. But what if we turned it into a classy functional programming language capable of handling higher-order functions? That is, giving it the ability to pass functions as parameters to other functions. Well, this is exactly what CoolLab does!

## How I implemented scripting in two hours

You can now write scripts to control CoolLab. Everything that you can do in the UI in now also doable through scripts.
Moreover, you can write those scripts in the language of your choice! That's right, every language in the world will do, even the one you wrote last weekend and that only you possesses an interpreter for.

All of this magic relies on a well knwown friend: the HTTP protocol.

## Doing better than C++'s references (&)

Introducing our reg library!

## Ints cause precision errors

After a lot of trouble and bugs, I have come to the conclusion that you sould use floats most of the time.

The reason is simple : when you are doing maths, it is rare that the logic of your calculations will only output integers.

## The Dear ImGui model for user extensibility

Remove dependency on a backend, let users implement it the way they like, and provide implementations for popluar backend.

I was scared to generalize my cam library because I thought I would need to use template, and know how to get the transpose of a matric for example. But this is much simpler, flexible, and does come with all the annoyances of templates (all the code in headers, harder for ides to handle)

## Unit Type-System

struct MyData {      float field1;      float field2;      float field3;      float field4;      float field5;      void do_something();};
class MyDataWrapper {public:      void do_something_else();private:      MyData _my_data;};