tag:blogger.com,1999:blog-306050662009-06-29T23:11:24.230-04:00I am ShadowLordSecurity, Projects, and Technology with tips and tricks of the trade from ShadowLord himself.Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-30605066.post-51510389598338193472009-06-29T22:32:00.003-04:002009-06-29T23:09:32.699-04:00Wireshark 1.2.0 - New Version<a href="http://www.wireshark.org/">Wireshark</a> is a tool that performs packet and protocol analysis on a network. Packets are the virtual transport mechanism that moves are data from sender to receiver. Each packet has a header and payload - the header contains information about where the packet came from and where it's going, as well as the protocols being used. The payload has our actual digitized data - parts of website, text, a section of photo, or a clip of audio from an MP3 or a phone call. If you don't get all of the packets then a phone call may sound choppy or it may take a while to download a complete file. Wireshark allows you to take a look at the packets you are sending and receiving and learn a lot more about what it happening and what's breaking down. Wireshark is not for the lighthearted, as the tool requires knowledge of protocols and a deep understanding of OSI, IP, and TCP/UDP at the very least. But, with time, Wireshark becomes invaluable to the troubleshooting process. I have relied on the tool for my work supporting Voice-over-IP (VoIP) and system and application connectivity. The only side-effect to Wireshark is that you will soon realize why it's not a good idea to surf the web in a public spot (without a VPN or encryption).<div><br /><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="hhttp://www.wireshark.org/"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 186px; height: 64px;" src="http://www.iamshadowlord.com/uploaded_images/wsbadge64-744077.png" border="0" alt="" /></a></div><div>The <a href="http://www.wireshark.org/docs/relnotes/wireshark-1.2.0.html">new version</a> of Wireshark includes more protocols that it will decode, supports 64-bit Windows, and has GeoIP integrated support. Also, Wireshark works perfectly with my <a href="http://www.iamshadowlord.com/2007/05/passive-packet-capturing.html">passive network cable</a>. Visit <a href="http://www.wireshark.org/">www.wireshark.org </a>to download the latest version and learn more about it.</div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-5151038959833819347?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com0tag:blogger.com,1999:blog-30605066.post-37709155830731463192009-06-14T21:10:00.014-04:002009-06-15T01:40:49.735-04:00Internet-enabled Message Center<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.iamshadowlord.com/uploaded_images/Message-Center-720680.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 235px;" src="http://www.iamshadowlord.com/uploaded_images/Message-Center-720659.jpg" border="0" alt="" /></a><br /><div><b>What are you up to now?</b></div>I took the leap and bought an Arduino from <a href="http://www.liquidware.com/">LiquidWare</a>. An arduino is an open-source microcontroller that has a processor, some digital I/O pins, and analog inputs. You can create little standalone programs that monitor inputs, control LEDs, and pretty much anything that you dream up. My favorite projects are ones that involve the Internet. A microcontroller is rather simple by itself, but what if it could use the web to get answers, send email, maybe update my Twitter status? That means there is a unlimited number of projects ahead - Microcontrollers collaboarating in cyberspace. The missing link for the web part is the <a href="http://www.iobridge.com/">ioBridge IO-204</a>. I know you are no stranger to the the IO-204, but for those of you who have not heard. The IO-204 sits on my network and relays data from its channels to ioBridge.com servers and back into my network. It allows for remote control and monitoring without network configuration and programming. One of the expansion boards is a two-way serial board that accepts serial strings and connects them to APIs of web services that ioBridge interfaces to and sends back responses. For instance, I can send the commands, "[[[calc|9*9]]]" and this returns 81. OK, maybe not impressive on the surface, but that result came from Google Calculator. Anything <a href="http://www.google.com/help/calculator.html">Google Calculator</a> can solve, your microcontroller has access to those results. For more examples, visit the <a href="http://www.iobridge.net/wiki/api/serial-web-services-api">Serial Web Services API</a> on the wiki.<div><br /></div><div><b>Message Center Project</b></div><div>I wanted to combine these two worlds with a sample project - maybe it will inspire you to come up with something better, spark some ideas that you have. I have my arduino measuring my outside temperature here in Pittsburgh, which is an analog input scaled to Fahrenheit. At any moment I can press a button and get the temperature on the LCD screen - no Internet required. Since I have been planning a work trip to Atlanta, I also wanted to compare my temperature with hot-lanta's. So, my project solves that. Using the "weather command", I am able to get the weather anywhere in the world by zip code or city name.</div><div><br /></div><div></div><div>I added a few more things to the message center. With another button I can get the stock quote of Google. My strike price was $405, so I have been watching it close. If it gets below $405, I get an automatic email from my message center. The stock quote comes from the Yahoo Financials API.</div><div><br /></div><div><div style="text-align: left;">I have one more button that emails me a secret message when it's pressed. I put this in here for when my mom comes into my room from when I am on the road. It's aptly label, do not press. Next time, I will hook it to a light sensor in the basement to catch her when she turns on my lights. I am sure you all have the same issues with your mom.</div><div style="text-align: left;"><br /></div><div style="text-align: center;"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/LNcspcEdak8&amp;hl=en&amp;fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/LNcspcEdak8&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br /></div><div style="text-align: center;"><b><br /></b></div><div style="text-align: left;"><b>Source Code</b></div><div>The arduino requires some c-like programming and I wanted to include the sketch for you to steal and use for your projects. You will see how I send the serial commands from the arduino to the IO-204 using the UART serial connection (pins 0/1) and recieve and parse the incoming results. I use a SoftwareSerial port for the LCD results. The push buttons are software debounced and use pull-up resistors for solid digital connections. The LED's linked to each button use a 330 ohm resistor to protect them. I was aided by the Arduino Inputs tutorial on <a href="http://www.ladyada.net/learn/arduino/lesson5.html">Ladyada.net</a>, <a href="http://www.arduino.cc/en/Tutorial/Debounce">Debounce Tutorial</a>, and the <a href="http://www.iobridge.net/wiki">iobridge Wiki</a> / <a href="http://www.iobridge.net/forum">Forum</a>. Please let me know if you have any questions, maybe I can help. I have learned a lot about handling strings on the arduino.</div><div><pre><br />#include <<span style="color:#CC6600;">SoftwareSerial</span>.h><br /><br /><span style="color:#777755;">//</span><br /><span style="color:#777755;">// Message Center using Arduino and the iobridge IO-204</span><br /><span style="color:#777755;">//</span><br /><span style="color:#777755;">// An open-souce Shadowlord Project</span><br /><span style="color:#777755;">// www.IamShadowlord.com</span><br /><br /><span style="color:#777755;">// SoftwareSerial Pins</span><br />#define rxPin 2<br />#define txPin 3<br /><br /><span style="color:#777755;">// Setup Software Serial</span><br /><span style="color:#CC6600;">SoftwareSerial</span> softSerial = <span style="color:#CC6600;">SoftwareSerial</span>(rxPin, txPin);<br /><br /><span style="color:#777755;">// Global Setup</span><br /><span style="color:#996600;">int</span> middleLED = 11;<br /><span style="color:#996600;">int</span> rightLED = 10;<br /><span style="color:#996600;">int</span> leftLED = 12;<br /><br /><span style="color:#996600;">int</span> leftButton = 5;<br /><span style="color:#996600;">int</span> leftButtonCurrent = <span style="color:#CC0000;">LOW</span>;<br /><span style="color:#996600;">int</span> leftButtonReading;<br /><span style="color:#996600;">int</span> leftButtonPrevious = <span style="color:#CC0000;">HIGH</span>;<br /><span style="color:#996600;">long</span> leftButtonTime = 0;<br /><span style="color:#996600;">long</span> leftButtonDebounce = 200;<br /><br /><span style="color:#996600;">int</span> middleButton = 4;<br /><span style="color:#996600;">int</span> middleButtonCurrent = <span style="color:#CC0000;">LOW</span>;<br /><span style="color:#996600;">int</span> middleButtonReading;<br /><span style="color:#996600;">int</span> middleButtonPrevious = <span style="color:#CC0000;">HIGH</span>;<br /><span style="color:#996600;">long</span> middleButtonTime = 0;<br /><span style="color:#996600;">long</span> middleButtonDebounce = 200;<br /><br /><span style="color:#996600;">int</span> rightButton = 6;<br /><span style="color:#996600;">int</span> rightButtonCurrent = <span style="color:#CC0000;">LOW</span>;<br /><span style="color:#996600;">int</span> rightButtonReading;<br /><span style="color:#996600;">int</span> rightButtonPrevious = <span style="color:#CC0000;">HIGH</span>;<br /><span style="color:#996600;">long</span> rightButtonTime = 0;<br /><span style="color:#996600;">long</span> rightButtonDebounce = 200;<br /><br /><span style="color:#996600;">int</span> tempPin = 5;<br /><span style="color:#996600;">int</span> tempAnalog = 0;<br /><span style="color:#996600;">int</span> tempF = 0;<br /><br /><span style="color:#996600;">char</span>* currentRequest = <span style="color:#CC0000;">""</span>;<br /><br /><span style="color:#777755;">// Start up program</span><br /><span style="color:#CC6600;">void</span> <span style="color:#993300;"><b>setup</b></span>() {<br /><br /><span style="color:#996600;">pinMode</span>(rxPin, <span style="color:#CC0000;">INPUT</span>);<br /><span style="color:#996600;">pinMode</span>(txPin, <span style="color:#CC0000;">OUTPUT</span>);<br /><br /><span style="color:#996600;">pinMode</span>(leftLED, <span style="color:#CC0000;">OUTPUT</span>);<br /><span style="color:#996600;">pinMode</span>(middleLED, <span style="color:#CC0000;">OUTPUT</span>);<br /><span style="color:#996600;">pinMode</span>(rightLED, <span style="color:#CC0000;">OUTPUT</span>);<br /><br /><span style="color:#996600;">pinMode</span>(leftButton, <span style="color:#CC0000;">INPUT</span>);<br /><span style="color:#996600;">pinMode</span>(middleButton, <span style="color:#CC0000;">INPUT</span>);<br /><span style="color:#996600;">pinMode</span>(rightButton, <span style="color:#CC0000;">INPUT</span>);<br /><br />softSerial.<span style="color:#996600;">begin</span>(9600);<br /><span style="color:#996600;">delay</span>(100);<br /><br /><span style="color:#996600;">Serial</span>.<span style="color:#996600;">begin</span>(9600);<br /><span style="color:#996600;">delay</span>(100);<br /><br /><span style="color:#996600;">Serial</span>.<span style="color:#996600;">flush</span>();<br /><span style="color:#996600;">delay</span>(100);<br /><br /><span style="color:#777755;">// Setup LCD</span><br />clearLCD();<br />setBacklightBrightness(9);<br /><span style="color:#996600;">delay</span>(1000);<br /><br /><span style="color:#777755;">// Test LEDs</span><br /><span style="color:#996600;">digitalWrite</span>(leftLED, <span style="color:#CC0000;">HIGH</span>);<br /><span style="color:#996600;">digitalWrite</span>(middleLED, <span style="color:#CC0000;">HIGH</span>);<br /><span style="color:#996600;">digitalWrite</span>(rightLED, <span style="color:#CC0000;">HIGH</span>);<br /><br /><span style="color:#996600;">delay</span>(1500);<br /><br /><span style="color:#996600;">digitalWrite</span>(leftLED, <span style="color:#CC0000;">LOW</span>);<br /><span style="color:#996600;">digitalWrite</span>(middleLED, <span style="color:#CC0000;">LOW</span>);<br /><span style="color:#996600;">digitalWrite</span>(rightLED, <span style="color:#CC0000;">LOW</span>);<br /><br />}<br /><br /><span style="color:#777755;">// Start main program loop</span><br /><span style="color:#CC6600;">void</span> <span style="color:#993300;"><b>loop</b></span>(){<br /><br /><span style="color:#777755;">// Get Analog Input and scale as temperature for ioBridge temperature sensor on arduino</span><br />tempAnalog = <span style="color:#996600;">analogRead</span>(tempPin);<br />tempF = tempAnalog / 6.875;<br /><br /><span style="color:#777755;">// Monitor left button status and debounce</span><br />leftButtonReading = <span style="color:#996600;">digitalRead</span>(leftButton);<br /><br /><span style="color:#CC6600;">if</span> (leftButtonReading == <span style="color:#CC0000;">HIGH</span> &amp;&amp; leftButtonPrevious == <span style="color:#CC0000;">LOW</span> &amp;&amp; <span style="color:#996600;">millis</span>() - leftButtonTime > leftButtonDebounce) {<br /><span style="color:#CC6600;">if</span> (leftButtonCurrent == <span style="color:#CC0000;">HIGH</span>)<br />leftButtonCurrent = <span style="color:#CC0000;">LOW</span>;<br /><span style="color:#CC6600;">else</span> {<br /><span style="color:#996600;">digitalWrite</span>(leftLED, <span style="color:#CC0000;">HIGH</span>);<br />clearLCD();<br /><span style="color:#996600;">delay</span>(100);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"Outside: "</span>);<br /><span style="color:#996600;">delay</span>(100);<br />softSerial.<span style="color:#996600;">print</span>(tempF);<br /><span style="color:#996600;">delay</span>(100);<br />moveCursor(<span style="color:#CC0000;">"02"</span>, <span style="color:#CC0000;">"01"</span>);<br /><span style="color:#996600;">delay</span>(100);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"Atlanta: "</span>);<br />leftButtonCurrent = <span style="color:#CC0000;">LOW</span>;<br /><span style="color:#777755;">//Request temperature in Atlanta via ioBridge </span><br /><span style="color:#996600;">Serial</span>.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"[[[weather|Atlanta]]]"</span>);<br /><span style="color:#996600;">digitalWrite</span>(leftLED, <span style="color:#CC0000;">LOW</span>);<br />}<br />leftButtonTime = <span style="color:#996600;">millis</span>();<br />}<br /><br />leftButtonPrevious = leftButtonReading;<br /><br /><span style="color:#777755;">// Monitor middle button status and debounce</span><br />middleButtonReading = <span style="color:#996600;">digitalRead</span>(middleButton);<br /><br /><span style="color:#CC6600;">if</span> (middleButtonReading == <span style="color:#CC0000;">HIGH</span> &amp;&amp; middleButtonPrevious == <span style="color:#CC0000;">LOW</span> &amp;&amp; <span style="color:#996600;">millis</span>() - middleButtonTime > middleButtonDebounce) {<br /><span style="color:#CC6600;">if</span> (middleButtonCurrent == <span style="color:#CC0000;">HIGH</span>)<br />middleButtonCurrent = <span style="color:#CC0000;">LOW</span>;<br /><span style="color:#CC6600;">else</span> {<br />currentRequest = <span style="color:#CC0000;">"Google"</span>;<br /><span style="color:#996600;">digitalWrite</span>(middleLED, <span style="color:#CC0000;">HIGH</span>);<br />clearLCD();<br /><span style="color:#996600;">delay</span>(100);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"GOOG: $"</span>);<br /><span style="color:#996600;">delay</span>(100);<br />middleButtonCurrent = <span style="color:#CC0000;">LOW</span>;<br /><span style="color:#777755;">//Request Google Stock Price via ioBridge </span><br /><span style="color:#996600;">Serial</span>.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"[[[stock|GOOG]]]"</span>); <br /><span style="color:#996600;">digitalWrite</span>(middleLED, <span style="color:#CC0000;">LOW</span>);<br />}<br />middleButtonTime = <span style="color:#996600;">millis</span>();<br />}<br /><br />middleButtonPrevious = middleButtonReading;<br /><br /><span style="color:#777755;">// Monitor right button status and debounce</span><br />rightButtonReading = <span style="color:#996600;">digitalRead</span>(rightButton);<br /><br /><span style="color:#CC6600;">if</span> (rightButtonReading == <span style="color:#CC0000;">HIGH</span> &amp;&amp; rightButtonPrevious == <span style="color:#CC0000;">LOW</span> &amp;&amp; <span style="color:#996600;">millis</span>() - rightButtonTime > rightButtonDebounce) {<br /><span style="color:#CC6600;">if</span> (rightButtonCurrent == <span style="color:#CC0000;">HIGH</span>)<br />rightButtonCurrent = <span style="color:#CC0000;">LOW</span>;<br /><span style="color:#CC6600;">else</span> {<br /><span style="color:#996600;">digitalWrite</span>(rightLED, <span style="color:#CC0000;">HIGH</span>);<br />clearLCD();<br /><span style="color:#996600;">delay</span>(100);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"Alert: "</span>);<br /><span style="color:#996600;">delay</span>(100);<br />rightButtonCurrent = <span style="color:#CC0000;">LOW</span>;<br /><span style="color:#777755;">//Send email via ioBridge </span><br /><span style="color:#996600;">Serial</span>.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"[[[email|hans@nothans.com|Alert|Mom, is pressing your buttons]]]"</span>); <br /><span style="color:#996600;">digitalWrite</span>(rightLED, <span style="color:#CC0000;">LOW</span>);<br />}<br />rightButtonTime = <span style="color:#996600;">millis</span>();<br />}<br /><br />rightButtonPrevious = rightButtonReading;<br /><br /><span style="color:#777755;">// Display serial messages</span><br /><span style="color:#CC6600;">if</span>(<span style="color:#996600;">Serial</span>.<span style="color:#996600;">available</span>() > 0){<br /><br /><span style="color:#996600;">delay</span>(100);<br /><br /><span style="color:#996600;">char</span> charIn = 0;<br /><span style="color:#996600;">byte</span> i = 0;<br /><span style="color:#996600;">char</span> stringIn[32] = <span style="color:#CC0000;">""</span>;<br /><br /><span style="color:#CC6600;">while</span>(<span style="color:#996600;">Serial</span>.<span style="color:#996600;">available</span>()) {<br />charIn = <span style="color:#996600;">Serial</span>.<span style="color:#996600;">read</span>();<br />stringIn[i] = charIn;<br />i += 1;<br />}<br /><br /><span style="color:#CC6600;">if</span> (currentRequest == <span style="color:#CC0000;">"Google"</span>) {<br /><br /> softSerial.<span style="color:#996600;">print</span>(stringIn);<br /> <span style="color:#996600;">int</span> stockPrice = atoi(stringIn);<br /> <span style="color:#996600;">delay</span>(100);<br /> moveCursor(<span style="color:#CC0000;">"02"</span>, <span style="color:#CC0000;">"01"</span>);<br /> <span style="color:#996600;">delay</span>(100);<br /> stockPrice = stockPrice - 405;<br /> softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"Change: $"</span>);<br /> <span style="color:#996600;">delay</span>(100);<br /> softSerial.<span style="color:#996600;">print</span>(stockPrice);<br /> currentRequest = <span style="color:#CC0000;">""</span>;<br /><br />}<br /><span style="color:#CC6600;">else</span><br />softSerial.<span style="color:#996600;">print</span>(stringIn);<br />}<br /><br /><span style="color:#777755;">// End program loop </span><br />}<br /><br /><br /><br /><span style="color:#777755;">//</span><br /><span style="color:#777755;">// ioBridge Serial LCD Functions and Parameters (for SoftwareSerial)</span><br /><span style="color:#777755;">//</span><br /><br /><span style="color:#CC6600;">void</span> displayMessage(<span style="color:#996600;">char</span>* message){<br />softSerial.<span style="color:#996600;">print</span>(message);<br />}<br /><br /><span style="color:#CC6600;">void</span> clearLCD(){<br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"Z"</span>);<br />}<br /><br /><span style="color:#CC6600;">void</span> setBacklightBrightness(<span style="color:#996600;">int</span> level){<br /><span style="color:#777755;">// level</span><br /><span style="color:#777755;">// 0=Off -> 9=Brightest</span><br /><br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"B"</span>);<br />softSerial.<span style="color:#996600;">print</span>(level);<br />}<br /><br /><span style="color:#CC6600;">void</span> setBacklightTime(<span style="color:#996600;">int</span> level, <span style="color:#996600;">byte</span> seconds){<br /><span style="color:#777755;">// level</span><br /><span style="color:#777755;">// 0=Off -> 9=Brightest</span><br /><br /><span style="color:#777755;">// seconds</span><br /><span style="color:#777755;">// 01 = 1 seconds => 06 = 60 seconds</span><br /><br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"T"</span>);<br />softSerial.<span style="color:#996600;">print</span>(level);<br />softSerial.<span style="color:#996600;">print</span>(seconds, <span style="color:#CC0000;">BYTE</span>);<br />}<br /><br /><span style="color:#CC6600;">void</span> moveCursorHome(){<br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"H"</span>);<br />}<br /><br /><span style="color:#CC6600;">void</span> turnCursorOn(){<br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"J"</span>);<br />}<br /><br /><span style="color:#CC6600;">void</span> turnCursorOff(){<br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"K"</span>);<br />}<br /><br /><span style="color:#CC6600;">void</span> turnBlinkingCursorOn(){<br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"P"</span>);<br />}<br /><br /><span style="color:#CC6600;">void</span> turnBlinkingCursorOff(){<br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"Q"</span>);<br />}<br /><br /><span style="color:#CC6600;">void</span> scrollMessage(<span style="color:#996600;">int</span> row, <span style="color:#996600;">int</span> <span style="color:#996600;">speed</span>, <span style="color:#996600;">char</span>* message){<br /><span style="color:#777755;">// row</span><br /><span style="color:#777755;">// 1=First Line -> 2=Second Line</span><br /><br /><span style="color:#777755;">// speed</span><br /><span style="color:#777755;">// 0=Slowest -> 9=Fastest</span><br /><br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"S"</span>);<br />softSerial.<span style="color:#996600;">print</span>(row);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#996600;">speed</span>);<br />softSerial.<span style="color:#996600;">print</span>(message);<br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />}<br /><br /><span style="color:#CC6600;">void</span> moveCursor(<span style="color:#996600;">char</span>* row, <span style="color:#996600;">char</span>* column){<br /><span style="color:#777755;">// row</span><br /><span style="color:#777755;">// 01=First Line -> 02=Second Line</span><br /><br /><span style="color:#777755;">// column</span><br /><span style="color:#777755;">// 01=First Position -> 16=Last Position</span><br /><br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"L"</span>);<br />softSerial.<span style="color:#996600;">print</span>(row);<br />softSerial.<span style="color:#996600;">print</span>(column);<br />}<br /><br /><span style="color:#CC6600;">void</span> drawHorizontalGauge(<span style="color:#996600;">int</span> row, <span style="color:#996600;">char</span>* leftLabel, <span style="color:#996600;">char</span>* rightLabel, <span style="color:#996600;">char</span>* length){<br /><span style="color:#777755;">// row</span><br /><span style="color:#777755;">// 1=First Line -> 2=Second Line</span><br /><br /><span style="color:#777755;">// leftLabel and rightLabel</span><br /><span style="color:#777755;">// 2 character labels</span><br /><br /><span style="color:#777755;">// length</span><br /><span style="color:#777755;">// a=Empty -> k=Full (filled in from left to right)</span><br /><br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"G"</span>);<br />softSerial.<span style="color:#996600;">print</span>(row);<br />softSerial.<span style="color:#996600;">print</span>(leftLabel);<br />softSerial.<span style="color:#996600;">print</span>(rightLabel);<br />softSerial.<span style="color:#996600;">print</span>(length);<br />}<br /><br /><span style="color:#CC6600;">void</span> drawVerticalGauge(<span style="color:#996600;">int</span> <span style="color:#996600;">height</span>){<br /><span style="color:#777755;">// height</span><br /><span style="color:#777755;">// 0=Bottom -> 8=Top (filled in from bottom to top)</span><br /><br />softSerial.<span style="color:#996600;">print</span>(0xFE, <span style="color:#CC0000;">BYTE</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#CC0000;">"V"</span>);<br />softSerial.<span style="color:#996600;">print</span>(<span style="color:#996600;">height</span>);<br /><br />}<br /></pre></div><div><span class="Apple-style-span" style="font-weight: bold; ">Bonus Project</span></div><div>It's simple, but I hacked together a power supply for the Arduino, which gets power from USB or a coaxial input from a transformer. I wanted to only run one brick, wall wart, so I hacked a USB cable. There are 4 wires in the USB cable (from <a href="http://pinouts.ru/Slots/USB_pinout.shtml">pinouts.ru</a>): </div><div><br /></div><span class="Apple-style-span" style=" border-collapse: collapse; line-height: 22px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family:Arial;font-size:13px;"><table width="50%" cellspacing="0" cellpadding="3" border="1" style="font-size: 10pt; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; border-collapse: collapse; "><tbody style="font-size: 10pt; "><tr style="font-size: 10pt; "><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">1</td><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">VCC</td><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">Red</td><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">+5 VDC</td></tr><tr style="font-size: 10pt; "><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">2</td><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">D-</td><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">White</td><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">Data -</td></tr><tr style="font-size: 10pt; "><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">3</td><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">D+</td><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">Green</td><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">Data +</td></tr><tr style="font-size: 10pt; "><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">4</td><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">GND</td><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">Black</td><td style="font-size: 10pt; border-top-color: rgb(128, 128, 128); border-right-color: rgb(128, 128, 128); border-bottom-color: rgb(128, 128, 128); border-left-color: rgb(128, 128, 128); padding-top: 5px; padding-bottom: 5px; ">Ground</td></tr></tbody></table></span><div><br /></div><div>The IO-204 has a regulated 5VDC and ground (up to 1A - 4A total draw depending on supply) on each channel, so using a terminal strip, I connected the VCC and GND to a cut in half USB cable.</div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.iamshadowlord.com/uploaded_images/Arduino-USB-Power-Cable-798046.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 347px; height: 400px;" src="http://www.iamshadowlord.com/uploaded_images/Arduino-USB-Power-Cable-798028.jpg" border="0" alt="" /></a><div>It's magic - look ma, only one power source.</div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-3770915583073146319?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com0tag:blogger.com,1999:blog-30605066.post-91522983297275126792009-05-01T12:40:00.006-04:002009-05-01T13:17:07.849-04:00Clearblue Screen of Death<div><div>Everything is going digital. I know, a profound statement, but the consequences of "digital" are a future riddled with software bugs, failures, and EMP induced outages (the EPT EMP to be exact). We rely on technology to get us through our days and we will be faced with crashes when we need technology the most.<br /><br /><div>"Clearblue" has released a digital version of their pregnancy tester. My girlfriend, completely fictional to make a point, and I were discussing the ramifications of a digital pregnancy test. One day the test will be dependent on an Operating System to drive the user interface. It might even have Windows on it.<br /></div><br /><div>In your critical moment, of whether you will be with child or have more time to yourself -- unshackled by a disappointing version of yourself, the pregnancy tester will crash giving you an ambiguous result. </div><br /><div>Take a glimpse of the future. You have been warned.</div><br /><div><a href="http://www.iamshadowlord.com/uploaded_images/clearblue_screen_of_death.jpg"><img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 164px; TEXT-ALIGN: center" alt="" src="http://www.iamshadowlord.com/uploaded_images/clearblue_screen_of_death-739298.jpg" border="0" /></a></div></div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-9152298329727512679?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com0tag:blogger.com,1999:blog-30605066.post-13998487843954727952009-04-12T19:33:00.013-04:002009-04-13T00:33:53.996-04:00Death Tag - Spitball with Tic Tacs<span class="Apple-style-span" style="FONT-WEIGHT: bold">You're It!</span><br /><br /><div></div><div>Death Tag is a full contact game using a McDonald's straw and various projectiles - the most lethal of which is the Tic Tac - 1.5 calories of pain. This is Death Tag's story with a video of my new Death Tag students - my nephews...Pass on the fun, er, the mayhem...You're it!</div><br /><div><img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 226px; TEXT-ALIGN: center" alt="" src="http://www.iamshadowlord.com/uploaded_images/Blog---Death-Tag-758817.jpg" border="0" /><br /></div><div>I invented the game as a kid when I discovered that a Tic Tac and a McDonald's straw had roughly the same diameter. A fresh Tic Tac fits almost perfectly into the straw. This principle makes the combination nearly lethal. Over the years, I have expanded on the design and have tested straws from every fast food chain in the United States and projectiles of all sorts. </div><div><br /><span class="Apple-style-span" style="FONT-WEIGHT: bold">The Straw </span></div><div><span class="Apple-style-span" style="FONT-WEIGHT: bold"><br /></span>The McDonald's straw has one of the largest diameters, with a straw from <span class="Apple-style-span" style="FONT-STYLE: italic">Starbucks</span> a close second, and an <span class="Apple-style-span" style="FONT-STYLE: italic">In and Out Burger</span> straw third (West coast glocking). Always have multiple straws on hand - you never know if you need back up muzzle loaders. Tic Tacs become sticky, so avoid copious spit.</div><br /><div><span class="Apple-style-span" style="FONT-WEIGHT: bold">The Projectile</span></div><br /><div>The Tic Tac is a perfect fit to the McDonald's straw. My independent testing proves that this combination is the most fierce with the highest muzzle velocity. The Tic Tac is the most accurate and longest shooting projectile I have used. It also leaves a white mark on your targets. There are two drawbacks though - stickiness and cost. Saliva + Tic Tac equals jammed barrel on occasion. I have recently switched to un-popped popcorn. This projectile is cheap and somewhat pointed to being your enemy to a swift submission. Popcorn also allows for some advanced techniques like "The Rain Maker".</div><div><br /></div><div></div><div><span class="Apple-style-span" style="FONT-WEIGHT: bold">Techniques</span></div><div></div><div><br /></div><div>Load the projectile, use your tongue to stop up one end of the straw. Build up some pressure and move your tongue. You can gets some serious distance and accurate shots this way. </div><br /><div>"The Machine Gun" or "The Rain Maker" technique requires a cheek full of popcorn. Load up some popcorn and shuffle the kernels into the barrel while blowing. Make it rain destruction on your opponent.<br /></div><div><br /></div><div></div><div></div><div></div><p align="center"><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/eDmGedNWPoc&amp;hl=en&amp;fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/eDmGedNWPoc&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p><span class="Apple-style-span" style="FONT-WEIGHT: bold"><div><br />Origin of the Name </div><div><br /></div><div></div><div></div></span><div><strong></strong></div><div></div><div>Death Tag started picking up steam in the early 2000's. I was on the road a lot and drove solo across the country many times. On a drive from Columbia, SC to Melbourne, FL, my friend Dale and I stopped at a truck stop. The trucker's paradise had everything, a Micky D's and convenient snacks. I bought up a supply of Tic Tacs and grabbed a handful of straws. I explained the premise to Dale and it soon involved us shooting cars out of the window. We assigned point values to certain objects that you hit. For example, the side a truck was 1,000 points, but a minivan is 5,000 points. A car window had the point value of 10,000 points and a road sign was 15,000 (since you could shot out and arc it - we called it the golden arch). The ultimate thing we shot was a Target sign on the side of tractor trailer - 50,000 points. The "freshmint" or white Tic Tacs also leaving a little white mark to be proof positive of a successful hit. We started calling it, "Death Tag" because we were surviving around the road, paying more attention to hitting our targets than driving safely.</div><br /><div><span class="Apple-style-span" style="FONT-WEIGHT: bold">A Word of Caution</span></div><br /><div>It's called Death Tag for a reason. Be careful, you could die, lose an eye, or leave a welt. I know it sounds fun, but I am a trained professional. I recommend discussing the side effects with a doctor and always wear proper eye protection.</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-1399848784395472795?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com1tag:blogger.com,1999:blog-30605066.post-80132188617126754392009-01-05T20:46:00.013-05:002009-01-05T21:53:54.139-05:00Making the Perfect Cup of Coffee<p align="left">The only reason to make the perfect cup of coffee is to enjoy the perfect cup of coffee. My life is filled with moments connected to coffee. Nothing was better than being in New Orleans and having a coffee at Cafe Du Monde. Or blitz chess at Seatle's Best (while they were the best). And performing at a coffee shop on an Open Mic night with bad poets, mediocre musicians, and wannabe comedians.</p><p align="left"><img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 200px; CURSOR: hand; HEIGHT: 133px; TEXT-ALIGN: center" alt="" src="http://www.iamshadowlord.com/uploaded_images/coffee-790871.jpg" border="0" /> </p><p align="left">These sentiments might not mean much to a to a person that doesn't drink coffee (or tea), but I am sure you can find a parallel substance in your life. I am not talking about drinking coffee for the sake of drinking coffee, not the times you need it to wake up, but rather the experience of coffee. When you couple a perfect moment with the perfect cup, you create a truly great experience. </p><blockquote>"It was a pleasant cafe, warm and clean and friendly, and I hung up my old water-proof on the coat rack to dry and put my worn and weathered felt hat on the rack above the bench and ordered a cafe au lait. The waiter brought it and I took out a notebook from the pocket of the coat and a pencil and started to write." - Ernest Hemingway </blockquote>I would rather have a brewed coffee or espresso vs. a latte or cappuccino. Certain large scaled coffee vendors have serialized the coffee drink to the point to where coffee is second to sugar. A Cafe Americano (espresso plus hot water) is about the best value (but I noticed Starbucks raises the price $.35 every quarter). I am not a purist but I am in it for the coffee taste. I am so much not a purist that sometimes I say "Expresso" when I am in the company of those who take it too far. I like to miss use words and see the retractions, most just simply ignore me.<br /><br />What are the ingredients of the perfect cup of coffee? I am going to conclude that the situation is just as significant as the actual cup of coffee. Take away the experience and it probably would taste like it tastes from a truck stop in North Dakota. When I am home I meticulously attempt to make the perfect cup of coffee using apparatuses from all over the world.<br /><br />Here is my approach to the pursuit of the perfect cup:<br /><ul><li>Invite a friend (or better yet have the friend make you coffee)</li><li>Have a notebook handy for those best ideas</li><li>Mute the mobile</li><li>Grind a whole bean roast (French is one of the best coffee tastes)</li><li>Use a fine grind for the <a href="http://www.aerobie.com/Products/aeropress_story.htm">Aeropress</a></li><li>Use a course grind for the French Press</li><li>Use medium for the drip</li><li>Use filtered filtered water and ceramic mugs</li><li>Boil the water and then let it cool off for 2 minutes</li><li>Use a little of the hot water to warm up the carafe and cups</li><li>Brew in your preferred fashion (I prefer the Aeropress for dark roasts and the French press for lighter roasts)</li><li>Don't over do the steeping - bitterness is what most people don't enjoy (bitterness is caused by over heating and over brewing)</li><li>Pour into mugs</li><li>Add warm milk if necessary (a Cafe Au Lait is equal parts coffee and warmed milk)</li><li>Create your moment and enjoy</li></ul>It's a lot of work that needs continual attention and improvement. A lot can go wrong, but the overwhelming ingredient is timing.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-8013218861712675439?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com2tag:blogger.com,1999:blog-30605066.post-38055197809337721692008-12-26T02:30:00.018-05:002009-01-06T14:27:01.417-05:00iTurn - iPhone and iPod Touch Hack<p>Since my <a href="http://www.iamshadowlord.com/2008/12/social-networking-for-my-toaster.html">toaster</a> has been on the Internet <a href="http://www.twitter.com/mytoaster">Twittering</a> my toasting habits, I have been flooded with email asking what I was going to do next. To be fair, most of the email suggested that I had too much time on my hands. My mom got me an iPod Touch for Christmas (she gave it to me a few days early). I have not had the thing out of my sight since she surprised me with a wonderful gift. She also gave me Batman which I transfered to the iPod. I turned the screen about 44 times a minute while watching The Joker and The Dark Knight try to out smart each other. This got me thinking, "Could I control a motor with the movement of the iPod?" I had my next hack.</p><p>The iPhone or iPod Touch has an accelerometer that detects how the device is oriented. As the devices moves off axis (from straight up and down) the screen rotates. I want to use that feedback to control the position of a motor or servo or cause specific events to happen depending on the device's position.</p><p>Taking the <a href="http://www.iobridge.com/store">ioBridge IO-204 module</a>, I connected the servo controller and a servo to one of the channels. On the servo I taped a Best Western hotel pen to show the movement of the servo. I found from hours of testing that the Best Western worked the "Best" and Hampton Inn worked slightly worse.</p><br /><p><a href="http://www.iamshadowlord.com/uploaded_images/iTurn-Setup.jpg"><img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; HEIGHT: 317px; TEXT-ALIGN: center" alt="iTurn setup" src="http://www.iamshadowlord.com/uploaded_images/iTurn-Setup-706413.jpg" border="0" /></a></p><p>On the ioBridge website, I created 3 widgets that corresponded with the orientation of the iPod. "Left" for when tilted towards the left, "Right" when I turned right, and "Forward" when I was holding the iPod normally (straight up and down). </p><p><img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 145px; HEIGHT: 90px; TEXT-ALIGN: center" alt="iTurn Widgets and Screen Shot" src="http://www.iamshadowlord.com/uploaded_images/iTurn-Screen-756686.jpg" border="0" /></p><p><span style="color:#ff0000;">Warning: The next part involves some light programming.</span> I made a quick HTML file with some JavaScript that detected the orientation of the iPod and called the appropriate widget. The orientation code is below for those of you that are interested in trying this for yourself: </p><span style="font-family:courier new;"><blockquote><p><span style="font-family:courier new;font-size:85%;">function updateOrientation() {<br /><br /></span></p><blockquote><p><span style="font-family:courier new;font-size:85%;">switch(window.orientation){<br /><br /></span></p><blockquote><p><span style="font-family:courier new;font-size:85%;">case 0: widgetExecute("Upright Widget ID");<br />break;<br /><br />case -90: widgetExecute("Right Widget ID");<br />break;</span></p><p><span style="font-family:courier new;font-size:85%;">case 90: widgetExecute("Left Widget ID");<br />break;</span><span style="font-family:courier new;font-size:85%;"><br /><br /></span></p><p></p></blockquote>}</blockquote><p><span style="font-family:courier new;font-size:85%;">}</span> // <span style="font-size:78%;">Visit </span><a href="http://www.iobridge.net/projects/2008/12/execute-widgets-with-change-in-screen-orientation/"><span style="font-size:78%;">ioBridge Projects</span></a><span style="font-size:78%;"> for full documentation</span></p></blockquote><p><span class="Apple-style-span" style="font-family:arial;">Load up the completed HTML file on your iPhone or iPod Touch and now you can control a servo with the turning of your iPhone. I call it "iTurn" (didn't see that one coming, did you?).</span></p><span class="Apple-style-span" style="font-family:arial;">Here is a </span><a href="http://www.youtube.com/watch?v=KI8siN6EIZ8"><span class="Apple-style-span" style="font-family:arial;">YouTube video</span></a><span class="Apple-style-span" style="font-family:arial;"> of the iTurn project:</span><br /><br /><p align="center"><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/KI8siN6EIZ8&amp;hl=en&amp;fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/KI8siN6EIZ8&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-3805519780933772169?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com5tag:blogger.com,1999:blog-30605066.post-88832698134970243162008-12-20T15:08:00.005-05:002008-12-26T02:28:24.285-05:00People Watching at the AirportI travel a lot and find myself watching people at the airport to pass the time waiting for flights to depart. I watch them as they walk by Cinnabon and pretend not to want one. I am fascinated by how people behave -- whether it's good behavior or bad, I still find it interesting. After a canceled flight and Chicago weather, I finally made it back to Pittsburgh International Airport. If you have never been, it's like a mall that opened up an airport. I was waiting for my luggage to come from the airplane. We are all standing around a belt that turns in one direction and carries our luggage from a down ramp. The first thing I noticed is that half of the crowd was on one side of the ramp and the other half was on the other side. So, half of these people are going to be waiting the entire trip around for their luggage and the other half are going to get their luggage first. A lady in her late forties and a scarf had an entirely different agenda. She was going to stand clear and wait for it to start turning and sidle up and grab her bag. I could see the anticipation well up as the horn and spinning light announced our bags were coming. She got up and cut right to the side the belt was turning ignoring the people who were there first. My page came out soon, but I wanted to see how it played out. The lady grew impatient and sighed with the exaggeration of a stage actor. I waited 10 minutes and nearly all of the bags were taken minus a few stragglers -- a taped up duffel and flower print roller were the only ones left spinning. She stormed into the bag claim office. I took my flower print roller and headed to the parking shuttle. On the ride to my car, I thought about the events of the lady and her missing bag. She probably asked for it and had it coming.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-8883269813497024316?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com0tag:blogger.com,1999:blog-30605066.post-59370245841417047712008-12-07T21:53:00.011-05:002008-12-15T02:41:44.371-05:00Social Networking for My Toaster<span style="FONT-WEIGHT: bold;font-size:130%;" >My Toaster Twitters</span><br /><br />That statement sounds odd. Well, let me explain. My friends would describe me as the kind of person that has a lot of time on their hands. They would be right. That time is never put to productive use, but over Thanksgiving I got the gumption to start a new project. Sometimes, I start little servo, robotic, web-based projects for my own gratification, but I get fed up with all of the time I invest just so I can impress my 3 friends that also have nothing do to over the holidays.<br /><br />My friend Jason Winters has been working on an module that simplifies the connecting of projects to the internet. He sent me one of his <a href="http://www.iobridge.com/store">ioBridge modules</a> to beta test and my mind started spinning. My goal this Thanksgiving was to think of a crazy project that would be the most senseless thing someone has ever heard of before.<br /><br /><span style="FONT-WEIGHT: bold;font-size:130%;" >Again, My Toaster Twitters...</span><br /><br />Twitter is a social networking site that allows you to tell the world your current status - kind of like a microscopic blog that gets to the point. You can write, "Hans is going to lunch" or "Hans is tired", etc. It's fun to follow people and see what they can do creatively with just a few characters of updates.<br /><br />I use my toaster when I am home and I thought that the world may want to know when I'm toasting.<br /><br /><div style="TEXT-ALIGN: center"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.twitter.com/mytoaster"><img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; HEIGHT: 202px; TEXT-ALIGN: center" alt="" src="http://www.iamshadowlord.com/uploaded_images/TwitterScreenShot2-789014.jpg" border="0" /></a></div><div style="TEXT-ALIGN: center"><a href="http://www.twitter.com/mytoaster">twitter.com/mytoaster</a><br /><span style="FONT-WEIGHT: bold;font-size:130%;" ><br /></span><div style="TEXT-ALIGN: center"><div style="TEXT-ALIGN: left"><span style="FONT-WEIGHT: bold;font-size:130%;" >How do you make a toaster twitter?</span><br /></div><br /><div style="TEXT-ALIGN: left">I grabbed my old bagel / toast toaster and glued a switch to the outside, so when the slider gets pressed down it triggers the switch and when it pops up, the switch opens (couldn't be any more binary then that).<br /></div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.iamshadowlord.com/uploaded_images/ToastingPosition-760353.jpg"><img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://www.iamshadowlord.com/uploaded_images/ToastingPosition-760344.jpg" border="0" /></a><br /><div style="TEXT-ALIGN: left">The ioBridge module has a digital input that I can hook the switch up to and monitor that state of toasting or not. Using a terminal board, a pull up resistor (1k), and some alligator clips, I hooked up the resistor from the digital input to the +5v source from the module, and clipped my clips on the resistor and the ground. A few pictures are worth more than my description.<br /></div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.iamshadowlord.com/uploaded_images/HookupCloseUp-775018.jpg"><img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://www.iamshadowlord.com/uploaded_images/HookupCloseUp-775005.jpg" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.iamshadowlord.com/uploaded_images/ModuleHookup-767522.jpg"><img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://www.iamshadowlord.com/uploaded_images/ModuleHookup-767487.jpg" border="0" /></a><br /><div style="TEXT-ALIGN: left">Here is the whole system hooked together:<br /></div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.iamshadowlord.com/uploaded_images/TwitterToasterSystem-721772.jpg"><img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; HEIGHT: 260px; TEXT-ALIGN: center" alt="" src="http://www.iamshadowlord.com/uploaded_images/TwitterToasterSystem-721764.jpg" border="0" /></a><br /><div style="TEXT-ALIGN: left"><span style="font-size:130%;"><span style="FONT-WEIGHT: bold">The Web Stuff</span></span><br /></div><br /><div style="TEXT-ALIGN: left">Using the ioBridge website, I created an event widget that monitors the input state of that particular digital input. And when the input is "high", the site sends an email to any address of my liking. And the same for the "low" state. I chose my <a href="http://www.twittermail.com/" target="_blank">Twitter Mail</a> address, but really could of hit any social network, email by blog, or even UberNote.</div><br /><br /><div style="TEXT-ALIGN: center"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.twitter.com/mytoaster"><img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; HEIGHT: 202px; TEXT-ALIGN: center" alt="" src="http://www.iamshadowlord.com/uploaded_images/TwitterScreenShot2-789014.jpg" border="0" /></a></div><br /><div style="TEXT-ALIGN: left">Follow My Toaster on Twitter at <a href="http://www.twitter.com/mytoaster">twitter.com/mytoaster</a>. I think I proved empirically that I have too much time on my hands. </div></div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-5937024584141704771?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com1tag:blogger.com,1999:blog-30605066.post-80416280702673701802008-10-29T10:58:00.002-04:002008-10-29T11:26:42.561-04:00New Battery or New Cell Phone?I have a phone that's three years old. Yes, I admit it, the phone is not smart, no "i", or no Andriod as of yet. My mobile is a clam shell with no QWERTY keypad, so texting "I love you, too" is "444#55566688833#99966688#8666666" while near-hitting a bridge abutment. The phone still works, makes calls, and fits into my pocket with my Moleskin.<br /><br />Over the last few weeks, the battery holds a charge for 10-15 minutes. I found myself pouring over new phones, visiting the local shops, and reading about the G1 and the new Blackberry touch. I was wiling to switch carriers, since my phone was as good as dead. I had it in my mind that I was going to get a new phone. I was looking for a reason and the battery dying was the proverbial straw.<br /><br />After forgetting about the battery condition for a day or two, I came back to my senses and searched eBay for a new battery. I found a vendor from NYC that had non-OEM batteries for my make and model. I am sure they were stolen, refurbed, or a fire hazard, but the battery was $6 with free shipping. I got the battery last week in a plain white envelope (now the free shipping makes sense). I popped the "hot" battery in and it held a charge for 3 full days. Three days is more than 15 minutes, so my concerns with possibly feeding the black market all of a sudden went away. I left a positive feedback and my desires for a new phone also vanished.<br /><br />I am not sure what the moral of the story is, but I am sure there is a life lesson here. Maybe there are many solutions to problems in life, maybe I should save my money instead of buying new stuff, etc. Regardless, a new cell phone is pretty sweet.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-8041628070267370180?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com1tag:blogger.com,1999:blog-30605066.post-36563723494678448532008-06-29T16:54:00.004-04:002008-06-29T17:00:38.066-04:00Fiber Optics Considerations<a href="http://www.atelcomm.com/images/fiber_optics.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px;" src="http://www.atelcomm.com/images/fiber_optics.jpg" border="0" alt="" /></a><br />Fiber optic technology uses tiny strands of glass or plastic fibers to trap light allowing data to be carried extremely fast over long distances. Don’t look for any hype here, fiber delivers what it promises – speed, which enables high-speed internet, television services, and telephone communications. The technology is all around our lives and has been for quite some time. Recent advancements of fiber optics versus copper, reduction in deployment costs, and customer demand has brought fiber optic technology into the attention of everyone from consumers and technicians to engineers and managers alike.<br /><br />Passive fiber optic technology is a key advancement allowing for fiber to be deployed in the last mile, which connects communication offices to consumers directly. For example, Fiber-to-the-Home (FTTH) uses passive amplifiers and splitters serving housing developments off of a single strand of fiber. In a copper-based scenario, each house would be connected with a pair of copper wires or networked together using coaxial cable. In either case, the distance and speeds are limited, which further restricts the carrier’s service offerings and competitiveness. Copper is also prone to interference from other cable pairs, radio services, and power lines causing high maintenance costs and degraded services.<br /><br />Lasers, LED’s, amplifiers, fiber optic cable, light receivers and all of the components that allow fiber optic equipment to operate have become very inexpensive allowing for new products and technologies to be developed and offered to carriers, business, and consumers at low or similar costs. In new housing developments and office parks, establishing fiber optic technology will be the most advantageous deployment. As the copper local loop and backhaul networks age, fiber will also be present allowing for current and future service offerings to meet market demand and carrier requirements. <br /><br />The need for speed has always been a driver in the communication markets. Besides the luxury of just speed, fiber optics in the minds of consumers bring about visions of fast internet, high-definition and interactive television, and mobile multimedia features. To the carriers, fiber optics offers a world converged to one technology, multiple service offerings, increased capacity at cellular sites, and minimized maintenance expenses. Inside business networks, fiber optics will be the connections that are made between routers and switches allowing for business to handle more clients, devices, and bandwidth intensive services like Voice-over-IP (VoIP) and video conferencing.<br /><br />The limitation of fiber optic technology exists only with each of us and those who will work on fiber systems. Fiber is just not installed and all of our visions come to a reality and all of our existing issues disappear. Proper design, installation, maintenance practices, and provisioning will be essential in the success of fiber optic deployments. For example, learning the proper way to clean a fiber optic connector is one skill that will mitigate several issues at communication offices, cell sites, office buildings, and residences. Engineers and managers will have to know which fiber solutions to consider and determining loss budgets, while having an understanding of terminology and fiber optic technology concepts to make proper decisions. Technicians will be responsible for installation, maintenance, and provisioning as the technology spreads quickly through their networks and sites. Critical skills that require training and practice are splicing fiber optic cables, cleaning connectors, putting on new connectors, cable section replacement, and installation of cable between devices.<br /><br />Fiber optic technology introduces new infrastructure, maintenance, and testing equipment to be installed and used properly. In the Local Area Network (LAN), routers and switches will have fiber optic connections to connect fiber optic cables, store cable slack, and panduit to run cable through the premises. In restoration or installation practices, fusion splicers will be required to connect and repair fiber optic cables. Once the network is establish, testing devices such as light and power meters, light generators, Optical Time Domain Reflectometers (OTDR), fiber optic scopes, and visual fault locators will be used to determine proper levels and faults.<br /><br />Article by Hans Scharler<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-3656372349467844853?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com0tag:blogger.com,1999:blog-30605066.post-25597243533425572552008-05-30T17:35:00.007-04:002008-07-05T02:16:26.713-04:00The NotHans PodcastI have started a podcast called "The NotHans Podcast". Check it out on <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=284825463">iTunes</a> or visit my <a href="http://www.nothans.com/podcast">podcast</a> page. On my podcast I am reviewing movies, books, and music as well as original comedy sketches, characters of mine, and some stand-up comedy. Let me know what you think.<br /><br /><div style="margin-bottom: -5px;" align="center"><object type="application/x-shockwave-flash" allowNetworking="all" allowScriptAccess="always" allowFullScreen="true" height="318" width="320" id="springwidgets_23" align="middle" data="http://cp.myspace.com/web/wrapper.php?file=RSS Reader.sbw"><param name="allowNetworking" value="all" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="movie" value="http://cp.myspace.com/web/wrapper.php?file=RSS Reader.sbw" /><param name="flashvars" value="param_param=http%3A%2F%2Ffeeds.feedburner.com%2FNotHansPodcast&param_style_borderColor=0x000000&param_style_brandUrl=&param_compactView=false&param_blurbLength=512" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="bgColor" value="0x000000" /></object></div><br /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-2559724353342557255?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com0tag:blogger.com,1999:blog-30605066.post-59843190995864056442008-04-19T17:21:00.009-04:002008-10-29T11:28:02.282-04:00She’s Gotta have ITI venture from the lair to meet up with the opposite sex from time to time. I had a date recently that turned from a romantic encounter to awkward tech support. Our evening started at an exotic and unique restaurant that just opened in my home town called Applebees. I had the riblets and Jenny had a couple of veggie wraps. I was killed by chocolate and she had a Weight Watchers dessert that only cost 4 points on her daily allowance. I have known her for a while and was attempting to make this transition into dating. I was going strong. We shared our dreams and passions. She wanted to be a lifeguard. I wanted to level up my RPG character. She has a cat. I have my mom. It was a bona-fide match as she uncomfortably laughed at some of my puns. The awkwardness reached a crescendo when we talked about our favorite books. I like William Gibson. She likes road signs. After dinner we had drinks at a local establishment where we discussed philosophy, economics, and the “flight” of humankind as she put it.<br /><br />To my surprise, she asked me back to her place for a drink. I am sure I had something on my schedule, but I went anyway.<br /><br />She opened a bottle of wine, put on the new Mariah Carey, and she sat beside me on her couch. We got closer as our conversation got deeper and the alcohol took its desired affect.<br /><br />“I want to ask you something,” Jenny said.<br /><br />I said, “(nothing).”<br /><br />“My wireless router is dropping my connection from time to time…would you take a look?”<br /><br />If this situation was in a movie, the song “Touch My Body” would have come to a screeching stop.<br /><br />I fixed her router – I fixed it all night long. Well, I did fix her router even though this is where I didn’t want the night to end, but I made her WEP key easy to guess. It wouldn’t take Tommy Tutone to be able to figure out Jenny’s password. There probably won’t be a next time, but if she needs help with something she is going to have to submit a trouble ticket like everyone else.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-5984319099586405644?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com2tag:blogger.com,1999:blog-30605066.post-38783347608130980722007-12-18T10:57:00.000-05:002007-12-18T12:19:34.132-05:00Connecting a to Networked Printer Issues with Windows VistaSo you bought that new laptop with Windows Vista, set it up, got on the Internet, downloaded some updates, checked YouTube for the latest video of someone miming a boy band song, and bumped your ex-girlfriend from your Top 8. Now you want to print something across your home network through a shared printer. That printer happens to be shared on a Windows XP machine. You never had a problem before, but this new laptop keeps sending you an error message: <strong><em>Windows cannot connect to the printer. Access is denied.</em></strong><br /><br />If you are like me, you begin troubleshooting to figure out what is going on and start by downing a caffeinated beverage. You check UAC, permissions, reinstall the printer, and finally REBOOT. None of your tactics worked.<br /><br />After research and struggling with the same problem, here is what I have come up with. Give thanks to Melonhead on TechNet for inspiring my streamlined solution to this printer problem that will become an issue for many users. I recreated the scenario and 60% of the time the following solution works every time.<br /><br /><ul><li>Install the Windows Vista printer driver on the new Windows Vista computer</li><br /><li>Open Control Panel and double-click on Printers</li><br /><li>Remove all of your previous attempts at adding the printer</li><br /><li>Click on Add a printer and Choose to Add a local printer</li><br /><li>Select Create a new port and Type of port: Local Port</li><br /><li>Enter a port name (the port name is in the format of<br>“\\{computer name}\{printer name}”)<br><br><img style="display:block; margin:0px auto 10px; text-align:center;" src="http://www.iamshadowlord.com/uploaded_images/VistaPrinter-702417.jpg" border="0" alt="" /></li><li>Verify installation by viewing the port settings in the printer properties window</li><br /></ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-3878334760813098072?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com1tag:blogger.com,1999:blog-30605066.post-69854416044187106892007-12-16T18:03:00.000-05:002007-12-18T18:14:58.902-05:00UberNote for an Ubermensch"Web 2.0" is a bona fide buzzword. What happened to versions 1.1 through 1.9? What does 2.0 mean exactly? To me, Web 2.0 defines the separation of static web pages to truly dynamic and useful web applications. There will be other versions, but this is the first clear step in my mind.<br /><br />Examples of Web 2.0 applications are Google Mail, Basecamp Project Manager, and UberNote - Note Management.<br /><br />I recently became aware of UberNote by reading through articles at <a href="http://www.thetechbrief.com/2007/12/16/get-uber-with-ubernote/" target="_blank">The Tech Brief</a>. The UberNote application (almost wanted to call it software because you forget that this is a web application since it so useful and easy to use) allows for quick note taking, advanced editing, and intuitive tagging.<br /><br />I am note taker. I always have a notebook in my pocket, so I never miss a fleeting idea – maybe one about how toothbrushes with a blue strip fade prematurely while using whitening toothpaste – wouldn’t want to lose that gem. There are times that I email thoughts to myself, leave voice mails on my Skype (which are the only voicemails I get), write on the back of a placemat at a diner – you get the idea. After getting invited to use the UberNote site, I have been putting my thoughts online and have found this a way to keep track of my little thought nuggets that will return literally tens of dollars someday in the future.<br /><br />I recommend trying <a href="http://www.ubernote.com" target="_blank">UberNote</a>, joining their forums, and helping them shape their initial product offering. Check it out soon, so you don’t miss Web 2.0 and before the Web moves to 3.0 and maybe even Web 3.0 beta..<br/><br/><a href='http://digg.com/software/UberNote_for_an_Ubermensch'>digg story</a><br><br><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-6985441604418710689?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com0tag:blogger.com,1999:blog-30605066.post-91419163030322113522007-11-04T01:10:00.000-04:002007-11-04T02:11:23.077-05:00I Fixed the FurnanceI have been off of the road this week and have noticed that the leaves are turning here in Western Pennsylvania. The temperature has been dropping and got pretty cold overnight, so I tried out the furnace. As I switched the thermostat from cool to heat, I heard a click, some gas released, the normal procedure that I remember from last winter, but this time the sequence ended with a loud rattling sound and no heat.<br /><br />The neighbor came over and we got daring and took off the front panel of the furnace. There was a definite source of the rattling and humming, but I have never looked at a furnace without the cover. I felt led to loosen some screws and found a status light that was blinking. On the back of the cover plate, there was a chart of the status light indications. Of course solid green was good, but this light was blinking twice and repeating after a pause. The chart indicated that a valve was stuck open. I grabbed some more tools and removed more screws from a pipe getting closer to the source of the humming sound, and found a blower fan stuck. We cleared some debris, put some tubing back, all of the remaining screws, and the furnace kicked on. The house was getting warmer and more importantly there were no explosions, not that I was worried, but I did leave my neighbor and stood behind a wall when I flipped the power switch.<br /><br />I have fixed all kinds of computer problems and do some pretty advanced troubleshooting on electronic devices, but I got the biggest sense of satisfaction fixing my furnace and feeling the heat coming out of the vents. There’s just something about fixing mechanical things, using tools, and having a pile of leftover parts at the end. I walked around all week hoping that something else would break.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-9141916303032211352?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com1tag:blogger.com,1999:blog-30605066.post-42698367163975716572007-10-05T16:24:00.000-04:002007-10-05T19:12:12.453-04:00New ComputerI finally ordered a new computer. In the PC clone line of computers, my first computer was a 286 with MS-DOS. It was not a productivity machine, but I did play a stock market game and Duke Nukem quite a bit. I have upgraded a few times since then and my desktop now is a P4/1GB/Vista/Ubuntu modded several times starting in 2002. It served me well as I made a living off the system by writing software and technical books. And yes, Doom was played heavily to mom's chagrin. Vista was not a good upgrade for this aging system. Even in its most optimized state, the lag in video playback, game response, and DHTML processing made it a pain to use for day to day entertainment purposes. AGP video cards and Vista don't mix, so it's time to look at SATA, more RAM, and PCI Express/SLI video. <br /><br />On a tip from Darth Kevin, Shadowlord's nemesis in the real-world, I purchased a custom SLI machine from CyberPower. I was able to build a system that will fit my needs (gaming, AJAX development, updating online dating profiles, using Google, watching the Matrix, etc.) and fall into my budget of $2000.<br /><br />The first system I configured was absurd -- 2TB of storage, 4GB of RAM, dual SLI video cards, Quad processor, and floppy drive. I have trimmed off some excess and now looking at a solid configuration. When I settle into the machine, I will let you know how it stacks up.<br /><br /><em>Case and Power Supply</em><br /><br /><blockquote>Apevia X-Juniper Jr. (S Type Metallic Gray)<br />Apevia ATX-LCD650W Quartz</blockquote><br /><em>Motherboard and Processor</em><br /><br /><blockquote>Asus P5N-E nForce 650i SLI<br />Intel Quad Core 2.4GHz/64bit/8MB</blockquote><br /><em>Internal Drive</em><br /><br /><blockquote>500GB SATA-II</blockquote><br /><em>Sound and Video</em><br /><br /><blockquote>3D Wave On-board Sound Card<br />GeForce 8800GTS (XFX Extreme Edition) 320MB/16X PCI Express Video Card</blockquote><br /><em>External Drives</em><br /><br /><blockquote>LITE-ON LH-20A1H -- 20X, Double Layer, DVD burner and player<br />12in1 Flash Media R/W<br />Floppy Drive</blockquote><br /><em>OS</em><br /><br /><blockquote>Vista Ultimate</blockquote><br /><em>Connectivity</em><br /><br /><blockquote>10/100/1000 On-board LAN Card</blockquote><br /><em>Peripheral</em><br /><br /><blockquote>Logitech G15 Keyboard<br />Logitech MX Revolution Mouse<br />Dual Samsung SyncMaster 204B 20" Monitors</blockquote><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-4269836716397571657?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com3tag:blogger.com,1999:blog-30605066.post-74792689132843241152007-08-31T23:34:00.000-04:002007-08-31T23:59:31.093-04:00Drake Equation<a href="http://www.iamshadowlord.com/uploaded_images/drake75x75-756806.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://www.iamshadowlord.com/uploaded_images/drake75x75-756803.jpg" border="0" alt="" /></a><br />Frank Drake released an equation that predicts how many technological civilizations are in the universe. Here is the famous 1961 equation:<br /><br />N = R* • fp • ne • fl • fi • fc • L<br /><br /><a href="http://www.seti.org/seti/seti-science/index.php" target="_blank">Drake Equation detail at SETI</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-7479268913284324115?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com0tag:blogger.com,1999:blog-30605066.post-6819367356411154262007-07-27T15:08:00.000-04:002007-07-27T15:44:07.406-04:00Commodore 64 HackMy second PC was the Commodore 64 (the first one was a Timex Sinclair 1000). I often reminisce about programming into the late nights to make a pixelated wizard move around the screen with crazy 8-bit sound effects. I did waste a lot of time sitting in front a flickering screen avoiding exercise and women. I guess not much has changed, but at least now I get paid to do it. My beverage of choice back then was Tab instead of Mountain Dew.<br /><br /><a href="http://www.iamshadowlord.com/uploaded_images/picodore-710510.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://www.iamshadowlord.com/uploaded_images/picodore-710508.jpg" border="0" alt="" /></a>Now I have my wish, Jason Winters of PicoBay has developed the Picodore 64 -- an ultra portable Commodore 64 laptop. It is an impressive hack of many systems all packed into one stylish case. Check out the project and his site -- you just may learn something. Jason is a true hacker.<br /><br /><a href="http://www.picobay.com/projects/2007/01/picodore-64-commodore-64-pda.html" target="_blank">Picodore 64 - Commodore 64 Laptop</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-681936735641115426?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com1tag:blogger.com,1999:blog-30605066.post-88542141693962063072007-06-24T15:17:00.000-04:002007-12-18T16:31:06.618-05:00Windows Vista OptimizationA few months ago I upgraded an older PC with Microsoft's newest Operating System (OS) called Windows Vista (Home Premimum Edition). My older PC has 256MB of dedicated video memory, 1GB of RAM, and a 2.4GHz Intel Processor. Vista ran very sluggish and gets unresponsive with a few browsers tabs open and couple of programs running, so I became frustrated. There is something good found in everything, so I was dedicated to make this OS purr. The irony was that I was also contributing sections to a new Windows Vista Technician's User Guide. The design applications to write my sections of the manual ran so slow on Vista, I had to figure it out. The following information applies to Windows Vista Home Premium, Business, and Ultimate editions.<br /><br />Here are some ideas and tricks that I used to optimize Windows Vista:<br /><br /><ul><li><strong><em>Minimizing and Maximizing Windows<br /></em></strong>Once you start using Vista, you will notice there is animation sequence that happens as you minimize and maximize a window or vice versa. It makes the transition look smooth but takes up 100% of your processor to accomplish the task. The animation has to process, allocate memory, execute it, and then the window reacts. This sluggish response to just moving between windows becomes annoying with just a few windows open. Stopping this animation will be the biggest noticeable change you can make.<br /><br />Follow these steps to stop the animation:</li></ul><ol><ol><li>Select the <em>Start Button</em>, enter "SystemPropertiesPerformance" into<br />the Start Search Box, and press <em>Enter</em></li><li>On the Visual Effects tab, uncheck <em>Animate Windows When Minimizing/Maximizing</em></li><li>Select <em>OK</em> to apply the settings</li></ol></ol><ul><li><strong><em>Window Transparency</em></strong><br />The windows in Vista are transparent around the top edges to accomplish a 3D experience as you notice whats behind the window. The effect works and looks great although it takes up RAM and processing power to update the transparency effect as things change.<br /><br />Follow these steps to turn off window transparency: </li></ul><ol><ol><li>Right-click on the Desktop and select <em>Personalize</em></li><li>Select <em>Windows Color And Appearance</em></li><li>Uncheck <em>Enable Transparency</em></li><li>Select <em>OK</em> to apply the settings</li></ol></ol><ul><li><strong><em>Windows Vista Services</em></strong><br />There are services that run in the background that process data, user actions, and protect the stability of the PC. Some of these are just not needed. On a new install almost all of them are installed and running. You can safely stop some services that will free up system resources. Follow the procedures at your own risk and only disable services that you actually don't need.<br /><br />Here are few services that you can safely disable:</li></ul><ol><ol><li>Windows Defender</li><li>Tablet PC Input Service</li><li>Telephony (if you are not using your dial-up modem)</li><li>Parental Controls</li><li>WLAN AutoConfig (if you are not using wireless)</li><li>Routing and Remote Access</li></ol></ol> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Follow these steps to disable a service: <ol><ol><li>Select the Start Button, enter "Services" into the Start Search Box, and press <em>Enter</em></li><li>Right-click on a Service to disable and select <em>Properties</em></li><li>Under Startup Type, select Disabled</li><li>Select OK to apply the settings </li></ol></ol><p><br /></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-8854214169396206307?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com1tag:blogger.com,1999:blog-30605066.post-66471466606405582202007-05-29T14:11:00.003-04:002008-11-08T01:52:34.437-05:00Passive Packet Capturing<em>User A</em> to <em>User B</em> packet data traffic can be monitored through a HUB by <em>User C</em> using a “receive‑only” Ethernet cable.<br /><br /><p><a href="http://www.iamshadowlord.com/uploaded_images/Recieve_Only_Cable-757878.jpg"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.iamshadowlord.com/uploaded_images/Recieve_Only_Cable-757873.jpg" border="0" /></a> </p><p>On the HUB end of the cable, there is a loop between TX and RX to activate the HUB port. Any traffic through the HUB will now include this port in the broadcasts.<br /><br /><em>User C</em> taps onto the loop by its receive pins.<br /><br />Once the connections are made to the HUB, <em>User C</em> will receive all packets that flow through the HUB, but <em>User C</em> will not transmit any packets towards the HUB (no DHCP requests and no ARP requests).<em><br /><br /></em>The NIC on<em> User C</em> is in promiscuous mode capturing all incoming packets only.<br /><br />Using a receive-only Ethernet cable in this configuration allows for the ability to passively capture packets, while not actively being a part of the network.<br /><br />Network administrators can actively test for devices in promiscuous mode, monitor for DHCP and ARP requests, and review MAC tables to determine the presence of a packet analysis tool.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30605066-6647146660640558220?l=www.iamshadowlord.com%2Findex.html'/></div>Hanshttp://www.blogger.com/profile/07544743639937002340noreply@blogger.com0