Welcome to my portfolio! My name is Amadeus. I am a software developer and a co-founder of Code Connect. I graduated from Computer Engineering at University of Waterloo with a minor in Cognitive Science. I enjoy rock climbing, snowboarding and reading.
A large chunk of a developer's work time is spent reading code: We begin in a single file, where we read a function line by line. But then the program execution continues in another method, perhaps even in another file and another project. So we jump there and resume reading. And then we jump again, and again, until we understand how the program works.
Developers must maintain a mental model of these relationships that exist within the source code. I believe that by being free from this mentally intensive task, we can be more productive and able to focus on creative aspects of software design.
Code Connect is a code exploration tool that visualizes C# code on a function by function basis. This helps the developer to see where each piece of code lies in the big picture of the entire program. Functions called by the piece of code are displayed on the right, and functions that lead to this piece of code are displayed on the left. The best news is that this visualisation of the call stack takes place without running the program!
The function by function approach helps developers unravel complex or unfamiliar code. Developers use Code Connect to understand decompiled or obfuscated code. Code Connect helps us easily grasp the way software works.
Initially, we believed that Code Connect shines with large projects. But when we built Code Connect and started using it, we discovered that it's useful for projects of any size - we use it it to understand even small changes committed by other developers.
The front end is built using WPF, XAML, and strictly adheres to MVVM principles. The processing is done as asynchronously as it is possible, which allows developers to explore truly huge projects with Code Connect. Our performance benchmark is Project Roslyn itself, which boasts over 2 millions lines of code in over 4,500 documents.
Come again soon!
A light entertainment system for my room! Ambilight casts colorful lights on the wall behind the screen. The colors correspond to the colors displayed on the screen.
It is a clone of Philips Ambilight. Written a few years ago (= poorly coded, please don't judge!) in C# and C++/CLI, built with a Teensy board, an LED strand and a sheet of acrylic cut to the shape of the screen.
Besides looking great and creating an immersive experience, Ambilight reduces the eye strain associated with looking at a bright screen in an otherwise dark room.
Before ordering the LEDs and the Teensy board, I've built a simulator which takes screenshots, computes the color output and paints it in a window. You can see it in the first picture.
The next stage was to program the Teensy board, solder the LED strands and attach them to the screen. Initially, I used a piece of cardboard to hold the LEDs and tin foil to reflect more light towards the wall.
Finally, I got a hold of a large sheet of acrylic, and drew locations for LEDs and VESA mount screws. Each hole was drilled with a drill bit as wide as a screw. The LED holes were then widened using a larger drill bit. The screen has a protruding arm which needed to be accommodated for. The rectangular hole was best cut out in three steps: the first two to cut out two arcs between opposite corners, and a third one being a finishing straight cut.
The app takes screenshots and finds the average color of each sector of the screen at a maximum rate of 19fps.
The screenshots are taken using Win32 API, which means that the project doesn't work with video games rendered using DirectX or OpenGL. DirectX screenshot module is very high on a slowly moving roadmap.
The biggest bottleneck is taking the screenshots. I hope that DirectX screenshot module will speed this operation up, allowing to take more screenshots per second - the target is 25 fps, such that each visual detail can be processed and displayed on the wall.
The second bottleneck, which has a noticable impact on the frame rate, is processing the image after taking the screenshot. I need to extract color information for each sector of the screen, which can be sped up by sampling only each n-th pixel.
C# in, HTML out.
Source Browser takes a GitHub repository and turns it into a set of HTML files where methods, fields and types are clickable. This links symbol usages to their definitions, allowing developers to quickly jump to relevant pieces of code.
The principle of operation of Source Browser is as follows: The source code is first downloaded and turned into a language agnostic model. Then, a set of transformers acts on the model to generate outputs. Each transformer has only one task. The most important transformers generate the clickable HTML, generate tree views representing folder and file structure and update the Lucene search index.
Source browser is inspired by Microsoft Reference Source, which unfortunatelly doesn't allow users to upload their own projects. Reference source allows developers to browse the source code of the .NET framework and of Project Roslyn.
Source Browser is an open source project available on GitHub. We are accepting pull requests and would love your contributions!
I've designed a controller that enables easy manipulation of lights in a three dimensional stage. The interface allows geophysicists to add and remove lights, change their color, set their azimuth and altitude. Each light is represented by a point on the edge of a circle, so that all lights are readily visible, accessible, and can be adjusted using smooth motions. Usually it's fine adjustments of azimuth that cast just the right shadow, which allows geophysicists to spot features of seismic volumes.
Later on, I've applied a bump mapping shader to the seismic volumes. This, in combination with adjustable lights, emphasizes prominence of seismic features while taking no CPU cycles! The increasingly powerful GPUs render the seismic volume either way, and adding in calculations of light and shade come at no noticeable cost. The performance increased from around one frame per second to real-time rendering at no cost to the CPU.
Check back soon for links to blog posts about underlying CSS and JS
Check back soon!.
Long time ago (2005) in a galaxy far, far away...
If you ever dreamt of having a lightsaber battle on a giant spiderweb, nine years ago I built a map that allowed just that! It's called The Lost Temple and it had many rooms to run around, shoot, duel, and a bunch of secret rooms full of surprises.
But I've always been an Unreal Tournament guy. I really dig rocket launchers. My first attempt at coding a game was modding the game engine to support bigger explosions, headshots and overall more exciting gun play in Jedi Knight. Unfortunately, that was a year before before I've heard of source control or backups; one unfortunate code change introduced an exception that I couldn't get rid of, and I've abandonned the project.
My first interaction with source control happened in 2006, when I was using SVN to access source code of OpenTTD. It is a C++ clone of Transport Tycoon Deluxe, originally written in 1994 in Assembly.
A feature that made it to the main branch of the game was a handy tooltip which showed how many game tiles are affected and what would be the estimated cost of an action if player released the mouse button.
I've also made a few sprites of trolleybusses and attempted to draw mediterrean-styled train stations, covered in white plaster and brick shingles.