During a meeting with some coworkers we started debating if it was possible to find a better meeting location. Given the starting location of all the meeting participants, could we find a point which minimizes the total travel distance?
It turns out that it is not trivial to solve. The average of the participant locations is not necessarily the optimal point. The actual optimal point is called the geometric median.
I made a HTML5 page which visualizes the geometric median, along with the convex cost function: http://www.byronknoll.com/median.html
Thursday, August 21, 2014
I finally own a VR device: Google Cardboard. It works surprisingly well! I am using it with a Nexus 5, which has a nice display. Cardboard doesn't work quite as well as the first developer edition of the Oculus Rift (see my review here), but it is pretty close. The demo apps for Cardboard are currently quite limited, so there isn't really much to do on it after the first 10 minutes. I am still waiting for my kickstarter edition of the Avegant Glyph: they have delayed the delivery date until next year :(
Saturday, July 26, 2014
I recently started a fun activity called wargaming. Wargames are a set of computer science related challenges/puzzles. So far I have completed three of the wargames on overthewire.org: Bandit, Krypton, and Leviathan. I track my progress on wechall.net. wechall.net tracks scores across dozens of wargaming sites and has user rankings/leaderboards. The wargames I have seen touch many different areas of computer science: cryptography, network security, linux tools, C++ debugging, etc. Very educational.
Wednesday, July 16, 2014
I recently beat GTA V, so I was looking for a new game to play. GTA V is the most expensive video game ever made and has amazing production value. I eventually decided on Slaves to Armok: God of Blood Chapter II: Dwarf Fortress as the next game I would try. It is on the opposite-end of the game spectrum compared to GTA V: it is free, made by a single developer, and has a text-based interface. I am a fan of NetHack and it looked like DF might have some similarities.
I have been playing DF for three days and so far it is incredible. The first day was tough since there is such a steep learning curve. My first fortress was a mess because I didn't understand how stairs/slopes worked - all my dwarves got trapped underground in a pit. I ended up watching a youtube tutorial to figure out the basics. After the tutorial I started up a second fortress and for the last two days I have managed to survive in this.
I had one near disaster when my fortress ran out of food. My dwarves were so hungry that they started ignoring my orders so I couldn't get them to work on actually finding new food sources. Some of my dwarves started dying and one went crazy and started attacking everyone. I thought I was doomed until suddenly a group of immigrants arrived. I immediately put the healthy immigrants to work on making/collecting food. Success!
Today I worked on creating a reliable water source for my fortress. I looked up how wells work on the DF wiki and starting building one. It ended up taking me two hours to finish the well. My fortress is underground and the most convenient water source was from a river on the surface. Channeling water around is dangerous because it could end up flooding my fortress or drowning the workers mining the tunnels. I built a tunnel from the river to a reservoir below my fortress. The well is connected to the reservoir. To control the flow of water I created two floodgates and connected them to levers in my fortress. I could then use the levers to control the flow of water from a safe distance, once the dwarves had finished digging and evacuating the reservoir. In the screenshot above you can see one level of my fortress and a party my dwarves organized in celebration of the new well.
Sunday, July 06, 2014
I have released a new version of my visibility polygon library. One of the constraints in the old version was that none of the input line segments could intersect. In this new version, I added a function which breaks apart any intersecting line segments into non-intersecting components.
Thursday, June 26, 2014
Sunday, June 15, 2014
Today I derived backpropagation for a logistic activation function and a cross entropy loss function. This has been done before, but I couldn't find the full set of formulas for it online. I am using the variable notation from here: http://neuralnetworksanddeeplearning.com/chap2.html