My works

Last updated . Mathematics in Puzzles, an expansion of my ThinkyCon talk, is now live.

Previous updates

. Some content update along with the full site revamp. The Cohost essays and my old 2011 story are now archived here too.

. I wrote a MITMH24 recap.

. I have another publication.

I've created a lot of things, for a wide range of "created" and "things". Here's a collection of them that I can recall. Feel free to contact me if you find something not listed.

Table of contents

Nonfiction writing

I have written many pieces of nonfiction, "serious" writing. Some of them are academic papers, coming from an academic background. Others aren't as academic, but I still wrote them for some purpose.

Academic publications

Bit-Complexity of Classical Solutions of Linear Evolutionary Systems of Partial Differential Equations

Ivan Koswara, Gleb Pogudin, Svetlana Selivanova, Martin Ziegler
Journal of Complexity, Vol. 76, 2023.

A project that my supervisor (Martin Ziegler) worked on with a few colleagues, including me. I contributed on a specific part of this project, which became my masters thesis.

Layman explanation

The general problem tackled by this paper is about partial differential equations. We want to approximate the solution by dividing space and time into discrete steps, i.e. we sample the solution at regular intervals and turn the differential equation into a difference equation, which can be solved by raising a matrix to a power.

The problem with approximation is that errors can easily accumulate. In "normal" programming, there is often a floating-point data type to handle real numbers crudely. This is usually good enough for some basic purposes, but when we want more precision and correctness, we have to do something custom.

There is a branch of theoretical computer science that deals with the computability of real numbers, usually called exact arithmetic. Ultimately, the question is simply, how much precision do we need to approximate the solution of a PDE, and how efficient can we do it?

To see how this problem is not so clear, note the following. Obviously we can get more precision by sampling more points in space. Say, we want to get one extra bit of precision; then we halve the step size. But this means we sample twice as many points in space, and this causes the matrix to be twice as large in each dimension. The problem grows exponentially.

The part I worked on is about a special case of PDEs: the PDE is circular. In this case, the matrix becomes a circulant matrix, which further reduces down to a polynomial. My problem becomes about raising a polynomial to some exponential power. However, due to the circular property, I had to sum up the coefficients of not just one term, but many terms; exponentially many terms, in fact.

Since this problem is derived from PDEs, the polynomial also has some specific properties, such as the sum of coefficients being 1. I took advantage of it: I managed to apply probabilistic theory techniques to show that the coefficient for some exponent would be too small and could be approximated by 0, meaning I only had to compute a small number of the terms.

Egalitarian Price of Fairness of Indivisible Goods

Karen Frilya Celine, Muhammad Ayaz Dzulfikar, Ivan Adrian Koswara
PRICAI 2023: Trends in Artificial Intelligence, 2024.

A research project for a course that I and my friends did. The professor liked it and encouraged us to present it at a conference, so we did and got it published.

It's funny that we ended up publishing this in a conference about artificial intelligence, because this has nothing to do with it. But it's still published, and it's still a chance for us to make our names out there.

Layman explanation

The general problem is about the concept of price of fairness in fair division.

When we want to allocate a number of goods to some players, we are balancing various goals. We can optimize the social welfare, e.g. the total utility/value obtained by the players. However, this might lead to an absurdly unfair allocation, where many players feel they don't get a fair share. Alternately, we can try to appease everyone by making the division fair. However, the social welfare might end up being low as a result.

Price of fairness is invented to capture this concept. In short, this is the ratio of the maximum social welfare we can achieve if we don't have to make things fair, divided by the maximum social welfare if we do have to make things fair. A high price of fairness represents a huge cost to appease everyone.

This is a relatively recent concept that was invented in 2011. There have been several results about this in the past. Specifically, there is a paper about utilitarian price of fairness for divisible goods; about egalitarian price of fairness for divisible goods; and about utilitarian price of fairness for indivisible goods. Clearly, there's something missing.

