Blog index
By date
June 2023
The Lighthouse - a short story
This is also available as a PDF here.
“If you would, Ramon? I can’t seem to manage the hem here.” Marie pulled and tugged at her dress, trying in vain to get it to rip at the seams. The gown wasn’t made to be ran in, after all. I shuffled my way over to her ill-lit figure. The lighthouse basement was damp and dim, but I could make her out well enough.
This rock in the middle of nowhere, sought after by 3 nations and governed by joint treaty, was now laid low by ...Read more
April 2023
Anime adaptation sources over the years
Or, are there really more LN adaptations than there used to be?
A recurring complaint in my anime-watching friend circles (and that I indulge in from time to time myself) is that light novel (LN) adaptations, mostly of the isekai1 genre, have been choking anime out in recent years2. Every season seems to have at least a small handful of them.
But was this actually the case, or was it some kind of mass confirmation bias? I thought I might try to put it all down into numbers. My approac...Read more
January 2021
A Rant on Irony
This is something I've discussed with multiple disjoint friend groups of mine, and since I make the same argument every time, I thought it might be prudent to put my thoughts down onto the public internet, so now I can just link this article whenever I feel like going on the rant. Maybe some of you out there will find this insightful and identify with this, even.
A trend I've noticed1 in online circles I've frequented over the better part of a decade or so is the increasing use of irony for, ...Read more
June 2020
The New Artisan
The idea of the creative-for-hire isn't really a new one. People have been commissioning art for centuries now. However, the relationship between patron and artist has changed dramatically in relatively recent times; the ultra-rich individual has been replaced with a middle-class crowd, and the internet has supplanted face-to-face deals, but I think the most important development is the rise of internet services that attempt to act as technical platform that allows the artist to focus on their ...Read more
May 2020
Beginning Again
Four years ago, I stood and stared into my new home: A dorm room at UT Dallas' Res Hall South.

