<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-767255066993539640</id><updated>2011-09-28T18:33:23.017-04:00</updated><category term='linux'/><category term='gran tursimo'/><category term='Ninja 250'/><category term='A/C Hack'/><category term='HTC'/><category term='PS3'/><category term='Fuze'/><category term='camera'/><category term='wheel alignment'/><category term='pinout'/><category term='games'/><category term='GT5'/><category term='Touch Pro'/><category term='Star Wars Force unleashed'/><category term='Router'/><category term='car simulation'/><category term='FLIR wannabe'/><category term='mips'/><category term='Electronics'/><category term='Arduino'/><category term='hacks'/><category term='wgt634u'/><category term='Processing'/><category term='Logitech G25'/><category term='PC'/><category term='Subaru WRX'/><category term='racing'/><category term='Kenmore 12000 Window AC'/><category term='car'/><title type='text'>Dave's Thoughts</title><subtitle type='html'>Dave's thoughts and experiments</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-5645053419603042336</id><published>2011-08-06T23:23:00.001-04:00</published><updated>2011-08-07T12:12:20.406-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ninja 250'/><title type='text'>Ninja 250 Brake light upgrade</title><content type='html'>So I wanted o upgrade my tail light so that inattentive drivers know I'm slowing down. The biggest problem I noticed on the Ninja 250 is that the standard light (single pod) doesn't have good contrast. Even though the bulb is powerful, I don't feel it suits safety very well.&lt;br /&gt;&lt;br /&gt;It was dumb luck that I discovered a perfect MR16 LED bulb on Amazon for $13.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-PlTBW6Z1cCc/Tj4AT9pbVhI/AAAAAAAAB6I/GNYZekUTvC8/s1600/IMG_3398.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://1.bp.blogspot.com/-PlTBW6Z1cCc/Tj4AT9pbVhI/AAAAAAAAB6I/GNYZekUTvC8/s320/IMG_3398.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It's a 5W, 250lm bulb which after removing some plastic, it fits perfectly in the extra unused pods on the tail light.&lt;br /&gt;&lt;br /&gt;Originally I was planning on having a dimmed light because the controller inside the bulb supports some dimming. Turned out I would have needed to develop more than what I wanted to. The single LED driver wouldn't have been able to power 6 LEDs (from 2 bulbs) on the 12V bike power.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-3gWZxeSAsXE/Tj4AUQC8t1I/AAAAAAAAB6M/4_2jyE9iP68/s1600/IMG_3399.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="202" src="http://2.bp.blogspot.com/-3gWZxeSAsXE/Tj4AUQC8t1I/AAAAAAAAB6M/4_2jyE9iP68/s320/IMG_3399.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;You can see the 2 MR16 bulbs on the external pods. They fit (with removed lenses and rings) right where a bulb socket would have gone.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I decided to just have it completely off and then on when braking only.&lt;br /&gt;Normal operation just has the standard running light. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Rli128biN84/Tj4AVAuUosI/AAAAAAAAB6U/TOy_LzO1NS8/s1600/IMG_3402.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://1.bp.blogspot.com/-Rli128biN84/Tj4AVAuUosI/AAAAAAAAB6U/TOy_LzO1NS8/s320/IMG_3402.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;With the brakes on it's a LOT better than just the center bulb only. The  2 pictures are taken a the same speed/aperture for good comparison. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-GLSiaMdsZjY/Tj4AUrN4eEI/AAAAAAAAB6Q/cuXdiHmMCDo/s1600/IMG_3401.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://3.bp.blogspot.com/-GLSiaMdsZjY/Tj4AUrN4eEI/AAAAAAAAB6Q/cuXdiHmMCDo/s320/IMG_3401.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Overall I'm very happy with the upgrade and feel a bit safer. The LEDs turn on almost .25s (or more) faster than the standard bulb. The LEDs also allow me to brake flash better to warn people following too close or just when I may be stopping/slowing "unexpectedly"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-5645053419603042336?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/5645053419603042336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2011/08/ninja-250-brake-light-upgrade.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/5645053419603042336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/5645053419603042336'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2011/08/ninja-250-brake-light-upgrade.html' title='Ninja 250 Brake light upgrade'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-PlTBW6Z1cCc/Tj4AT9pbVhI/AAAAAAAAB6I/GNYZekUTvC8/s72-c/IMG_3398.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-369119643268168606</id><published>2011-02-11T00:36:00.003-05:00</published><updated>2011-02-13T23:51:00.009-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Processing'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='FLIR wannabe'/><title type='text'>Arduino automatic pan/tilt Thermal scanner</title><content type='html'>I've always been interested in FLIR technology and how to apply it. While I've never owned or used a FLIR directly I know the basic principles.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Basically, I'm sort of making a first generation version that uses a single point scanner (IR temperature) and panning across in a gridded fashion. While this is crude and only suited for slow changes in temperature over an area it works for what I have in mind - scanning a wall in cold weather.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is how I'm planning on how to do things:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Arduino - The interface between the hardware and software. It will read from the serial command to either pan, tilt or read from the temperature sensor. The temperature sensor has a serial port built into it so I don't need to worry about that.&amp;nbsp;&lt;/div&gt;&lt;div&gt;Processing (on the computer - actual program called "Processing") - I already have the grid plotted and functioning as well as the program controlling the pan and tilt function properly. The next thing is to get the code to read the temperature an apply to the grid. The grid is a color-coded grid, where blue is cold and red is hot (relative)&lt;br /&gt;&lt;br /&gt;After spending a bit on the code and the hardware with my new soldering iron it works quite well! &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-w2s1VdBN3tY/TVTGfEOwW7I/AAAAAAAABZI/v1bz9Tw_QyQ/s1600/IMG_2653.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://1.bp.blogspot.com/-w2s1VdBN3tY/TVTGfEOwW7I/AAAAAAAABZI/v1bz9Tw_QyQ/s320/IMG_2653.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The first image shows a crude setup of the sensor on a&amp;nbsp;pan/tilt&amp;nbsp;mount. I used an old DSL filter for the RJ45 connector to the sensor which makes quick disconnects easy. An old IDE connector on a pcb board for quick plugin to the arduino. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-_nOw2lmaN6Y/TVTGfZuVaVI/AAAAAAAABZM/CHwRC2i9oDI/s1600/IMG_2654.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://2.bp.blogspot.com/-_nOw2lmaN6Y/TVTGfZuVaVI/AAAAAAAABZM/CHwRC2i9oDI/s320/IMG_2654.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The next image shows what the sensor was pointing at. My cat like the laser dot as well where the sensor is point near :) For proof that it detect heat sources the supply is for my laptop and runs hot - about 95F. The picture is just about the area being scanned.&amp;nbsp;Unfortunately the thermal sensor is very slow so the framerate in processing is 0.8 frames/second... YIKES!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-BHuNNJ9cEq0/TVTGgI2dEzI/AAAAAAAABZQ/CIw24be4JsQ/s1600/IMG_2655.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-BHuNNJ9cEq0/TVTGgI2dEzI/AAAAAAAABZQ/CIw24be4JsQ/s320/IMG_2655.JPG" width="302" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This last picture is the dynamic map of the readings. You can clearly see the power brick light up in comparison to the surrounding area which is 70ish or less. I need to make a PDF export of the image when it reaches the corners!&lt;br /&gt;&lt;br /&gt;Next is to make this a bit more... portable. I need to get the pan/tilt mount to be better built and have some type of system to manage the cables into a unit that requires a usb cable.&lt;br /&gt;&lt;br /&gt;Updates:&lt;br /&gt;&amp;nbsp;&amp;nbsp; I used a busted HDD case with spindle still on it as my turntable. With a few modifications with a drill-press it suits my needs. I also attached my tripod to the casing so that it can measure in an elevated position.&lt;br /&gt;&lt;br /&gt;Here are some more close up shots of the micro processor with connections.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-XUPJm9W31lg/TVXhMBMMGRI/AAAAAAAABZ4/MaOxgElvPGk/s1600/IMG_2660.JPG"&gt;&lt;img border="0" height="213" src="http://1.bp.blogspot.com/-XUPJm9W31lg/TVXhMBMMGRI/AAAAAAAABZ4/MaOxgElvPGk/s320/IMG_2660.JPG" width="320" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-Nm0bAfDy9fw/TVXhLSgqbQI/AAAAAAAABZ0/Ukt0c1A3dHc/s1600/IMG_2659.JPG"&gt;&lt;img border="0" height="213" src="http://2.bp.blogspot.com/-Nm0bAfDy9fw/TVXhLSgqbQI/AAAAAAAABZ0/Ukt0c1A3dHc/s320/IMG_2659.JPG" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And a larger scan of a "real" surface (chimney and wall)&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-9Gq7nwydUKc/TVXhMs2nFQI/AAAAAAAABZ8/tOva6fzzN78/s1600/thrmal+composit.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://4.bp.blogspot.com/-9Gq7nwydUKc/TVXhMs2nFQI/AAAAAAAABZ8/tOva6fzzN78/s320/thrmal+composit.JPG" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Update: Made instructable:&amp;nbsp;&lt;a href="http://www.instructables.com/id/Build-an-Arduino-based-thermal-scanner/"&gt;http://www.instructables.com/id/Build-an-Arduino-based-thermal-scanner/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-369119643268168606?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/369119643268168606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2011/02/arduino-automatic-pantilt-thermal.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/369119643268168606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/369119643268168606'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2011/02/arduino-automatic-pantilt-thermal.html' title='Arduino automatic pan/tilt Thermal scanner'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-w2s1VdBN3tY/TVTGfEOwW7I/AAAAAAAABZI/v1bz9Tw_QyQ/s72-c/IMG_2653.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-6434145399979772363</id><published>2010-12-30T12:28:00.003-05:00</published><updated>2011-01-03T15:04:11.850-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Processing'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><title type='text'>Fun with Processing + Future project (IR thermal scanner)</title><content type='html'>I anticipation for my next project I've been looking at different ways to process and represent feedback from a digital IR sensor. I found this very nice tool called Processing. The tool allows me to write a piece of code that ca take multiple inputs (such as serial) and display it in anyway I want. As a sample test I decided to make a binary clock. A lot of this will be translated into my project such as the live updates and&amp;nbsp;ellipse drawings. It's too bad I can't attach a java app to this blog so here's the code:&lt;br /&gt;&lt;br /&gt;Processing page (&lt;a href="http://www.processing.org/"&gt;http://www.processing.org/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;size(300,160);&lt;br /&gt;frameRate(1);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw() {&lt;br /&gt;//hh:mm:ss&lt;br /&gt;//24:69:69&lt;br /&gt;//23:34:34&lt;br /&gt;background(50,50,50);&lt;br /&gt;String s = ""+second();&amp;nbsp; // Values from 0 - 59&lt;br /&gt;String m = ""+minute();&amp;nbsp; // Values from 0 - 59&lt;br /&gt;String h = ""+hour();&amp;nbsp;&amp;nbsp;&amp;nbsp; // Values from 0 - 23&lt;br /&gt;String time = ""+h+m+s;&lt;br /&gt;&lt;br /&gt;println (time);&lt;br /&gt;&lt;br /&gt;boolean [][] hs = digit(h);&lt;br /&gt;boolean [][] ms = digit(m);&lt;br /&gt;boolean [][] ss = digit(s);&lt;br /&gt;digit_draw(2,3,33,0,hs);&lt;br /&gt;digit_draw(3,4,33,3,ms); &lt;br /&gt;digit_draw(3,4,33,6,ss); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void digit_draw(int d0, int d1, int sz, int xoffset, boolean [][]vs) {&amp;nbsp;&amp;nbsp; &lt;br /&gt;for(int i=0; i &amp;lt; d0; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(vs[0][i]) fill(255,0,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else fill(0,0,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ellipse(sz*xoffset+sz, sz*i+sz, sz, sz); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=0; i &amp;lt; d1; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(vs[1][i]) fill(255,0,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else fill(0,0,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ellipse(sz*(xoffset+1)+sz, sz*i+sz, sz, sz); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;boolean [][] digit(String v) {&lt;br /&gt;&amp;nbsp; int h0,h1;&lt;br /&gt;&amp;nbsp; h1=-1;&lt;br /&gt;&amp;nbsp; h0=v.charAt(0)-48;&lt;br /&gt;&amp;nbsp; if(v.length() &amp;gt; 1) h1=v.charAt(1)-48;&lt;br /&gt;int ht=h1;&lt;br /&gt;if(h1==-1) { h1=h0; h0=0; };&lt;br /&gt;int sz=4;&lt;br /&gt;boolean [][] d = new boolean[sz][sz];&lt;br /&gt;String b0 = binary(h0);&lt;br /&gt;String b1 = binary(h1);&lt;br /&gt;//println (h0 + "" + h1 + " " + b0 + " " + b1);&lt;br /&gt;for(int i=0; i &amp;lt; sz; i++) {&lt;br /&gt;d[0][i] = d[1][i] = false; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;for(int i=0; i &amp;lt; b0.length(); i++) {&lt;br /&gt;if(b0.charAt(b0.length()-1-i) == '1') d[0][i]=true; &lt;br /&gt;else d[0][i]=false;&lt;br /&gt;}&lt;br /&gt;for(int i=0; i &amp;lt; b1.length(); i++) {&lt;br /&gt;if(b1.charAt(b1.length()-1-i) == '1') d[1][i]=true; &lt;br /&gt;else d[1][i]=false;&lt;br /&gt;}&lt;br /&gt;return d;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-6434145399979772363?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/6434145399979772363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2010/12/fun-with-processing-future-project-ir.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/6434145399979772363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/6434145399979772363'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2010/12/fun-with-processing-future-project-ir.html' title='Fun with Processing + Future project (IR thermal scanner)'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-1462363217613419878</id><published>2010-12-19T23:40:00.000-05:00</published><updated>2010-12-19T23:40:50.999-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='car'/><category scheme='http://www.blogger.com/atom/ns#' term='car simulation'/><category scheme='http://www.blogger.com/atom/ns#' term='PS3'/><category scheme='http://www.blogger.com/atom/ns#' term='Logitech G25'/><category scheme='http://www.blogger.com/atom/ns#' term='GT5'/><category scheme='http://www.blogger.com/atom/ns#' term='racing'/><title type='text'>Custom Racing seat - impressions</title><content type='html'>So after many hours behind the wheel in my seat I decided that I did a very good job! Haha, yeah I'm gloating. Unlike some other make-shift setups that I have done this one was very comfortable and my back and legs don't hurt after getting up from a 4+ hour run. &lt;br /&gt;&lt;br /&gt;My friend came over to test it out and before hand was skeptical of the placement of the shifter, that it would get in the way. After some adjustments (wheel hight/pull-in) he found out it worked really well. There is a lot less stress on the arms when using the H pattern shifter which is a benefit when doing competition racing. Unlike a "normal" setup where the shifter ball is higher than the center of the wheel, this one is much further down resulting in a relaxed arm position while shifting and adding quicker hand movement from shifter to wheel. &lt;br /&gt;&lt;br /&gt;I was originally planning on attaching the seat to the box for those panic brakes (thought was that the box would slide away) but it turns out that the 70something pounds that is the box + controller stays put on carpet even under "stressful" conditions. This is a benefit to me since my cat likes to interact with the chairs soft fabric and I need to hide it :)&lt;br /&gt;&lt;br /&gt;Some additions that were added are an extended top plank for a mouse just behind the shifter and side tray for keyboard for those PC simulators (LFS, iRacing....). I would imagine that if I wanted to extend this to a full-on simulator I could easily make a flight stick holder that would bolt right in, but that's to be seen in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-1462363217613419878?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/1462363217613419878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2010/12/custom-racing-seat-impressions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/1462363217613419878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/1462363217613419878'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2010/12/custom-racing-seat-impressions.html' title='Custom Racing seat - impressions'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-5533062182816963351</id><published>2010-12-13T00:16:00.003-05:00</published><updated>2010-12-17T11:38:43.912-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='car'/><category scheme='http://www.blogger.com/atom/ns#' term='car simulation'/><category scheme='http://www.blogger.com/atom/ns#' term='PS3'/><category scheme='http://www.blogger.com/atom/ns#' term='Logitech G25'/><category scheme='http://www.blogger.com/atom/ns#' term='GT5'/><category scheme='http://www.blogger.com/atom/ns#' term='racing'/><title type='text'>Custom Racing Seat</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;So after getting GT5 (and other racing sims) and not wanting to use the standard controller I decided to create a custom racing cockpit. The idea came to design &amp;amp; build quickly when a friend showed interest in having one as well. I plotted everything in sketchup (go google!) so that I could just cut and put together. What a time saver! I was able to determine that a single 4'x8' plywood sheet (oak covered) could fit the pieces. The nice thing about planning the way I did was I could determine where to cut with the hand circular saw and what can go on the table saw. In the end I did a single cut with the hand circular saw and with help did another on the table. After that all the pieces were very&amp;nbsp;manageable! So after 7ish hours this is the product:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_cqm_J0G6U7Q/TQWmj70oJVI/AAAAAAAABSs/0N3AyioB9Wc/s1600/IMG_2523-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://4.bp.blogspot.com/_cqm_J0G6U7Q/TQWmj70oJVI/AAAAAAAABSs/0N3AyioB9Wc/s320/IMG_2523-2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_cqm_J0G6U7Q/TQWmkD0327I/AAAAAAAABSw/BYS0beY1yRQ/s1600/IMG_2525-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_cqm_J0G6U7Q/TQWmkD0327I/AAAAAAAABSw/BYS0beY1yRQ/s320/IMG_2525-2.jpg" width="231" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The wheel can slide up/down and in/out with the bolts. The seat is a real car seat with front/back sliding rails. When comparing to a pre-made simulation seat that's around $400 (seat + stand for controller and pedals) ... the cost of this is well worth the effort. The wood sheet was only $45 from Home Depot and the seat from Amazon.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The touch up is to use the router and round all the edges so they are not 90 deg corners which are painful when hit! Maybe a touch of stain might do well?&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Update: I used the router to smooth all the visible edges so there are no sharp corners. I also cut the bolts so that the threads don't stick out further than the hex-nut. These two modifications have made the appearance of the box much more appealing. &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-5533062182816963351?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/5533062182816963351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2010/12/custom-racing-seat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/5533062182816963351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/5533062182816963351'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2010/12/custom-racing-seat.html' title='Custom Racing Seat'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cqm_J0G6U7Q/TQWmj70oJVI/AAAAAAAABSs/0N3AyioB9Wc/s72-c/IMG_2523-2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-9223323008932598773</id><published>2010-11-13T16:25:00.000-05:00</published><updated>2010-11-13T16:25:56.554-05:00</updated><title type='text'></title><content type='html'>&lt;div style="TEXT-ALIGN: center; MARGIN: 0px auto 10px"&gt;I went to the salvage yard today to look for a car seat for a custom racing cockpit with a friend. Unfortunately I didn't see one that would work or is clean enough.. but I did see this which made my day. Make sure to read the text first :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_cqm_J0G6U7Q/TN8CY1XmnoI/AAAAAAAAA5E/5QOXGjRv2vI/s1600/IMAG0044.jpg"&gt;&lt;img border="0" alt="" src="http://3.bp.blogspot.com/_cqm_J0G6U7Q/TN8CY1XmnoI/AAAAAAAAA5E/5QOXGjRv2vI/s320/IMAG0044.jpg" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-9223323008932598773?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/9223323008932598773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2010/11/i-went-to-salvage-yard-today-to-look.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/9223323008932598773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/9223323008932598773'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2010/11/i-went-to-salvage-yard-today-to-look.html' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cqm_J0G6U7Q/TN8CY1XmnoI/AAAAAAAAA5E/5QOXGjRv2vI/s72-c/IMAG0044.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-3924154862755202191</id><published>2010-07-21T10:24:00.003-04:00</published><updated>2010-07-26T10:36:55.171-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><title type='text'>Arduino project - Morse code (part 2)</title><content type='html'>In response to Greg who wrote a comment about my pet project and to keep my blog alive I have completed the morse code project. It's actually been done for a while but I've been busy with work and home stuff as of late.&lt;br /&gt;&lt;br /&gt;The code stream uses 7478 byes so it's fairly compact. I have successfully 'input' a sample code by using the onboard supply and tapping the input pin. It worked great :) It does have limits though, say a user was transmitting and varied speed too much, this would cause some of the dashes to be dots if they decided to send slower. There are a few solutions to this, one is to attempt to detect spaces and flush the system to reset the timers (timers are used to identify dash and dots).&lt;br /&gt;&lt;br /&gt;There's a few options built into the code:&lt;br /&gt;rate -- rate at which the program transmits&lt;br /&gt;recdelay -sample frequency for input&lt;br /&gt;perr - Error recovery, increase this if a user is off on timing but can blur differences between the sequences.&lt;br /&gt;rectimeout - expected time window to when a user transmits.&lt;br /&gt;help - prints out commands one can set :)&lt;br /&gt;&lt;br /&gt;There's a few parts to the code stream that are critical: the first one is priority. Basically I want to make sure that any incoming signals have priority over any outgoing. That is if I receive a signal it will stay on that until the time lapses and then send the signal I want to transmit. This is simply done in the loop() statement&lt;br /&gt;&lt;br /&gt;&lt;div style="overflow: auto; width: 600px; height: 100px; color: blue; background-color: rgb(255, 255, 204);"&gt;&lt;br /&gt;void loop() {&lt;br /&gt;  //if there's data on the serial port go and read that&lt;br /&gt;  if(digitalRead(input)) {&lt;br /&gt;    int bits[5000];&lt;br /&gt;     buffer_signal(bits);&lt;br /&gt;     decode(bits);&lt;br /&gt;  }&lt;br /&gt;  if(Serial.available()) {&lt;br /&gt;      //will get one bit at a time to encode and transmit&lt;br /&gt;      char mybit = Serial.read();&lt;br /&gt;      if(!scancontrol(mybit)) {        &lt;br /&gt;        flash(encode(mybit));&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;  //if there's data on the input port read that&lt;br /&gt;  //potentailly make this an interrupt process?&lt;br /&gt;  &lt;br /&gt;} &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Let's first skip to the user input part to create a baseline. The first argument is scanning for a control statement&lt;br /&gt;&lt;br /&gt;&lt;div style="overflow: auto; width: 600px; height: 100px; color: blue; background-color: rgb(255, 255, 204);"&gt;&lt;br /&gt;//scan for control bits from console&lt;br /&gt;boolean scancontrol(char mybit) {&lt;br /&gt;  if(mybit == '#') {&lt;br /&gt;      delay(1); //delay to allow serial to recover&lt;br /&gt;      //this is a control bit flag&lt;br /&gt;      char ctrl[20];&lt;br /&gt;      int i=0;&lt;br /&gt;      //buffer the command&lt;br /&gt;      while(Serial.available()) {&lt;br /&gt;        ctrl[i++] = Serial.read();      &lt;br /&gt;        delay(1); //delay 1ms to allow serial to recover&lt;br /&gt;      }&lt;br /&gt;      ctrl[i] = '\0'; &lt;br /&gt;      &lt;br /&gt;      if(strcmp(ctrl, "rate", 0)) {&lt;br /&gt;        char nr[20]; //make the same size as ctrl&lt;br /&gt;        substr(nr, ctrl, 4, -1);&lt;br /&gt;        Serial.print("Set Tx rate=");    &lt;br /&gt;        Serial.println(nr);&lt;br /&gt;        rate=atoi(nr);&lt;br /&gt;      } &lt;br /&gt;      else if(strcmp(ctrl, "recdelay", 0)) {&lt;br /&gt;        char nr[20]; //make the same size as ctrl&lt;br /&gt;        substr(nr, ctrl, 4, -1);&lt;br /&gt;        Serial.print("Set rec_delay=");    &lt;br /&gt;        Serial.println(nr);&lt;br /&gt;        recdelay=atoi(nr);&lt;br /&gt;      } &lt;br /&gt;      else if(strcmp(ctrl, "perr", 0)) {&lt;br /&gt;        char nr[20]; //make the same size as ctrl&lt;br /&gt;        substr(nr, ctrl, 4, -1);&lt;br /&gt;        Serial.print("Set perr=");    &lt;br /&gt;        Serial.println(nr);&lt;br /&gt;        recdelay=atoi(nr);&lt;br /&gt;      } &lt;br /&gt;      else if(strcmp(ctrl, "rectimeout", 0)) {&lt;br /&gt;        char nr[20]; //make the same size as ctrl&lt;br /&gt;        substr(nr, ctrl, 4, -1);&lt;br /&gt;        Serial.print("Set rec_timeout=");    &lt;br /&gt;        Serial.println(nr);&lt;br /&gt;        rectimeout=atoi(nr);&lt;br /&gt;      } &lt;br /&gt;      else if(strcmp(ctrl, "help", 0)) {&lt;br /&gt;        Serial.println("#rate n - set dot rate (ms)");&lt;br /&gt;        Serial.println("#recdelay n - set rec_delay (ms)");&lt;br /&gt;        Serial.println("#perr n - set error for decoding");&lt;br /&gt;        Serial.println("#rectimeout n - set rec_timeout (ms)");&lt;br /&gt;      }     &lt;br /&gt;      else {&lt;br /&gt;        Serial.print("Unknown command: ");&lt;br /&gt;        Serial.println(ctrl); &lt;br /&gt;      }&lt;br /&gt;      //Serial.flush();&lt;br /&gt;      return true;&lt;br /&gt;  } &lt;br /&gt;  return false;  //false means it didnt find a control bit, &lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;If there is no control statement found it will return false and allow flash() to execute. Flash, however, needs a string of encoded signals to transmit and that's where encode() is used.&lt;br /&gt;&lt;br /&gt;Encode() is very straight forward. It takes in a single char and dumps out the equivalent string of dash and dot combination. This is nothing new and can be easily found on a wiki site.&lt;br /&gt;&lt;br /&gt;&lt;div style="overflow: auto; width: 600px; height: 100px; color: blue; background-color: rgb(255, 255, 204);"&gt;&lt;br /&gt;//encode each character&lt;br /&gt;char * encode(char chr) {&lt;br /&gt;  switch(chr) {&lt;br /&gt;    case 'a': return ".-";&lt;br /&gt;    case 'b': return "-...";&lt;br /&gt;    case 'c': return "-.-.";&lt;br /&gt;    case 'd': return "-..";&lt;br /&gt;    case 'e': return ".";&lt;br /&gt;    case 'f': return "..-.";&lt;br /&gt;    case 'g': return "--.";&lt;br /&gt;    case 'h': return "....";&lt;br /&gt;    case 'i': return "..";&lt;br /&gt;    case 'j': return ".---";&lt;br /&gt;    case 'k': return "-.-";&lt;br /&gt;    case 'l': return ".-..";&lt;br /&gt;    case 'm': return "--";&lt;br /&gt;    case 'n': return "-.";&lt;br /&gt;    case 'o': return "---";&lt;br /&gt;    case 'p': return ".--.";&lt;br /&gt;    case 'q': return "--.-";&lt;br /&gt;    case 'r': return ".-.";&lt;br /&gt;    case 's': return "...";&lt;br /&gt;    case 't': return "-";&lt;br /&gt;    case 'u': return "..-";&lt;br /&gt;    case 'v': return "...-";&lt;br /&gt;    case 'w': return ".--";&lt;br /&gt;    case 'x': return "-..-";&lt;br /&gt;    case 'y': return "-.--";&lt;br /&gt;    case 'z': return "--..";&lt;br /&gt;    case ' ': return " ";&lt;br /&gt;    case '0': return "-----";&lt;br /&gt;    case '1': return ".----";&lt;br /&gt;    case '2': return "..---";&lt;br /&gt;    case '3': return "...--";&lt;br /&gt;    case '4': return "....-";&lt;br /&gt;    case '5': return ".....";&lt;br /&gt;    case '6': return "-....";&lt;br /&gt;    case '7': return "--...";&lt;br /&gt;    case '8': return "---..";&lt;br /&gt;    case '9': return "----.";&lt;br /&gt;    case '.': return ".-.-.-";&lt;br /&gt;    case ',': return "--..--";&lt;br /&gt;    case '?': return "..--..";&lt;br /&gt;    case '\'': return ".----.";&lt;br /&gt;    case '!': return "-.-.--";&lt;br /&gt;    case '/': return "-..-.";&lt;br /&gt;    case '(': return "-.--.";&lt;br /&gt;    case ')': return "-.--.-";&lt;br /&gt;    case '&amp;amp;': return ".-...";&lt;br /&gt;    case ':': return "---...";&lt;br /&gt;    case ';': return "-.-.-.";&lt;br /&gt;    case '=': return "-...-";&lt;br /&gt;    case '+': return ".-.-.";&lt;br /&gt;    case '-': return "-....-";&lt;br /&gt;    case '_': return "..--.-";&lt;br /&gt;    case '"': return ".-..-.";&lt;br /&gt;    case '$': return "...-..-";&lt;br /&gt;    case '@': return ".--.-.";&lt;br /&gt;    default: return "";&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The last bit that I have is the tougher one, decoding. I wanted to allow this to be somewhat dynamic in that a user doesn't need to know exactly what the rate should be.&lt;br /&gt;&lt;br /&gt;&lt;div style="overflow: auto; width: 600px; height: 100px; color: blue; background-color: rgb(255, 255, 204);"&gt;&lt;br /&gt;void decode(int *bits) {&lt;br /&gt;   int i=0; //assume first bit is high&lt;br /&gt;   int max_on=0;&lt;br /&gt;   int max_off=0;&lt;br /&gt;   int min_off=-1;&lt;br /&gt;   int min_on=-1;&lt;br /&gt;   //first get the max cycle (dash)&lt;br /&gt;   while(bits[i]) {&lt;br /&gt;      if(max_on &amp;lt; bits[i]) max_on = bits[i];&lt;br /&gt;      if(max_off &amp;lt; bits[i+1]) max_off = bits[i+1];&lt;br /&gt;      if(min_on &amp;lt; 0 || min_on &amp;gt; bits[i]) min_on = bits[i];&lt;br /&gt;      if(min_off &amp;lt; 0 || min_off &amp;gt; bits[i]) min_off = bits[i];&lt;br /&gt;      for(int z=i; z &amp;lt;= i+1; z++) {&lt;br /&gt;        Serial.print(z); &lt;br /&gt;        Serial.print("&amp;gt;");&lt;br /&gt;        Serial.println(bits[z]);&lt;br /&gt;      }&lt;br /&gt;      i+=2; //i+1 = space/seperator&lt;br /&gt;   } &lt;br /&gt;   i=0;&lt;br /&gt;   char myset[100];&lt;br /&gt;   int z=0;&lt;br /&gt;   while(bits[i]) {&lt;br /&gt;     if(bits[i] &amp;lt;= (max_on*(1+perr/100.0)) &amp;&amp; bits[i] &amp;gt;= (max_on*(1-perr/100.0))) myset[z] = '-';&lt;br /&gt;     else myset[z] = '.';&lt;br /&gt;&lt;br /&gt;     Serial.print(myset[z]);&lt;br /&gt;     &lt;br /&gt;     z++;&lt;br /&gt;     //check the space, see if there is a space or new char&lt;br /&gt;     if(min_off &amp;lt;= (max_off*(1-perr/100.0)) &amp;&amp; &lt;br /&gt;        bits[i+1] &amp;lt;= (max_off*(1+perr/100.0)) &amp;&amp; bits[i+1] &amp;gt;= (max_off*(1-perr/100.0))) {&lt;br /&gt;       myset[z++] = ' ';&lt;br /&gt;       Serial.println("");&lt;br /&gt;     }&lt;br /&gt;     i+=2;&lt;br /&gt;   }&lt;br /&gt;   myset[z]='\0';&lt;br /&gt;   Serial.println("");&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The basic idea behind the decode is this: buffer the digital input and log the times the bit is high and low. By doing this I can simply search though the buffer to figure out the lengths of the longest 'on' period which will be signified as a dash. The dot is found by looking for the minimum time the bit is high. With a few error corrections I can find out the differences between the dashes and dots. At the same time this code also dumps the dash/dots to the terminal&lt;br /&gt;&lt;br /&gt;With some of my tests I did the code seems to work just fine. I can tap a digital input, the classic S O S and it decodes it. Transmission seems to work as expected as well, too bad I don't have another, I could get them both talking to do a much better test!&lt;br /&gt;&lt;br /&gt;I never got past the point of hooking it up to the radio and decoding something but I'm sure that getting some circuitry it can be done. All there really needs to be is something to smooth out the audio tone (bridge+caps?) and use an opamp. The opamp can be set up so it hits max gain when a tone comes in, at which point it would simulate a digital signal. Sending one would require an oscillator and set to a good frequency (probably somewhere around 400+ Hz). I suppose a lower tone would work just fine but too low and the oscillations wouldn't keep up with the transmissions.&lt;br /&gt;&lt;br /&gt;&lt;div style="overflow: auto; width: 600px; height: 100px; color: blue; background-color: rgb(255, 255, 204);"&gt;&lt;br /&gt;int led = 13; //local LED pin&lt;br /&gt;int sig = 9; //pin to write to to transmit&lt;br /&gt;int input = 8; //pin to read from&lt;br /&gt;int rate = 120;  //basic rate (set to human readable)&lt;br /&gt;int recdelay = 20;&lt;br /&gt;int rectimeout = recdelay*20;&lt;br /&gt;int perr = 10;  //in percentage&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;   Serial.begin(9600);   &lt;br /&gt;   establishContact();  &lt;br /&gt;   pinMode(led, OUTPUT); //local LED indicator&lt;br /&gt;   pinMode(sig, OUTPUT); //output signal to transmit &lt;br /&gt;   pinMode(input, INPUT);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;  //if there's data on the serial port go and read that&lt;br /&gt;  if(digitalRead(input)) {&lt;br /&gt;    int bits[5000];&lt;br /&gt;     buffer_signal(bits);&lt;br /&gt;     decode(bits);&lt;br /&gt;  }&lt;br /&gt;  if(Serial.available()) {&lt;br /&gt;      //will get one bit at a time to encode and transmit&lt;br /&gt;      char mybit = Serial.read();&lt;br /&gt;      if(!scancontrol(mybit)) {        &lt;br /&gt;        flash(encode(mybit));&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;  //if there's data on the input port read that&lt;br /&gt;  //potentailly make this an interrupt process?&lt;br /&gt;  &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;void decode(int *bits) {&lt;br /&gt;   int i=0; //assume first bit is high&lt;br /&gt;   int max_on=0;&lt;br /&gt;   int max_off=0;&lt;br /&gt;   int min_off=-1;&lt;br /&gt;   int min_on=-1;&lt;br /&gt;   //first get the max cycle (dash)&lt;br /&gt;   while(bits[i]) {&lt;br /&gt;      if(max_on &amp;lt; bits[i]) max_on = bits[i];&lt;br /&gt;      if(max_off &amp;lt; bits[i+1]) max_off = bits[i+1];&lt;br /&gt;      if(min_on &amp;lt; 0 || min_on &amp;gt; bits[i]) min_on = bits[i];&lt;br /&gt;      if(min_off &amp;lt; 0 || min_off &amp;gt; bits[i]) min_off = bits[i];&lt;br /&gt;      for(int z=i; z &amp;lt;= i+1; z++) {&lt;br /&gt;        Serial.print(z); &lt;br /&gt;        Serial.print("&amp;gt;");&lt;br /&gt;        Serial.println(bits[z]);&lt;br /&gt;      }&lt;br /&gt;      i+=2; //i+1 = space/seperator&lt;br /&gt;   } &lt;br /&gt;   i=0;&lt;br /&gt;   char myset[100];&lt;br /&gt;   int z=0;&lt;br /&gt;   while(bits[i]) {&lt;br /&gt;     if(bits[i] &amp;lt;= (max_on*(1+perr/100.0)) &amp;&amp; bits[i] &amp;gt;= (max_on*(1-perr/100.0))) myset[z] = '-';&lt;br /&gt;     else myset[z] = '.';&lt;br /&gt;&lt;br /&gt;     Serial.print(myset[z]);&lt;br /&gt;     &lt;br /&gt;     z++;&lt;br /&gt;     //check the space, see if there is a space or new char&lt;br /&gt;     if(min_off &amp;lt;= (max_off*(1-perr/100.0)) &amp;&amp; &lt;br /&gt;        bits[i+1] &amp;lt;= (max_off*(1+perr/100.0)) &amp;&amp; bits[i+1] &amp;gt;= (max_off*(1-perr/100.0))) {&lt;br /&gt;       myset[z++] = ' ';&lt;br /&gt;       Serial.println("");&lt;br /&gt;     }&lt;br /&gt;     i+=2;&lt;br /&gt;   }&lt;br /&gt;   myset[z]='\0';&lt;br /&gt;   Serial.println("");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void buffer_signal(int *bits) {&lt;br /&gt;  boolean complete=false;&lt;br /&gt;  int cnt=0;&lt;br /&gt;  int i=0;&lt;br /&gt;  int valprev=1; //start out high&lt;br /&gt;  while(!complete) {&lt;br /&gt;     int val = digitalRead(input);&lt;br /&gt;     cnt++;&lt;br /&gt;     if(!val) digitalWrite(led, LOW);&lt;br /&gt;     else digitalWrite(led, HIGH);&lt;br /&gt;     &lt;br /&gt;     if(val != valprev) {&lt;br /&gt;        bits[i++] = cnt;&lt;br /&gt;        cnt=0; &lt;br /&gt;     }&lt;br /&gt;     valprev = val;&lt;br /&gt;     delay(recdelay); //make this dymaic&lt;br /&gt;     if(!val &amp;&amp; cnt &amp;gt;= rectimeout) complete=true;  //make this dynamic  &lt;br /&gt;  } &lt;br /&gt;  bits[i]=0;  &lt;br /&gt;  bits[i+1]=0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//scan for control bits from console&lt;br /&gt;boolean scancontrol(char mybit) {&lt;br /&gt;  if(mybit == '#') {&lt;br /&gt;      delay(1); //delay to allow serial to recover&lt;br /&gt;      //this is a control bit flag&lt;br /&gt;      char ctrl[20];&lt;br /&gt;      int i=0;&lt;br /&gt;      //buffer the command&lt;br /&gt;      while(Serial.available()) {&lt;br /&gt;        ctrl[i++] = Serial.read();      &lt;br /&gt;        delay(1); //delay 1ms to allow serial to recover&lt;br /&gt;      }&lt;br /&gt;      ctrl[i] = '\0'; &lt;br /&gt;      &lt;br /&gt;      if(strcmp(ctrl, "rate", 0)) {&lt;br /&gt;        char nr[20]; //make the same size as ctrl&lt;br /&gt;        substr(nr, ctrl, 4, -1);&lt;br /&gt;        Serial.print("Set Tx rate=");    &lt;br /&gt;        Serial.println(nr);&lt;br /&gt;        rate=atoi(nr);&lt;br /&gt;      } &lt;br /&gt;      else if(strcmp(ctrl, "recdelay", 0)) {&lt;br /&gt;        char nr[20]; //make the same size as ctrl&lt;br /&gt;        substr(nr, ctrl, 4, -1);&lt;br /&gt;        Serial.print("Set rec_delay=");    &lt;br /&gt;        Serial.println(nr);&lt;br /&gt;        recdelay=atoi(nr);&lt;br /&gt;      } &lt;br /&gt;      else if(strcmp(ctrl, "perr", 0)) {&lt;br /&gt;        char nr[20]; //make the same size as ctrl&lt;br /&gt;        substr(nr, ctrl, 4, -1);&lt;br /&gt;        Serial.print("Set perr=");    &lt;br /&gt;        Serial.println(nr);&lt;br /&gt;        recdelay=atoi(nr);&lt;br /&gt;      } &lt;br /&gt;      else if(strcmp(ctrl, "rectimeout", 0)) {&lt;br /&gt;        char nr[20]; //make the same size as ctrl&lt;br /&gt;        substr(nr, ctrl, 4, -1);&lt;br /&gt;        Serial.print("Set rec_timeout=");    &lt;br /&gt;        Serial.println(nr);&lt;br /&gt;        rectimeout=atoi(nr);&lt;br /&gt;      } &lt;br /&gt;      else if(strcmp(ctrl, "help", 0)) {&lt;br /&gt;        Serial.println("#rate n - set dot rate (ms)");&lt;br /&gt;        Serial.println("#recdelay n - set rec_delay (ms)");&lt;br /&gt;        Serial.println("#perr n - set error for decoding");&lt;br /&gt;        Serial.println("#rectimeout n - set rec_timeout (ms)");&lt;br /&gt;      }     &lt;br /&gt;      else {&lt;br /&gt;        Serial.print("Unknown command: ");&lt;br /&gt;        Serial.println(ctrl); &lt;br /&gt;      }&lt;br /&gt;      //Serial.flush();&lt;br /&gt;      return true;&lt;br /&gt;  } &lt;br /&gt;  return false;  //false means it didnt find a control bit, &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//pull out a section of the string&lt;br /&gt;void substr(char *ret, char *msg, int offset, int len) {&lt;br /&gt;   if(len&amp;lt;=0) len = strlen(msg);&lt;br /&gt;   for(int i=offset-1; i &amp;lt; len &amp;&amp; i &amp;lt; strlen(msg); i++) {&lt;br /&gt;      ret[i-offset] = msg[i];&lt;br /&gt;   }&lt;br /&gt;   ret[len-offset]='\0'; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//compare strings&lt;br /&gt;boolean strcmp(char *msg, char*srch, int offset) {&lt;br /&gt;   for(int i=offset; i &amp;lt; strlen(srch) &amp;&amp; i &amp;lt; strlen(msg); i++) {&lt;br /&gt;      if(srch[i] != msg[i]) return false;&lt;br /&gt;   } &lt;br /&gt;   return true;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//flash the morse code to output&lt;br /&gt;void flash(char *msg) {&lt;br /&gt;    int i=0; &lt;br /&gt;    while(msg[i]) {&lt;br /&gt;      if(msg[i] == ' ') {&lt;br /&gt;        delay(rate);  //space is a standard dot delay &lt;br /&gt;      }&lt;br /&gt;      else {&lt;br /&gt;        digitalWrite(led, HIGH);  &lt;br /&gt;        digitalWrite(sig, HIGH);&lt;br /&gt;        if(msg[i] == '.') delay(rate);  //default delay for a dot&lt;br /&gt;        else if(msg[i] == '-') delay(rate*2);  //double delay for a dash&lt;br /&gt;        digitalWrite(led, LOW); &lt;br /&gt;        digitalWrite(sig, LOW);&lt;br /&gt;      }&lt;br /&gt;      Serial.print(msg[i]);&lt;br /&gt;      delay(rate);  //delay slightly before next 'bit' &lt;br /&gt;      i++;&lt;br /&gt;    }&lt;br /&gt;    delay(rate*2);&lt;br /&gt;    Serial.println("");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//encode each character&lt;br /&gt;char * encode(char chr) {&lt;br /&gt;  switch(chr) {&lt;br /&gt;    case 'a': return ".-";&lt;br /&gt;    case 'b': return "-...";&lt;br /&gt;    case 'c': return "-.-.";&lt;br /&gt;    case 'd': return "-..";&lt;br /&gt;    case 'e': return ".";&lt;br /&gt;    case 'f': return "..-.";&lt;br /&gt;    case 'g': return "--.";&lt;br /&gt;    case 'h': return "....";&lt;br /&gt;    case 'i': return "..";&lt;br /&gt;    case 'j': return ".---";&lt;br /&gt;    case 'k': return "-.-";&lt;br /&gt;    case 'l': return ".-..";&lt;br /&gt;    case 'm': return "--";&lt;br /&gt;    case 'n': return "-.";&lt;br /&gt;    case 'o': return "---";&lt;br /&gt;    case 'p': return ".--.";&lt;br /&gt;    case 'q': return "--.-";&lt;br /&gt;    case 'r': return ".-.";&lt;br /&gt;    case 's': return "...";&lt;br /&gt;    case 't': return "-";&lt;br /&gt;    case 'u': return "..-";&lt;br /&gt;    case 'v': return "...-";&lt;br /&gt;    case 'w': return ".--";&lt;br /&gt;    case 'x': return "-..-";&lt;br /&gt;    case 'y': return "-.--";&lt;br /&gt;    case 'z': return "--..";&lt;br /&gt;    case ' ': return " ";&lt;br /&gt;    case '0': return "-----";&lt;br /&gt;    case '1': return ".----";&lt;br /&gt;    case '2': return "..---";&lt;br /&gt;    case '3': return "...--";&lt;br /&gt;    case '4': return "....-";&lt;br /&gt;    case '5': return ".....";&lt;br /&gt;    case '6': return "-....";&lt;br /&gt;    case '7': return "--...";&lt;br /&gt;    case '8': return "---..";&lt;br /&gt;    case '9': return "----.";&lt;br /&gt;    case '.': return ".-.-.-";&lt;br /&gt;    case ',': return "--..--";&lt;br /&gt;    case '?': return "..--..";&lt;br /&gt;    case '\'': return ".----.";&lt;br /&gt;    case '!': return "-.-.--";&lt;br /&gt;    case '/': return "-..-.";&lt;br /&gt;    case '(': return "-.--.";&lt;br /&gt;    case ')': return "-.--.-";&lt;br /&gt;    case '&amp;amp;': return ".-...";&lt;br /&gt;    case ':': return "---...";&lt;br /&gt;    case ';': return "-.-.-.";&lt;br /&gt;    case '=': return "-...-";&lt;br /&gt;    case '+': return ".-.-.";&lt;br /&gt;    case '-': return "-....-";&lt;br /&gt;    case '_': return "..--.-";&lt;br /&gt;    case '"': return ".-..-.";&lt;br /&gt;    case '$': return "...-..-";&lt;br /&gt;    case '@': return ".--.-.";&lt;br /&gt;    default: return "";&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void establishContact() {&lt;br /&gt;   while(Serial.available() &amp;lt;= 0) {&lt;br /&gt;      Serial.println("CN");&lt;br /&gt;      delay(1000);&lt;br /&gt;   } &lt;br /&gt;   Serial.flush();&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-3924154862755202191?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/3924154862755202191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2010/06/arduino-project-morse-code-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/3924154862755202191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/3924154862755202191'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2010/06/arduino-project-morse-code-part-2.html' title='Arduino project - Morse code (part 2)'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-6410961794436067694</id><published>2010-02-09T15:23:00.003-05:00</published><updated>2010-02-09T15:46:51.054-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Video Cards</title><content type='html'>I recently got Battlefield Bad Company 2 for the PC (beta at the moment) and wanted to make my system happy again. My older Nvidia GeForce 7950GT is starting to age under the stress of massive effects and elements in a game world. After hours of research and looking at performance charts I settled on an &lt;a href="http://www.amd.com/us/products/desktop/graphics/ati-radeon-hd-5000/hd-5770/Pages/ati-radeon-hd-5770-overview.aspx"&gt;ATI HD 5770 1GB&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There were a few things about this card that caught my eye.&lt;br /&gt;1. it was only $160&lt;br /&gt;2. It's on par with the GTX260 (Nvidia) as far as specs/price&lt;br /&gt;3. it supported DX11 which the GTX260 didn't&lt;br /&gt;&lt;br /&gt;Normally I would go with the Nvidia cards since I always had good luck with them. ATI, well 13something years back the drivers sucked and caused crashes and that left a bad taste. I took a chance they changed.&lt;br /&gt;&lt;br /&gt;After thoughts:&lt;br /&gt;The card is a solid performer. It lives up to the specs (as expected) but the drivers are, well lacking. First thing that got me was the monitor. I still have a very nice CRT (1920x1680 @ 75) and the card didn't read the DDC correctly unlike my 7950 card. It was locked at 60hz for all ranges. I searched online (now that I know about this) and found this was a wider issue for the latest drivers. The easiest fix I found was to create a monitor driver, sigh.... Given that NEC doesnt give these out (and why should they when it's built into the monitor) i found a bunch of tools so that I can input the timings and create a driver. After a few tries I did manage to get the refresh back up to 85hz but have another issue (which is also known to all ati cards after searching) of the monitor not going into standby mode. The second one isn't much of an issue at the moment as a supposed patch is being developed and this computer is primarily my gaming/photo computer and power-on only when needed. A workaround is to instead of monitor off just put the entire computer into standby :)&lt;br /&gt;&lt;br /&gt;In conclusion I probably would go with Nvidia again, after this card gets old, for the *insert 2-digit number* next &lt;insert&gt; years unless ATI has a MASSIVE lead over nvidia. It's possible that all I needed was an LCD and things would be peachy but we'll never know till my CRT goes out.&lt;/insert&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-6410961794436067694?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/6410961794436067694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2010/02/video-cards.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/6410961794436067694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/6410961794436067694'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2010/02/video-cards.html' title='Video Cards'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-2708747223870915376</id><published>2010-01-15T09:40:00.004-05:00</published><updated>2010-01-15T10:11:22.405-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><title type='text'>Arduino project - Morse code</title><content type='html'>Thanks to my brother for giving me an Arduino I've been playing around with it ever since Christmas. It took me a bit to figure out a first 'real' project to start with but I think I found an interesting one.&lt;br /&gt;&lt;br /&gt;So having a GPRS radio (like an FRS but stronger and requires a license) I always hear quick blips of morse code coming across the channels. It probably has to do with being near a few air fields but I'm interested in what it is saying. So without becoming an expert in morse code I'm writing a program for the arduino to decode it :)&lt;br /&gt;&lt;br /&gt;There's a few things that need to work for this:&lt;br /&gt;1. Sample rate: the arduino needs to sample the analog signal fast enough to convert it into dots and dashes. This can be accomplished by counting the milliseconds that the tone is active and storing it for each 'bit'. A completed phrase will have a significant pause when done. I'll take this array and send it to the decoder for processing.&lt;br /&gt;2. Decoding: Assuming this is a computer transmitting it makes it somewhat easier since the dot and dashes will be consistent. For instance I could assume a dash is 2x the time of a dot. If I wanted to decode a human operated control I would need to dynamically detect time segments between each beep as they can vary.&lt;br /&gt;3. Text interface: Since I dont have a LCD display yet I'll just dump it to the serial port and require a computer to communicate.&lt;br /&gt;4. Transmitter/receiver: I have a few GPRS radios around and will interface with the headphone port to get what I need for input/output. I will need to find a way to convert the tone into a semi-digital signal but that can be done with a bridge and a very small cap. For the output I will need to make a tone generator of around 700Hz (maybe faster for a quick transmit) which will be controlled by a pule form the arduino**.&lt;br /&gt;5. Interface: I need to come up with some key words to control the transmission rate and other variables. I.E. typing "rate=60" in the com console to set the time on-off for a dot. That way if I'm talking to someone manually operating (highly unlikely) they can decode it.&lt;br /&gt;&lt;br /&gt;**I don't plan on transmitting/responding to those signals I'm hearing since it could be the military base near by! HAHA, I wouldn't want an invasion in the middle of the night :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-2708747223870915376?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/2708747223870915376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2010/01/arduino-project-morse-code.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/2708747223870915376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/2708747223870915376'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2010/01/arduino-project-morse-code.html' title='Arduino project - Morse code'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-1656018981390319781</id><published>2010-01-01T00:21:00.001-05:00</published><updated>2010-01-14T15:36:10.823-05:00</updated><title type='text'>Camera Grip</title><content type='html'>&lt;div style="margin: 0px auto 10px; text-align: center;"&gt;I got a new toy for the camera :) It's a battery grip and hodler for my camera that allows me to take many, many more shots on a single charge. It's designed to not only contain 2 standard batteries in parallel (double the capacity) but it also contains an emergency AA cartarage and buttons on the grop for when the camera is rotated. I already am enjoying this grip with my T1i since it tends to chew battery fairly quick with 1080p movie and the IS lens I have!&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_cqm_J0G6U7Q/Szz7ZMm5-cI/AAAAAAAAAOA/ptVPWVN6j1k/s1600-h/IMG_0141.jpg"&gt;&lt;img alt="" src="http://4.bp.blogspot.com/_cqm_J0G6U7Q/Szz7ZMm5-cI/AAAAAAAAAOA/ptVPWVN6j1k/s320/IMG_0141.jpg" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style="clear: both; text-align: center;"&gt;&lt;a href="http://picasa.google.com/blogger/" target="ext"&gt;&lt;img src="http://photos1.blogger.com/pbp.gif" alt="Posted by Picasa" style="border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" align="middle" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-1656018981390319781?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/1656018981390319781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2010/01/camera-grip.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/1656018981390319781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/1656018981390319781'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2010/01/camera-grip.html' title='Camera Grip'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cqm_J0G6U7Q/Szz7ZMm5-cI/AAAAAAAAAOA/ptVPWVN6j1k/s72-c/IMG_0141.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-4381970343998177596</id><published>2009-12-08T16:24:00.005-05:00</published><updated>2009-12-15T13:50:02.605-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Subaru WRX'/><title type='text'>WRX airbags</title><content type='html'>So yesterday I had fun driving around in my 05 WRX and the airbag dummy light on. At first I thought this was an issue with the actual airbag so I plugged in my code reader (computer) and nothing... blah, so much for that. I took apart the steering column covers but couldn't find any loose wires anywhere and taking off the wheel would have been a disaster.&lt;br /&gt;After spending a few hours searching online I found out the STI has this issue every now and then where the airbag light would turn on. Turns out it's a simple fix -- seat sensors! It all of a sudden made perfect sense to me, I carried a large load over the weekend after installing a floor and must have push on that connector. Crawling under the seat (more of my hands) I tightened the connector and voala! Sooooo glad that it wasn't the airbag, that would have been at least $$$ just for the popper (not accounting for which one of the two)!&lt;br /&gt;I'll keep this in mind for a long time if that connector comes out again.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Some neat things I found out after doing this: the WRX seat would be an awesome racing seat for games :) time to go to the junk yard and get one.. too bad the nearest one is, well not near. (Yeah I had to take the seat out eventually so I can make sure the wires didn't get cut though). Also if I need lots of space I can remove that seat ;)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-4381970343998177596?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/4381970343998177596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/12/wrx-airbags.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/4381970343998177596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/4381970343998177596'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/12/wrx-airbags.html' title='WRX airbags'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-1877186077310866517</id><published>2009-11-18T22:32:00.008-05:00</published><updated>2009-11-19T12:25:21.946-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='camera'/><title type='text'>Lens tests</title><content type='html'>I did a comparison of all my lenses that I have and the new 17-55 F2.8 is FAR superior than anything I have, even my base 50mm F1.8 which I considered as my ideal. &lt;div&gt;&lt;br /&gt;&lt;div&gt;The setup:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Camera on tripod @ ISO100, AF point is in a specific section and the light source is a single 60w (equiv)  &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;CFL&lt;/span&gt; (temp around 2800). It's probably not the ideal setup but it would show the most ideal scenario under the same light source. &lt;/div&gt;&lt;div&gt;Camera is the Rebel &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-error"&gt;XT&lt;/span&gt; set on priority in RAW mode. Images are edited using GIMP and UFRaw&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span id="SPELLING_ERROR_2" class="blsp-spelling-corrected"&gt;Surprisingly&lt;/span&gt; the 28-200 is actually almost as good as my 50mm, but since it's lowest &lt;span id="SPELLING_ERROR_3" class="blsp-spelling-corrected"&gt;aperture&lt;/span&gt; is 3.5 it &lt;span id="SPELLING_ERROR_4" class="blsp-spelling-corrected"&gt;doesn't&lt;/span&gt; work well in low light. The kit 18-55 that came with my original Rebel performed about as well as can be expected for a $80 &lt;span id="SPELLING_ERROR_5" class="blsp-spelling-error"&gt;lens&lt;/span&gt;, no spectacular details but sharp enough. &lt;a href="http://picasaweb.google.com/lh/photo/Vt7PxSEOJ4gmKxO5MK1lHw?authkey=Gv1sRgCJy2zvrAh5vSvQE&amp;amp;feat=directlink"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; width: 551px; display: block; height: 412px;" id="BLOGGER_PHOTO_ID_5405654093104588482" alt="" src="http://2.bp.blogspot.com/_cqm_J0G6U7Q/SwS9wd4ipsI/AAAAAAAAAH8/0S2wujNOqwg/s400/Canon+Lense+comparison.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;You may need to click on the image to see the detail but the top left (17-55) has a very crisp detail of the rug. In general the crop window is near the bottom middle of the full frame and is not greater than 100% zoom. &lt;/p&gt;&lt;p&gt;All lenses have a sweet spot and it's possible that the 28-200 has a much better one (for instance I know macro is around 130mm and I can be very close -- 72mm cap can over fill the frame). But as far as this test goes it compares the avg range of the set I have. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-1877186077310866517?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/1877186077310866517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/11/lens-tests.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/1877186077310866517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/1877186077310866517'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/11/lens-tests.html' title='Lens tests'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cqm_J0G6U7Q/SwS9wd4ipsI/AAAAAAAAAH8/0S2wujNOqwg/s72-c/Canon+Lense+comparison.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-2656013155435621935</id><published>2009-11-18T18:36:00.000-05:00</published><updated>2009-11-18T18:36:00.274-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='camera'/><title type='text'>My new lens</title><content type='html'>A few days ago I decided it's time to get a new lens for my &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;dSLR&lt;/span&gt;. It's been quite some time (since the original Canon Rebel 6.3mp came out) since I got a lens. My 28-200 is a great lens but lacked the crisp quality indoor and low-light shots. When outdoor I will probably default to that but recently I've been inside quite a bit when I take my pictures. &lt;div&gt; &lt;/div&gt;&lt;div&gt;So you may be saying.. for crying out loud, what did you get?? Thought I would write a boring entry again huh? :) &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-corrected"&gt;OK&lt;/span&gt;, so what I got is a new &lt;a href="http://www.usa.canon.com/consumer/controller?act=ModelInfoAct&amp;amp;fcategoryid=149&amp;amp;modelid=12955"&gt;Canon 17-55 F2.8 IS&lt;/a&gt; from B&amp;amp;H. It's about 1" longer than my 28-200, heavier and wider (77mm window instead of 72mm) but it's amazing -- and puts the kit 18-55 to shame. My first picture is of course Sam, our cat.&lt;/div&gt;&lt;p&gt;&lt;img style="margin: 0px auto 10px; text-align: center; width: 320px; display: block; height: 224px;" id="BLOGGER_PHOTO_ID_5405176642982301746" alt="" src="http://4.bp.blogspot.com/_cqm_J0G6U7Q/SwMLhNky0DI/AAAAAAAAAG8/WM9QtLPKtOM/s320/IMG_1838.JPG" border="0" /&gt;Image is slightly cropped but that's it. The only thing blurry from this 1/15 shot is the whiskers from him moving. IS is &lt;span id="SPELLING_ERROR_2" class="blsp-spelling-corrected"&gt;awesome&lt;/span&gt;! &lt;/p&gt;&lt;img style="margin: 0px auto 10px; text-align: center; width: 320px; display: block; height: 214px;" id="BLOGGER_PHOTO_ID_5405286896185705330" alt="" src="http://2.bp.blogspot.com/_cqm_J0G6U7Q/SwNvyyw5A3I/AAAAAAAAAHQ/1vOJJnXj9nU/s320/IMG_1844.JPG" border="0" /&gt;&lt;br /&gt;So now when I want to get some very nice shots I don't need to snap on my 50mm f1.8 anymore :) Down side to this new lens is that I need a new camera bag!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-2656013155435621935?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/2656013155435621935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/11/my-new-lens.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/2656013155435621935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/2656013155435621935'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/11/my-new-lens.html' title='My new lens'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cqm_J0G6U7Q/SwMLhNky0DI/AAAAAAAAAG8/WM9QtLPKtOM/s72-c/IMG_1838.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-3603799337207950800</id><published>2009-10-20T11:07:00.003-04:00</published><updated>2009-10-20T11:37:01.331-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='Star Wars Force unleashed'/><category scheme='http://www.blogger.com/atom/ns#' term='PS3'/><title type='text'>Star wars: Force unleashed</title><content type='html'>So I played this game one last time on "Sith" mode (Aka "you got to be kidding/me crazy hard") after doing the previous 2 difficulties earlier.  I ended up dying quite a few times as expected, most of the time it was due to blaster fire coming in from all directions and those darn Purge Troopers. I found a lot of new force powers that work MUCH better than the other difficulties. Some of which makes boss levels very easy if done correctly. At the end I almost had all of my stats completely full which is a first, probably because most levels I re-started and it carried over points from last death.&lt;br /&gt;&lt;br /&gt;The most difficult parts were defeating Proxy (the trusty robot) and the Emperor. With Proxy I finally defeated, when he goes into his final stage, with using a specific combo, S-S-S-O (PS3: s=square, o=O) which force slams the ground and sends Proxy to the ground where he is most vulnerable. I didnt get hit once I got into that combo sequence.&lt;br /&gt;Darth Vader was a pain, but using dash and push to stun and saber slam (lightning saber attack) I was able to get him quickly.&lt;br /&gt;The emperor I probably spent &gt; 2 hours trying to figure out how to defeat, I finally went online and read "attack with Saber after he does his power attacks" which I did but it had a serious side effect... once he puts on a shield and you cant catch it quickly (or you're in a middle of a combo) your life goes from &gt;80% to &lt;10% instantly. After trying this multiple times, since it was suggested, I gave up on it and tried different things (like lightning attacks as that worked in the past) but without success. I finally found the perfect combo, lightning attack and defense! No joke. Lightning attack does a little damage (using that strictly gets him to 50% before getting roasted) but the next step is critical to surviving and is very simple. When he attacks with the lightning let it hit you for a brief time, then block. The block will raise the saber up and capture the lightning (taking the damage away from you) and feedback it to the Emperor. Repeat this as soon as the feedback gets to him, let lightning hit you and then block... repeat. I usually got 3 of these backfires before he starts to throw stuff or send in help. My life never went below 80% when I did this. Key is never attack directly with the saber like they say online when in Sith mode or you will never "defeat" him.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-3603799337207950800?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/3603799337207950800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/10/star-wars-force-unleashed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/3603799337207950800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/3603799337207950800'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/10/star-wars-force-unleashed.html' title='Star wars: Force unleashed'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-1450464876316856096</id><published>2009-09-13T13:46:00.004-04:00</published><updated>2009-09-13T13:56:02.824-04:00</updated><title type='text'>Desk Building completion</title><content type='html'>So the desk is done... well a while ago actually. I got a nice good coat of stain and polyurethane to make the surfaces dark and smooth.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cqm_J0G6U7Q/Sq0wy3oQE1I/AAAAAAAAAF0/3YLlPNjfOe8/s1600-h/DSCF1620+%28Large%29.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_cqm_J0G6U7Q/Sq0wy3oQE1I/AAAAAAAAAF0/3YLlPNjfOe8/s320/DSCF1620+%28Large%29.JPG" alt="" id="BLOGGER_PHOTO_ID_5381010780261978962" border="0" /&gt;&lt;/a&gt;I had to make a last minute extension since I got a measurement wrong (or read it wrong) for the new 24ch mixer (which we have not picked up yet). Either way everything seems to fit rather well. The only minor setback that I noticed once installed was that the cabinet door didnt close properly, but that could be due to the floor sloping or something under the carpet that is pushing up somewhere.&lt;br /&gt;What's not showing here is the lid that closes on top of the mixer, this keeps wondering hands from adjusting things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-1450464876316856096?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/1450464876316856096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/09/desk-building-completion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/1450464876316856096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/1450464876316856096'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/09/desk-building-completion.html' title='Desk Building completion'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cqm_J0G6U7Q/Sq0wy3oQE1I/AAAAAAAAAF0/3YLlPNjfOe8/s72-c/DSCF1620+%28Large%29.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-8295192245808824825</id><published>2009-08-28T12:20:00.004-04:00</published><updated>2009-08-28T12:38:38.574-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Touch Pro'/><category scheme='http://www.blogger.com/atom/ns#' term='Fuze'/><category scheme='http://www.blogger.com/atom/ns#' term='HTC'/><title type='text'>Upgrade to my phone</title><content type='html'>So way back in march I got a &lt;a href="http://davidgrundmann.blogspot.com/2009/03/cell-phone-goodies.html"&gt;HTC (Fuze) Touch Pro&lt;/a&gt; and have since 'modified' the original behavior. I finally moved away from the stock rom that the phone came with. Last night I upgraded to a new rom with a new OS version and I have to say one thing: why didn't I do this before? Besides the obvious answer that the custom roms were buggy and WM 6.5 was very beta I'm not sure why. Now 6.5 is more stable and cooked roms are better than ever.&lt;br /&gt;&lt;br /&gt;I upgraded to a rom from &lt;a href="http://forum.xda-developers.com/showthread.php?t=497699"&gt;ShEp found over at xda developers&lt;/a&gt;. This upgrade has improved the performance of the phone by at least 4x, things respond faster and even better I have more ram and rom available to me! Another surprising benefit seems that battery life remains about the same as my tweaked ATT rom, maybe better but too early to tell.&lt;br /&gt;&lt;br /&gt;So you've heard of this 'MyFi' stuff from verizon huh? Think it's snazy that this is a mobile hotspot? Well I got that as well in my phone :) While I don't have the 'teathering' plan which is an arm+leg more I can use my phone to connect my laptop in emergencies (say @ airport and flight gets canceled) or comca$t goes down or is slower than dialup again... Yes I'm bitter about it. They probably aren't fixing it because they know our whole street will go to fios once installed.&lt;br /&gt;&lt;br /&gt;Never again will I use an ATT rom and have the ability to use Windows Mobile!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-8295192245808824825?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/8295192245808824825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/08/upgrade-to-my-phone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/8295192245808824825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/8295192245808824825'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/08/upgrade-to-my-phone.html' title='Upgrade to my phone'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-8487801075703683142</id><published>2009-08-28T09:42:00.003-04:00</published><updated>2009-08-28T09:57:24.537-04:00</updated><title type='text'>Desk building update</title><content type='html'>After spending time in the garage and cutting and gluing lots of wood together things are coming along quickly.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cqm_J0G6U7Q/SpffO-L1GMI/AAAAAAAAAFs/1CPrzMNRNDg/s1600-h/DSCF1596+%28Large%29.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_cqm_J0G6U7Q/SpffO-L1GMI/AAAAAAAAAFs/1CPrzMNRNDg/s320/DSCF1596+%28Large%29.JPG" alt="" id="BLOGGER_PHOTO_ID_5375010128593754306" border="0" /&gt;&lt;/a&gt;The most difficult part was the curved portion. I used a long piece of aluminum stock (had a straight edge) and clamped it to the board surface to guide a circular saw. It's not the round stuff I was looking for but it's probably 95% accurate for a curve. 4 cuts seems to have done a very nice job. It helped that i sketched everything up and used that to measure... otherwise I would need to remember my geometry skills :)&lt;br /&gt;&lt;br /&gt;I'm using some screws in special places so that they are both hidden and provide extra structural support. I'm going to fill most in with some wood filler once completed... most as in those that need to be covered. Some of the screws will be left alone, and covered by equipment anyway,  so that the large flat surface can be removed for transportation.&lt;br /&gt;&lt;br /&gt;Things left to do:&lt;br /&gt;1. Large side support leg (probably more painful than the curved top)&lt;br /&gt;2. Surface container stuff (lid holders)&lt;br /&gt;3. Router edges so they are rounded and not sharp&lt;br /&gt;4. Sand like crazy&lt;br /&gt;5. Stain (got one of those dual action stainer with the poly in it)&lt;br /&gt;6. Stain&lt;br /&gt;7. Find a truck and install&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-8487801075703683142?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/8487801075703683142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/08/desk-building-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/8487801075703683142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/8487801075703683142'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/08/desk-building-update.html' title='Desk building update'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cqm_J0G6U7Q/SpffO-L1GMI/AAAAAAAAAFs/1CPrzMNRNDg/s72-c/DSCF1596+%28Large%29.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-6016878524558949170</id><published>2009-08-18T12:36:00.003-04:00</published><updated>2009-08-18T13:03:12.936-04:00</updated><title type='text'>Desk building</title><content type='html'>So I'm tasked with building a desk for my church's new mixer location. With the renovations we (band) decided to move the mixer location into the balcony where the sound is better and the operator can see the band. The desk is highly customized to fit curved railings and to hold the equipment. I used &lt;a href="http://sketchup.google.com/"&gt;google sketchup&lt;/a&gt; to create the drawings based on measurements I took since I don't have the luxury to measure on the fly like I normally do and it needs to be accurate because I really only get one shot.&lt;br /&gt;&lt;br /&gt;The idea behind the desk is simple, flat top to hold up to a 24ch mixer and a cabinet for the rack/amp and what not.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cqm_J0G6U7Q/SorZe5Fq62I/AAAAAAAAAFk/vezuZ8K_Mx8/s1600-h/Soundstation+v2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 182px;" src="http://2.bp.blogspot.com/_cqm_J0G6U7Q/SorZe5Fq62I/AAAAAAAAAFk/vezuZ8K_Mx8/s320/Soundstation+v2.jpg" alt="" id="BLOGGER_PHOTO_ID_5371344630336645986" border="0" /&gt;&lt;/a&gt;The idea behind this is to hold the mixer so that it can have a cover to prevent tampering by little hands (lots of kids) and to hold a few laptops for recording/projector. Inside the well ventilated cabinet will house the conditioner/effects/compressor/amp and other components. It's a large L shaped cabinet to work with the existing railing and the post.&lt;br /&gt;&lt;br /&gt;After going to my local Home Depot I got the supplies and wood stock (solid pine) to start building. I got most of the cabinet done to date but need to glue some pieces together since the larger surfaces exceeded the wood sizes.  So far I've only used my table saw to make the rectangle pieces. Once everything is dry-fitted together to make sure it works I will begin bonding the components. The desk (mixer area) will be removable so it can be transported but most of this wont have screws to enhance the aesthetics. I may end up getting a finish nailer to help with the difficult areas since I have a compressor handy (plus it will also be useful when I redo my floor). As soon as everything is together and bonded it will be time to take out the router and round the edges and then stain+seal everything which will probably take the longest. I should take pictures as I get further along.&lt;br /&gt;&lt;br /&gt;As for all the saw dust I'm collecting I may try to create my own fire log(s) :) Add a little water in a box and compress the pulp.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-6016878524558949170?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/6016878524558949170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/08/desk-building.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/6016878524558949170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/6016878524558949170'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/08/desk-building.html' title='Desk building'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cqm_J0G6U7Q/SorZe5Fq62I/AAAAAAAAAFk/vezuZ8K_Mx8/s72-c/Soundstation+v2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-5683183923872095777</id><published>2009-08-15T23:49:00.004-04:00</published><updated>2009-08-15T23:57:56.711-04:00</updated><title type='text'>Bluetooth</title><content type='html'>So I just got a new laptop for work but unfortunately it didn't come with bluetooth! Bah, why would it not come with such a simple and low power device? Anyway I browsed amazon for a bluetooth adapter that is low profile and found the perfect solution&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cqm_J0G6U7Q/SoeCnOsKmSI/AAAAAAAAAFU/LdV-e3pVlFY/s1600-h/DSCF1578.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://4.bp.blogspot.com/_cqm_J0G6U7Q/SoeCnOsKmSI/AAAAAAAAAFU/LdV-e3pVlFY/s320/DSCF1578.JPG" alt="" id="BLOGGER_PHOTO_ID_5370404691132455202" border="0" /&gt;&lt;/a&gt;This thing is small... It's basically the standard USB plug plus some small plastic (antenna). I like this because I'm able to leave it in the laptop without worrying too much of it snapping off (probably the idea anyway).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cqm_J0G6U7Q/SoeCnZKu93I/AAAAAAAAAFc/9c1G40c7lCk/s1600-h/DSCF1581.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_cqm_J0G6U7Q/SoeCnZKu93I/AAAAAAAAAFc/9c1G40c7lCk/s320/DSCF1581.JPG" alt="" id="BLOGGER_PHOTO_ID_5370404693945022322" border="0" /&gt;&lt;/a&gt;When it's plugged in it extrudes a small amount but not enough to snag on things or cause issues. It does have and annoying little blue light that is somewhat bright but is tollerable in a well lit room but not so much in a dark room.&lt;br /&gt;&lt;br /&gt;So now I can use my bluetooth mouse again without the ride-along usb dongle it came with. The best part was i got this for ~$15!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-5683183923872095777?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/5683183923872095777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/08/bluetooth.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/5683183923872095777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/5683183923872095777'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/08/bluetooth.html' title='Bluetooth'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cqm_J0G6U7Q/SoeCnOsKmSI/AAAAAAAAAFU/LdV-e3pVlFY/s72-c/DSCF1578.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-3935397614140214106</id><published>2009-07-13T09:38:00.008-04:00</published><updated>2009-07-13T12:19:37.297-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wheel alignment'/><category scheme='http://www.blogger.com/atom/ns#' term='car'/><title type='text'>Car + Alignment DIY</title><content type='html'>So I decided to align my car over the weekend after tinkering with the suspension to find an annoying vibration at highway speeds+. In turn I threw out my from wheel tow. I was considering taking the car into a shop for one of those $40-50 alignments but thought I would give it a try.&lt;br /&gt;&lt;br /&gt;I did some theory and trials (both on my car and my wife's car). I came up with an idea of using the center of the rim as a pivot point and using a string to create a parallel line between each side. I'll use ascii to describe :)&lt;br /&gt;&lt;br /&gt;[ignore the '.' - blogger thought my multiple spaces were invalid]&lt;br /&gt;Wheels:         .....-----..............-----&lt;br /&gt;Measure: ......|..................|&lt;br /&gt;String:          -------------------------&lt;br /&gt;&lt;br /&gt;As the crude drawing shows I measured 70mm from the center of each rim (alloys so no hubcap to worry about). The down side is that if the front or rear has been shoved in/out this would mess things up badly, to check I measured the rear wheel (since it has no tow) on both ends of the rim and if they match then the line is parallel with the car. The most I can determine is if i was off by ~ .3mm which would be an error of about .004 deg. The only thing this can't do is camber/caster alignments but unless you hit a massive pothole or slam into a curb this typically wont be thrown off.&lt;br /&gt;&lt;br /&gt;The alignment process is the somewhat painful part. Since lifting the wheel off the ground would invalidate the line I needed to adjust it without moving the car, cardboard and long arms for a low-clearance car! Oh an make sure to have the steering wheel straight first :) Do the same procedure as the back tires (measure along line the front and tail of the rim, not tire) and make the measurements equal. It took me a few tries because the steering arm rotated on me when re-tightening the nut. Also use a metal ruler and a level bubble otherwise you could be off by +- 1mm which could be ~.14 deg. (seems small but at highway speed will cause a drift!)&lt;br /&gt;&lt;br /&gt;Take it for a test drive -- go on a highway and on a straight let go and wave to everyone! My car went straight as an arrow and had no wondering (tow-out) [helps not having a wind or slant]. I brought it back to the garage and checked it again to make sure things stayed in place (and to double check the setup) and things looked good. Saved $50 :)&lt;br /&gt;&lt;br /&gt;[Blah legal stuff, only takes one fool to mess up your life...  Note: You take full responsibility for your own safety and car, don't blame me for your screw-up!]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-3935397614140214106?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/3935397614140214106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/07/car-alignment-diy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/3935397614140214106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/3935397614140214106'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/07/car-alignment-diy.html' title='Car + Alignment DIY'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-7301114287971619770</id><published>2009-06-30T16:14:00.004-04:00</published><updated>2009-07-01T10:15:04.798-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gran tursimo'/><category scheme='http://www.blogger.com/atom/ns#' term='PS3'/><category scheme='http://www.blogger.com/atom/ns#' term='GT5'/><category scheme='http://www.blogger.com/atom/ns#' term='racing'/><title type='text'>GT5 - Prologue</title><content type='html'>Gran Turismo 5  - Prologue.&lt;br /&gt;&lt;br /&gt;I got this game for the PS3 from my brother a while back and at first it wasn't quite what I expected it.. Unlike the earlier generations (GT2) where you could overly power a car up (Pikes Peak - 1000HP car on a 1000lb frame.. hmmm) this version is based on real cars and the only tuning one can do is basic HP addition (no buying parts like massive Stage 4 turbos), downforce and traditional racetuning once you're in S class. Once I got into it the game is quite fun and challenging. I basically had 3 cars that got me though the whole game. the Subaru WRX for class C/B, the Viper/tuned for B/A/S and then the S2000 for the really hard S class races (S10 for instance).&lt;br /&gt;&lt;br /&gt;I did fairly well and got first place in almost all races except a few, namely S10 which took me quite a few hours and painful frustration to get 3rd. How did I do it? well I used my Logitech G25 racing wheel, the S2000 and basically gave as much traction as possible and tried to keep the HP up as possible while under the 750 point limit (I added an extra 10% weight). This didnt make me scream past everyone, in fact it was a bit slower on straights... BUT it did take control of the windy track very well! For anyone who races this event all I can say is use the S2000 since it has the best overall control of most cars (doesn't loose traction or spin out easily) AND take it slow/steady though corners! The first lap I passed 4 cars (out of 16), pass 2 in the second lap (out of 5), 3rd lap passed 1 and 4/5 lap is where you finally catch up with the rest of them. To me it seemed that by not powering though corners (power slides, going crazy fast and burning rubber) makes the AI run slower, like the S10 is trying to teach you to go slow and steady to get the super class license. I spent many hours pounding cars up with 700HP and couldn't pass 13th place or over power any car but as soon as I slowed down and took corners.. well smoother I was passing people fairly easily. It also helps if you have a real wheel instead of thumbs and fingers for throttle/steering.&lt;br /&gt;&lt;br /&gt;(FYI, I bought the Ford GT test, Lotus Eclis 111/tuned(CRAP IMHO) and a few others that online forums suggested, the Ford GT is a MR car and can easily spin or slide corners which can work well if you really know exactly when to brake and turn. I was able to do this and did very well for a few laps (passing 6 in first lap) but with that risk of sliding, once you hit the dirt slightly or just overdo a corner slightly you're done for it, same thing with the Eclis or any other MR car).&lt;br /&gt;&lt;br /&gt;Now that I have the S-class license the F2007 (Formula car) is quite something! Dont expect to use this for any of the S-class races since the min point is around 920 but it's sure fun to lap everyone in the other classes &gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-7301114287971619770?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/7301114287971619770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/06/gt5-prologue.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/7301114287971619770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/7301114287971619770'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/06/gt5-prologue.html' title='GT5 - Prologue'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-6840483404917385709</id><published>2009-06-25T15:51:00.004-04:00</published><updated>2009-06-25T15:55:39.778-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pinout'/><category scheme='http://www.blogger.com/atom/ns#' term='Electronics'/><title type='text'>Pinout?</title><content type='html'>No it's not a crazy game or anything but something very useful online for those who hack devices :)&lt;br /&gt;&lt;br /&gt;http://www.allpinouts.org/index.php/Main_Page&lt;br /&gt;&lt;br /&gt;The wiki gives pin connection (and sometimes schematics) of devices that could be useful for other things! Imagine, you can hack the ps2 controller to use for a remote control robot or finally figure out that connector for your wide &amp;amp; annoying cell phone... or if you have a o-scope and schematic drawer you can make your own pinout and help others. Sadly I don't have an o-scope :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-6840483404917385709?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/6840483404917385709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/06/pinout.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/6840483404917385709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/6840483404917385709'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/06/pinout.html' title='Pinout?'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-8020683397441931964</id><published>2009-06-04T16:34:00.006-04:00</published><updated>2009-06-08T14:56:03.237-04:00</updated><title type='text'>The Wedding</title><content type='html'>I was recently presented an opportunity to photograph a wedding as being the 'Pro'. Well suffice to say this really was my first time in such a situation. Being the prepared type I researched the where/when aspect and places. This proved to be very useful in that the restaurant where the wedding/reception was held in is a dark place, luminosity wise that is. Given that it was darker than what is desired I knew the flash would be utilized 100%... so pack tons of AA batteries! To my surprise I didn't do a single replacement :)&lt;br /&gt;&lt;br /&gt;The gear that I had sufficed and 'did the job' though when compared to someone who does this as a profession it probably sucked, either way I was more than happy to help out with the photos :) On me I had a Canon and Nikon camera, 50/1.8 and 28-70/2.8 (or something close in zoom range). I used the Nikon mostly due to the nature it had a 12MP sensor and a good wide/narrow lens with wide aperture. The aperature is key for weddings from what I understand, not only does it let in more light but makes portrait like pictures work well by blurring surrounding objects (aka depth of field).&lt;br /&gt;&lt;br /&gt;For advice I asked my brother for some help as he, in my opinion, takes MUCH better images than I do. He gave me some great pointers such as shoot in manual mode and keep the aperture as wide as possible. I did this and the feel of the picture shifts dramatically, something like that in a fantasy. Amongst other pointers he gave I feel the job went well in comparison if I just went and took pictures. Hats off to my bro for his help!&lt;br /&gt;&lt;br /&gt;Here's some snaps from the wedding (all un-edited!)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAFE/lZS6LTBIidY/s1600-h/ThePro_small.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAFE/lZS6LTBIidY/s320/ThePro_small.jpg" alt="" id="BLOGGER_PHOTO_ID_5345028714620265458" border="0" /&gt;&lt;/a&gt;This picture was taken by a good friend, Erica, and I'm thankful since I was the photographer :) I'm sure others got images of me in action that I'll never see but none directly show off the massive hunk of a camera I was holding. You can also get a sense on how dark the room was, notice the lights are easily visible while the background is very white (that goes to a much brighter room with skylights). And if you're wondering.. yes I was very warm in that suit!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cqm_J0G6U7Q/Si1bNoPXwbI/AAAAAAAAAE8/ys-pFut8G_Y/s1600-h/3594214158_ceca8ac2d0.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_cqm_J0G6U7Q/Si1bNoPXwbI/AAAAAAAAAE8/ys-pFut8G_Y/s320/3594214158_ceca8ac2d0.jpg" alt="" id="BLOGGER_PHOTO_ID_5345028622456963506" border="0" /&gt;&lt;/a&gt;Here's a setting of the rings and the bouquet that the bride carried.  The rings were carried by young cousins of the family.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cqm_J0G6U7Q/Si1bNuPKEwI/AAAAAAAAAE0/db2gvY36N-M/s1600-h/3593506105_7ebcb8b82b.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://4.bp.blogspot.com/_cqm_J0G6U7Q/Si1bNuPKEwI/AAAAAAAAAE0/db2gvY36N-M/s320/3593506105_7ebcb8b82b.jpg" alt="" id="BLOGGER_PHOTO_ID_5345028624066679554" border="0" /&gt;&lt;/a&gt;The Bride and Groom, congrats to Nick and Ann!&lt;br /&gt;&lt;br /&gt;Those are just some sample shots. I cant really upload all 600+ images, some good and some bad. They are posted on Nick's Flickr account.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-8020683397441931964?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/8020683397441931964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/06/wedding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/8020683397441931964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/8020683397441931964'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/06/wedding.html' title='The Wedding'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAFE/lZS6LTBIidY/s72-c/ThePro_small.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-7786016245603446470</id><published>2009-04-30T11:07:00.007-04:00</published><updated>2009-04-30T15:47:08.489-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='A/C Hack'/><category scheme='http://www.blogger.com/atom/ns#' term='Kenmore 12000 Window AC'/><title type='text'>Hacking the AC</title><content type='html'>So with the 2 days of record heat that we had recently I decided to 'upgrade' our AC unit temperature sensor due to a 3rd day of record heat. After the first few days of high heat the AC worked great except it cycled on and off like crazy and could barely keep up. The problem is that the sensor is a bit sensitive and gets too cold if any of the cold air gets back into the intake faster than it should (i.e. walking by it).&lt;br /&gt;&lt;br /&gt;The driver:&lt;br /&gt;I felt confident that the 12,000 BTU/h AC could handle the large area but it never could under a full sun because of this cycling on and off. I also didn't want to spend $$$ on getting another unit that this one should be able to handle.&lt;br /&gt;&lt;br /&gt;So what to do about this issue? Replace that sensor with a digital thermostat of course! With this upgrade not only would I be able to use the time triggered events (cooler when home, warmer when away) I would also be able to see *exactly* what the sensor temperature is reporting and adjust the position as needed.&lt;br /&gt;&lt;br /&gt;Since the thermostat isn't made for high-current I cant simply use it inline with the compressor. Instead I took apart the face panel for the control unit and disconnected the thermal sensor. (If you follow this and do it your self be careful! you're playing around with enough voltage to hurt) The sensor that came with the AC is a thermistor which varies resistance with temperature (less with high heat, more with low). Using an multi-meeter I measured that a 4kohm resistor would work just fine (room temp was around 7kohm and resistande between fingers [~85F]). I didnt want to simply short it out and potentially damage the unit (though in theory it could work), hence the resistor.&lt;br /&gt;&lt;br /&gt;So what to do now? Connect the resistor between 'Rh' and 'Rc', bring one terminal from the control unit to the Rh and connect the other terminal to the 'Y'. The thermostat, when on cool, uses a relay to connect Rc to Y, I ignored all ~6 of the other pins ;) (Though these are 'standard' read the manual and look for two cooling pins, one for power in and one for compressor)&lt;br /&gt;&lt;br /&gt;I mounted the thermostat on the inlit grill of the AC, taped up a few of the vents on the thermostat that could have cool air blown into it.  I turned it on and set the temp to 72 on the AC just to make sure it turns on and set the thermostat to 79. After a few hours in 93F full sun the rooms went from 85 to 79 with no cycling :) Last year it seemed to barely keep up with the demand under the same conditions and cost me $$$ in electricity usage! I also saved quite a bit of money by not thinking I need another unit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-7786016245603446470?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/7786016245603446470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/04/hacking-ac.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/7786016245603446470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/7786016245603446470'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/04/hacking-ac.html' title='Hacking the AC'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-3507231354467578311</id><published>2009-04-06T09:36:00.004-04:00</published><updated>2009-04-10T14:42:57.991-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Router'/><category scheme='http://www.blogger.com/atom/ns#' term='wgt634u'/><title type='text'>Router project update</title><content type='html'>Extension on &lt;a href="http://davidgrundmann.blogspot.com/2009/03/router-project.html"&gt;http://davidgrundmann.blogspot.com/2009/03/router-project.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So I got the router up an running but not without flaws. Apparently there is a serious worm going around targeting openwrt project based routers. While the security risk is limited to bad passwords and open ports I decided not to take the chance so it's not going to be a gateway.&lt;br /&gt; My main server is now off and sitting quietly while I have 2 routers up an running for our network. One is a wireless router that hosts the gateway (generic wifi router) and the other is the print server (WGT6534u).&lt;br /&gt;The print server portion of this is a bit tricky, I'm lucky that my other printer has a network port on it (HPCL3600N)... If it didn't then I would potentially get a confusing mixture of devices if the router reboots. The mapping to /dev/lp[0-9] is dymaic and the print server (p910nd) points to each dev directly. I could make a dynamic script to scope the device ID and bind it accordingly but I didn't really need to since only 1 port is used.&lt;br /&gt;The p910nd driver for the print server is interesting... typically I would use cups but the wiki for openwrt used p910nd which is a non buffering version of a server (basically it just pushes the raw data directly to the printer where cups spools it locally then prints). The bad side to this is that if the printer is off the job will be lost right away where cups could store it till the printer is back on.&lt;br /&gt;Since my requirements became less by not using as a direct gateway I removed the usb key and loaded the small set of utils on ROM (ssh/p910nd/usb-drivers). Now I have an extra key :) The router now boots slightly faster than before (maybe 1-2 seconds) because it doesn't need to change the root system to the usb key and that the usb port is somewhat slow (despite being usb2)&lt;br /&gt;&lt;br /&gt;Since my goal was to reduce power, the 2 routers (gateway + print) consume 12w combined without many compromises. This is 10x less and with $/kwH around $0.17 I will save quite a bit!&lt;br /&gt;&lt;br /&gt;Now the real test: will they last? The reason why I used a server (PC/linux) was that I had 3 routers crash constantly or be flaky and burn up (not flames, though that would be cool)! I got tired of rebooting them every day so I built one. I guess if these routers dont work I'll buy an n270 atom chip + mobo and build my system that way :)&lt;br /&gt;&lt;br /&gt;So what to do with the 2nd WGT634u? Hmm, maybe a security cam to take place of a $200+ one?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-3507231354467578311?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/3507231354467578311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/04/router-project-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/3507231354467578311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/3507231354467578311'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/04/router-project-update.html' title='Router project update'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-3212647056296757203</id><published>2009-03-21T15:46:00.009-04:00</published><updated>2009-05-28T11:36:23.673-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Touch Pro'/><category scheme='http://www.blogger.com/atom/ns#' term='Fuze'/><category scheme='http://www.blogger.com/atom/ns#' term='HTC'/><title type='text'>Cell phone goodies!</title><content type='html'>So after a few weeks of having my new cell I'm going to write about it. Let me start by saying it is a MASSIVE improvement over my old phone. I got the &lt;a href="http://www.htc.com/www/product/touchpro/overview.html"&gt;HTC Fuze (AKA Touch Pro)&lt;/a&gt; and I could not be happier about it. This phone does everything I was looking for - maps, messaging, youtube,web and basically what ever I want. Of course, anyone who knows me well knows I cant leave well-enough alone so I modified this thing so much I already had to hard-reset it because of a boo-boo :)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cqm_J0G6U7Q/ScVGPYnzYqI/AAAAAAAAAC0/QVjM8qVwfiA/s1600-h/DSCF1518+%28Medium%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 199px;" src="http://4.bp.blogspot.com/_cqm_J0G6U7Q/ScVGPYnzYqI/AAAAAAAAAC0/QVjM8qVwfiA/s320/DSCF1518+%28Medium%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5315732165302117026" border="0" /&gt;&lt;/a&gt;My old phone is a HTC 3125 (Right) and my leatherman (left) and the HTC Fuze (middle). One of the things I miss is the external screen on my old phone, but that's minor over getting a touch screen!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cqm_J0G6U7Q/ScVGUMxtTiI/AAAAAAAAAC8/AtoBHJN11Us/s1600-h/DSCF1519+%28Medium%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="http://1.bp.blogspot.com/_cqm_J0G6U7Q/ScVGUMxtTiI/AAAAAAAAAC8/AtoBHJN11Us/s320/DSCF1519+%28Medium%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5315732248021782050" border="0" /&gt;&lt;/a&gt;When opened it's clear that the Fuze is much better at messaging. The vibrant screen is light controlled and the resolution is excellent (640x480)... better than almost any other phone.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cqm_J0G6U7Q/ScVGZI7fbRI/AAAAAAAAADE/7tbSE48KtVs/s1600-h/DSCF1520+%28Medium%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 186px;" src="http://3.bp.blogspot.com/_cqm_J0G6U7Q/ScVGZI7fbRI/AAAAAAAAADE/7tbSE48KtVs/s320/DSCF1520+%28Medium%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5315732332888419602" border="0" /&gt;&lt;/a&gt;The camera on this is very nice in that it's auto-focus. I believe it used the same idea as a CD reader by using electo-magnets with a lens element.  The reason why I say this is when trying to focus on an object really close and it gets a lock, once I let go of the button it snaps to return to normal state. --- This is another nice feature, all the buttons are captive in that a touch activates a first level and a press is another (like a SLR camera button).&lt;br /&gt;&lt;br /&gt;So, as stated above I did many, many upgrades to the base install. Here's a few of the things I found particular useful and stable (Not going to link since they can be updated - most of them are from &lt;a href="http://www.freewarepocketpc.net/"&gt;http://www.freewarepocketpc.net&lt;/a&gt;)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;S2U2 - Slide to unlike like iphone (required due to lack of locking).&lt;/li&gt;&lt;li&gt;Advanced Configuration Tool - Tweak it! Used to increase cache sizes to speed thigns up and also to improve battery life&lt;/li&gt;&lt;li&gt;Diamond TF3d Config - Tweak Touchflow 3D settings (also used to remove a tab)&lt;/li&gt;&lt;li&gt;Diamond Tweak - Another tweak, similar to Advanced Config tool&lt;/li&gt;&lt;li&gt;Google maps - Boo ya! Also included latitude :)&lt;/li&gt;&lt;li&gt;Gremote - use the phone like a mouse, in the air :) Uses accelerometer for positioning.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;HTC Album TP2 - Upgrade to album viewer in this release.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Microsoft Live Search - Like google maps but can accept voice queries and is sometimes more accurate.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;MoDaCo Smartphone GPS Activator - enable GPS to be useful for other things&lt;/li&gt;&lt;li&gt;Power Guard - see what consumes the most power (typical Idle is 80mA-100mA)&lt;/li&gt;&lt;li&gt;Seismo - neat little tool that uses accelerometer. Hit the table and see!&lt;/li&gt;&lt;li&gt;Total Commander - Must have for registry hacks&lt;/li&gt;&lt;li&gt;WM6.1 fix for smtp mail [WindowsMobile61-KB958639] - Required to send email with this version (&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=d9d71b2e-d2dd-44f2-86e5-1e53aad7fb7a&amp;amp;displaylang=en&amp;amp;tm"&gt;link to MS&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Fuze PTT mod - Stupid PTT button was useless, remap to camera or something. &lt;/li&gt;&lt;/ul&gt;Amongst those packages I have also done registry hacks to further increase cache size beyond the apps and other fun things. Most of the real fun stuff is too complex to put here.&lt;br /&gt;&lt;br /&gt;I got the MS Dev packages (free!) for windows mobile and plan on giving that a try to see what I can do with the g-sensor and what not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-3212647056296757203?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/3212647056296757203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/03/cell-phone-goodies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/3212647056296757203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/3212647056296757203'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/03/cell-phone-goodies.html' title='Cell phone goodies!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cqm_J0G6U7Q/ScVGPYnzYqI/AAAAAAAAAC0/QVjM8qVwfiA/s72-c/DSCF1518+%28Medium%29.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-767255066993539640.post-5963943362941051426</id><published>2009-03-12T17:50:00.000-04:00</published><updated>2009-03-12T17:51:46.649-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Router'/><category scheme='http://www.blogger.com/atom/ns#' term='mips'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='wgt634u'/><category scheme='http://www.blogger.com/atom/ns#' term='hacks'/><title type='text'>Router Project</title><content type='html'>So after getting a bit annoyed at our electric bill being the same month after month I decided to get back onto building a mini smart router. Currently I use a P4 computer (under clocked) that hosts files, is a web server, print server and a quality of service for internet amongst other things. Most off-the-shelf router don't even come close except for one particular model.. a netgear wgt634u which is no longer made (shame).&lt;br /&gt;&lt;br /&gt;So why use an out of date router? I had it and wanted to make the best of it, besides I have 2 so if i get one working then i can use the other for those network cameras :) The best part is that the 634u is a mips processor with 8mb of flash, usb, multiple network ports and wireless all in a 5w package.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cqm_J0G6U7Q/SbiKyXBUQRI/AAAAAAAAABc/iTXQciRSSXg/s1600-h/DSCF1489+%28Medium%29.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 314px;" src="http://4.bp.blogspot.com/_cqm_J0G6U7Q/SbiKyXBUQRI/AAAAAAAAABc/iTXQciRSSXg/s320/DSCF1489+%28Medium%29.JPG" alt="" id="BLOGGER_PHOTO_ID_5312148358261129490" border="0" /&gt;&lt;/a&gt;*Here's an image of a semi-modified of the 634u.&lt;br /&gt;&lt;br /&gt;I got this at CompUSA refurbished for cheap! The reason for refurb (my guess): overheating, hence the extra heatsinks. The black one is the processor (broadcom mips 200mhz) and is on with epoxy. The others use thermal tape is is of my doing. With an IR gun the heatsink gets up to 60C quickly.. a bit more than I appreciate so an addition of a small fan should suffice.&lt;br /&gt;&lt;br /&gt;I found a nice initial disto: &lt;a href="http://wiki.openwrt.org/OpenWrtDocs/Hardware/Netgear/WGT634U"&gt;http://wiki.openwrt.org/OpenWrtDocs/Hardware/Netgear/WGT634U&lt;/a&gt; that is proving most useful. I had to buy some components to build a serial comunication interface and get a usb adaptor.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cqm_J0G6U7Q/SbiK1sVPk8I/AAAAAAAAABk/XRkd2hjqhw0/s1600-h/DSCF1494+%28Medium%29.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 98px;" src="http://4.bp.blogspot.com/_cqm_J0G6U7Q/SbiK1sVPk8I/AAAAAAAAABk/XRkd2hjqhw0/s320/DSCF1494+%28Medium%29.JPG" alt="" id="BLOGGER_PHOTO_ID_5312148415521461186" border="0" /&gt;&lt;/a&gt;The chip is a SP232CP. When connected I'm able to talk with the router and load linux on it via some very old connumication ideas (tftp). So far I've been able to load usb drivers for the thumb drive. I found some extra commands to swap what the root is so I can use the thumb drive instead of flash which gives me much more space to load stuff :) Once I got this down (and revisited how to modify the rd.d) I started to load openssh and cups. I plan on more but need to ensure this minimum mount of tools works before going further.&lt;br /&gt;&lt;br /&gt;Once I'm done I will cut my server energy usage by 24x (old server uses about 120watts)&lt;br /&gt;&lt;br /&gt;If all else fails I'll just get an Intel Atom server for $70 which is about the same power consumption :) That way I can easily compile things on my own and use gentoo which is my preferred choice of linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/767255066993539640-5963943362941051426?l=davidgrundmann.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidgrundmann.blogspot.com/feeds/5963943362941051426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://davidgrundmann.blogspot.com/2009/03/router-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/5963943362941051426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/767255066993539640/posts/default/5963943362941051426'/><link rel='alternate' type='text/html' href='http://davidgrundmann.blogspot.com/2009/03/router-project.html' title='Router Project'/><author><name>Dave</name><uri>http://www.blogger.com/profile/00564251819572018068</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh5.ggpht.com/_cqm_J0G6U7Q/Si1bS_k0I_I/AAAAAAAAAbQ/AXF-Wln97HE/s144/ThePro_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cqm_J0G6U7Q/SbiKyXBUQRI/AAAAAAAAABc/iTXQciRSSXg/s72-c/DSCF1489+%28Medium%29.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