The professor of the course pointed this to us, and we decided to pursue it. We investigated the egalitarian price of fairness for indivisible goods. Egalitarian welfare means the lowest utility obtained by the players, and we want to maximize this minimum. Indivisible goods means the goods are discrete and cannot be split arbitrarily; think of houses and computers, instead of cakes and parcels of land.

We looked at several properties: three fairness properties and two properties about maximizing another kind of welfare. For each one, we gave lower and upper bounds of the price of fairness. The proofs were diverse; several proofs were simply about giving a construction, while other proofs were more involved. One of the trickiest proofs, which we were proud to come up with, was about showing that the egalitarian price of fairness of RR (an allocation obtained by using the round-robin algorithm) is at most 2n−1 (where n is the number of players).

Essays and other pieces

What is a puzzle?

Published , originally on Cohost

Being exposed to puzzles for a long time, I end up having a lot of opinions about them. This question is something that's been in my mind, and after several circumstances, I ended up writing my thoughts about it.

You can read the piece yourself. In summary, though, my definition is much more strict than others; when others think something is a bad puzzle, I simply think it's not a puzzle at all. Some important aspects include having to be authored by a human and having to convey some idea, because a puzzle is a medium of communication.

Maro was right

Published , originally on Cohost

Writing hunt puzzles isn't easy. But the thing bugging me is that, a lot of people say this is because "finding ideas is hard". I disagree with this strongly; I think ideas are easy to come with if you're willing to devote the time for it, although it may take a lot of iteration to shape an idea to the final product.

I wrote this piece as a result, where I described several examples in which I managed to force myself to come up with ideas on the spot. It didn't help; if any, I believe people ended up just being mad at me. I still stand by the opinion in this piece, though.

MITMH24: A Skymin's Perspective


Another MIT Mystery Hunt came and went. By tradition, excited solvers wanted to write a recap of their experience to share with the world. For the 2023 edition, I wrote mine about a month late. This time, I think this is one of the earliest recaps.

What makes the recap interesting is that I was hunting with my team, ⛎ UNICODE EQUIVALENCE. For many, this team seems to be full of mysteries; how did it form, why is it a powerhouse? And my writing reveals a bit of UE's internals. (It's nothing too weird; it's just a team of people with good chemistry, and we organize our work well.)

It also includes my opinion on the state of MITMH at the end of the piece, with some rather harsh words. MITMH is something dear to some people, and the fact that I'm willfully going against traditions ended up rubbing some people wrong. It's my piece, though, and I still stand by my opinion.

My only regret is not checking with UE whether what I was sharing would be okay. I did later clarify that the piece was entirely my opinion and beliefs, not anyone else's or UE's.

Mathematics in Puzzles

Published , adapted from my talk from ThinkyCon

I presented a talk on ThinkyCon, named Mathematics for Puzzles, where I presented some examples of mathematical theory found in puzzles. I'm happy the talk was received well.

That said, while preparing for the talk, I realized I had a lot of examples. Due to time constraints, I only picked a few of them for the talk. What about the other examples, though?

This article has the examples I discussed in my talk, and more. It's not simply a direct transcription of the talk; I also took the chance to re-organize things. If you've watched the talk, a good chunk of the material will be familiar, but there's plenty of new stuff.

Abandoned writing

Click to reveal

Games are hard

Last updated

Games and puzzles are hard. But how hard? There have been quite a lot of results on the computational complexity of games and puzzles, and I used to collect them and put them in a list. It's an interesting way to compare if a game is particularly harder than another, or compare how games are proven to be hard.

That was years ago, though. My interest on the project died off, and I didn't touch it for quite a long time. Finally I decided to face the reality that this project is abandoned, I'm no longer motivated to do it. I wonder if anyone else keeps any similar list...

Penalty theory for dynasty genres


One day, someone shared a particular new theory for Heyawake puzzles on Twitter. It was unfortunately in Japanese, but I could look at the images and had the mathematical ability to analyze and reconstruct the proof, so I wrote a translated version as a Twitter thread, and then another version that became this piece.

