DMOJ, CTFs, Sway, and More - July Status Update

Aug. 1, 2020 Update 5 min

It's the early morning of August 1st as I write this, in a style unlike any other post on this website. This will be the first in a series of monthly posts (status updates) talking about what I've worked on throughout the month, what I want to work on in the future, and what's going on in my life at the moment.

Let's start off with this site itself. I've worked on the codebase significantly and redesigned it for a more technical theme -- with lots of inspiration from emersion. No Javascript either! I've written four writeups this month to total 9 blog posts since I started writing and I think I've come up with a more concrete plan for the future. Alongside these monthly updates, posted either at the end or early start of a month, I will be making writeups for only the CTF challenges I find particularly enjoyable, interesting, or educational (The rest of my writeups can be seen on CTFTime). Finally, I want to write about interesting stories that occur, or have occurred, in the technological sphere, similar in style to Tom Scott's videos so look forward to those.

Regarding the DMOJ,1 I've worked on the upcoming merge with WCIPEG.2 DMOJ started off with heavy inspiration from PEG and seeing them coming together to form a stronger, unified platform is rather exciting. I feel honored for having a chance to participate in this arguably historic moment. Once this merge is finished, I need to get back to finishing my PR of adding unit tests for some of the utilities. It's unfortunately fallen on the backburner while I do other work, but I'll be sure to get it merged in August. Recently, I've also tried to improve my competitive programming skills by practicing various problems on DMOJ. I've even written a simple script3 that picks out problems of increasing difficulty levels for me to do.

In other news, as many of you might know, I've been participating in quite a few CTFs and writing writeups for them. Our team has even come really close to some nice prizes, just a few hours ago. Having fun with friends while learning and improving, especially in the current situation that's affecting everyone's lives, is truly amazing. I'm trying to get better at binary exploitation, but our team really needs more web people as we struggle with having so many high value web challenges thrown our way. Maybe I'll look into that as well, especially considering the fact that I do web development on the side.

I've started a new project, opencv-ptz, which uses a Pan Tilt Zoom (PTZ) camera in combination with OpenCV to automatically control the camera to location, move to, and zoom in on a person's face. Right now, I'm controlling it with a simple API that exists on a web server hosted on the camera, but this control is neither fine-grained nor particularly quick. Instead, I'm going to try and build a circuit to control the camera through one of its various serial interfaces so I can ideally achieve smooth motion. The final goal of this project is to be able to watch and track animals outside or follow dancers on a stage. I'll make sure to upload it to GitHub once I figure out the serial interface as its nothing more that a crude Python script right now.

On a final note, I've been working on a mini-project for Sway. I won't explain exactly what it is, but it should be pretty cool. There's little chance (or plan) for it to get merged into the official branch, but let's just say it may warrant a separate package, similar to i3-gaps for i3. This should be finished within the next month, but for now I'll leave this sneak peak below:

And that's all, I've left out details here and there and didn't mention the much smaller things I've been working on, but I hope you enjoyed. At worst, I'll see you back here a month from now, but I hope to find something that sparks my attention and gets me in a writing mood earlier.

Stay safe everyone!


  1. A modern contest platform and archive of programming problems.

  2. An older contest platform that still remains active.

  3. It really just uses the list of problems from the API and picks out N random problems for each point value.