Hello! Welcome! I’m Kim, and here’s my backlog of blog-posts…

I’m a self-taught developer currently working at Whitewater Foundry.

I started a Physics degree in 2012, dropped-out in 2016 due to health issues, then finally began teaching myself to code in Summer 2017! I started with some Python basics, which served as a stepping stone to pick up simple Object Oriented Programming techniques, before jumping to Java and Android development. This culminated in my first project, an Android Twitter client which while functional, looked terrible… Teaching me an important lesson — I can code, but I can’t design for shit!

Since then I’ve tried my hand at general Python scripting, working with REST APIs, exploit development, ARM embedded programming, Linux kernel development, working on Windows UWP applications (currently, the Windows Subsystem Linux launcher), much bash scripting, all among other projects which often involve managing servers, including my Mastodon instance at: https://notbird.site

I’ve been meaning to start a blog for a long time. Usually each of my bigger projects prompt me to think about starting one again, as a way of publicly documenting my work / progress learning. Some of these I wish I could have documented (and may do so, retroactively) include:

  • Summer 2017:
    Android Twitter client (written in Java), based heavily on Twitter’s open-source TwitterKit, but heavily modified with plans to add support for other platforms like Mastodon to their framework: https://gitlab.com/grufwub/nitwitkit (back-end), https://gitlab.com/grufwub/robin-twitter (GUI)
  • Spring 2018:
    After messing around for many months, undecided on programming language, project or direction to take, here I began to learn exploit development. Whilst there wasn’t an ongoing ‘project’ being worked on, the process of learning C (including memory addressing and management), shell-code, debugging and exploit creation was something I felt would’ve been great to document. 
    My knowledge of this is still rather basic as I haven’t continued learning for quite some time, but I do plan on returning to it! In fact recently I’ve started going through the Protostar exploit exercises.
  • Summer-end 2018:
    Reverse-engineering (if you can call it that?) of the EMF Camp 2018 TiLDA Mk4 badge. This started with my frustration with the incredibly flakey micropython-based firmware it was supplied with. There were a lot of attempts to modify the firmware, and many were successful! It taught me a lot about how they built their own interface on-top of micropython, how micropython is compiled for ARM embedded systems, generally working with embedded systems, and about the world of ARM embedded OSes including TI-RTOS, FreeRTOS.
  • Fall 2018:
    The TiLDA Mk4 badge inspired me to purchase an ESP32 development board!
     → My first project was a very quick fork of spacehuhn’s PacketMonitor32, modifying it slightly for smooth operation with my specific development board: https://github.com/grufwub/PacketMonitor32
     → Next came a port of spacehuhn’s BeaconSpam application, originally written for the ESP8266, which I ported to the ESP32 and added display + input support: https://github.com/grufwub/BeaconSpam32
  • Winter 2018:
    Here I first began looking into Nintendo Switch development. After the recently released Atmosphere custom firmware, my plan was to develop a module adding support for an overlay debug-type menu (similar to the Rosalina menu found on Nintendo 3DS) which I aptly named ‘overbug’.
    There is a userland library (libnx) for the Switch, used for custom firmware and homebrew development which I initially planned to use for graphics and input, but I soon realised would carry too much overhead for what I needed. Instead, I began writing my own light-weight graphics and input solutions (based heavily on CTCaer). I do plan on coming back to this project in the coming months, so I’ll go into more detail in a later blog-post.
  • Winter 2018 →Current:
    I started work as a developer for Whitewater Foundry! Where I work on a custom Windows Subsystem Linux distribution, WLinux. In this time I’ve also started work on a number of other Windows Subsystem Linux solutions under Whitewater Foundry including WLE (our enterprise solution), WSLFedoraRemix (our Fedora-based WSL distribution) and a custom build of WLE with support for PuTTY’s pageant daemon.

If you’ve read down to here, thank you! Consider yourself caught-up on the history of my programming career.