<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<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/"
	>

<channel>
	<title>Bang ! Engineering</title>
	<link>http://bangengineering.com/blog</link>
	<description></description>
	<pubDate>Fri, 26 Jun 2009 20:18:37 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>O-Ring Plug</title>
		<link>http://bangengineering.com/blog/?p=24</link>
		<comments>http://bangengineering.com/blog/?p=24#comments</comments>
		<pubDate>Fri, 26 Jun 2009 20:06:59 +0000</pubDate>
		<dc:creator>earl</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[exploratorium]]></category>

		<category><![CDATA[Museum list]]></category>

		<category><![CDATA[o-ring plug]]></category>

		<guid isPermaLink="false">http://bangengineering.com/blog/?p=24</guid>
		<description><![CDATA[Use an material for the o-ring which is compatible for both water and the type of oil you&#8217;re using.
one design I just ran across this morning on one of our exhibits (designed to hold a vacuum, but that&#8217;s just the inverse of what you want to do  ):
A cap with a clearance fit into [...]]]></description>
			<content:encoded><![CDATA[<p>Use an material for the o-ring which is compatible for both water and the type of oil you&#8217;re using.</p>
<p>one design I just ran across this morning on one of our exhibits (designed to hold a vacuum, but that&#8217;s just the inverse of what you want to do <img src='http://bangengineering.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ):</p>
<p>A cap with a clearance fit into your tube, a plug with a gland for an o-ring, and use three screws to squeeze them together and expand the o-ring against the tube.<br />
<a href="http://bangengineering.com/blog/wp-content/uploads/2009/06/o-ring_end_plug.pdf" title="O-Ring Plug">o-ring_end_plug.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bangengineering.com/blog/?feed=rss2&amp;p=24</wfw:commentRss>
		</item>
		<item>
		<title>The 10 Commandments of Wireless Communications</title>
		<link>http://bangengineering.com/blog/?p=21</link>
		<comments>http://bangengineering.com/blog/?p=21#comments</comments>
		<pubDate>Wed, 18 Feb 2009 20:36:27 +0000</pubDate>
		<dc:creator>earl</dc:creator>
		
		<category><![CDATA[communications]]></category>

		<category><![CDATA[electromagnetic spectrum]]></category>

		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://bangengineering.com/blog/?p=21</guid>
		<description><![CDATA[This is a repost from Mike Fahrion of BB-Electronics which has a great technical library.  I&#8217;m putting it up here because it&#8217;s so good, I&#8217;d hate for it to disappear off the web.
Follow these rules, and you&#8217;ll have happy Wireless.  Ignore them, and experience BER!
10 Commandments of Wireless Communications
]]></description>
			<content:encoded><![CDATA[<p>This is a <a href="http://www.bb-elec.com/tech_articles/WP33_10commandments_wireless_comm.asp?s=20090084" title="repost" target="_blank">repost </a>from <font size="2">Mike Fahrion of <a href="http://www.bb-elec.com/" title="BB-Electronics">BB-Electronics</a> which has a great technical library.  I&#8217;m putting it up here because it&#8217;s so good, I&#8217;d hate for it to disappear off the web.</font></p>
<p>Follow these rules, and you&#8217;ll have happy Wireless.  Ignore them, and experience BER!</p>
<p><a href="http://bangengineering.com/blog/wp-content/uploads/2009/02/10_commandments_wireless1.pdf" title="10 Commandments of Wireless Communications">10 Commandments of Wireless Communications</a></p>
<p> <a href="http://bangengineering.com/blog/?p=21#more-21" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bangengineering.com/blog/?feed=rss2&amp;p=21</wfw:commentRss>
		</item>
		<item>
		<title>Some sample code to ignore!</title>
		<link>http://bangengineering.com/blog/?p=20</link>
		<comments>http://bangengineering.com/blog/?p=20#comments</comments>
		<pubDate>Sat, 14 Feb 2009 02:17:33 +0000</pubDate>
		<dc:creator>earl</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://bangengineering.com/blog/?p=20</guid>
		<description><![CDATA[/*Pier Piling Pivot Arduino control program
by Earl Stirling for the explOratorium
installed on Fort Mason Piers
*/
/*
version 0.813
07/jan/2009
*/
/*This is a state machine.
This program counts on tight(ish) loops with no stalling.
I recommend using anything that stalls, the functions delay() or delayMicroseconds(),
they&#8217;re unnecessary, and you might miss a timeout
*/
/*
*/
//These are the states that the machine can be in.
//Entries in [...]]]></description>
			<content:encoded><![CDATA[<p>/*Pier Piling Pivot Arduino control program<br />
by Earl Stirling for the explOratorium<br />
installed on Fort Mason Piers<br />
*/<br />
/*<br />
version 0.813<br />
07/jan/2009<br />
*/</p>
<p>/*This is a state machine.<br />
This program counts on tight(ish) loops with no stalling.<br />
I recommend using anything that stalls, the functions delay() or delayMicroseconds(),<br />
they&#8217;re unnecessary, and you might miss a timeout<br />
*/</p>
<p>/*</p>
<p>*/</p>
<p>//These are the states that the machine can be in.<br />
//Entries in this enum should match the state_table pointer.<br />
enum<br />
{<br />
WTG_FOR_BUTTONPRESS = 0,<br />
ASCENDING,<br />
UP,<br />
DESCENDING,<br />
DOWN,<br />
ERROR,<br />
curr_state_LIMIT<br />
}<br />
curr_state, prev_state = WTG_FOR_BUTTONPRESS;</p>
<p>//This table contains a pointer to the function to call in each state.<br />
//These must match the enums for curr_state<br />
void (*state_table[curr_state_LIMIT])() =<br />
{<br />
WtgForButtonpress,<br />
Ascending,<br />
Up,<br />
Descending,<br />
Down,<br />
Error<br />
};</p>
<p>//these constant defines are the correct place to change timeout values, pin values, etc.<br />
#define KEEPUPTIME   120           //should be 120, change before deployment // timeout in seconds to keep the piling up<br />
#define HOLDDOWNTIME 4         // time in seconds to keep the piling down before next ascent<br />
#define MOVEMENTTIME 60        // time in seconds for maximum time to move the piling</p>
<p>#define BUTTONPINNUMBER     2  //the pin that the button is attached to<br />
#define UPPERLIMITPINNUMBER 3  //the pin that the upper limit switch is attached to<br />
#define LOWERLIMITPINNUMBER 4  //the pin that the lower limit switch is attached to<br />
#define INSECTORPINNUMBER   5  //the pin for detecting that the mechanism is in normal operating range<br />
#define RAISEMOTORPINNUMBER 6 //the pin for the relay to raise the piling<br />
#define LOWERMOTORPINNUMBER 7 //the pin for the relay to lower the piling<br />
//#define MOTORBRAKEPINNUMBER 8 //the pin for the relay to release the motor brake</p>
<p>#define ledPin  13  //the pin attached to the LED</p>
<p>long StartMovementTime;</p>
<p>int error_code, spinner = 0, thistime = 0;</p>
<p>//Limit switch values<br />
enum {<br />
MADE,<br />
NOTMADE}<br />
UpperLimitSwitch,<br />
LowerLimitSwitch,<br />
InSectorSensor;</p>
<p>//UI button value<br />
enum {<br />
PRESSED, NOTPRESSED}<br />
Button;</p>
<p>//MOTOR CONTACTS!<br />
//which motor contacts you&#8217;re calling<br />
typedef enum {<br />
RAISE, LOWER}<br />
Motor_Contacts;</p>
<p>#define RAISE RAISEMOTORPINNUMBER<br />
#define LOWER LOWERMOTORPINNUMBER<br />
//#define brake MOTORBRAKEPINNUMBER</p>
<p>//motor actions you&#8217;re calling for<br />
#define OFF  0<br />
#define ON   1</p>
<p>//TIMERS!<br />
//Timer values (should make this an array of type timertypes)<br />
//int UpCountdownTimerValue, HOLDDOWNTIMERValue, ReversalCounterValue;<br />
//TimerState UpCountdownTimer, HoldDownTimer;</p>
<p>//Actions you can call for the Timers<br />
typedef enum {<br />
START, RESET, EXPIRE, CHECK}<br />
Timer_Actions;<br />
#define START 0<br />
#define RESET 1<br />
#define EXPIRE 2<br />
#define CHECK 3</p>
<p>//enumeration of the types of timers<br />
typedef enum {<br />
HOLDDOWN, KEEPUP, MOVEMENT, TIMERS_LIMIT}<br />
Timers_new;<br />
#define HOLDDOWN 0<br />
#define KEEPUP 1<br />
#define MOVEMENT 2</p>
<p>//states in which the timers can exist<br />
typedef enum {<br />
EXPIRED, CURRENT}<br />
TimerState;<br />
#define EXPIRED 0<br />
#define CURRENT 1</p>
<p>void setup()<br />
{<br />
Serial.begin(9600); //setup serial output port<br />
delay(3000);<br />
//Send a string of CTRL-R&#8217;s to reset the LCD to 9600 baud<br />
// for (int i=5000; i != 0 ; i&#8211;) {Serial.print(0&#215;12,BYTE); };</p>
<p>// Initialize counters, flash LED&#8217;s, turn off outputs</p>
<p>//Initialize LCD display<br />
//first set to 20 characters wide<br />
Serial.print(0&#215;7C,BYTE);<br />
Serial.print(0&#215;03,BYTE);<br />
delay(128);</p>
<p>//then set to 4 lines long<br />
Serial.print(0&#215;7C,BYTE);<br />
Serial.print(0&#215;05,BYTE);<br />
delay(128);</p>
<p>//clear display<br />
Serial.print(0xFE,BYTE);<br />
Serial.print(0&#215;01,BYTE);<br />
delay(128);</p>
<p>//turn display on<br />
Serial.print(0xFE,BYTE);<br />
Serial.print(0&#215;0C,BYTE);<br />
delay(128);</p>
<p>/*<br />
//Set up splash screen for LCD<br />
lcd_cursor(1,1);<br />
Serial.print(&#8221;Pier Piling Pivot&#8221;);<br />
Serial.print(&#8221;version 0.81&#8243;);<br />
//delay(128);</p>
<p>//now save the current screen as the splash to the LCD&#8217;s NVRAM<br />
Serial.print(0&#215;7C,BYTE);<br />
Serial.print(0&#215;10,BYTE);<br />
//delay(128);<br />
*/<br />
lcd_cursor(1,1);<br />
Serial.print(&#8221;Starting setup     &#8220;);</p>
<p>pinMode(BUTTONPINNUMBER, INPUT);<br />
pinMode(UPPERLIMITPINNUMBER, INPUT);<br />
pinMode(LOWERLIMITPINNUMBER, INPUT);<br />
pinMode(INSECTORPINNUMBER, INPUT);</p>
<p>pinMode(RAISEMOTORPINNUMBER, OUTPUT);<br />
pinMode(LOWERMOTORPINNUMBER, OUTPUT);<br />
//pinMode(MOTORBRAKEPINNUMBER, OUTPUT);</p>
<p>pinMode(ledPin, OUTPUT);</p>
<p>MotorContact (LOWER, OFF);<br />
MotorContact (RAISE, OFF);</p>
<p>lcd_cursor(1,1);<br />
Serial.print(&#8221;Done with setup    &#8220;);<br />
};</p>
<p>// * * Begin State Functions * *</p>
<p>void Down()<br />
{<br />
/* Piling is down, wait for the hold down timeout, then<br />
transition to waiting for someone to press the button.*/<br />
poll();</p>
<p>for (int i=(HOLDDOWNTIME - 1); i != 0 ; i&#8211;)<br />
{<br />
//delay(128);<br />
//move to 0,0<br />
lcd_cursor(2,1);</p>
<p>Serial.print(&#8221;Hold Down: &#8220;);<br />
Serial.print(i);<br />
Serial.print(&#8221;      &#8220;);<br />
}<br />
curr_state = WTG_FOR_BUTTONPRESS;<br />
}</p>
<p>void Error()<br />
{<br />
//digitalWrite (brake,LOW);</p>
<p>lcd_cursor(2,1);<br />
Serial.print(&#8221;Error &#8220;);Serial.print(error_code);Serial.print(&#8221;             &#8220;);<br />
switch (error_code)<br />
{<br />
case 2 :   lcd_cursor(4,1);Serial.print(&#8221;Movement Sector     &#8220;); break;<br />
case 1 : lcd_cursor(4,1);Serial.print(&#8221;Movement Timeout    &#8220;); break;<br />
};</p>
<p>MotorContact (LOWER, OFF);<br />
MotorContact (RAISE, OFF);<br />
for (int i=error_code; i != 0 ; i&#8211;)<br />
{<br />
digitalWrite(ledPin, HIGH);   // sets the LED on<br />
delay(1000);                  // waits for a second<br />
digitalWrite(ledPin, LOW);    // sets the LED off<br />
delay(1000);                  // waits for a second<br />
};<br />
}</p>
<p>void WtgForButtonpress()<br />
{<br />
/* Hang around waiting for some curious kid to press the button. */<br />
//Serial.print(&#8221;WtgForButtonpress&#8221;);<br />
poll();</p>
<p>if ((InSectorSensor == MADE) and (Button == PRESSED))<br />
{<br />
MotorContact (RAISE,ON);<br />
StartMovementTime = millis();<br />
//lcd_cursor(2,1);Serial.print(&#8221;Start Movement Time (sec)&#8221;);Serial.print(StartMovementTime/1000);<br />
curr_state = ASCENDING;<br />
}<br />
}</p>
<p>void Ascending()<br />
{<br />
// When the piling reaches the top, stop raising it.<br />
//Serial.print(&#8221;Ascending&#8221;);<br />
poll();</p>
<p>MovementErrorCheck();<br />
if ((curr_state != ERROR) and (UpperLimitSwitch == MADE))<br />
{<br />
MotorContact(RAISE,OFF);<br />
curr_state = UP;<br />
}<br />
}</p>
<p>void Descending()<br />
{<br />
// When the piling reaches the bottom, stop lowering it.<br />
//Serial.print(&#8221;Descending&#8221;);<br />
poll();</p>
<p>MovementErrorCheck();<br />
if ((curr_state != ERROR) and (LowerLimitSwitch == MADE))<br />
{<br />
MotorContact(LOWER,OFF);<br />
curr_state = DOWN;<br />
}<br />
}</p>
<p>void Up()<br />
{<br />
/* If the timer expires or the button is pressed, lower<br />
the piling (check that lower switch isn&#8217;t hit) .*/<br />
//Serial.print(&#8221;Up&#8221;);<br />
poll();</p>
<p>for (int i=(KEEPUPTIME - 1); i != 0 ; i&#8211;)<br />
{<br />
//delay(128);<br />
lcd_cursor(2,1);Serial.print(&#8221;Keep Up: &#8220;);<br />
Serial.print(i);<br />
}<br />
if (InSectorSensor == MADE)<br />
{<br />
MotorContact (LOWER,ON);<br />
StartMovementTime = millis();<br />
//lcd_cursor(2,1);Serial.print(&#8221;Start Movement Time (sec)&#8221;);Serial.print(StartMovementTime/1000);<br />
curr_state = DESCENDING;<br />
}<br />
}</p>
<p>// * * End of State Functions * *</p>
<p>void poll()<br />
{<br />
thistime = (millis()/1000) % 4;<br />
if (spinner != thistime)<br />
{<br />
lcd_cursor(1,20);<br />
spinner = thistime;<br />
//Serial.println(spinner);<br />
switch (spinner)<br />
{<br />
case 0:<br />
//print<br />
Serial.print(&#8221;&gt;&#8221;);<br />
break;<br />
case 1:<br />
//print an Up arrow<br />
Serial.print(&#8221;v&#8221;);<br />
break;<br />
case 2:<br />
Serial.print(&#8221;&lt;&#8221;);<br />
break;<br />
case 3:<br />
Serial.print(&#8221;^&#8221;);<br />
break;<br />
}<br />
};</p>
<p>if (prev_state != curr_state)<br />
{<br />
lcd_cursor(1,1);<br />
Serial.print(&#8221;                   &#8220;);<br />
lcd_cursor(1,1);<br />
Serial.print(curr_state);<br />
prev_state = curr_state;<br />
}</p>
<p>if (digitalRead(BUTTONPINNUMBER) == HIGH)<br />
{<br />
if (Button != PRESSED) {lcd_cursor(3,1);Serial.print(&#8221;Button is PRESSED   &#8220;);}<br />
Button = PRESSED;<br />
}<br />
else<br />
{<br />
if (Button != NOTPRESSED) {lcd_cursor(3,1);Serial.print(&#8221;Button is NOT-PRESSED   &#8220;);}<br />
Button = NOTPRESSED;<br />
//Serial.print(&#8221;Button is NOTPRESSED&#8221;);<br />
}</p>
<p>if (digitalRead(UPPERLIMITPINNUMBER) == HIGH)<br />
{<br />
if (UpperLimitSwitch != MADE) {lcd_cursor(3,1);Serial.print(&#8221;Upper Limit MADE    &#8220;);}<br />
UpperLimitSwitch = MADE;<br />
}<br />
else {<br />
if (UpperLimitSwitch != NOTMADE) {lcd_cursor(3,1);Serial.print(&#8221;Upper Limit NOT-MADE    &#8220;);}<br />
UpperLimitSwitch = NOTMADE;<br />
//Serial.print(&#8221;UpperLimitSwitch is NOTMADE&#8221;);<br />
}</p>
<p>if (digitalRead(LOWERLIMITPINNUMBER) == HIGH)<br />
{<br />
if (LowerLimitSwitch != MADE) {lcd_cursor(3,1);Serial.print(&#8221;Lower Limit MADE    &#8220;);}<br />
LowerLimitSwitch = MADE;<br />
}<br />
else {<br />
if (LowerLimitSwitch != NOTMADE) {lcd_cursor(3,1);Serial.print(&#8221;Lower Limit NOT-MADE    &#8220;);}<br />
LowerLimitSwitch = NOTMADE;<br />
//Serial.print(&#8221;LowerLimitSwitch is NOTMADE&#8221;);<br />
}</p>
<p>//Serial.print(&#8221;insectorpinnumber is &#8220;);Serial.print(digitalRead(INSECTORPINNUMBER));<br />
if (digitalRead(INSECTORPINNUMBER) == HIGH)<br />
{<br />
if (InSectorSensor != MADE) {lcd_cursor(3,1);Serial.print(&#8221;In Sector MADE      &#8220;);}<br />
InSectorSensor = MADE;<br />
}<br />
else<br />
{<br />
if (InSectorSensor != NOTMADE) {lcd_cursor(3,1);Serial.print(&#8221;In Sector NOTMADE   &#8220;);}<br />
InSectorSensor = NOTMADE;<br />
}<br />
}</p>
<p>//** Begin Service Functions &amp; Procedures**</p>
<p>//function call to twiddle the contacts<br />
void MotorContact (int contact, int action)<br />
{<br />
//Serial.print(&#8221;Setting Motor Contact &#8220;); Serial.print(contact);<br />
if (action == ON)<br />
{//digitalWrite (brake,HIGH);<br />
digitalWrite (contact,HIGH);<br />
//Serial.print(&#8221; HIGH&#8221;);<br />
}<br />
else<br />
{//digitalWrite (brake,LOW);<br />
digitalWrite (contact,LOW);<br />
//Serial.print(&#8221; LOW&#8221;);<br />
}<br />
};</p>
<p>void MovementErrorCheck()<br />
/*function call to check for errors while moving<br />
will change state to ERROR if there is a movement error,<br />
and throw a code to serial output */<br />
{<br />
//Serial.print((millis()-StartMovementTime)/1000);<br />
if (((millis()-StartMovementTime)/1000) &gt; MOVEMENTTIME)<br />
{<br />
curr_state = ERROR;<br />
error_code = 1;<br />
lcd_cursor(2,1);Serial.print(&#8221;Err Movement Timeout&#8221;);<br />
};<br />
if (InSectorSensor == NOTMADE)<br />
{<br />
curr_state = ERROR;<br />
error_code = 2;<br />
lcd_cursor(2,1);Serial.print(&#8221;Err Out of Range    &#8220;);<br />
}<br />
};</p>
<p>void lcd_cursor(int row, int column)<br />
{<br />
int cursor_position, offset;</p>
<p>switch (row)<br />
{<br />
case 1:<br />
offset = 0;<br />
break;<br />
case 2:<br />
offset = 64;<br />
break;<br />
case 3:<br />
offset = 20;<br />
break;<br />
case 4:<br />
offset = 84;<br />
break;<br />
}</p>
<p>cursor_position=offset+column+127;</p>
<p>Serial.print(254,BYTE);<br />
Serial.print(cursor_position,BYTE);<br />
delay(128);<br />
};</p>
<p>// * * Main Loop (&#8221;Booooorrrrring!!!!&#8221;) * *<br />
void loop()<br />
{<br />
//lcd_cursor(1,1);Serial.print(&#8221;Starting loop       &#8220;);<br />
/* The heart of the state machine is this one loop.  The function<br />
corresponding to the current state is called once per iteration. */<br />
while (1)<br />
{<br />
state_table[curr_state]();<br />
}<br />
};</p>
]]></content:encoded>
			<wfw:commentRss>http://bangengineering.com/blog/?feed=rss2&amp;p=20</wfw:commentRss>
		</item>
		<item>
		<title>Giant Vertical Turning Lathe</title>
		<link>http://bangengineering.com/blog/?p=19</link>
		<comments>http://bangengineering.com/blog/?p=19#comments</comments>
		<pubDate>Tue, 03 Jun 2008 18:53:12 +0000</pubDate>
		<dc:creator>earl</dc:creator>
		
		<category><![CDATA[projects]]></category>

		<category><![CDATA[BIG!]]></category>

		<category><![CDATA[machines]]></category>

		<category><![CDATA[machining]]></category>

		<category><![CDATA[repair]]></category>

		<guid isPermaLink="false">http://bangengineering.com/blog/?p=19</guid>
		<description><![CDATA[
I&#8217;ve been working on a giant VTL with Peter Luka.  It&#8217;s a pretty impressive machine.  Made by Schiess in 1953 Germany, it weighs 45,000 pounds, has a 2 meter wide chuck and an 80 inch throw.
Since it&#8217;s a vertical lathe, everything is sideways.  The chuck is actually a turntable, and the tail [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://bangengineering.com/VTL/images/p5304959_sharpened.jpg" alt="Schiess VTl" height="500" /></p>
<p>I&#8217;ve been working on a giant VTL with Peter Luka.  It&#8217;s a pretty impressive machine.  Made by Schiess in 1953 Germany, it weighs 45,000 pounds, has a 2 meter wide chuck and an 80 inch throw.</p>
<p>Since it&#8217;s a vertical lathe, everything is sideways.  The chuck is actually a turntable, and the tail stock is above.  The design is pretty impressive, typically German.</p>
<p>To be fixed:  replace contactors, get the crossbeam clamp working again (it has it&#8217;s own motor and gearbox) rewind a bunch of the motors (they&#8217;re old, and a bit stressed running at 480V/60 Hz instead of the designed 380V/50 Hz).  They might get new variable frequency drives so they can not only run at their intended voltage, frequency, but they you&#8217;d be able to control the motor speeds.</p>
<p>See it all <a href="http://bangengineering.com/VTL/" title="Giant Lathe!" target="_blank">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bangengineering.com/blog/?feed=rss2&amp;p=19</wfw:commentRss>
		</item>
		<item>
		<title>The Electromagnetic Spectrum</title>
		<link>http://bangengineering.com/blog/?p=15</link>
		<comments>http://bangengineering.com/blog/?p=15#comments</comments>
		<pubDate>Wed, 06 Jun 2007 18:54:29 +0000</pubDate>
		<dc:creator>earl</dc:creator>
		
		<category><![CDATA[communications]]></category>

		<category><![CDATA[electromagnetic spectrum]]></category>

		<category><![CDATA[xkcd]]></category>

		<guid isPermaLink="false">http://bangengineering.com/blog/?p=15</guid>
		<description><![CDATA[a handy reference:

]]></description>
			<content:encoded><![CDATA[<p>a handy reference:</p>
<p><img src="http://imgs.xkcd.com/comics/electromagnetic_spectrum.png" title="Sometimes I try to picture what everything would look like if the whole spectrum were compressed into the visible spectrum.  Also sometimes I try to picture your sister naked." alt="Sometimes I try to picture what everything would look like if the whole spectrum were compressed into the visible spectrum.  Also sometimes I try to picture your sister naked." border="10" width="500" /></p>
]]></content:encoded>
			<wfw:commentRss>http://bangengineering.com/blog/?feed=rss2&amp;p=15</wfw:commentRss>
		</item>
		<item>
		<title>Information and Entropy from MIT</title>
		<link>http://bangengineering.com/blog/?p=14</link>
		<comments>http://bangengineering.com/blog/?p=14#comments</comments>
		<pubDate>Mon, 04 Jun 2007 20:37:45 +0000</pubDate>
		<dc:creator>earl</dc:creator>
		
		<category><![CDATA[Information Theory]]></category>

		<category><![CDATA[MIT]]></category>

		<category><![CDATA[MIT's open courseware]]></category>

		<category><![CDATA[Stuff I should study]]></category>

		<category><![CDATA[Unified Theory of Information]]></category>

		<category><![CDATA[communications]]></category>

		<category><![CDATA[entropy]]></category>

		<category><![CDATA[temperature]]></category>

		<category><![CDATA[thermodynamics]]></category>

		<guid isPermaLink="false">http://bangengineering.com/blog/?p=14</guid>
		<description><![CDATA[
I&#8217;ve been studying a lot of information and coding theory lately for work and personal research, especially computational thermodynamics, and its relationship to other sciences.  I&#8217;ve been reading the coding and information theory and thermodynamics of computing sections of Feynman Lectures on Computation, a great intro.  Another deep resource I recently found is [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ocw.mit.edu/NR/rdonlyres/Global/F/FC0655C0-7048-4E66-BB7C-19E6544004F3/0/chp_telegraph_1.jpg" title="The Morse telegraph. (Image courtesy of the U.S. National Library of Medicine.)" alt="The Morse telegraph. (Image courtesy of the U.S. National Library of Medicine.)" border="10" height="263" vspace="500" width="420" /></p>
<p>I&#8217;ve been studying a lot of information and coding theory lately for <a href="http://venturiwireless.com/" title="Venturi Wireless" target="_blank">work</a> and personal research, especially computational thermodynamics, and its relationship to other sciences.  I&#8217;ve been reading the coding and information theory and thermodynamics of computing sections of <a href="http://www-users.cs.york.ac.uk/susan/bib/nf/f/feynman.htm#8718" title="Feynman Lectures on Computation" target="_blank">Feynman Lectures on Computation</a>, a great intro.  Another deep resource I recently found is an <a href="http://www.mit.edu/" title="Massachusetts Institute of Technology" target="_blank">MIT</a> <a href="http://ocw.mit.edu/OcwWeb/index.htm" title="MIT's Open Courseware">Open Courseware</a> class <a href="http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-050JInformation-and-EntropySpring2003/CourseHome/index.htm" title="6.050J / 2.110J Information and Entropy, Spring 2003">Information and Entropy</a>.  It&#8217;s a unique coverage of (what shouldn&#8217;t be such an) esoteric topic:  <a href="http://bangengineering.com/blog/?p=14#more-14" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bangengineering.com/blog/?feed=rss2&amp;p=14</wfw:commentRss>
		</item>
		<item>
		<title>Redndant Engineeringing take 2 (and 2.50)</title>
		<link>http://bangengineering.com/blog/?p=12</link>
		<comments>http://bangengineering.com/blog/?p=12#comments</comments>
		<pubDate>Wed, 30 May 2007 00:10:42 +0000</pubDate>
		<dc:creator>earl</dc:creator>
		
		<category><![CDATA[engineers]]></category>

		<category><![CDATA[optimists]]></category>

		<category><![CDATA[pessimists]]></category>

		<category><![CDATA[redundancy]]></category>

		<guid isPermaLink="false">http://bangengineering.com/blog/?p=12</guid>
		<description><![CDATA[To the optimist, the glass is half full. To the pessimist, the glass is half empty. To the engineer, the glass is twice as large as necessary.
Take 2.50: To the engineer, the capacity of the container has been over designed by a factor of approximately 1.905 assuming a 5% volume for the sloshing safety factor.
From [...]]]></description>
			<content:encoded><![CDATA[<p>To the optimist, the glass is half full. To the pessimist, the glass is half empty. To the engineer, the glass is twice as large as necessary.</p>
<p>Take 2.50: To the engineer, the capacity of the container has been over designed by a factor of approximately 1.905 assuming a 5% volume for the sloshing safety factor.</p>
<p>From <a href="http://www.varmintal.com/aengr.htm">Varmint Al&#8217;s Engineering Pages</a></p>
<p>Scott Adams chimed in on this in <a href="http://bangengineering.com/blog/?p=10">Take 1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bangengineering.com/blog/?feed=rss2&amp;p=12</wfw:commentRss>
		</item>
		<item>
		<title>TCMP:  Trans-Consciousness Messaging Protocol</title>
		<link>http://bangengineering.com/blog/?p=11</link>
		<comments>http://bangengineering.com/blog/?p=11#comments</comments>
		<pubDate>Tue, 29 May 2007 23:39:13 +0000</pubDate>
		<dc:creator>earl</dc:creator>
		
		<category><![CDATA[TCMP]]></category>

		<category><![CDATA[comics]]></category>

		<category><![CDATA[protocols]]></category>

		<category><![CDATA[xkcd]]></category>

		<guid isPermaLink="false">http://bangengineering.com/blog/?p=11</guid>
		<description><![CDATA[
http://xkcd.com/c269.html
]]></description>
			<content:encoded><![CDATA[<p><img src="http://imgs.xkcd.com/comics/tcmp.png" alt="A big obstacle in experimenting with the mind's dream-simulation-engine is holding onto the details as you wake up.  With TCMP you can bring back any information you want." width="500" /></p>
<p>http://xkcd.com/c269.html</p>
]]></content:encoded>
			<wfw:commentRss>http://bangengineering.com/blog/?feed=rss2&amp;p=11</wfw:commentRss>
		</item>
		<item>
		<title>&#8220;It&#8217;s a good thing I put half my water in a redundant glass.&#8221;</title>
		<link>http://bangengineering.com/blog/?p=10</link>
		<comments>http://bangengineering.com/blog/?p=10#comments</comments>
		<pubDate>Tue, 29 May 2007 23:33:57 +0000</pubDate>
		<dc:creator>earl</dc:creator>
		
		<category><![CDATA[Dilbert]]></category>

		<category><![CDATA[Information Theory]]></category>

		<category><![CDATA[comics]]></category>

		<category><![CDATA[engineers]]></category>

		<category><![CDATA[optimists]]></category>

		<category><![CDATA[pessimists]]></category>

		<category><![CDATA[redundancy]]></category>

		<guid isPermaLink="false">http://bangengineering.com/blog/?p=10</guid>
		<description><![CDATA[Engineers are neither optimists nor pessimists:

]]></description>
			<content:encoded><![CDATA[<p>Engineers are neither optimists nor pessimists:<br />
<a href="http://bangengineering.com/blog/wp-content/uploads/2007/05/dilbert_optimist-pessimist-engineer.gif" title="dilbert_optimist-pessimist-engineer.gif"><img src="http://bangengineering.com/blog/wp-content/uploads/2007/05/dilbert_optimist-pessimist-engineer.gif" alt="dilbert_optimist-pessimist-engineer.gif" width="500" /></a></p>
<p> <a href="http://bangengineering.com/blog/?p=10#more-10" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bangengineering.com/blog/?feed=rss2&amp;p=10</wfw:commentRss>
		</item>
		<item>
		<title>Information Theory, Inference, and Learning Algorithms</title>
		<link>http://bangengineering.com/blog/?p=4</link>
		<comments>http://bangengineering.com/blog/?p=4#comments</comments>
		<pubDate>Mon, 28 May 2007 05:00:17 +0000</pubDate>
		<dc:creator>earl</dc:creator>
		
		<category><![CDATA[David MacKay]]></category>

		<category><![CDATA[Information Theory]]></category>

		<category><![CDATA[Stuff I should study]]></category>

		<guid isPermaLink="false">http://bangengineering.com/blog/?p=4</guid>
		<description><![CDATA[http://www.inference.phy.cam.ac.uk/mackay/book.djvu
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.inference.phy.cam.ac.uk/mackay/book.djvu">http://www.inference.phy.cam.ac.uk/mackay/book.djvu</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bangengineering.com/blog/?feed=rss2&amp;p=4</wfw:commentRss>
		</item>
	</channel>
</rss>