Since then, a few other people went beyond by writing up even cleaner and more comprehensive guides of this theory (and Heyawake puzzles in general). I decided I could leave the task to them. I linked a few of those inside the page as a post-mortem update, but otherwise, the page is no longer maintained.

Puzzles and games

As a big fan of puzzles, I have written a lot of them. Logic puzzles? Hunt puzzles? Puzzle games? Yes.

Warning: There may be spoilers in my comments about each puzzle. I believe the comments shouldn't spoil much about the puzzles; for example, I might just mention something that should also be pretty clear when you first open the puzzle. That said, I'm warning in advance, and if you want to avoid spoilers entirely, try your best at not reading the comments.

Logic puzzle archive

I love writing logic puzzles, and I have written a lot of them. I realize that they are spread out over various places: my puzzle blogs (now all abandoned), various contests and sets, and other places online. I took all of them and put them together on a single page.

The ultimate goal is that it will be comprehensive. Every single logic puzzle I've written should be in there, possibly with a few exceptions for exceptionally bad puzzles that I don't want to republish. It is a long work, but I'm slowly chipping away at it.

Everything about my logic puzzle output will be available in the above link, so I won't duplicate them here. The rest are for my non-logic puzzles (or at least, not pure logic).

Hunt puzzles

Besides logic puzzles, I also write hunt puzzles: puzzles where you generally have no instructions and you have to figure out what to do, so that you arrive at a single answer — usually an English word or phrase.

Most of my hunt puzzles have heavy logic flavor, such as logic puzzles with a secret twist.


Published , for MIT Mystery Hunt 2015

My first ever hunt puzzle was part of the biggest hunt of the year. Being mostly a logic person, it is logic-related, although it has some aha to discover.

This puzzle isn't very good by my modern standards, but it was a valuable experience to try writing a hunt puzzle.

Unusual and Strange Puzzle Collection

Published , for Galactic Puzzle Hunt 2018, co-written with Anderson Wang

As part of ✈✈✈ Galactic Trendsetters ✈✈✈, I was invited to write for Galactic Puzzle Hunt, and I decided to go for more hunt puzzle writing.

Naturally, it's more logic puzzle stuff, although the aha is different from Polyglot. Also, it turns out to be quite a big, meaty puzzle that took solvers a lot of hours.

I think the puzzle is great to solve casually. This also taught me to scope my puzzles better.

As explained on the solution page, I wrote all the logic puzzles and Anderson wrote the word searches. That wasn't entirely it, though. Since Anderson was well-versed at hunt puzzles, he helped immensely in guiding the direction of this hunt puzzle. (I could write the logic puzzles, but putting them together into a cohesive hunt puzzle was harder.)

hunt hunt hunt (810KB ZIP file)

Published , for Secret Solver 2018

Mini-hunt set. It has 5 puzzles and a meta.

Puzzlers Club has an annual Secret Solver event. It's like the Christmas tradition Secret Santa, but instead of buying a gift, it's writing a puzzle. (And we eventually reveal the author of each puzzle.)

In 2018, I was assigned to write for betaveros. Normally I'm hesitant in writing hunt puzzles, but because betaveros was a good friend of mine, I knew him well enough to be able to not only write a puzzle, but a whole mini-hunt set.

I didn't give the set any particular name, so this is just based on the file name that I sent.

It's a file because I sent it directly. I recognize having to download a file now is bothersome, though. In the future, I might look into converting this into pages here on my website.

Courage and Purity

Published , for Galactic Puzzle Hunt 2019

After 2018, I wrote more for GPH in the next installment. I actually wrote two puzzles.

This is my first foray of going completely out of my comfort zone. There is nothing logicky about this. It involves words, and I generally don't like words. (Although I don't like researching topics like history and pop culture even more.)

I think the puzzle is ultimately not very remarkable, but I'm still happy to have tried something new.

Something is Off

Published , for Galactic Puzzle Hunt 2019, co-written with Anderson Wang and Alex Pei

My other contribution to GPH 2019.

