Kalman Mobile & Kalman Desktop
Blendit (Blender + Git) - A Git integration that brings Version Control to Blender.
While Git and other Version Control Systems (VCS) can track
.blend (binary) files it does not make much sense as they are designed for textual files.
That said, according to Sybren on Blender Stack Exchange, Blender Institute uses Subversion.
At the Blender Institute / Blender Animation Studio we use Subversion for our projects. It works fine for blend files, but you have to make sure they are not compressed. Compression can cause the entire file to be different when only a single byte changed, whereas in the uncompressed blend file only that one byte will differ. As a result, binary diffs will be much smaller, and your repository will be faster to work with.
How does Blendit work?
Instead of tracking the
.blend (binary) files itself, Blendit tracks the changes you make to the
.blend file in real time. It does so by keeping track of the python commands, from the Blender API.
Each time you open a Blendit project, it regenerates the
.blend files. This means you can delete the
.blend file and still retain the project.
This way we only track a textual (
.py) file as Git was intended to be used.
In theory the size of the entire project should be lower than using any other VSC.
Tech Stack: Python | pygit2 | Blender API Git
Enigma, the Enigma Machine Emulator.
The Enigma machine is a cryptographic device developed and used in the early-to-mid 20th century by Nazi Germany during World War II. The Enigma machine was considered impossible to crack the code that it was used to encipher the most top-secret messages.
However, Alan Turing, the father of theoretical computer science and AI, built a machine to crack the code. The British kept this a secret for nearly 30 years after the war. There is a great movie about the entire story called The Imitation Game.
Watch this movie if you've ever wondered why there are 12 'E' tiles in game Scrabble!
Content Aware Resizing - An application of Seam Carving.
Seam Carving is an algorithm for content-aware image resizing.
It functions by establishing a number of seams (paths of least importance) in an image and automatically removes seams to reduce image size or inserts seams to extend it.
This is an implementation of the algorithm in Python - Jupyter Notebook, which tends to be pretty slow. However a faster implementation can be achieved using Julia.
Grant Sanderson from the YouTube channel 3Blue1Brown has given a great lecture demonstrating just that!
Tech Stack: Python
A basic command-line, image processing script for Bitmap images written from scratch in C.
./transform [options] <input file> <output file>
Supports BMP v3, BMP v4 and BMP v5.
Supports 24-bit and 32-bit bitmap images.
Does not support color palettes.
Does not support compression.
Tech Stack: C
A tool to implement and understand Kalman filters - Kalman Mobile along with Kalman Desktop is a Server-Client pair. Kalman Mobile, a mobile application, reads the accelerometer readings from an Android device and sends them over to Kalman Desktop, a desktop application, over websockets. Kalman Desktop then moves the cursor on the screen according to the change in acceleration of the mobile device.
Kalmanfilter.net is a great place to learn about Kalman filters.
For the capstone project of my bachelor's degree, I lead a small team to work on dynamical systems.
Development of a purely IMU based two body relative positional tracking system implemented as a stylus compatible with supported touchscreen and non-touchscreen devices alike.
I wanted to develop an Active Stylus that is cross-compatible with most devices as the ones available today are designed to work only with certain devices, for instance, Apple pencil works only with iPads and Samsung sPen works only with Samsung devices. This is so because of the use of different types of digitizers in different devices. To overcome this I had to reimagine an Active Stylus that normally worked with the help of a digitizer and design a stylus that did not need one. Crazy enough, this way, the Active Stylus would also be compatible with non-touchscreen devices!
This Active Stylus works by tracking its position in space with respect to the device, which is made possible by a 9-DOF IMU. As these sensors are very noisy we use Kalman filters, a data assimilation technique, to try to achieve precision and accuracy. With all the sensors on-board and no stationary beacon we must heavily rely on the mathematical model. Thereby we are conducting research on designing an accurate model that is also computationally inexpensive to simulate.
However, calculating the position of the stylus with respect to the device is only half the problem as the device is also free to move around. Therefore we have to start with both, device and stylus, at the same point in space and then proceed to calculate their relative position. We are developing algorithms to do this in real time with virtually no latency.
All of the experimentation required is done without using any microcontrollers. This is made possible by designing the experiments unconventionally and exploiting the sensors in our smartphones. I have developed open-source software that acts as a testbed where all processes are automated. This enables easy and rapid testing.
OneProjectFile - Version Control for Creative Professionals
A version control software gives you the ability to store all versions of your file in a single place and not worry about filenames and origanisation. Think of it like having just one file stand to store all versions of your file!
Version control has been standard practice in software development to keep track of changes to code for years now. However, when it comes to working with files other than textual files you usually out of luck.
OneProjectFile aims to bring basic version control functionality to a wide range of filetypes. And this is achieved by storing all the files in the user's Google Drive.