I was no longer a high schooler, and had moved on to a new chapter in life — I had become a college student. I remember hugging my mother one last time and closing the front door, and looking into my bedroom, with my first immedia...Read more
March 2020
On Internet Culture and Governance Thereof
Picture this scenario in your head — an online community you've grown to know and love over the years has suffered a terrible fate; it has become, horror of all horrors, popular. Slowly but surely, the feel of the site changes. The lovely content that was the bread-and-butter of yesteryear becomes frowned-on fringe material. The lingo and behavior of the users morph into an unrecognizable, alien dialect. Discussion quality went out for smokes and never came back. The name's the same, but every...Read more
Evil - a (very) short story
I've decided to liven up my site a little and post a short story I wrote on a whim earlier today, that I've simply titled "Evil." It's a part - the beginning, actually - of a much larger work that I might complete one day if I have the time (and willpower). The text of the story is below, but you can have a PDF instead if you'd like.
What is evil?
I've been reading a book that tried, as an aside (ambitious as it was), to answer that question. It's a good book about bad peo...Read more
August 2019
1000 Days
Our everyday lives may, in fact, be a series of miracles.
Picture this: A summer evening in downtown Palo Alto, CA. Early July, 2018. It's a little dark outside, so somewhere around 8PM. I'm sitting outside a Starbucks with my Thinkpad, hacking away at personal projects of mine after work. For me, at least, it's familiar scenery - I've made this my after-work hangout over the past several months. It's a comfortable place to get stuff done, and I'm quite familiar with the baristas at this ...Read more
July 2019
Looking Back on Junior Year
College really is almost over for me, isn't it?
I'm not quite sure the realization has entirely set in yet. It's still early-mid July as I write this, though August is looming is certainly looming in the distance. As with the last two retrospectives I wrote, the scenery is once again different, though this time only temporarily. I'm in the bedroom of the apartment that I've stayed at over the summer while interning with IBM. I'm still in Texas, but I'm in Austin and not Dallas. It's getting a b...Read more
March 2019
Our Augustine - a serial
For about a year or so, I've been intending on publishing a serial I've been writing, which I've dubbed "Our Augustine." I think the prologue - which is what I'm releasing in conjunction with this blog post - should mostly explain itself, but to make a (mostly-unpublished!) not-so-long story short, I set out to answer this question: How would a society that truly does not believe in the concept of free will structure itself? How would it come to make decisions it considered ethical? I've tried t...Read more
December 2018
How to use sys.meta_path with Python
*Update: See this article for a Python 3 take on import hooks. *
I was asked on Reddit a short while
ago as
to how to use sys.meta_path
, which is an extremely valuable tool that
can be used to implement import hooks. Since it seems there's little
documentation as to how to use it properly, I dec...Read more
November 2018
Homogenization of Contexts, or The Right to a Hot Take
A PDF copy of this essay can be found here.
This is something that's a little bit out of the ordinary for my blog - something more philosophical than technical - but it's something that's been weighing on my mind for some time now. I've discussed the ideas I present here with many of my friends, and they understood (though not all necessarily agreed!), so maybe the internet at large would be interested as well. I think that the growing homogenization of the internet at large through sites like F...Read more
May 2018
Schego Part 4, Or The Heap, Linked Lists, and Other Scary Subsystems
This is the second half (see the first half here) of the giant blog update on Schego I wrote. I concentrated so hard on actually coding, I forgot to update the blog as I went! Hopefully I'll be able to split my time more evenly between documentation and coding, but on with the show; we're going to talk about a couple different new additions to Schego that most interpreted programming languages will have to implement in one way or another.
The first up, and the subsystem that everything else in th...Read more
April 2018
Schego Part 3, Or Virtual Machines Aren't Really That Hard
Since the previous installment in the Schego saga, a lot's happened. So much, in fact, that I've split up the next update into 2 separate parts - the one you're reading now, and one that will follow very shortly. Life has a way of getting in the way; you get so absorbed with "important" stuff you forget the blog series you promised to update on a reasonably-sane basis. On the upside, those of you paying attention will notice that I've still been updating the actual codebase itself with some pret...Read more
Sophomore year: a (rambling) retrospective
October 2017
Schego Part 2, Or On Parsing and Other Related Stuff
Alright, part 2. And only a couple weeks later than planned to boot!
Last time, we discussed the basics of lexing - turning a string into a list of tokens - and the ins and outs of how that's done. So now, we'll move onto parsing, which is the next step in the process of turning our original source code into something the computer can understand.
The rationale behind the need for the parsing process is very simple, and mirrors that of the need for lexing: It's a lot easier to reason about generati...Read more
August 2017
Schego Part 1, or Why Implementing Scheme in Go Isn't All That Crazy
So for anyone who has been following me on Github closely, this article is a week or two late - I want to apologize for that firstly. I've been busy with getting back up to speed with college and such. But on to the main event.
So, you may be wondering, what exactly is a Schego? It's my current baby, my main pet project, the first on the list of bullet points that I'd point to when people ask about what I've done. It's an R7RS Scheme implementation written in the Go programming language, wi...Read more
September 2016
An end, and a beginning
How lucky I am to have something that makes saying goodbye so hard.If you've been paying attention to my blog, I don't delve into personal stuff often. Or at all, really. This is a reasonably big time in my life, so I thought I'd break with "tradition" - much as a barely-active 5-year old blog can have, at least - and talk a little bit about myself.
For starters, I'm now a student of Computer Science at the University of Texas at Dallas. As I type this, the second day of class has come to an end,...Read more
May 2016
FuzzBuzz and the Art of Programming
Programming: It's as much an art as it is a science. The general distinction between art and science being the realm of subjectivity - in other words, while in the realm of science, "correctness" is still debated, nobody is under the illusion that there is more than one "correct" solution. Art, on the other hand, has no single "correct solution," though at the same time, the merits of each solution are generally weighed against each other solutions, debated, and so on.
Programming is a mix of bot...Read more
September 2013
Super Smash Bros., Combos, and You - an article on a theoretical combo system for SSB
Super Smash Bros. has something of a mixed history as far as combos go. The original SSB64 had combos galore - most of the characters had combos that could take an as-of-yet untouched opponent and KO them without a single chance to dodge or counter - the definition of a "true" combo. Super Smash Bros. Melee significantly reduced the stun the average move does to your opponent, so combos (true combos anyway) became weaker and shorter compared to SSB64.
Now, with the latest release in the SSB serie...Read more
Ambiguous developer intention in fighting games
This is a topic that really grinds my gears: Ambiguous intention from developers in fighting games. I believe this sort of thing is very harmful to fighting games, and I'll be using this article to explain what in particular I have against ambiguous intention, provide some examples of ambiguous intention in several fighting games, and how I think those games would be better of without such things.
First off, let me give a solid, simple definition of ambiguous intention. Basically, it is an instan...Read more
July 2012
Reverse-engineering LEGO Racers 1 - part 1
Minetest Triforce
In case you're not familiar with it, Minetest is basically a free, open-source clone of Minecraft, plus some new stuff like Lua mod support. Anyway, I made a very large Triforce on gameboom's mt1.gameboom.net (port 30000) Minetest server some time ago, and this is the result:
Daytime
![]() |
Read more
Do we need a new FOSS license?
Come on, admit it: You've been involved in at least one (probably 3 or more) licensing "discussions" with your fellow FOSS peers. :P Like you probably already know (and like I covered in one of my previous posts), these "discussions" revolve mainly around whether or not the GPL is, in fact, a truly free license. I'm not going to discuss that here (for brevity), but what I will discuss is whether an "compromise" license that sits right between the GPL and a permissive license in terms of restrict...Read more
Setting up MinGW32 on Ubuntu
Finally, a non-controversial topic :)
Having a cross-compiler that can compile Windows executables on a Linux machine can be an extremely useful tool to have, since it prevents you from having to install WINE or a virtual machine just to generate Windows executables for your software project. I find myself often in need of such a tool, and since there doesn't seem to be any up-to-date tutorial on how to set up a MinGW32 cross-compiler, I decided to write one. :)
Okay, so here we go: First, install...Read more
Adventures in optimization
Yesterday was the first day I ever had to seriously optimize some code I had written. The code in question? A point cloud implementation.
When I started work on said implementation, I coded the library in pure Python, and tried it out on a 50,000-point volume. It took 15 seconds just to initialize and move the volume - completely unacceptable. I had a lot of optimization work to do.
The first technique I tried was just a faster algorithm. I switched from using a SQLite database to flat dictionarie...Read more
Evo 2012 - one hype event!
In case you're not familiar with it, Evo is a international fighting game tournament (though Mario Kart was on the roster one year a few years back) held every year in Las Vegas, Nevada. It attracts thousands (if not tens of thousands) of participants and spectators every year from places like Taiwan, Japan, and South Korea. Indeed, many of the top players come from those countries. The live video stream of the tournament attracted almost a hundred thousand viewers from all over the world at its...Read more
The hashcash algorithm
Yeah, it has a weird name, but it's one of the most interesting (and effective) anti-spam algorithms out there: Hashcash. How does it defeat spam without the end-user even knowing a spam check is taking place? Read on.
No, this isn't a Bayesian filter-like algorithm; this is something completely different. Hashcash involves inserting a piece of Javascript code into your site's comment form that sends a server-generated key as part of the comment form's data. If the sent key doesn't match the one ...Read more
What is programming?
What is programming? I get that question a lot from my non-programmer friends. The interesting thing is, I had never really asked myself that question - and if my Google-fu hasn't failed me, no-one else has really answered this question, either (at least in a way a beginning programmer or non-technical person can understand ). So I'll do my best to do answer that now, and I'll voice my thoughts about the answer a little too :)
First off, what are programmers trying to accomplish when they write a...Read more
On permissive and copyleft licenses
As you probably know, FOSS licenses are a touchy subject - I've seen some people who won't use or contribute to a project if the project uses a license they do not like. In my humble opinion, licenses aren't a major issue (except for projects you lead) and I'll attempt to explain why below.
Let's start with the (A)GPL. This is probably the most loved/hated license of all time, for 2 major reasons:
- The GPL is a strong copyleft license: Any derivative product must also be covered under the GPL.
- Eve...
On piracy
Yes, another controversial topic: Piracy. It's pretty prevalent today - you probably know at least 5 people that have pirated software, and you might have pirated some software yourself; I myself have pirated software in the past, albeit before I knew of the legal and moral issues surrounding it.
So what makes piracy so popular? The most obvious reason is you get a piece of software you'd normally have to pay for for free, and everyone loves that. Except the people who wrote the software, and tha...Read more
Switching blog licenses.
I've given it some thought, and I've made a decision: I'm switching the license for the articles I write on my blog from the CC-BY-NC-SA to CC-BY-SA. I'm switching for two reasons:
- It lets my articles be re-used/re-posted in far more places I do want it to be used (Wikipedia, other places using the CC-BY-SA, etc...)
- I don't think anyone's going to plagiarize my work anytime soon - besides, at the very least, they have to give me credit (the BY clause).
My toy scripts - now available on SourceForge!
I've decided to make good use of SourceForge's per-developer project space - a really nice feature, by the way - and upload all the toy scripts I've made over the years to https://sourceforge.net/u/openblocks/code/. All the scripts are licensed under the 3-clause BSD license, so feel free to give them a look and make your own modifications. :)
Keep in mind that since I use Linux as my main operating system, some of the toys that are shell scripts won't work on Windows, unfortunately.Read more
Switching to Blogger
I exported my WordPress blog to Blogger - I think I'm going to enjoy the change. We'll see about that in the coming months, though. :)Read more
By tag
Coding
- How to use sys.meta_path with Python
- Adventures in optimization
- FuzzBuzz and the Art of Programming
- The hashcash algorithm
- What is programming?
- Schego Part 4, Or The Heap, Linked Lists, and Other Scary Subsystems
- Reverse-engineering LEGO Racers 1 - part 1
- Schego Part 2, Or On Parsing and Other Related Stuff
- Schego Part 3, Or Virtual Machines Aren't Really That Hard
- Schego Part 1, or Why Implementing Scheme in Go Isn't All That Crazy
Writing
- The Lighthouse - a short story
- The New Artisan
- Evil - a (very) short story
- A Rant on Irony
- On Internet Culture and Governance Thereof
- Our Augustine - a serial
Foss
- Minetest Triforce
- Do we need a new FOSS license?
- On permissive and copyleft licenses
- Switching blog licenses.
Gaming
- Minetest Triforce
- Evo 2012 - one hype event!
- Super Smash Bros., Combos, and You - an article on a theoretical combo system for SSB
- Ambiguous developer intention in fighting games
Legal
Linux
Life
Other
- Sophomore year: a (rambling) retrospective
- 1000 Days
- On Internet Culture and Governance Thereof
- Homogenization of Contexts, or The Right to a Hot Take
- Looking Back on Junior Year
Theoryfighter
- Super Smash Bros., Combos, and You - an article on a theoretical combo system for SSB
- Ambiguous developer intention in fighting games