Midgard, Growing Grass
21 Jan 2020
Now that I have an efficient way to represent a grassy field, I need to allow it to grow. In each iteration, grass will grow from grassy tiles to any barren tiles surrounding the grassy tile. Read more21 Jan 2020
Now that I have an efficient way to represent a grassy field, I need to allow it to grow. In each iteration, grass will grow from grassy tiles to any barren tiles surrounding the grassy tile. Read more20 Jan 2020
Next up, providing the basis for an interesting world. Currently, the “grass” acts like a liquid, spreading out from its initial position. What I’d like is to have a field of grass that can grow outward from whatever location it is in. Machine learning agents in the world can eat the grass, deplenishing it the location of the agent. Read more09 Jan 2020
Using Ctrl-C to send SIGINT is the easiest and most habitual way to kill a program. When SIGINT is received by a program, unless explicitly handled, the program will be interrupted and close. In this case, the socket we are listening on is not closed cleanly. While not particularly necessary for future development, this becomes obnoxious, as it takes up to a minute for the OS to clean up the open socket, during which a new instance of the program cannot be started. Read more08 Jan 2020
Currently, everything that happens on the C++ backend for Midgard is on a single thread. This includes the static file serving, the websocket handling, and the simulation itself all occur on a single thread. All computation is done at request from the browser, and can’t continue indefinitely, because the thread needs to return to waiting for the next thread. Read more02 Jan 2020
A few years ago, I worked on a C++ implementation of NEAT, a method for generating novel neural net topologies. Rather than having a fixed topology, varying only the weights of a neural net, NEAT also varies which nodes are connected to each other. This allows for creation of minimal structures, capable of solving the problem presented without having significant excess neurons. Read more28 Jan 2018
Tags: Recipes
28 Jan 2018
Tags: Recipes
28 Jan 2018
Tags: Recipes
26 Nov 2016
Emacs can launch subprocesses, which can be used to compile code immediately. This is built in with theM-x compile
command.
It asks for the command to run, then runs it,
saving the output in the *compile*
buffer.
This is remarkably convenient,
removing the need to switch between terminal and editor.
Read more
29 Aug 2015
The makefile is starting to get rather large, and so it would be difficult for a user to know all options that are available. At this point, it is time to refactor the options into a separate configuration file. Read more