<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>ToniWestbrook.com</title>
	
	<link>http://www.toniwestbrook.com</link>
	<description>The Joy of Computer Science and Engineering</description>
	<lastBuildDate>Mon, 14 May 2012 02:50:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ToniWestbrookDotCom" /><feedburner:info uri="toniwestbrookdotcom" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>BerryCraft – Update 5/13/12</title>
		<link>http://feedproxy.google.com/~r/ToniWestbrookDotCom/~3/jEcfhbGL-tc/668</link>
		<comments>http://www.toniwestbrook.com/archives/668#comments</comments>
		<pubDate>Mon, 14 May 2012 02:49:04 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[Blackberry]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/?p=668</guid>
		<description><![CDATA[I was hoping to release the first iteration of the BerryCraft client tonight, and though I got a lot done this weekend, there are still a couple errors that are preventing it from going primetime. Most importantly, I fleshed out 99% of the Minecraft protocol IO functions, so it can send and retrieve all 68]]></description>
			<content:encoded><![CDATA[<p>I was hoping to release the first iteration of the BerryCraft client tonight, and though I got a lot done this weekend, there are still a couple errors that are preventing it from going primetime.</p>
<p>Most importantly, I fleshed out 99% of the Minecraft protocol IO functions, so it can send and retrieve all 68 or so packet types as <a href="http://mc.kev009.com/Protocol">documented</a>.  Obviously it only actually implements the basic connection/chat/time functionality (as opposed to drawing anything), but as far as communicating with the server, it understands everything (just  a couple errros still popping up from things not working right).  This is almost a necessity, as the server could potentially send any packet type over, and if the client doesn&#8217;t receive it properly, it will crash &#8211; so it has to be ready for anything in the protocol specification.  Internally, it can tell when mobs are spawned/move/look, when painting/items spawn, player abilities/movements, sound effects happen, etc etc.</p>
<p>Also &#8211; the client stays up for as long as desired (I ran it for 30-40 minutes at one point) &#8211; so it should be stable once the fixes are done.</p>
<p>Hopefully it won&#8217;t take more more than a couple nights to fix the bugs &#8211; expect another post when it&#8217;s good to go!</p>
<img src="http://feeds.feedburner.com/~r/ToniWestbrookDotCom/~4/jEcfhbGL-tc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/668/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.toniwestbrook.com/archives/668</feedburner:origLink></item>
		<item>
		<title>Authenticated Minecraft Logins Working for BerryCraft</title>
		<link>http://feedproxy.google.com/~r/ToniWestbrookDotCom/~3/Oer0gQTX2fw/666</link>
		<comments>http://www.toniwestbrook.com/archives/666#comments</comments>
		<pubDate>Sat, 12 May 2012 07:37:16 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[Blackberry]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/?p=666</guid>
		<description><![CDATA[A quick update &#8211; a lot of people had shown interest in BerryCraft &#8211; the Blackberry Minecraft admin/chat client I&#8217;d been working on.  It was a bit of a hack before and didn&#8217;t work with servers that required Minecraft.net authentication, so I wanted to fix it up before starting to release it out.   Tonight I]]></description>
			<content:encoded><![CDATA[<p>A quick update &#8211; a lot of people had shown interest in <a href="http://www.toniwestbrook.com/archives/457">BerryCraft &#8211; the Blackberry Minecraft admin/chat client</a> I&#8217;d been working on.  It was a bit of a hack before and didn&#8217;t work with servers that required Minecraft.net authentication, so I wanted to fix it up before starting to release it out.   Tonight I successfully got the authenticated logins working.  I want to clean it up a bit more, and then stat releasing it in iterations.  The first will be mainly just a chat client, since that&#8217;s pretty much implemented.  Then we&#8217;ll see about inventory management and some other goodies if things work out well.</p>
<img src="http://feeds.feedburner.com/~r/ToniWestbrookDotCom/~4/Oer0gQTX2fw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/666/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.toniwestbrook.com/archives/666</feedburner:origLink></item>
		<item>
		<title>Quick Shoutout – ArtificialBrains.com</title>
		<link>http://feedproxy.google.com/~r/ToniWestbrookDotCom/~3/SPUMzc5E6YM/662</link>
		<comments>http://www.toniwestbrook.com/archives/662#comments</comments>
		<pubDate>Thu, 10 May 2012 03:04:27 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[SynthNet]]></category>
		<category><![CDATA[Website News]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/?p=662</guid>
		<description><![CDATA[James Pearn at artificialbrains.com was nice enough to include SynthNet in his list of resources related to artificial intelligence.  Check out his site if you get a moment, it serves as a well laid-out directory of many neural network and other artificial intelligence projects going on around the world, as well as job listings.  Very]]></description>
			<content:encoded><![CDATA[<p>James Pearn at <a href="http://www.artificialbrains.com">artificialbrains.com</a> was nice enough to include SynthNet in his list of resources related to artificial intelligence.  Check out his site if you get a moment, it serves as a well laid-out directory of many neural network and other artificial intelligence projects going on around the world, as well as job listings.  Very cool site &#8211; thanks James!</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/ToniWestbrookDotCom/~4/SPUMzc5E6YM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/662/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.toniwestbrook.com/archives/662</feedburner:origLink></item>
		<item>
		<title>Hardware Monitoring: Syncing Drupal with Zenoss</title>
		<link>http://feedproxy.google.com/~r/ToniWestbrookDotCom/~3/mb4koF6GKtI/638</link>
		<comments>http://www.toniwestbrook.com/archives/638#comments</comments>
		<pubDate>Tue, 08 May 2012 18:23:33 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[Network Administration]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/?p=638</guid>
		<description><![CDATA[Overview One of the more daunting tasks of managing a larger network is keeping track of all your devices &#8211; both physically, and from a network monitoring perspective.  When I arrived on the job 3 years ago, the first major task I laid down for myself was implementing both an asset management system, as well]]></description>
			<content:encoded><![CDATA[<p><strong>Overview</strong></p>
<p><strong></strong>One of the more daunting tasks of managing a larger network is keeping track of all your devices &#8211; both physically, and from a network monitoring perspective.  When I arrived on the job 3 years ago, the first major task I laid down for myself was implementing both an asset management system, as well as a network monitoring system, to ensure we always knew what we had, and if it was functioning properly.</p>
<p>I decided almost immediately that <a href="http://www.drupal.org">Drupal</a> was the right candidate for the job of asset management.  There are a number of commercial IT/helpdesk systems out there which work great, but they are usually fairly expensive with recurring licensing costs, and my history with them has always been shaky.  Plus, I find myself not always using all the functionality I paid for.  I knew with my Drupal experience, I could get something comparable up in almost no time &#8211; this is not a discredit to IT packages, but moreso the power of the Drupal framework.</p>
<p><strong>Network Monitoring &#8211; Cue Zenoss</strong></p>
<p>Now that I had the hardware DB taken care of, I needed a NMS for monitoring.  Originally I was planning on Nagios, but a contractor who works for us (now friend) had introduced me to <a href="http://www.zenoss.org">Zenoss</a>, another open source alternative.  Zenoss is awesome &#8211; is absolutely has its quirks, and is not the most intuitive system to learn, but once things are up and running it&#8217;s great &#8211; and tremendously powerful.  So the choice was made.</p>
<p>Now &#8211; I had both pieces, but I absolutely hate entering data twice, and the interoperability guy in me loves integrating systems.  So I decided to write a script that would sync our Drupal database with Zenoss.  Drupal would serve as our master system, and any hardware we entered into it would automatically port over to Zenoss.  Any changes or deletions we made (IP address, location, name, etc) would sync over as well.</p>
<p>The below script performs this synchronization.  Some warnings up front &#8211; I&#8217;m not a Python guy by any means, I specifically learned it for this script, so I apologize for any slopping coding or obvious Python-y mistakes.  I&#8217;ve tried to thoroughly comment it to document how to use it and how it works.  Hopefully it can help some others out as well!</p>
<div style="font-size: 10px;">
<pre class="brush: python">
# Description: Sync devices to be monitored from Drupal to Zenoss
#
# Setup Work: Create a (or use an existing) content type that houses your hardware items to be monitored.
# They should have CCK fields for the IP address of the device, the name, and the type of
# device it is. The device type will determine the Zenoss class the script adds it to, and hence
# the kind of monitoring it will receive (e.g. Linux server, switch, ping only, etc)
#
# Additionally, in Zenoss, create a custom property field that will house the nid of the Drupal
# node. This serves as the foreign key and will be used to link the item in Drupal to its entry in Zenoss
#
# Usage: This script should be run from zendmd, and may be run once or periodically. We run it every 20 minutes from
# a cron job.
# It will create new entries in Zenoss for items not yet imported, delete ones that no longer exist in
# Drupal (it will only delete ones that were originally imported from Drupal), and will update ones that have
# been updated (type, IP, location, etc).
#
# Note: Excuse all the extra commits - we experienced some issues with data not being saved, and I threw some extra in
# there - they&#039;re almost definitely not necessaryimport MySQLdb

# Take a taxonomy term from Drupal identifying the type of monitoring to be done,
# and convert it to the appropriate Zenoss class path. Update these to whatever terms
# and Zenoss class paths that make sense for your environment. We setup ones for
# Linux and Windows servers, switches, waps, UPSes, PDUes, etc, as can be seen.
def getClassPath(passType):

if passType.lower() == &quot;windows&quot;:
return &quot;/Server/Windows&quot;
elif passType.lower() == &quot;linux&quot;:
return &quot;/Server/Linux&quot;
elif passType.lower() == &quot;switch&quot;:
return &quot;/Network/Switch&quot;
elif passType.lower() == &quot;mwap&quot;:
return &quot;/Network/WAP/Managed&quot;
elif passType.lower() == &quot;uwap&quot;:
return &quot;/Network/WAP/Unmanaged&quot;
elif passType.lower() == &quot;ups&quot;:
return &quot;/Power/UPS&quot;
elif passType.lower() == &quot;pdu&quot;:
return &quot;/Power/PDU&quot;
elif passType.lower() == &quot;camera&quot;:
return &quot;/Camera&quot;
elif passType.lower() == &quot;cphone&quot;:
return &quot;/Network/Telephone/Crash&quot;
elif passType.lower() == &quot;sphone&quot;:
return &quot;/Network/Telephone/Standard&quot;
elif passType.lower() == &quot;printer&quot;:
return &quot;/Printer&quot;
elif passType.lower() == &quot;converter&quot;:
return &quot;/Network/Converter&quot;
elif passType.lower() == &quot;ping&quot;:
return &quot;/Ping&quot;
return &quot;/Ping&quot;

# Connect to Drupal&#039;s MySQL DB (Replace these values with the appropriate ones for your system)
imsConn = MySQLdb.connect(DRUPAL_MYSQL_SERVER, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DB)
imsCursor = imsConn.cursor()

# Execute the query to grab all your items to be monitored. In our case, we have a node type called &quot;hardware&quot; that had CCK fields identifying the IP address,
# the type of hardware (a taxonomy term that dictated the Zenoss class of the item - see getClassPath above), a physical location, etc.
# You&#039;ll want to change the specific table/field names, but the inner join will probably stay, as you&#039;ll want to grab both the node and CCK fields that belong to it.
imsCursor.execute(&quot;&quot;&quot;
SELECT node.nid, content_type_hardware.field_hardware_dns_value, content_type_hardware.field_hardware_location_value, content_type_hardware.field_hardware_ip_value, content_type_hardware.field_hardware_monitor_type_value, content_type_hardware.field_hardware_switchname_value, content_type_hardware.field_hardware_switchport_value
FROM node
INNER JOIN content_type_hardware ON node.nid = content_type_hardware.nid
&quot;&quot;&quot;)

# Loop through all returned records - Check for additions, changes, and removals
while (1):
#tempRow is our current hardware item record
tempRow = imsCursor.fetchone()
if tempRow == None:
# No more entries, break out of loop
break
else:
# Search Zenoss records for the nid of the hardware item. A custom field will need to be created in Zenoss to serve
# as this foreign key. In our case, we used MHTIMSID - but you can use anything you&#039;d like - just be sure to create the field in Zenoss.
found = False
for d in dmd.Devices.getSubDevices():
if d.cMHTIMSID != &quot;&quot;:
if int(d.cMHTIMSID) == tempRow[0]:
found = True
break

if found == False:
# Hardware item not found, add it if it&#039;s monitored
if tempRow[4] != None:
dmd.DeviceLoader.loadDevice((&quot;%s.yourdomain.com&quot; % tempRow[1]).lower(), getClassPath(tempRow[4]),
&quot;&quot;, &quot;&quot;, # tag=&quot;&quot;, serialNumber=&quot;&quot;,
&quot;&quot;, &quot;&quot;, &quot;&quot;, # zSnmpCommunity=&quot;&quot;, zSnmpPort=161, zSnmpVer=None,
&quot;&quot;, 1000, &quot;%s (%s - %s)&quot; % (tempRow[2], tempRow[5], tempRow[6]), # rackSlot=0, productionState=1000, comments=&quot;&quot;,
&quot;&quot;, &quot;&quot;, # hwManufacturer=&quot;&quot;, hwProductName=&quot;&quot; (neither or both),
&quot;&quot;, &quot;&quot;, # osManufacturer=&quot;&quot;, osProductName=&quot;&quot; (neither or both).
&quot;&quot;, &quot;&quot;, &quot;&quot;, #locationPath=&quot;&quot;,groupPaths=[],systemPaths=[],
&quot;localhost&quot;, # performanceMonitor=&quot;localhost&#039;,
&quot;none&quot;)
tempDevice = find((&quot;%s.yourdomain.com&quot; % tempRow[1]).lower())
tempDevice.setManageIp(tempRow[3])
commit()
# Save nid to Zenoss record (to serve as foreign key) for syncing
tempDevice._setProperty(&quot;cMHTIMSID&quot;,&quot;MHTIMS ID&quot;,&quot;string&quot;)
tempDevice.cMHTIMSID = tempRow[0];
commit()
else:
# Hardware item found - delete, update, or do nothing
if tempRow[4] == None:
# Delete if not set to monitor
dmd.Devices.removeDevices(d.id)
else:
# Update DNS and IP to current values
if d.getDeviceName() != (&quot;%s.yourdomain.com&quot; % tempRow[1]).lower():
d.renameDevice((&quot;%s.yourdomain.com&quot; % tempRow[1]).lower())
if d.getManageIp() != tempRow[3]:
d.setManageIp(tempRow[3])
commit()

# Change class if not set to &quot;Manual&quot; (We setup a taxonomy term called &quot;Manual&quot; that would turn off automatic Zenoss class selection during syncing
# and allow us to manually specificy the class of the device.
if tempRow[4] != &quot;Manual&quot;:
d.changeDeviceClass(getClassPath(tempRow[4]))
commit()

# Update comments (location change)
d.comments = &quot;%s (%s - %s)&quot; % (tempRow[2], tempRow[5], tempRow[6])
commit()

# Save any missed changes
commit()

# Close connection to database
imsCursor.close()
imsConn.close()
</pre>
</div>
<img src="http://feeds.feedburner.com/~r/ToniWestbrookDotCom/~4/mb4koF6GKtI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/638/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.toniwestbrook.com/archives/638</feedburner:origLink></item>
		<item>
		<title>Watch SynthNet in Action!</title>
		<link>http://feedproxy.google.com/~r/ToniWestbrookDotCom/~3/VELCxP365SY/633</link>
		<comments>http://www.toniwestbrook.com/archives/633#comments</comments>
		<pubDate>Mon, 07 May 2012 17:45:35 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[SynthNet]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/?p=633</guid>
		<description><![CDATA[In case you haven&#8217;t seen yet, the videos demonstrating SynthNet in action have been posted to YouTube!  In the first clip, I demonstrate growing a brain from virtual DNA, hooking into my Lego robotic buddy Bit, and then conditioning Bit to associate hearing a tone with getting his touch sensor pressed.  The demonstration is a]]></description>
			<content:encoded><![CDATA[<p>In case you haven&#8217;t seen yet, the videos demonstrating SynthNet in action have been posted to YouTube!  In the first clip, I demonstrate growing a brain from virtual DNA, hooking into my Lego robotic buddy Bit, and then conditioning Bit to associate hearing a tone with getting his touch sensor pressed.  The demonstration is a recreation of classic fear conditioning experiments.</p>
<p><iframe src="http://www.youtube.com/embed/mqANiiT2mLA" frameborder="0" width="560" height="315"></iframe></p>
<p>In the second clip, I give an explanation of how SynthNet functions, how the demonstration above was setup, and the future of the project.</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/1qnnoq6j6N0" frameborder="0" allowfullscreen></iframe></p>
<p>Thanks for checking them out!</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/ToniWestbrookDotCom/~4/VELCxP365SY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/633/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.toniwestbrook.com/archives/633</feedburner:origLink></item>
		<item>
		<title>Site Makeover</title>
		<link>http://feedproxy.google.com/~r/ToniWestbrookDotCom/~3/rZ7emZ8GPFo/630</link>
		<comments>http://www.toniwestbrook.com/archives/630#comments</comments>
		<pubDate>Mon, 07 May 2012 17:40:14 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[Website News]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/?p=630</guid>
		<description><![CDATA[After finishing up phase 1 of SynthNet, I came to the conclusion that I really missed updating the blog.  When I get involved in a project, I tend to get wrapped up in it (more accurately &#8211; completely and ridiculously obsessed where it takes over my life) and other things drop off the radar.  However,]]></description>
			<content:encoded><![CDATA[<p>After finishing up phase 1 of SynthNet, I came to the conclusion that I really missed updating the blog.  When I get involved in a project, I tend to get wrapped up in it (more accurately &#8211; completely and ridiculously obsessed where it takes over my life) and other things drop off the radar.  However, I&#8217;ve decided I want to make a real effort to not get AS wrapped up in projects, and remember to give the blog some love.</p>
<p><strong>New and Improved!</strong></p>
<p><strong></strong>As I went to write my first article after recording the SynthNet video, I also noticed the blog was looking a little tired.  They&#8217;d also made a number of improvements in WordPress since when I first installed everything, so I decided to take the leap, get a shiny new template, and put some new life into it.  I think it&#8217;s definitely an improvement &#8211; hope you enjoy it!</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/ToniWestbrookDotCom/~4/rZ7emZ8GPFo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/630/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.toniwestbrook.com/archives/630</feedburner:origLink></item>
		<item>
		<title>fMRI of Bit “Hearing” My Voice</title>
		<link>http://feedproxy.google.com/~r/ToniWestbrookDotCom/~3/bT5lU7brq6Y/546</link>
		<comments>http://www.toniwestbrook.com/archives/546#comments</comments>
		<pubDate>Fri, 27 Apr 2012 21:02:38 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[SynthNet]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/?p=546</guid>
		<description><![CDATA[This is what an fMRI of Bit&#8217;s (current) brain looks like while listening to my voice (red is active neural structures &#8211; it indicates a higher membrane potential). This will probably be the last picture before the video of the associative learning demonstration &#8211; I think I&#8217;ll be ready to record by Sunday night (hopefully).]]></description>
			<content:encoded><![CDATA[<p>This is what an fMRI of Bit&#8217;s (current) brain looks like while listening to my voice (red is active neural structures &#8211; it indicates a higher membrane potential). This will probably be the last picture before the video of the associative learning demonstration &#8211; I think I&#8217;ll be ready to record by Sunday night (hopefully).  Exciting stuff!</p>
<p><a href="http://www.toniwestbrook.com/wp-content/uploads/2012/04/412887_10150678586076548_569976547_9668695_1291570878_o.jpg"><img src="http://www.toniwestbrook.com/wp-content/uploads/2012/04/412887_10150678586076548_569976547_9668695_1291570878_o.jpg" alt="" title="Bit Hears My Voice" style="width:100%" /></a></p>
<img src="http://feeds.feedburner.com/~r/ToniWestbrookDotCom/~4/bT5lU7brq6Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/546/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.toniwestbrook.com/archives/546</feedburner:origLink></item>
		<item>
		<title>Auditory Processing – Virtual Cochlea</title>
		<link>http://feedproxy.google.com/~r/ToniWestbrookDotCom/~3/w-WwcsODRyc/543</link>
		<comments>http://www.toniwestbrook.com/archives/543#comments</comments>
		<pubDate>Wed, 25 Apr 2012 21:00:33 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[SynthNet]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/?p=543</guid>
		<description><![CDATA[Before Bit can hear like humans do, I needed to make a &#8220;virtual cochlea&#8221; &#8211; a piece of software that would take auditory input from a microphone, convert it into frequencies (like the hairs in your cochlea do), and send the data into Bit&#8217;s peripheral nervous system. I got most of it done tonight &#8211;]]></description>
			<content:encoded><![CDATA[<p>Before Bit can hear like humans do, I needed to make a &#8220;virtual cochlea&#8221; &#8211; a piece of software that would take auditory input from a microphone, convert it into frequencies (like the hairs in your cochlea do), and send the data into Bit&#8217;s peripheral nervous system. I got most of it done tonight &#8211; I made a real-time graphing system as well. On the left, you can see the waveform data coming off the microphone (top is a straight tone coming off my KORG, and bottom is me talking), and to the right is the data run through a Fast Fourier Transform to convert the time-based waveform data into a frequency based distribution. This can then be sent directly into a neural nucleus in Bit&#8217;s brain via the TCP nervous system.</p>
<p><a href="http://www.toniwestbrook.com/wp-content/uploads/2012/04/471108_10150674004241548_569976547_9658359_1182952684_o.jpg"><img src="http://www.toniwestbrook.com/wp-content/uploads/2012/04/471108_10150674004241548_569976547_9658359_1182952684_o.jpg" alt="" title="Auditory Processing" style="width:100%" /></a></p>
<img src="http://feeds.feedburner.com/~r/ToniWestbrookDotCom/~4/w-WwcsODRyc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/543/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.toniwestbrook.com/archives/543</feedburner:origLink></item>
		<item>
		<title>Increasing Network Complexity – Oscillating Neurons</title>
		<link>http://feedproxy.google.com/~r/ToniWestbrookDotCom/~3/yIuhf6Izya4/540</link>
		<comments>http://www.toniwestbrook.com/archives/540#comments</comments>
		<pubDate>Sat, 21 Apr 2012 20:57:38 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[SynthNet]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/?p=540</guid>
		<description><![CDATA[As you can see from the membrane potential graph (lower left hand corner), I injected some current into this genetically grown virtual neuron (over a TCP connection), and it started keeping a steady pulse on its own &#8211; still going after 15 minutes!]]></description>
			<content:encoded><![CDATA[<p>As you can see from the membrane potential graph (lower left hand corner), I injected some current into this genetically grown virtual neuron (over a TCP connection), and it started keeping a steady pulse on its own &#8211; still going after 15 minutes!</p>
<p><a href="http://www.toniwestbrook.com/wp-content/uploads/2012/04/471325_10150663201086548_569976547_9622906_1727480741_o.jpg"><img src="http://www.toniwestbrook.com/wp-content/uploads/2012/04/471325_10150663201086548_569976547_9622906_1727480741_o.jpg" alt="" title="Oscillating Neurons" style="width:100%" /></a></p>
<img src="http://feeds.feedburner.com/~r/ToniWestbrookDotCom/~4/yIuhf6Izya4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/540/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.toniwestbrook.com/archives/540</feedburner:origLink></item>
		<item>
		<title>Start of Multithreading Capabilities</title>
		<link>http://feedproxy.google.com/~r/ToniWestbrookDotCom/~3/uW30P86VW_8/537</link>
		<comments>http://www.toniwestbrook.com/archives/537#comments</comments>
		<pubDate>Thu, 29 Mar 2012 20:52:12 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[SynthNet]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/?p=537</guid>
		<description><![CDATA[Since the genetic engine is pretty much finished up now, I&#8217;ve started on some loose ends of things I want to implement in SynthNet. This is a stress test for the (start of the) new multithreading capabilities &#8211; using a simple strand of DNA to direct a base stem cell to continually go through mitosis]]></description>
			<content:encoded><![CDATA[<p>Since the genetic engine is pretty much finished up now, I&#8217;ve started on some loose ends of things I want to implement in SynthNet.  This is a stress test for the (start of the) new multithreading capabilities &#8211; using a simple strand of DNA to direct a base stem cell to continually go through mitosis and differentiate. These daughter cells then follow a genetically programmed spiraling migration path. You can see patterns start to emerge amongst the thousands of cells.  </p>
<p><a href="http://www.toniwestbrook.com/wp-content/uploads/2012/04/471645_10150618268926548_569976547_9488375_305006252_o.jpg"><img src="http://www.toniwestbrook.com/wp-content/uploads/2012/04/471645_10150618268926548_569976547_9488375_305006252_o.jpg" alt="" title="Multithreading Stress Test" style="width:100%" /></a></p>
<p>Some parts of the processing engine are crashing out right now, so it&#8217;s apparent I&#8217;m having some kind of issues arising from sharing information between threads &#8211; I&#8217;m going to shelve the functionality for now and then complete it up after the end of phase 1 &#8211; there may be quite a bit involved.</p>
<img src="http://feeds.feedburner.com/~r/ToniWestbrookDotCom/~4/uW30P86VW_8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/537/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.toniwestbrook.com/archives/537</feedburner:origLink></item>
	</channel>
</rss>