Once again, it's logic-related. That said, after all the logic is done, there is a step involving words, and I'm happy I had help from people in the writing team to flesh that part out.

In fact, I had even more help than that. I forgot what the exact circumstances were, but I remember I was very busy at this point. I felt I didn't particularly contribute many logic puzzles, although I did some.

Minute Details

Published , for Silph Puzzle Hunt

Silph Puzzle Hunt was a successor of Smogon Puzzle Hunt, and the hunt as a whole generally had a Pokémon theme — although that doesn't mean the individual puzzles were themed. It was also run by some of my online friends, so I was invited to write, after previously having solved a few installments of it when it was Smogon-based.

This is not logic-related at all. I'm also not sure how much I can say without spoiling a lot about the puzzle. I guess I can say, this puzzle came from an observation I had. I tried various ways to execute the idea and failing a lot for not having the experience and patience to research. I ultimately decided a word search was the most suitable way for me to do this idea.


Published , for Silph Puzzle Hunt, co-written with lovemathboy

This puzzle, also part of Silph Puzzle Hunt, was actually mostly lovemathboy's. I was just invited to write one of its logic components. Although, after we figured out another logic component was too unexciting and lame, we replaced it and I wrote another for it.

I think my contribution here would be a fine logic puzzle on its own, but I don't want to spoil the surprise.

Games and custom levels

I've created several games. Right now, all games I made were written in PuzzleScript, a scripting language to easily write the kind of games that's common with puzzle games (hence the name). All of these are pretty old, but I'm still pretty happy with them.

In addition, I've also created several custom levels for various games.



The first PuzzleScript game I wrote. The core concept is about merging blocks of the same number together, with two 5's merging into nothing, and the goal is to get rid of everything. All blocks move at the same time, which makes the game to resemble Threes to some extent.

I believe this was released along with an "easy version" with completely different puzzles, but I don't think I have that version any more.

It's pretty decent. I've learned things about game design from doing this. For example, having multiple objects move together tends to be hard to visualize. I also wish I did better with the level design. But I'm still happy I did this.



Back when I was active in the PuzzleScript community, I saw someone sharing their game about magnetic blocks that repel each other. The level design for that game was... very lacking, and I decided to take it on my own to devise better levels, as well as handle some edge cases.

I think my levels ended up being more interesting. The original had a lot of Sokoban-y block pushing, but without the tight space that made it hard, so it was just boring. My levels had a whole lot more blocks and interactions between them.

There are certainly things I would change if I were to update the game now. Although, again, my time is spent elsewhere. I'm still pretty happy that I did something, though.

Rock, Paper, Scissors


A puzzle game about rock, paper, and scissors. It's a Sokoban-like where you have to make your way out with these obstacles along the way. Rocks are heavy and you can't push multiple rocks at once. Paper is sticky, and pieces of paper stick together to form one larger block. Scissors are sharp and you can't push them from their sharp side. And they interact with each other in the obvious way, allowing you to annihilate objects to make your way out.

I'm really proud of the concept and I think it's rich in ideas. Although, for whatever reason, the levels were designed to be "three-fold": reach the exit, collect an optional collectible, and do both at once. The game doesn't keep track of this for you; you just do it yourself. That part is a bit weird.

I think the main thing I regret from this is the level design. A lot of the levels aren't very inspired; I believe the only one I'm very happy with was the last level out of 18. If I ever revisit this game in the future, making better levels is definitely my top priority. But I'm still happy with the concept and I think it's worth playing.

JAM3 Game


JAM3 Game, or "Just Another Match 3 Game". It's not exactly your usual puzzle game; it's reminiscent of those casual games like Bejeweled and Candy Crush. But also, somehow it's puzzly.

The motivation behind creating this game was actually to find something I would be able to stream. Creating a usual puzzle game on stream was a bit awkward, because the puzzles would be clearly spoiled on stream, so I was looking for something involving random generation. And this came to my mind. I don't believe I actually ended up streaming it.

I think it's pretty crude. It might be interesting to play as something unusual, but I wish I had done it better.

