All Posts

  • PCB Soldering, Using a Nix Flake, and Cross Compilation

    Hello! I have been working on this project here and there over weekends and whatnot, so here are some recent(ish) updates!

  • "Hello, World!" on Linux and Bare Metal Concurrently

    After much experimentation, and diving head-first into linux kernel driver development, I have been able to reserve a chunk of memory for bare-metal purposes using the device tree, load linux onto the RPi, compile and run a kernel module which loads in a binary payload to the reserved memory, and I have exectued the binary in bare-metal and observed it running!

  • Robot Summer

    This summer I did what they call “Robot Summer” at UBC Engineering Physics. In the May through June summer semester I took 4 full classes plus a robot class (ENPH 253) which lasted from May through August.

  • Change Of Plans

    When talking to someone with bare-metal kernel experience about my project, they shared a truly glorious idea: Instead of running bare metal code everywhere, including on core 0 for handling UI, they suggested I run linux on core 0 only, and keep the bare metal data pipeline on cores 1-3!

  • Multi-Core Execution

    I spent some time figuring out how to get concurrent (simulatneous) execution in all 4 cores at once. The relevant git commit hash at the time of writing is f9a0f3e.

  • Software High Level Overview

    Checkout the project’s github to see the relevant code/dev environment for this post (and the project at large I suppose). The (shortened) commit hash at the time of writing was 9178bc6.

  • ADC/DAC Breakout Board

    The ADC and DAC chips chosen for this project are not the most common, it seems that there are no cheap breakout boards on the market. So I’ll have to make my own!

  • Bare Metal Setup

    Checkout the project’s github to see the relevant code/dev environment for this post (and the project at large I suppose). The (shortened) commit hash at the time of writing was 9178bc6.

  • Project Overview

    All right! I am very excited for this project, probably the most excited I have been about building something for a long while. So, without further ado:

  • Recent Updates

    Hello! It has been quite some time since I have written updates here, since I have been busy with school and other things…

  • Nvidia Sleep Trouble

    So. School is starting up again soon, and I’ll be in my second year at UBC studying Engineering Physics. I was trying to get my laptop school-ready by enabling and experimenting with myriad power management settings, and naturally one of these was to enable power management for my discrete nvidia graphics card, to avoid it chugging my whole battery while I’m taking notes.

  • I switched to using NixOS!

    Hello! It’s been a while since I’ve written anything here…

  • WaveTrace Proof of Concept: It Works!

    I had a reading break from uni, so I decided to put together a proof of concept to see if I could make a rudimentary version of WaveTrace - and it worked!

  • A New Method To Track Audio

    I was describing how the theory behind how this project could work to a friend of mine when I realized that there is a much better way to guess what direction audio comes from than triangulation (read this post for the original idea’s context).

  • FFT Now Works!

    After I got the graph with sound working (see the previous post on this project), I got to work writing the code to run an FFT on the incoming audio data. Using the FFTW library, I wrote an object that sets up FFTW, and then on command reads audio from an AudioBuffer object, processes it with FFTW, and saves the output in an FFT buffer. Then, I set up the graph that was showing the raw audio data to show the processed FFT data.

  • Code Update

    After not working on WaveTrace for a few weeks, I’ve spent some time since mid January making good progress.

  • Progress So Far

    Over summer 2023, the ideas for this project were still fermenting; I decided to use c++ for portability and speed, did some thought experiments on the topic of audio triangulation by frequency, and did some experimenting with libraries for calculating FFTs and reading from audio devices; the libraries I ended up choosing are FFTW, which has many overkill features, but is free to use, and port audio, which is also free and open source.

  • The Ultimate Goal - Directional Subtitles

    When I came up with this project, part of the inspiration was the subtitles in Minecraft. The way these subtitles work is that they narrate the sounds in your world, but provide a little arrow which tells you whether it’s coming from your right or left side.

  • Mono Audio on KDE Plasma

    After I went deaf in my right ear (see this and this), it became somewhat annoying to listen to songs that employ heavy panning, such as the guitar part in Herbie Hancock’s Watermelon Man (Head Hunters). To fix this, I made a quick bash script that, through PortAudio (the audio API used by KDE until recently), creates a new virtual playback device (or virtual sink) that mixes the left and right channels to mono.

  • Usbguard And Arduino

    Today I set up my laptop (the linux side) to program Arduino boards for a school project, but ran into a few hiccups along the way.

  • How It Will Work

    In this post, I’ll outline the ideas I have so far as to the mechanisms that will hopefully allow this project to succeed.

  • How I Took The Pictures

    In 2022, my high school organized a school wide science photo contest, where each submission was judged based on how well it demonstrates a scientific concept or phenomenon, as well as the photographic composition of the photo.

  • First Post

    Hello, World! This is a test post :D

  • Hello World

    This is the first blog post I’m writing with jekyll :D Hooray!!