Portfolio
Here is a compilation of my personal projects I consider worth showing publicly. Everything shown here has been created by me, from coming up with the ideas to design and implementation.
-
KGraph
KGraph is a hardware-accelerated mathematical graph plotter that excels at rendering complicated implicit equations, shaded plots, fractals and more!
It's built on the commonly-available browser technology WebGL which makes it possible to do all the hard lifting on the GPU – this means that no matter the plotted equation, the framerate will always be equal to the client's native refresh rate.
KGraph's fluidness and instantness enable developing entirely new intuitions for reasoning about the behaviour of complicated equations—when you can change the value of a constant and instantly see the effect on the visualization, the opportunity for intuitively learning the correlation is much higher compared to conventional CAS software, such as Desmos or Geogebra.
Learn more or try it out!
KTrace
KTrace is a raytracer written completely from scratch, only using OpenGL for setting pixel colors on the screen. It supports diffuse and specular reflections, refraction, fresnel effects, different materials and shapes, as well as reading a mesh from a .obj file. It's written in c++ and utilises OpenMP to parallelize the calculations.
Through various optimizations, mainly the utilization of bounding volume hierarchies, the rendering times are quite competetive for a single-person passion project.
If you want to see more, check out my YouTube showcase of it! The Youtube video goes much more into detail about the inner workings of raytracing, the challenges faced in coding KTrace, and showcases more of the cool results it's able to render.
Scientia
Scientia (
/ˈsaɪənˌtɪa/
) is a boat instrumentation system which uses an open standard, Signal K as its data source. It's capable of displaying data from a Signal K server in a clear and uncluttered way.My most desired use case from the very beginning was to use my smartphone as a client. Phone screens are quite small, which means that the number one design goal for the project is no wasted screen real estate.
Another important factor is that I want a robust solution. This means that no unnecessary complexity is allowed which could break something. For example, I decided in the very beginning that all of the instruments should conform to a grid (although it is possible to sub-divide the grid), and not be resizeable.
The third objective is to make processing the information easier by representing it in the best way possible.
WilmaInk
WilmaInk is a sister of my other project Wilmacrawler, which it uses as a back-end. WilmaInk presents the data in a form that can be rendered on an e-ink display. This means limited resution, and very limited color palette, in my e-ink display's case 3 colors: black, white, and red.