TIS-100 (website)

Published by Zachtronics, official level published


A programming game about using Assembly-like instructions on synchronous nodes on a grid. Made by Zachtronics, one of the most well-known developers of the programming game genre; they created SpaceChem.

In June 2015, they made a level editor for TIS-100 and called for submissions to make a bonus campaign. I submitted a level, which got accepted as part of the 25-level act.

In short, you're given a sequence of consecutive numbers, with one missing. Find the missing number. I believe the sequences are 4–5 numbers long.

It's actually slightly changed from my original design. The original design had the sequence to start at 1. I don't mind the change, since the smart solution I had in mind is still present. Have fun solving it and competing with others for the leaderboard!

Tetrobot and Co. (Steam)

Published by Swing Swing Submarine, unofficial levels published

My custom levels: Steam Workshop listing

A puzzle game about a robot that can store and release cubes of various materials with distinct properties.

I found this game and the possibilities captivated me. I wrote a few levels and published them on the Steam Workshop.

One of the projects I had in mind was the following. I had an idea about making "evil" versions of in-game levels that were much harder to solve. I managed to write two of them, but then my motivation died off and I haven't picked it up since.

A lot of my levels involved building giant structures. This might have been interesting the first time, but it started to get tiring and cumbersome. Also, I learned of a random bug in the game where the undo would reset the entire level progress, so a long level would just lead to frustration.

I think my levels are worth at least looking at. If you want to play them, make sure you have the patience — and the calm to not get enraged if you encounter the bug.

Super Mario Maker 2

Published by Nintendo, unofficial level

My level: Back and Forth (R8H-174-52G)

I do like Mario games, and I'm intrigued at the idea of a level editor, so I got this game.

Mario levels span a very broad range. Official-like levels, Kaizo levels with precision and surprise, artistic levels that play themselves, and so on. For me, since I like puzzles, I decided to make one that was relatively puzzly.

My level needs quite a lot of precision, but there is absolutely no surprise whatsoever. Everything in the level is right there, and you can even climb to the roof of the level, so you can look at the whole thing and plan ahead before you begin. In fact, I can show you a screenshot of the main part of the level; I posted it on Twitter.

I haven't really got into the game any more, so I'm not sure how well it's received. I think, like a lot of custom levels in many games, it might just be lost in the swamp. I do remember showing a friend this level though, and they were frustrated by it (in a good way).

Creative writing

Furry fandom and my alternate universe

A lot of my creative writing is related to my furry identity; in particular, my alternate universe where my characters live. I occasionally write about them. Everything related to this AU can be found inside my furry page.

I also wrote some other stories separate from my furry continuity.


Published , originally on FanFiction.Net

A light-hearted short story, a fanfiction about Tails and Cream from the Sonic the Hedgehog franchise. What's that sound from Tails' workshop?

God, this was written when I was still in high school, when I was still such a big fan of these two characters that made up my username. I remember I asked my English teacher to help review it so I could improve. (If you look at the reviews on FF.Net, you'll find it.)

The adult me would say this story had cringe writing, and it's not wrong. But it does add a bit to the charm, with the cuteness and innocence of the story. Besides, this is a stepping stone for my future endeavor in writing, and creative work in general. However silly it is, I'm glad I wrote it.

Vee — His Story (Google Docs)

Published , ongoing

A living story that basically recaps a D&D campaign I'm playing in.

The history behind this story is unusual. I'm playing in a D&D campaign with my character, Vee the artificer. The campaign itself is unusual, because we have like 10–15 players split into several groups, each one having an independent campaign in the same world. My group has me as the main character, with a few supporting characters played by some friends.

I found myself wanting to summarize and recap my campaign, so I began to write this story. As the campaign is still going, the story is also still going, although I haven't kept it up to date (I believe the last thing recorded was a session in February 2023, and we've done around 10 sessions after that).

The story itself, as it is, has quite a lot of details. I might end up rewriting and cleaning it up to summarize it better. But if you're curious about my campaign, you can see it from my point of view by reading this.