Software Engineer Vishal Ramkissoon

Latest Writing: Why is my Portfolio using Brutalist Design?


A lifelong programmer Who am I?

My name is Vishal Ramkissoon. I've been programming for quite some time. My first Introduction to HTML came from my mother when I was barely ten years old. After that, during my teenage years I wrote bad websites and even worse C applications. After playing Age of Empires for the first time as a child, it was clear that game development was what I wanted to do.

I attended the University of the West Indies. There was a course, "Introduction to Game Development", as part of my degree. I spent the second half of that semester developing a near mechanically-perfect replica of Street Fighter, including its combo system using state machines. For another course's final project, I built a simple cloud-gaming streaming service in pure Java using Java's low level display buffer and TCP/UDP libraries.

Eventually graduating from the University of the West Indies with a Bachelor in Computer Science (Special) in 2017.

In late 2019, I launched Mrkff.com, a personal knowledge base for teams. It when through YCombinator's Startup school, and since then the development and expansion of Mrkff.com has continued.

I am currently employed, since 2018, as the Lead C# Developer and Team Leader for Auratech Solutions, Ltd.'s Connect Online platform.


My career thus far What Professional Work Have I Done?

Auratech Solutions, Ltd.
Lead C# Developer / Team Leader (March 2020 - Present)

In 2020, I would become the development team's team leader as we transitioned to work from home. I would lead the development of several custom solutions for clients across multiple industries, including but not limited to the Manufacturing and Construction industries. My team and I would evaluate our clients' various financial, sales, and manufacturing departments to digitize their analogue systems. The newly digitized analogue systems are deployed on-premises for their work across the Caribbean Region.

Auratech Solutions, Ltd.
C# Developer (November 2018 - March 2020)

I would take on the role of Juinor C#/ASP.NET developer at Auratech Solutions as part of a development team responsible for a cloud-based Accounting, Sales, and Inventory management Enterprise Resource & Planning application. While there, I would implement several performance improvements, which resulted in massive improvements for data access times for 50k records to near-instantaneous. It would receive commendations internally and be a source of praise from clients. I would engage and expand on several application components, including updating and applying security improvements across the application and many other changes, many too verbose to list here.

Kabco Enterprises, Ltd.
Branch Manager (September 2017 - January 2018)

My first job would see me running point on my local branch of KABCO. I led the development of a PHP application that would accept file uploads and create orders for further processing by the other branches. I juggled this while also being the primary sales representative for the branch's sales, including creating and running a social media campaign for the branch's services.


Random Stuff I'm Proud of What do I work on outside of work?

content

Gate
A simple, naïve Chip-8 emulator written in Golang.

Developing this emulator was a learning exercise for me. I always wanted to write an emulator, and with the help of many online resources, I think I got pretty far.

I decided to follow through on a list of stuff I always wanted to complete. Emulation is pretty far up on the list. While I have messed around in emulators before in other languages, I often never finished it.

I am using Gate as a jumping-off point for some of my other emulation projects, mostly NES and Gameboy. I used this Chip8 emulator to build out a small framework that I can build on top of for the other projects.

You can view and download a build over at the projects GitHub repo.

content

node-vlive-downloader
An NPM package. A simple robust vLive video downloader that collects meta data, subtitles and video streams and merges it into mkv files.

I didn't always have good internet, and streaming from vLive was unreliable due to my connection. I used other pieces of software to download videos from the platform. However, I wanted the highest quality videos and the subtitles. Other software needed me to get a JSON file from the page and load it manually. My library doesn't need that, as it uses Puppet under the hood to load the page and rip the file automatically.

I originally wrote a CLI version of this using child_process and FFmpeg after seeing @drklee3 's version of a vlive-downloader. Their code was great but required more than just FFmpeg, and it needed you to manually get the vod_play_videoInfo.json file and pass it in as a command function.

The other version I spoke about above required two separate programs to generate the *.mkv files. node-vlive-downloader only uses FFmpeg to do everything.

I also exhaustively documented the entire library for anyone to read. I wanted to ensure that anybody could pick up documentation with a little bit of JS knowledge and fully understand what was going on. You can view the repo for the documentation.

You can view the source code at its GitHub repo or you can download the library using NPM: npm install node-vlive-downloader.

content

Rust PPM Viewer
A simple cross-platform Rust-based PPM (Portable Pixmap Format) Image Viewer.

This is a simple (technically) Cross-platform Rust-based PPM Viewer.

I built this because I couldn't find a simple lightweight PPM Viewer that accepted text files. I needed a PPM viewer since that is the format of the 'Ray Tracing in One Weekend' project by Peter Shirley. I ended up finding a version to view PPM files but in Java. I don't have Java installed, and I didn't want to install it. So I made this little tool.

After playing around with it and reading some of the 'spec' documents (Wikipedia), I figured it wouldn't hurt to extend it and create a little cross-platform utility.

I used some random PPM files from across the web, including one from a university course that made its files available publicly.

You can view the source code, and download Windows binaries, at its GitHub repo.


A Collection of Multimedia Creative Works

Ascend the Decline
A metal-inspired demo I did when I was 21.

I've been playing music since I was 10, and I started producing and releasing my works when I was 15. I released most of my EDM work on YouTube, though these were not well-produced, as I had just started making EDM.

I continued practising and learning music. During my teenage years, I would produce a few songs for an Australian mobile game that would eventually be short-lived.

Ascend the Decline was the last serious attempt at music that I released. I produced, mixed, mastered, and programmed everything you hear, but I played and recorded the guitars myself. For personal reasons, I've put my instruments down.

content

Chromatic Dinosaur
The chrome dinosaur game implemented in Rust, and OpenGL.

Most of my previous game development work has been in C or C++. I decided to reimplement Chrome's dinosaur game into a native package in an attempt to get used to Rust and all of its language features.

Chromatic Dinosaur functions as you expect it to.

VISIONS: Prelude
I wrote the narrative.

The game is an interactive narrative driven game. The game was written to only be played for about 15 minutes in total. Despite this limitation, there are several hidden secrets, and multiple endings depending on your actions throughout the narrative.

You can play it on Itch.io