Sept 5, 2022
I have recently built a small robot as a test platform for an advanced robotics project. Huh? Let’s put the advanced robotics project aside and talk about what I actually have. I have a working robot that can detect hard collisions and the code is 120 lines of CircuitPython (not counting the libraries used to be clear). I can write a lot more code, but there’s no point to make it overly complicated until certain goals are met. Those goals: detect soft collisions, detect false-positive accelerations that are not collisions, and store information. While these may seem pretty easy to overcome, the thesis of this blog post is that they are not.
Let’s start at the very start. When I was young I wanted a robot. I didn’t know why very well, but I knew that I did. I bought Handbook of Advanced Robotics from a used bookstore, a bunch of motors, balsa, wheels, and other RC stuff from my local hobby shop, and started building. After building quite a few uncontrolled cars, I realized that a lot of the robot lies in control. It did not occur to me until I reached university how much. I tried to build an ornithopter and after propulsion failed on that project, I went off to university and gave up on robots. As time went on I worked on electronics and realized that while I was better than average at soldering, I was particularly bad at finishing projects. Each project had an obstacle. Not only did I lack experience as a young person, I lacked the necessary support to complete projects of even modest difficulty.Read more »
Today I release a simple Sunday script building on the distant past. How do you sort a list of words in a language you're learning? The easiest order is the order you originally wrote them down in. The second easiest (and probably one of the best orderings) is random. Random ordering removes biases that a human put in and biases the list to another order. If you order your list randomly each time you read from it, you can remove bias.
This is how I ended up trying to learn kanji last year. It didn't go so well. What's wrong with random ordering of a list of words? It provides a test of one's memory. As my memory is not great, the random ordering does not actually solve the problem of memorization. So how does one memorize words? I had quite a bit of success with WaniKani this winter. I learned 85 kanji (that I had already learned on my own) and 184 words based on those kanji in a few months. What does WaniKani do that I didn't do? 1) WaniKani is an SRS. 2) WaniKani has experts to come up with a good set of data about kanji and vocabulary to cement the meaning and readings.Read more »
Oct 3, 2020
I’ve been working on OPL2 code for a while now. I’ve started to understand at a level beyond what I could a few years ago. This is progress. What does it mean? Let’s discuss problem-solving in the context of OPL2 in 2020. I want to write a piece of software for the Intel X86 architecture. I want it to be below the kernel of the computer meaning that there is no operating system, no bootloader and if you’re really wild, only a single function needed from the BIOS. I wrote all this and there are bugs, but instead of focusing on those bugs, we’re instead going to look at just OPL2.
If I were to get this code working on a host machine, our process of problem-solving would actually be a lot easier. Write more code and fix anything that comes up. Because testing on a host is one step more difficult than testing on a VM, I decided that most people would choose to use a VM instead of running my game on their host or a random piece of ancient hardware they have in storage. It is true of me, but I have an excuse. There is a debugger for my VM, Qemu but there is not one in my game’s kernel. That comes in mighty handy when things go wrong.Read more »
June 9, 2020
This blog post will be a bit weird but I'm trying to find my voice besides the IRC world and the inner world that I've been navigating for more than 20 years. I don't think it's going to be easy, so think of this more as a reference than a blog post. In other words, don't read this blog post unless you're on a path like mine where your stuff has become a deep rabbit hole. Today's rabbit hole, as well as monday and sunday's rabbit hole has been EXT2.
Backstory: I'm writing a kernel and I need a filesystem. A simple one would make my life easier but would then make everyone else's life harder. Do I want to do that when I'm writing a game that is intended to teach people how to write hundreds, even thousands of kernels? Do we want everyone in this tree of learning to be harmed because I wanted to play my game sooner? Maybe. Maybe.Read more »