tag:blogger.com,1999:blog-217348602024-03-18T02:47:37.580-07:00Byron's BlogByron Knoll's BlogByron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.comBlogger335125tag:blogger.com,1999:blog-21734860.post-20685884011781664642024-03-16T09:45:00.003-07:002024-03-16T09:45:53.315-07:00Jabber Trail<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNYgZGCljvHpV7vYmikBM1a6z1Lebx6SE768JMCMJ1VEemptJvJ24Bzf6MYJHv3x1ssR_j-1XcaPEBM5DKdsgqNXpBnEBdsyg3IoyfO2HXq2aB_9a8rIXOR7lZdzJ-N_pX1MYqq1rPhiKZ0O17aWDbFypMGpuK5HGbv1yHzWjpF078AANaVBui/s1000/2.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1000" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNYgZGCljvHpV7vYmikBM1a6z1Lebx6SE768JMCMJ1VEemptJvJ24Bzf6MYJHv3x1ssR_j-1XcaPEBM5DKdsgqNXpBnEBdsyg3IoyfO2HXq2aB_9a8rIXOR7lZdzJ-N_pX1MYqq1rPhiKZ0O17aWDbFypMGpuK5HGbv1yHzWjpF078AANaVBui/s320/2.jpeg" width="320" /></a></div><br /><p>I have just released a game called <a href="https://byronknoll.com/jabber.html">Jabber Trail</a>, which you can play for free in a browser. All of the images, music, and character dialog in the game are AI generated. To make progress you have to chat with in game characters, which use a large language model to generate responses.</p>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-41162141361562797792023-11-23T20:30:00.003-08:002023-11-23T20:30:48.092-08:00Cellular Automaton<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim_sj3BLDuwLUOGVQbdS1qy5GgQaR10DPkteYZ2hh_CIlcqJ8in5RlKfXUK5S7uzo3arj3O9ODZ-GqtgMA4D5EEPM2aJIBqkqjaHfBtnAhkirkhcQO74bGkmMsXt3jGNkPobBBCI5q1Z7-RSE4IGcolYM4q3FYwRe-REvcacpXq8Ha3MpQabsW/s494/cellular.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="494" data-original-width="492" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim_sj3BLDuwLUOGVQbdS1qy5GgQaR10DPkteYZ2hh_CIlcqJ8in5RlKfXUK5S7uzo3arj3O9ODZ-GqtgMA4D5EEPM2aJIBqkqjaHfBtnAhkirkhcQO74bGkmMsXt3jGNkPobBBCI5q1Z7-RSE4IGcolYM4q3FYwRe-REvcacpXq8Ha3MpQabsW/s320/cellular.png" width="319" /></a></div><br /><p></p><p>Today I made a new <a href="https://byronknoll.com/cellular.html">cellular automaton</a>. It can create similar patterns to an earlier cellular automaton I released <a href="https://www.byronknoll.com/reaction.html">here</a> (a simulation of the Belousov-Zhabotinsky reaction). For the Belousov-Zhabotinsky reaction I used a pre-existing algorithm, but for this new cellular automaton I created the algorithm myself. I was trying to replicate some other interesting patterns I have seen:</p><p></p><ul style="text-align: left;"><li><a href="https://www.youtube.com/watch?v=v-3o60-rQVc" style="text-align: -webkit-center;">Magnetic domain</a> (I saw an amazing exhibit about this at the San Francisco Exploratorium)</li><li><a href="https://byronknoll.blogspot.com/2014/02/texture.html" style="text-align: -webkit-center;">Yogurt lid</a></li><li><a href="https://www.cs.cmu.edu/~kmcrane/Projects/RepulsiveCurves/index.html" style="text-align: -webkit-center;">Repulsive curves</a></li></ul><p></p>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-6821914682997257982023-10-01T13:49:00.001-07:002023-10-01T13:49:33.222-07:00Bifurcation<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvRKI16Pcb9wmu54JvHqkSOHhqbT1GlKbH8-TS_ww6sympuGFdpjc6vjT0_pjM_xzu0v11jMYvRmXDTvPttxUnw00ugZPJIJDGBTFugY9NrWXZ3i0dKwWqjr1UwHMn8p-divhOknSFej_QugypDZH3BVQbbc-ki7uK7zNGZPpRjX4RYozRG-cv/s645/bifurcation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="645" data-original-width="609" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvRKI16Pcb9wmu54JvHqkSOHhqbT1GlKbH8-TS_ww6sympuGFdpjc6vjT0_pjM_xzu0v11jMYvRmXDTvPttxUnw00ugZPJIJDGBTFugY9NrWXZ3i0dKwWqjr1UwHMn8p-divhOknSFej_QugypDZH3BVQbbc-ki7uK7zNGZPpRjX4RYozRG-cv/s320/bifurcation.png" width="302" /></a></div><br /><p></p><p>I have made a two player strategy game called Bifurcation: <a href="https://byronknoll.com/bifurcation.html">link</a></p><p>How to play:</p><p></p><ul style="text-align: left;"><li>The goal is to eliminate all of the other player's units.</li><li>During your turn, you can move units from up to three locations. Click and drag to choose which locations to move. Use the slider on the right to select how many units to move.</li><li>You can move to a neighboring location <b>or</b> any location connected by your team's color.</li><li>At the start of your turn, you will gain units at any locations with a + symbol. The number of + symbols will be the number of units you gain.</li><li>You can attack enemy units by moving to enemy territory. Opposing units will destroy each other, so you need to attack with more units than the enemy to take over a location.</li></ul><p></p>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com1tag:blogger.com,1999:blog-21734860.post-77020813156697595532023-04-03T22:33:00.001-07:002023-04-03T22:33:44.931-07:00Stacking Things<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://byronknoll.com/stacking.html" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="456" data-original-width="456" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoez4nx3ljKVnzC_EpWmY0Kr1TfHFH-6trA9vczlZPP2xSUIBtoStigOQEzmNdJi4XTR3I8WdpQN1uDlt5w-ObyKrcbPlFc8Tz3IuiA69UI9BNAENNkloCavdF8ALNeLg0zBT1vZ1W-cte7M0PqOHxUa1kSLj10P0Yyfjq9znj3hBQGbHjXA/s320/stacking.png" width="320" /></a></div><br /><p></p><p>Today I released a HTML5 game called <a href="https://byronknoll.com/stacking.html">Stacking Things</a>. It is a physics-based puzzle game. It uses <a href="https://github.com/shakiba/planck.js">planck.js</a> for the physics and <a href="https://phaser.io/phaser3">Phaser</a> for the graphics/sound. The images came from a combination of public domain photos and images generated by <a href="https://en.wikipedia.org/wiki/Stable_Diffusion">Stable Diffusion</a>.</p>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com3tag:blogger.com,1999:blog-21734860.post-27623310862429621302022-12-17T21:31:00.003-08:002022-12-17T22:22:31.925-08:00Hexacrystal<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb7_CUXuhQ3q5YSBvQFkZklFkX_-iEiM2SHiJnuXbU0Xq62vDavjjBB8jzxi9vPCqprgr-uU05fAOeU_XoGXxFpDxJRZX512Z5bquccb5SLw2I-UzU8BEFAlg5oAgvTN4dEg1x0y9kDnUPBDF0zMCNgE4rWTfBtonCwj22-RLrg76bTlUqQw/s4080/PXL_20221218_035758173.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3072" data-original-width="4080" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb7_CUXuhQ3q5YSBvQFkZklFkX_-iEiM2SHiJnuXbU0Xq62vDavjjBB8jzxi9vPCqprgr-uU05fAOeU_XoGXxFpDxJRZX512Z5bquccb5SLw2I-UzU8BEFAlg5oAgvTN4dEg1x0y9kDnUPBDF0zMCNgE4rWTfBtonCwj22-RLrg76bTlUqQw/s320/PXL_20221218_035758173.jpg" width="320" /></a></div><p>I have designed and 3D printed my own board game. It is a two player strategy game called Hexacrystal. Each player controls one color. The game starts with two towers:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH_rHqNsWCkolom3Q4nafMlVPUxyA_OD-FMILfloAkiP4e0bW8arMbNHap0dum2xPAVfRBMI913xraS9PdQO4LBh-RUDLQKByu1qebAly2qyGgbbF6c1ZqgQ5LOuLf48APZltvraE_FD_idOlAmxQkP1xXIYa_fzfj74dtCsx010ebrrOJdw/s4080/PXL_20221218_034433960.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3072" data-original-width="4080" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH_rHqNsWCkolom3Q4nafMlVPUxyA_OD-FMILfloAkiP4e0bW8arMbNHap0dum2xPAVfRBMI913xraS9PdQO4LBh-RUDLQKByu1qebAly2qyGgbbF6c1ZqgQ5LOuLf48APZltvraE_FD_idOlAmxQkP1xXIYa_fzfj74dtCsx010ebrrOJdw/s320/PXL_20221218_034433960.jpg" width="320" /></a></div><p>The rules are simple. Players take turns placing their pieces. Pieces can be placed anywhere on the board. The game ends when a player resigns, or no more pieces can be placed. The goal of the game is to create a connected path from your tower to the opponent's tower. Neighboring pieces of the same color form a path. The winner is the player whose path (connected to their own tower) gets closest to the opponent's tower. You simultaneously try to extend your path while blocking your opponent's path.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8YXCHgKp906JNayeW4VFZy1ozXIXi1p5mwPwyeiH6d8sGiK867yQcmca4CaBb9VRgkHvti2HRZRRNt3A9do2o-NeAMWmKvBICafuKUyfMIZEBrnIGzofO5JXCS8KkPjb9k_7A6z8ncVmFH0ITkIUv6-L8e4NGx7WDU4uev8LdXUbC7kIUvA/s4080/PXL_20221218_035615429.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3072" data-original-width="4080" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8YXCHgKp906JNayeW4VFZy1ozXIXi1p5mwPwyeiH6d8sGiK867yQcmca4CaBb9VRgkHvti2HRZRRNt3A9do2o-NeAMWmKvBICafuKUyfMIZEBrnIGzofO5JXCS8KkPjb9k_7A6z8ncVmFH0ITkIUv6-L8e4NGx7WDU4uev8LdXUbC7kIUvA/s320/PXL_20221218_035615429.jpg" width="320" /></a></div><div><br /></div>There are 2D and 3D versions of this game. In the 2D version, pieces occupy a single tile on the board. In the 3D version, the crystal pieces can extend beyond the edges of the tile so that they can block neighboring pieces. A valid move requires that the placed crystal doesn't touch any other pieces (verified with a "wiggle" test to make sure neighboring pieces don't move). This introduces more complex strategy: carefully selecting and rotating crystals. Each player gets the same set of crystals (21 unique shapes).Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com7tag:blogger.com,1999:blog-21734860.post-82784078077508559122022-06-27T13:48:00.002-07:002022-06-27T13:48:54.855-07:00Water Computer<p> Using a 3D printer I have built a water-powered computer. Here is a video:</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/1xm4eEhzzX4" width="320" youtube-src-id="1xm4eEhzzX4"></iframe></div><br /><p>Here is a diagram of the main component: </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRAHJ9AlBmrSONjheMB4cWwlfmjCUHAMPJHdaGrLmhtIvLQ57s3UJ0MH5ijSNhKGS17ivxQL60y91FL93Ib8YLb3HHfbVICNmnMZ-hHYiA16qTMKMm-Vlu5w8ZKUqILYdYuVMRhH-x-uLJTbllfUJ461a83BKXYO-eBkEtY1p8l5eqesoMTg/s482/diagram.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="418" data-original-width="482" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRAHJ9AlBmrSONjheMB4cWwlfmjCUHAMPJHdaGrLmhtIvLQ57s3UJ0MH5ijSNhKGS17ivxQL60y91FL93Ib8YLb3HHfbVICNmnMZ-hHYiA16qTMKMm-Vlu5w8ZKUqILYdYuVMRhH-x-uLJTbllfUJ461a83BKXYO-eBkEtY1p8l5eqesoMTg/s320/diagram.png" width="320" /></a></div><br /><p>The "inverted output" on the left will be ON when the input is OFF, and OFF when the input is ON. The "amplified output" on the right will be the same state as the input, but will have increased water flow. By redirecting the outputs with tubes, this single component is powerful enough to build any logic circuit or computer. This type of computation is known as <a href="https://en.wikipedia.org/wiki/Fluidics">fluidics</a>.</p><p>Here is the binary half-adder circuit that I built (using five of the above components):</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3YfE_CXsgllOYk2GS3Ruy8bokGw36lIkj6CO_O6ktQonq8byC8rUJIDs6ymxeu2FwfA8s_DCgsAY5s2z2I1TK1XcP3hPT-DpCBzhTYDmhRRGvCo-GOTjaduDoQIFiZ5V5GEsUx5UJRmDUlK8OLwnp9Z9z8ApJ9F0DtCmU3W7WBlCmru0pxw/s4032/adder.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3YfE_CXsgllOYk2GS3Ruy8bokGw36lIkj6CO_O6ktQonq8byC8rUJIDs6ymxeu2FwfA8s_DCgsAY5s2z2I1TK1XcP3hPT-DpCBzhTYDmhRRGvCo-GOTjaduDoQIFiZ5V5GEsUx5UJRmDUlK8OLwnp9Z9z8ApJ9F0DtCmU3W7WBlCmru0pxw/s320/adder.jpg" width="240" /></a></div><br /><p>Here are the models for the different parts that I 3D printed:</p><p></p><ul style="text-align: left;"><li><a href="https://www.tinkercad.com/things/hgx0QRiS6Y7?sharecode=M_6eErg_YyCCrxMeZ2unKFHOT5l6aB9uNvfgbrKq4Gc">transistor</a> - the main logic component</li><li><a href="https://www.tinkercad.com/things/g0WIpVAae0d?sharecode=1pycohXtmLOLT4VzCS5hqIJKpCJjl4xsD3BMdk8nMIE">nozzle</a> - used for releasing water from the milk carton</li><li><a href="https://www.tinkercad.com/things/dEFA5gPEBme?sharecode=sc_oBD5O3wd3_qj10spR1PSo6avQNWvWGQmEJJ6AZRY">connector</a> - used to connect funnels to tubes</li><li><a href="https://www.tinkercad.com/things/lAZN1b7zmSt?sharecode=eE5lE19k8cUjwJDZIvtSKatnCUbPad8RYymWEe-VU_U">hook</a> - used to provide extra magnet support</li><li><a href="https://www.tinkercad.com/things/i8y9i0PV4uj?sharecode=8LJKOiLHwOI90eEjoA4YnvzQuJTaF4cPPRwU6P07tmE">funnel</a> - funnel with a single output</li><li><a href="https://www.tinkercad.com/things/479VRXBToyE?sharecode=yDwIuf4pf1DLLH6CzjXwVTgLlRJZV49ARu_EOFwyt5o">splitter funnel</a> - funnel with two outputs - this can be used to split one larger stream into two smaller streams</li></ul><p></p><p><br /></p>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-72176099374564252332022-03-13T12:24:00.000-07:002022-03-13T12:24:04.188-07:00Bitlog<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgqXpRHZxva0iigvRujU2S_PzDeasXl_c4Lqxpg9Q5qZJDmgEnssKCDtSWAgNLOGDZIY8JXdksUSXeGZjR9KRxYNdLNV4VKkbOwqNa4pVeW9rsTs6VNaURIQiNuzVlVpuJhWWZjPL778LsTB8PlWCu7P8Xja9q_1n8iMucurRS2lRL8121CwA=s502" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="335" data-original-width="502" height="214" src="https://blogger.googleusercontent.com/img/a/AVvXsEgqXpRHZxva0iigvRujU2S_PzDeasXl_c4Lqxpg9Q5qZJDmgEnssKCDtSWAgNLOGDZIY8JXdksUSXeGZjR9KRxYNdLNV4VKkbOwqNa4pVeW9rsTs6VNaURIQiNuzVlVpuJhWWZjPL778LsTB8PlWCu7P8Xja9q_1n8iMucurRS2lRL8121CwA=s320" width="320" /></a></div><p>Similar to <a href="https://byronknoll.com/turing.html">Turing Paint</a> and <a href="https://byronknoll.com/doodle.html">Doodle Code</a>, I have released another visual programming language called <a href="https://byronknoll.com/bitlog.html">Bitlog</a>. This is a simulator for electronic logic circuits, represented with bitmap images.</p>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-58293949533137633402021-01-04T09:52:00.000-08:002021-01-04T09:52:34.384-08:00Doodle Code<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN73bGNQexmoLR3tPWvBLGQi-yCjFSHo6VUJG8icLVP4Zdx2k1UiuuNUEx9deOQDRAHPOCmDiLCFujyHPKS6k1btxziveY2xh_8d-WMHTX-NidUStlgOkCFvxafLedbQRf8Ia8/s564/example.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="295" data-original-width="564" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN73bGNQexmoLR3tPWvBLGQi-yCjFSHo6VUJG8icLVP4Zdx2k1UiuuNUEx9deOQDRAHPOCmDiLCFujyHPKS6k1btxziveY2xh_8d-WMHTX-NidUStlgOkCFvxafLedbQRf8Ia8/s320/example.png" width="320" /></a></div><br /> I have created a type of barcode called <a href="https://byronknoll.com/doodle.html">Doodle Code</a>. Similar to <a href="https://en.wikipedia.org/wiki/QR_code">QR codes</a>, it can be used to store data.<p></p>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com2tag:blogger.com,1999:blog-21734860.post-39450290677872814222020-10-25T09:47:00.002-07:002020-10-25T09:47:49.532-07:00Turing Paint<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8SlpB9PjgBbwYjBlkL-W2Kh-KNDDF3zkEW4G8A4J5hoSWgWKi_PBeedGBf0RstLNFPA1TPDi1VXXG4KrChJfjjCy1CM1FwzRaVuqJGu_m-iCcA6l0vMyv2YMrgDc9_MqEGVbC/s304/example.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="210" data-original-width="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8SlpB9PjgBbwYjBlkL-W2Kh-KNDDF3zkEW4G8A4J5hoSWgWKi_PBeedGBf0RstLNFPA1TPDi1VXXG4KrChJfjjCy1CM1FwzRaVuqJGu_m-iCcA6l0vMyv2YMrgDc9_MqEGVbC/s0/example.png" /></a></div>I have created my own programming language called <a href="https://byronknoll.com/turing.html">Turing Paint</a>. It is a visual programming language: programs are represented using images.<p></p>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com9tag:blogger.com,1999:blog-21734860.post-24286090137858582082020-07-20T21:45:00.000-07:002020-07-20T21:45:05.227-07:00tensorflow-compressI just released a new open source compression program: <a href="https://github.com/byronknoll/tensorflow-compress">tensorflow-compress</a>. It performs lossless data compression using neural networks. Its compression rate is significantly worse than <a href="https://www.byronknoll.com/cmix.html">cmix</a>, but it has some nice features:<div><ul style="text-align: left;"><li>It can run significantly faster using GPUs</li><li>It is written in Colab and designed to be run through a web browser</li></ul><div>I am planning to continue working on it to improve performance and compression rate.</div></div>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com1tag:blogger.com,1999:blog-21734860.post-19765982692581825982018-08-07T22:10:00.001-07:002018-08-07T22:11:28.991-07:00Android AppToday I published my first Android app: <a href="https://play.google.com/store/apps/details?id=com.byronknoll.squishyearth">Squishy Earth</a><br />
<br />
This was based on a <a href="https://byronknoll.blogspot.com/2013/10/deformable-textures-in-html5-canvas.html">HTML5 demo</a> I made a few years ago.Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-77318591542022922112018-03-07T19:26:00.000-08:002018-03-07T19:26:45.663-08:00cmix updatesThere was recently a new winning entry (called phda) for the <a href="http://prize.hutter1.net/">Hutter Prize</a>. The Hutter Prize is a contest for compressing the first 100MB of Wikipedia (called enwik8). <a href="http://mattmahoney.net/dc/text.html#1192">Here</a> is how all of the previous versions of cmix performed on enwik8. <a href="http://mattmahoney.net/dc/text.html#1187">phda</a> is incredible - using far less CPU and memory than cmix while getting a similar compression rate. Unfortunately it is closed source, so many of its implementation details are hidden. phda has pushed cmix v14 into second place on the <a href="http://mattmahoney.net/dc/text.html">Large Text Compression Benchmark</a>. cmix currently compresses enwik8 to 15113248 bytes, so I am guessing the next cmix release should make it back to first place. Unfortunately there is a bug which is preventing cmix from compressing enwik9 properly, so I need to fix that before the v15 release. This bug is difficult to fix because I have only seen it happen when compressing enwik9... which takes over one week of CPU time for each debugging pass.<br />
<br />
Last year I got funding for cmix through the <a href="https://blog.aigrant.org/new-ai-grant-fellows-43f1c26c13d9">AI Grant</a>. This helped speed up progress by giving me access to more computational resources. I bought a new desktop and can use many virtual machines simultaneously on Google Compute Engine. The new resources let me run cmix on the <a href="http://qlic.altervista.org/LPCB.html">Lossless Photo Compression Benchmark</a>, getting first place using over 6 months of CPU time!Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-78241857586084122852017-12-14T23:10:00.000-08:002017-12-15T16:05:00.469-08:00Dollar Cost AveragingDollar cost averaging (DCA) is an investment strategy where you invest a fixed amount of money on a regular schedule over time. If you have some money, let's say $100, which of these strategies is better?<br />
<br />
<b>Strategy #1</b>: invest $100 on day 1<br />
<b>Strategy #2</b>: invest $1 every day for 100 days (i.e. DCA)<br />
<br />
You convert your investment back to dollars at some future date, say after 1000 days. As expected, there is a risk vs reward trade off. Both strategies are expected to have some positive interest. Many people I talk to claim that DCA is a valid strategy: although it has a lower expected reward than strategy #1, it also has lower risk. They argue that you should choose strategy #1 or #2 based on your risk vs reward preference.<br />
<br />
I have always had an uneasy feeling about this argument. Intuitively I feel like DCA <i>never</i> is a good strategy. In the past I have had various arguments with people about why, but I have never been able to make a convincing argument. Out of the people I have talked to, it also feels like I am the only one who has this opinion.<br />
<br />
I have never done any research into this topic or taken any relevant classes. Today I had another argument with some friends, and I finally decided to just run some computer simulations comparing various strategies under different conditions. Figuring out the math is hard, but running computer simulations and looking at the statistics is easy.<br />
<br />
One insight with strategy #1 is that you can adjust your risk vs reward trade off by just investing less money. Less investment = lower reward and lower risk. We can introduce this as a new strategy:<br />
<br />
<b>Strategy #3</b>: invest $X (e.g. $75) on day 1 and keep $(100-X) in your wallet.<br />
<br />
With DCA you can adjust the risk vs reward trade off using different investment schedules. Investing $10 every day for 10 days will have higher risk and higher reward than investing $1 every day for 100 days.<br />
<br />
For completeness, we can compare a few other strategies:<br />
<br />
<b>Strategy #4</b>: invest $100 on day 50<br />
<b>Strategy #5</b>: invest $100 on day 100<br />
<br />
My simulation adds random fluctuations to the investment, so we can measure the expected return and variance of the different strategies using millions of simulated investments. I also experimented with various parameters of the simulations (e.g. how much the investment fluctuates, the duration of the investment, the growth rate of the investment, etc).<br />
<br />
Under normal conditions:<br />
- Strategy #1 has the highest expected return and highest variance.<br />
- Strategy #4 and #5 never are useful. You can get the same expected return with lower variance using DCA or strategy #3.<br />
- Strategy #3 is better than DCA. At any level of preferred variance, strategy #3 can get higher expected return. At any level of preferred expected return, strategy #3 can get lower variance.<br />
<br />
Surprisingly, there actually are some scenarios where the situation reverses and DCA becomes superior to strategy #3. When the size of the random fluctuations becomes large enough, DCA becomes better. The size of the fluctuations has to become pretty huge - much larger variation than I would expect from normal stock index funds. It might make sense to use DCA for investing in something like bitcoin.Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-28258210017591543772017-07-14T23:56:00.001-07:002017-07-14T23:56:54.379-07:00Rock Paper Scissors Using LSTMRecently I have been doing a lot of research into using <a href="https://en.wikipedia.org/wiki/Long_short-term_memory">LSTM</a> for data compression (in <a href="http://www.byronknoll.com/cmix.html">cmix</a>, <a href="https://github.com/byronknoll/lstm-compress">lstm-compress</a>, and <a href="https://github.com/byronknoll/tensorflow-compress">tensorflow-compress</a>). In 2011 I made a website about <a href="http://www.rpscontest.com/">Rock Paper Scissors AI</a>. I realized that LSTM should be good at playing RPS, so today I made a small demo to do that: <a href="http://www.byronknoll.com/lstm.html">http://www.byronknoll.com/lstm.html</a>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-70734632172676020572017-05-20T19:56:00.000-07:002017-10-06T09:35:49.900-07:00Solar PanelsMy wife and I recently bought a house in the San Francisco Bay Area. We are getting solar panels installed on the roof of the house. In this area it is a great financial investment - there is a lot of sun and the electricity rates are high. There is also a 30% federal tax credit for solar installations.<br />
<br />
Determining the best size of the system to install depends on your electricity usage. Producing more power than you consume is less profitable.<br />
<br />
We got quotes from three different companies. The quotes are surprisingly different:<br />
<br />
<b>SolarCity:</b><br />
System size: 2.7 kW<br />
Estimated annual production: 4,036 kWh<br />
Cost before rebate: $11,394<br />
Cost after rebate: $6,381<br />
Price per watt: $2.36/W<br />
<br />
<b>Sunrun:</b><br />
System size: 2.61 kW<br />
Estimated annual production: 3,526 kWh<br />
Cost before rebate: $10,559<br />
Cost after rebate: $7,391<br />
Price per watt: $2.83/W<br />
<br />
<b>SunWork:</b><br />
System size: 2.61 kW<br />
Estimated annual production: 5,050 kWh<br />
Cost before rebate: $7,050<br />
Cost after rebate: $4,950<br />
Price per watt: $1.9/W<br />
<br />
SunWork has by far the best price at $1.9/W. Not only that, but their system is estimated to produce far more kWh than the two other companies. Their system uses microinverters instead of a central inverter. Microinverters have a longer warranty: 25 years instead of 10 years. They are also more efficient than a central inverter. With a central inverter the system only produces as much as the least efficient panel. Microinverters allow each panel to independently perform the DC-AC conversion and also allow you to monitor the performance of each panel.<br />
<br />
Another reason SunWork estimates a larger annual production is because they did a better job of optimizing the layout of the panels on our roof. Each company had a different layout:<br />
<br />
<b>SolarCity:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje1sX-AojpMV0vpKK2cXG699z7fXeJftAwj3nzIbu_fbvP4cSDyi1Vi30yBE3WFOjMVfQ0xkQxq4lx5ZN914kU2Eq2-uGuZsoav-cpjn74h0ivNoy2o_7yIKJiTj4Kwm7brZqu/s1600/11.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje1sX-AojpMV0vpKK2cXG699z7fXeJftAwj3nzIbu_fbvP4cSDyi1Vi30yBE3WFOjMVfQ0xkQxq4lx5ZN914kU2Eq2-uGuZsoav-cpjn74h0ivNoy2o_7yIKJiTj4Kwm7brZqu/s320/11.JPG" width="268" /></a></div>
<br />
<br />
<b>Sunrun:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhD08eOU0BnEzK8xqTOj1mb74b2nzC8hGvTcK6wq9nk85KwnrxzE9ZvTSaG4vYwfHWF7c6ouxJSa93SYSp561xdF7Ns7usDC_PZ9_VqZ356WXocRRU5MssEsSPMY-wIYb-f5y-/s1600/Screenshot+from+2017-05-20+19%253A37%253A06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhD08eOU0BnEzK8xqTOj1mb74b2nzC8hGvTcK6wq9nk85KwnrxzE9ZvTSaG4vYwfHWF7c6ouxJSa93SYSp561xdF7Ns7usDC_PZ9_VqZ356WXocRRU5MssEsSPMY-wIYb-f5y-/s320/Screenshot+from+2017-05-20+19%253A37%253A06.png" width="314" /></a></div>
<br />
<br />
<b>SunWork:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvKCpnLVDEoVM40nehomjcZ06ZkMWqpSgKOLM0nQ9nkixyqLKkgJI46R6hkze0Jtc3xORVi80WrIUNg7iZHiNlziOPHe2s4WsrKuNTTN2uS_ZwpnZZtnIDOYoHToXE4scIlJvE/s1600/image.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvKCpnLVDEoVM40nehomjcZ06ZkMWqpSgKOLM0nQ9nkixyqLKkgJI46R6hkze0Jtc3xORVi80WrIUNg7iZHiNlziOPHe2s4WsrKuNTTN2uS_ZwpnZZtnIDOYoHToXE4scIlJvE/s320/image.png" width="269" /></a></div>
<b><br /></b>
SunWork managed to squeeze all nine panels onto southern facing parts of the roof. Sunrun had cool software which created a 3D model of our roof and automatically detected vents and surrounding trees (useful for modelling shadows). For all three companies the panel placement seemed to be done manually - combined with some software to estimate annual output.<br />
<br />
<i>Update</i>: SunWork panels have been installed! <a href="https://enlighten.enphaseenergy.com/pv/public_systems/8VBf1264000/overview">Here is a dashboard</a> to monitor our system output.<br />
<br />
<i>Update#2</i>: The final price was lower than their initial quote: $6,565 <br />
<b><br /></b>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com2tag:blogger.com,1999:blog-21734860.post-51955731915093770812016-02-11T00:06:00.001-08:002016-02-11T00:06:43.418-08:00Trackball Mouse<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA7ZAwS0Ovqt5EvV5-qy0iK1iEQUjZ1kau9d_khC8RyY1IhIkqmOuKOAFPkvIg9UFKSbiYr7ziQBUfaGSDU7Ayc-zwcRBd-99yH553Ap7V6Io-ZMsWAVo_GXhAlNqNokUT68jG/s1600/61hdddA4%252BfL._SL1000_.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA7ZAwS0Ovqt5EvV5-qy0iK1iEQUjZ1kau9d_khC8RyY1IhIkqmOuKOAFPkvIg9UFKSbiYr7ziQBUfaGSDU7Ayc-zwcRBd-99yH553Ap7V6Io-ZMsWAVo_GXhAlNqNokUT68jG/s400/61hdddA4%252BfL._SL1000_.jpg" /></a><br><br>
A couple years ago I bought <a href="http://www.amazon.com/gp/product/B009ZM75GG">this neat mouse on Amazon</a>. It is surprisingly useful. I can use it to remote control my computer from my bed. It is also useful for controlling my <a href="http://byronknoll.blogspot.com/2016/02/avegant-glyph-review.html">Avegant Glyph</a> when not sitting at a desk.Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com1tag:blogger.com,1999:blog-21734860.post-73796109222887572212016-02-10T23:32:00.001-08:002016-02-10T23:40:43.337-08:00Avegant Glyph Review<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheXnuYDNXk-cUOq9YLnSBCLc2EE3SNAWIOoR-rctcINFpkmDf31MCHQ8jJZ7n8nICbM9aNCqvbp1fkX9F_IPCpo-EUzuiJD7jXSqxn9zVQszT1CBedMHvbMtYzRLoimHuW07_n/s1600/glyph_packaging_template_3-5c716fa7113c34c2152bce3830b6e9b2.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheXnuYDNXk-cUOq9YLnSBCLc2EE3SNAWIOoR-rctcINFpkmDf31MCHQ8jJZ7n8nICbM9aNCqvbp1fkX9F_IPCpo-EUzuiJD7jXSqxn9zVQszT1CBedMHvbMtYzRLoimHuW07_n/s400/glyph_packaging_template_3-5c716fa7113c34c2152bce3830b6e9b2.jpg" /></a>
<br><br>Two years ago I made a <a href="http://byronknoll.blogspot.com/2014/01/avegant-glyph.html">post</a> about a device called <a href="https://avegant.com/">Avegant Glyph</a>. I ended up investing in the Kickstarter. The estimated delivery during the Kickstarter campaign was December 2014. I finally got the Glyph two days ago.<br><br>
It is a very cool device, but fell short of my expectations. Initially I spent a lot of time trying to get the position of the display calibrated for my eyes. It was very difficult to calibrate - I couldn't get a clear view of the entire rectangular display. The nose pieces that came with the device keep the display too far from my eyes. I found that removing the nose piece helps me get closer to the display, getting a clearer picture. However, I still can't get a completely clear view of the corners of the display even with my eyelashes touching the lens. The device is also a bit uncomfortable without a nose piece.<br><br>
Ignoring the calibration issues, the quality of the display is amazing. Colors are very pure and reading text is easy. The display quality looks much better than the Oculus Rift developer versions. However, the resolution of the display is not very high.<br><br>
Originally I was hoping this could be used as a complete replacement for my desktop monitor. The calibration issues really prevent this from working well. It is annoying to not be able to see text in the corner of the display clearly with both eyes. I tried watching a movie with the device while lying down. This worked well. The weight of the device was supported by the bed, so it was not uncomfortable. The corner calibration issues were hardly noticeable while watching the movie (probably because focusing on the edges wasn't necessary).Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-64447866276286039202016-01-09T18:15:00.000-08:002016-01-09T18:15:23.511-08:00Raspberry Pi Thermostat InstructionsHere are some details on how I put together my <a href="http://byronknoll.blogspot.com/2016/01/raspberry-pi-thermostat.html#gpluscomments">Raspberry Pi thermostat</a>.<br><br>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbzzpZ5e7KVN6BlC27dY7LuMa4pZHIfRZ9Wupp8nYN5gSxxD1Cl96qn8giLbXh3AEl_dietwhmMzFOFyKwZA52mlHUZ8F8mC_ofrvnkxSok9AqOspwxgho3CfTNHf2kpNL_nOe/s1600/2016-01-08.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbzzpZ5e7KVN6BlC27dY7LuMa4pZHIfRZ9Wupp8nYN5gSxxD1Cl96qn8giLbXh3AEl_dietwhmMzFOFyKwZA52mlHUZ8F8mC_ofrvnkxSok9AqOspwxgho3CfTNHf2kpNL_nOe/s400/2016-01-08.jpg" /></a><br><br>
My apartment's thermostat uses a very simple mechanism to control the heater:<br><br>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAbus-B14fCTu-XVZWDg2nFRnXtnyzYuHgk-3rfYQbQFfivl0udp9LM3jwYQ2P_PwRl51vHne632Q6-FliqzkoGW0D5mpRiijQZf0hsE9HN8-i3JJdUBnIcLxpKxJ8G80rZFNG/s1600/2016-01-09.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAbus-B14fCTu-XVZWDg2nFRnXtnyzYuHgk-3rfYQbQFfivl0udp9LM3jwYQ2P_PwRl51vHne632Q6-FliqzkoGW0D5mpRiijQZf0hsE9HN8-i3JJdUBnIcLxpKxJ8G80rZFNG/s400/2016-01-09.jpg" /></a><br><br>
Connecting the red wire to the white wire turns on the heater. Near the center of the thermostat is a glass vial containing some mercury. If the vial tilts to the right the mercury creates a connection between the wires. I attached the two black wires on the bottom and use the Raspberry Pi to control the connection between the wires. The original thermostat remains fully functional: the heater will turn on if either the Raspberry Pi or the original thermostat signal it to turn on.<br><br>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0YkHUBwOLMEP4NuEIqo_IR_6stEiXIxed6_YU6_L_O9Re6_pWJ4JKnO_3wZoJCwDbkwUPpreuNpl7uhd1Gk1Xdj4i8ewzoLsYE_usIcwz7Sx6QTIDHd6ahM7oX30y8yt5BepR/s1600/2016-01-09+%25281%2529.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0YkHUBwOLMEP4NuEIqo_IR_6stEiXIxed6_YU6_L_O9Re6_pWJ4JKnO_3wZoJCwDbkwUPpreuNpl7uhd1Gk1Xdj4i8ewzoLsYE_usIcwz7Sx6QTIDHd6ahM7oX30y8yt5BepR/s400/2016-01-09+%25281%2529.jpg" /></a><br><br>
Materials used:
<ul>
<li><a href="https://www.adafruit.com/products/2358">Raspberry Pi 2 Model B</a></li>
<li><a href="https://www.adafruit.com/products/1012">USB Wifi</a></li>
<li><a href="https://www.adafruit.com/products/2029">Pi Cobbler Plus</a></li>
<li><a href="https://www.adafruit.com/products/1995">Power supply</a></li>
<li><a href="https://www.adafruit.com/products/1121">SD card</a></li>
<li><a href="http://microcontrollershop.com/product_info.php?products_id=5919">Songle SRD-05VDC-SL-C Relay</a></li>
<li>Breadboard</li>
<li>Wires</li>
</ul>
The relay module controls the connection between the two heater wires. GPIO output from the Raspberry Pi can turn the connection on/off. The connection is off by default - even when the Raspberry Pi is powered off. I SSH into the Raspberry Pi to control the GPIO pin over the Internet.Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-70526383628578460572016-01-08T23:02:00.000-08:002016-01-09T18:27:06.851-08:00Raspberry Pi Thermostat<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG6p2AsMUeGyCr-PKvrt1x5PS2OLCsS4K4JXINkgsadSb6Jz8U_T3Mw40-H-4iEz41X9iinpQOwgjXOq_YdmHdh8H0IC3hAT8PKvORggek1J4fTFpTiEexL7ns72FxZFI_WAGW/s1600/2016-01-08.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG6p2AsMUeGyCr-PKvrt1x5PS2OLCsS4K4JXINkgsadSb6Jz8U_T3Mw40-H-4iEz41X9iinpQOwgjXOq_YdmHdh8H0IC3hAT8PKvORggek1J4fTFpTiEexL7ns72FxZFI_WAGW/s400/2016-01-08.jpg" /></a><br><br>
I connected a Raspberry Pi up to the heater in my apartment. Now I can control the heater over the Internet.<br><br>
Update: more details <a href="http://byronknoll.blogspot.com/2016/01/raspberry-pi-thermostat-instructions.html">posted here</a>.Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-22698938681082465222016-01-05T00:08:00.000-08:002016-01-05T00:08:08.478-08:00An Update on Baka<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibqrwCDx3x_4AWIgGZ1CX4oILmebHG0nf0meElganClbUzoR5l9ePeIWcKeEKHto5MN8NCENOi9EGmQxndu-arrDfxFt1JJrnR8zw22avWDsufYszb3uj1VQvcH89Rs5Oehmc7/s1600/baka.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibqrwCDx3x_4AWIgGZ1CX4oILmebHG0nf0meElganClbUzoR5l9ePeIWcKeEKHto5MN8NCENOi9EGmQxndu-arrDfxFt1JJrnR8zw22avWDsufYszb3uj1VQvcH89Rs5Oehmc7/s400/baka.png" /></a><br>
[<a href="http://byronknoll.blogspot.com/2015/04/baka-analytics.html">previous post</a>]<br><br>
Although <a href="https://sites.google.com/site/bakaanalytics/">Baka Analytics</a> has stopped updating, Baka is still alive. The occasional gaps in the data were due to Baka chewing through the wire which connects the magnetic sensor to the Raspberry Pi (which I had to fix several times). The outage since September 12 is a more serious issue: all of the USB ports on the Raspberry Pi stopped working. I think Baka caused this by urinating on the Raspberry Pi (which was stored next to his cage). I have ordered a replacement Raspberry Pi to use on another project, so it is unlikely I will restart Baka Analytics.<br><br>
Baka's record was running 17.31 kilometers in a single night. In total Baka was recorded running 682.29 kilometers.Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-1706831606650288592016-01-04T01:10:00.000-08:002016-01-04T01:10:39.009-08:00Metaball Go<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUxbvI_QI8P3WxN85cr3HspKgxFyIJgmjKp6KuMwLpXMU1JGCLawbX_VqPCE83CAj5DWvoDHJUq2HheLCyqCF79iTsXM-50MvADEDShNz0EOJeqZB-9s56nq9nZ81TusJ8mZYf/s1600/go.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUxbvI_QI8P3WxN85cr3HspKgxFyIJgmjKp6KuMwLpXMU1JGCLawbX_VqPCE83CAj5DWvoDHJUq2HheLCyqCF79iTsXM-50MvADEDShNz0EOJeqZB-9s56nq9nZ81TusJ8mZYf/s400/go.png" /></a>
Today I worked on a small HTML5 project: <a href="http://www.byronknoll.com/go.html">http://www.byronknoll.com/go.html</a><br><br>
This is the board game <a href="https://en.wikipedia.org/wiki/Go_(game)">Go</a> rendered using <a href="https://en.wikipedia.org/wiki/Metaballs">metaballs</a>.Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-33089553148776132142015-11-13T00:28:00.000-08:002015-11-13T00:28:09.486-08:00Battle Map ExplorerUnfortunately the <a href="https://www.kickstarter.com/projects/411355421/battle-map-explorer">Kickstarter project</a> I created did not get funded. Here is what the funding graph looked like:<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEGyel4xscIb-64H3P3VOjfx1MJhi7Gtp98u7rMQ9-mlqHBKQCe8yNA25rzUV3snUpespO_Sw9znSfnlllwag55DoyCuEFzjygm53BJLxmTu467079N7pLoNRmx0miIbHHUgl5/s1600/ad9692f935d604ce99662deb03335969_original.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEGyel4xscIb-64H3P3VOjfx1MJhi7Gtp98u7rMQ9-mlqHBKQCe8yNA25rzUV3snUpespO_Sw9znSfnlllwag55DoyCuEFzjygm53BJLxmTu467079N7pLoNRmx0miIbHHUgl5/s400/ad9692f935d604ce99662deb03335969_original.png" /></a>
Today I released an open source project based on the idea used in the Kickstarter project: <a href="https://github.com/byronknoll/battle-map-explorer">https://github.com/byronknoll/battle-map-explorer</a>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com1tag:blogger.com,1999:blog-21734860.post-24072113063577364262015-11-11T00:08:00.002-08:002015-11-11T00:08:48.051-08:00cmix v8I have released a <a href="http://www.byronknoll.com/cmix.html">new version of cmix</a>. I have also migrated the code from a private Bitbucket repository to a public GitHub repository: <a href="https://github.com/byronknoll/cmix">https://github.com/byronknoll/cmix</a>.Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-27254999509276814472015-08-13T18:16:00.000-07:002015-08-13T18:16:37.499-07:00Kickstarter Project<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUixoPoIxvQAnnEoJsx9aTaCIHQHynt4MAIK8DS1mSllCirz7znCRli6EZ_GhNAb29YHtYR88k589nSYR1nrCWt9N3idaetM-Q0oXisRQmQw4DaNi2n5hY1GRS8xmA7gKNnTr3/s1600/dungeon.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUixoPoIxvQAnnEoJsx9aTaCIHQHynt4MAIK8DS1mSllCirz7znCRli6EZ_GhNAb29YHtYR88k589nSYR1nrCWt9N3idaetM-Q0oXisRQmQw4DaNi2n5hY1GRS8xmA7gKNnTr3/s400/dungeon.png" /></a>
I just launched my first Kickstarter project! <a href="https://www.kickstarter.com/projects/411355421/battle-map-explorer">https://www.kickstarter.com/projects/411355421/battle-map-explorer</a>Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0tag:blogger.com,1999:blog-21734860.post-49023830592441862932015-04-25T12:23:00.000-07:002015-04-25T12:23:41.988-07:00Baka Analytics<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9ZpzYr4bPoOUjy9f9hydfYZoi5D7jNYDJnPei-O9YOqxxBkWoglWb0108a5B8NoaGTIm42zxR_ZEjbS1_WikXPEQJNf8AQUpfR7YcOvVuNpHoD0c8oeYiQbXJIFDoZLDZsyRu/s1600/baka.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9ZpzYr4bPoOUjy9f9hydfYZoi5D7jNYDJnPei-O9YOqxxBkWoglWb0108a5B8NoaGTIm42zxR_ZEjbS1_WikXPEQJNf8AQUpfR7YcOvVuNpHoD0c8oeYiQbXJIFDoZLDZsyRu/s320/baka.jpg" /></a>
<br><br>
I have a pet hamster named Baka. Baka spends most of his free time running on a hamster wheel. I put together a device to track the hamster wheel's rotation. It uses a <a href="https://www.raspberrypi.org/raspberry-pi-2-on-sale/">Raspberry Pi 2</a>, a <a href="http://www.adafruit.com/products/375">magnetic sensor</a>, and Google Analytics. Here is a webpage with live coverage of Baka's running: <a href="https://sites.google.com/site/bakaanalytics/">https://sites.google.com/site/bakaanalytics/</a>. He tends to run about 6 kilometers per day (13,000 rotations) and sticks to a strict schedule of running between 10pm and 6am.Byron Knollhttp://www.blogger.com/profile/07033149054635249156noreply@blogger.com0