<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>matthewlynch.net</title>
	<atom:link href="http://matthewlynch.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://matthewlynch.net</link>
	<description>Musings on programming, electronics, and other such things.</description>
	<lastBuildDate>Sun, 11 Mar 2012 12:41:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>My First Pony&#8230; I mean PCB.</title>
		<link>http://matthewlynch.net/electronics/my-first-pony-i-mean-pcb/</link>
		<comments>http://matthewlynch.net/electronics/my-first-pony-i-mean-pcb/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 05:39:00 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Robotics]]></category>

		<guid isPermaLink="false">http://matthewlynch.net/?p=247</guid>
		<description><![CDATA[I have been fiddling with electronics on-and-off for years now, and got pretty 'serious' about it early last year. I have always just stuck to bread boards and simple prototyping. I never dared dream of designing my own circuit boards, let alone having them printed. Surely that would be, like, hard or something right? Last [...]]]></description>
			<content:encoded><![CDATA[<p>I have been fiddling with electronics on-and-off for years now, and got pretty 'serious' about it early last year.</p>
<p>I have always just stuck to bread boards and simple prototyping. I never dared dream of designing my own circuit boards, let alone having them printed. Surely that would be, like, hard or something right?</p>
<p>Last night I decided to bite the bullet and find out by designing my first PCB. It is very, very, very simple, and it may fail horribly... but come next pay day, I am going to cross my fingers, and send the design off to be printed (after checking it roughly 10,000 more times).</p>
<p>The board is designed to replace the bread board in my Norby robot, allowing me to plug-in new sensors/servos with less fiddling, and maybe add a few pretty lights ^_^</p>
<p><a href="http://matthewlynch.net/wp-content/uploads/2012/01/norby-board-v1-0.png"><img class="aligncenter size-medium wp-image-253" title="norby-board-v1-0" src="http://matthewlynch.net/wp-content/uploads/2012/01/norby-board-v1-0-300x202.png" alt="Norby Board V1.0" width="300" height="202" /></a></p>
<p>I have kept the design super simple because it is my first shot, and because PCBs may not be hard to design, but getting them printed isn't exactly cheap (in low quantities).</p>
<p>I will note that some credit must go to <a title="RobotGrrl" href="http://robotgrrl.com/blog/" target="_blank">The RobotGrrl</a>, as watching her progress reports on <a title="RoboBrrd" href="http://robotgrrl.com/robobrrd/" target="_blank">RoboBrrd</a>'s brain inspired me to get off my lazy arse and give it a shot.</p>
]]></content:encoded>
			<wfw:commentRss>http://matthewlynch.net/electronics/my-first-pony-i-mean-pcb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4-bit Decoder in Minecraft</title>
		<link>http://matthewlynch.net/emulation/4-bit-decoder-in-minecraft/</link>
		<comments>http://matthewlynch.net/emulation/4-bit-decoder-in-minecraft/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 00:47:45 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Boolean]]></category>
		<category><![CDATA[Emulation]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Humour]]></category>
		<category><![CDATA[Logic]]></category>
		<category><![CDATA[Minecraft]]></category>

		<guid isPermaLink="false">http://matthewlynch.net/?p=195</guid>
		<description><![CDATA[I have had a bit of an obsession with Boolean logic recently, and 'thanks' to the flu, I have had a lot of spare time over the last few days. So I decided to combine the two, and build a 4-bit to 16-line decoder in Minecraft. For those that don't know, Minecraft is a sandbox-style [...]]]></description>
			<content:encoded><![CDATA[<p>I have had a bit of an obsession with Boolean logic recently, and 'thanks' to the flu, I have had a lot of spare time over the last few days.</p>
<p>So I decided to combine the two, and build a 4-bit to 16-line decoder in Minecraft.</p>
<p>For those that don't know, Minecraft is a sandbox-style game in which players can build many different things out of blocks (kind of like Lego).</p>
<p>But what interested me is a mechanic called 'redstone dust'. Players can make torches out of this dust and add them to blocks to power them. They can then use the dust to connect the powered block to other special blocks - like doors, and traps - to give them power.</p>
<p>What is really interesting, though, is what happens when you connect two or more torches together.</p>
<p>Run power from Torch A in to Torch B, and Torch B will switch off. In other words it acts like a NOT gate. More interestingly, if you connect two or more torches to one torch, the targeted torch acts like a NOR gate.</p>
<p>This is great, because the NOR gate is a universal gate.</p>
<p>And so I was able to build this 4-bit decoder:</p>
<p><iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/gGyiicYCz_A" frameborder="0" allowfullscreen></iframe></p>
<p>The first half of the video shows the device working. The second half shows the actual device in all its glory.</p>
<p>I based it off <a title="MultiTTL - 4-bit Instruction Decoder" href="http://www.matthewlynch.net/multittl/images/4-bit-instruction-decoder.png" target="_blank">a design that I put together recently for a different project</a>, but had to add a lot of repeaters (NOT-NOT) because Minecraft limits the length of a 'wire' to 15 squares.</p>
]]></content:encoded>
			<wfw:commentRss>http://matthewlynch.net/emulation/4-bit-decoder-in-minecraft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Norby Mark I</title>
		<link>http://matthewlynch.net/artificial-intelligence/norby-mark-i/</link>
		<comments>http://matthewlynch.net/artificial-intelligence/norby-mark-i/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 08:34:27 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Robotics]]></category>

		<guid isPermaLink="false">http://matthewlynch.net/?p=188</guid>
		<description><![CDATA[Over the past week or so, I have been playing with a new robot I built. It isn't the most complex robot in the world, but that is fine. I built it mainly as a test platform for limited-input path finding algorithms. I am using an Arduino Mega 2560 micro-controller with an Ardumoto Shield to [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past week or so, I have been playing with a new robot I built.</p>
<p>It isn't the most complex robot in the world, but that is fine. I built it mainly as a test platform for limited-input path finding algorithms.</p>
<p><a href="http://matthewlynch.net/wp-content/uploads/2011/03/norby-100223.png"><img class="aligncenter size-medium wp-image-189" title="Norby MI" src="http://matthewlynch.net/wp-content/uploads/2011/03/norby-100223-300x253.png" alt="Norby MI" width="300" height="253" /></a></p>
<p>I am using an <a title="Arduino Mega 2560" href="http://www.australianrobotics.com.au/?q=arduinoMega2560" target="_blank">Arduino Mega 2560 micro-controller</a> with an <a title="Ardumoto Motor Driver Shield" href="http://www.australianrobotics.com.au/?q=node/216" target="_blank">Ardumoto Shield</a> to drive the engines. The track base is a <a title="RP-5 Tank-Tread Robot Platform" href="http://www.australianrobotics.com.au/?q=rp5" target="_blank">RP-5 Tank-Tread Platform</a>, and is suprisingly awesome (fast and powerful).</p>
<p>The (only) sensor is a <a title="Seeed PING Ultrasonic Rangefinder" href="http://www.australianrobotics.com.au/?q=node/51" target="_blank">Seeed PING Ultrasonic Range Finder</a>. I 'mounted' the sensor on a 180-degree servo motor so that the robot can look left and right.</p>
<p>To save on soldering, I am just using a bread board to create the circuit. Though (fair warning) I did need to solder the connectors to the motor shield.</p>
<p>I made the mounting boards with a bunch of plywood and my handy dremel tool.</p>
<p>The circuit I am using to connect everything together is fairly simple:</p>
<p><a href="http://matthewlynch.net/wp-content/uploads/2011/03/norby-circuit.png"><img class="aligncenter size-medium wp-image-190" title="Norby MI Circuit" src="http://matthewlynch.net/wp-content/uploads/2011/03/norby-circuit-300x206.png" alt="Norby MI Circuit" width="300" height="206" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://matthewlynch.net/artificial-intelligence/norby-mark-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Math Behind 3D Transformation</title>
		<link>http://matthewlynch.net/3d-graphics/the-math-behind-3d-transformation/</link>
		<comments>http://matthewlynch.net/3d-graphics/the-math-behind-3d-transformation/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 17:17:11 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[3D Graphics]]></category>

		<guid isPermaLink="false">http://matthewlynch.net/?p=178</guid>
		<description><![CDATA[Tonight I wrote an article that acts as introduction to the math behind 3D transformations. Depending on my motivation levels, this may be the first in a series of articles covering the math and algorithms underlying 3D programming.]]></description>
			<content:encoded><![CDATA[<p>Tonight I wrote <a title="3D Transformation Math In A Nutshell" href="http://matthewlynch.net/articles/3d-transformation-math-in-a-nutshell/" target="_self">an article that acts as introduction to the math behind 3D transformations</a>.</p>
<p>Depending on my motivation levels, this may be the first in a series of articles covering the math and algorithms underlying 3D programming.</p>
]]></content:encoded>
			<wfw:commentRss>http://matthewlynch.net/3d-graphics/the-math-behind-3d-transformation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Good seed for Random()</title>
		<link>http://matthewlynch.net/dotnet/good-seed-for-random/</link>
		<comments>http://matthewlynch.net/dotnet/good-seed-for-random/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 03:46:46 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://matthewlynch.net/?p=68</guid>
		<description><![CDATA[I often run in to a scenario where I need an easy way to generate random numbers. In most of these case, I don't care whether the numbers are entirely random, or just psuedo-random; all I want are numbers that have a decent level of variation. In .NET, System.Random is great for this, but there [...]]]></description>
			<content:encoded><![CDATA[            <script type="text/javascript" src="http://matthewlynch.net/wp-content/plugins/wordpress-code-snippet/scripts/shBrushCSharp.js"></script>
<p>I often run in to a scenario where I need an easy way to generate random numbers. In most of these case, I don't care whether the numbers are entirely random, or just psuedo-random; all I want are numbers that have a decent level of variation.</p>
<p>In .NET, System.Random is great for this, but there is one issue: the default seed is time based.</p>
<p>In a lot of cases, the default seed is fine - because it is based on a high precision clock - but when you are working with multiple threads, it becomes problematic.</p>
<p>There are many (many, many) solutions to this, but today I stumbled across one that is simple, and reasonably elegant:</p>
<p><pre class="brush: csharp">Random random = new Random(Guid.NewGuid().GetHashCode());</pre></p>
<p>Because of the astronomically low chances of a GUID collision, this method of seeding as good as guarantees that each of your threads will be operating with a different seed.</p>
<p>The GUID needs to be hashed because the seed must be 32-bit.</p>
<p>I should note that you should not use this for anything relating to security. If you need a random number for security purposes, use a secure random number generator.</p>
]]></content:encoded>
			<wfw:commentRss>http://matthewlynch.net/dotnet/good-seed-for-random/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

