<?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-1181078707803334890</id><updated>2011-12-16T02:56:51.969-08:00</updated><category term='dynamic'/><category term='Hartley'/><category term='tutorial'/><category term='Radio'/><category term='Receiver'/><category term='GNUSim8085'/><category term='config'/><category term='.bin'/><category term='c'/><category term='electronics'/><category term='Oscillator'/><category term='8085'/><category term='Assembler'/><category term='gnuasm85'/><category term='AM'/><category term='dns'/><category term='ddclient'/><category term='internet'/><category term='parallel'/><category term='server'/><category term='ubuntu'/><category term='port'/><category term='project'/><category term='50 MHz'/><category term='Transmitter'/><category term='Intel'/><category term='car'/><title type='text'>Homebrew Tech</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-57432805765478756</id><published>2011-12-16T00:34:00.000-08:00</published><updated>2011-12-16T02:56:51.979-08:00</updated><title type='text'>Mineserv: Automatic Start/Stop Perl Init Script</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://docs.google.com/open?id=0B-kMjjaL8EzpYmEwY2NjYjgtOGUzZS00ZDM3LTljYzgtZjRlYzZkYjI1MDE5"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 180px; height: 173px;" src="http://1.bp.blogspot.com/-d5OyRbiuk-w/Tusjeb_qdzI/AAAAAAAAAXA/utliFd9x-WQ/s400/mineserv_logo.png" alt="" id="BLOGGER_PHOTO_ID_5686677960303212338" border="0" /&gt;&lt;/a&gt;I was getting tired of having to manually start and stop my Minecraft server whenever the server rebooted and I couldn't make backups without manually disabling level saving first. I wasn't too happy with the shell script alternatives so I wrote my own version with Perl.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Because the Minecraft server does not support daemon processes you need a program called "GNU Screen" which creates a virtual terminal that can run in the background and be re-attached when needed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;To install screen, in Debian based operating systems, run:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;`sudo apt-get install screen&lt;/span&gt;`&lt;br /&gt;For other distributions check your package manager.&lt;br /&gt;Source can be found &lt;a href="http://ftp.gnu.org/gnu/screen/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This script should be very easy to modify and add functionality to and would work nicely for other services that require screen to run with a little bit of modification.&lt;br /&gt;Let me know if you add any functionality or re-hash the script for something else and I can post it here. Please &lt;a href="http://creativecommons.org/licenses/by-sa/3.0/"&gt;share alike&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Download:&lt;/span&gt;&lt;span style="font-size:180%;"&gt; &lt;a href="https://docs.google.com/open?id=0B-kMjjaL8EzpYmEwY2NjYjgtOGUzZS00ZDM3LTljYzgtZjRlYzZkYjI1MDE5"&gt;mineserv&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installing the Script&lt;/span&gt;&lt;br /&gt;- Install "screen" if you don't already have it&lt;br /&gt;- Edit the SETTINGS variables to fit your server environment.&lt;br /&gt;- Make a copy of the file in /etc/init.d/&lt;br /&gt;- Make it executable:              sudo chmod a+x /etc/init.d/mineserv&lt;br /&gt;- Add it to the init list:      sudo update-rc.d mineserv defaults&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Uninstalling the Script&lt;/span&gt;&lt;br /&gt;- Simply delete the file:          sudo rm /etc/init.d/mineserv&lt;br /&gt;- Remove from the init list:   update-rc.d -f mineserv defaults&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Using the Script&lt;/span&gt;&lt;br /&gt;- Usage: /etc/init.d/mineserv {start|stop|status|backup|cleanup [days]}&lt;br /&gt;(Backup makes a .tar.gz archive of the world folder in the backup directory&lt;br /&gt;(Cleanup deletes backups older than [days] given in the backup directory)&lt;br /&gt;&lt;br /&gt;- To send a command to the server console: /etc/init.d/mineserv command "your command"&lt;br /&gt;- To bring up the server console run: screen -r mineserv (Make sure run as the correct user)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1181078707803334890-57432805765478756?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/57432805765478756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=57432805765478756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/57432805765478756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/57432805765478756'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2011/12/mineserv-automatic-startstop-perl-init.html' title='Mineserv: Automatic Start/Stop Perl Init Script'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-d5OyRbiuk-w/Tusjeb_qdzI/AAAAAAAAAXA/utliFd9x-WQ/s72-c/mineserv_logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-7482834191260578905</id><published>2011-02-14T23:29:00.000-08:00</published><updated>2011-04-23T00:25:43.107-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.bin'/><category scheme='http://www.blogger.com/atom/ns#' term='gnuasm85'/><category scheme='http://www.blogger.com/atom/ns#' term='GNUSim8085'/><category scheme='http://www.blogger.com/atom/ns#' term='Assembler'/><category scheme='http://www.blogger.com/atom/ns#' term='Intel'/><category scheme='http://www.blogger.com/atom/ns#' term='8085'/><title type='text'>A Parser for GNUSim8085 Assembler Listings</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-2NV-zxAS4pU/TVrjhn2DYMI/AAAAAAAAATY/WsZ8UT53nlE/s1600/hbt85_helloworld.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-2NV-zxAS4pU/TVrjhn2DYMI/AAAAAAAAATY/WsZ8UT53nlE/s400/hbt85_helloworld.JPG" alt="" id="BLOGGER_PHOTO_ID_5574017655595294914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;span style="font-style: italic;"&gt; I am happy to announce that this &lt;/span&gt;&lt;a style="font-style: italic;" href="https://bugs.launchpad.net/gnusim8085/+bug/579344"&gt;functionality based off of my code&lt;/a&gt;&lt;span style="font-style: italic;"&gt; will be added to GNUSim8085 in version 1.3.8.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've been building an 8 bit microcomputer (still a work in progress) around the classic Intel 8085 processor. I found this excellent open source program, &lt;a href="http://gnusim8085.org/"&gt;GNUSim8085&lt;/a&gt;, a "graphical &lt;em&gt;simulator&lt;/em&gt;, &lt;em&gt;assembler&lt;/em&gt; and &lt;em&gt;debugger&lt;/em&gt; for the Intel 8085 microprocessor in Linux and Windows."&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;This program was extremely useful for writing and debugging my operating system. Unfortunately it had no ability to assemble the program to a binary in order to burn it to ROM, forcing me to hand assemble my programs in a hex editor.&lt;br /&gt;&lt;br /&gt;To fix this, I wrote a parsing tool in C, it takes a GNUSim8085 assembler listing and strips out the hex data and OP codes to a binary file.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Download:&lt;/span&gt;&lt;span style="font-size:180%;"&gt; &lt;a href="https://docs.google.com/leaf?id=0B-kMjjaL8EzpYThmN2QzNDAtMjJkNi00OTljLTgxZDMtOWZmZGRjMGExMTYx&amp;amp;sort=name&amp;amp;layout=list&amp;amp;num=50"&gt;gnuasm85.c&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Update:&lt;/span&gt;&lt;span style="font-size:130%;"&gt; I was able to get it to compile in GCC for windows, you can grab the &lt;a href="https://docs.google.com/leaf?id=0B-kMjjaL8EzpOWU3ZDhlOGYtNTM3Ny00YjU4LTg2MWYtYmI1ZGEwMWU5YmJk&amp;amp;sort=name&amp;amp;layout=list&amp;amp;num=50"&gt;compiled .exe here.&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instructions:&lt;/span&gt; Open up your assembly program in GNUSim85, make sure it runs. Set the "Load me at" value to the proper address offset. Then hit Ctrl + L to generate an assembler listing of your program and save it. Then run that assembler listing through gnuasm85 like so, "&lt;span style="font-style: italic;"&gt;gnuasm85 foo.asm -o foo.bin&lt;/span&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1181078707803334890-7482834191260578905?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/7482834191260578905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=7482834191260578905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/7482834191260578905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/7482834191260578905'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2011/02/parser-for-gnusim8085-assembler.html' title='A Parser for GNUSim8085 Assembler Listings'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-2NV-zxAS4pU/TVrjhn2DYMI/AAAAAAAAATY/WsZ8UT53nlE/s72-c/hbt85_helloworld.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-4577206042285483455</id><published>2010-05-09T17:14:00.000-07:00</published><updated>2011-08-05T01:04:15.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hartley'/><category scheme='http://www.blogger.com/atom/ns#' term='Transmitter'/><category scheme='http://www.blogger.com/atom/ns#' term='Radio'/><category scheme='http://www.blogger.com/atom/ns#' term='Receiver'/><category scheme='http://www.blogger.com/atom/ns#' term='Oscillator'/><category scheme='http://www.blogger.com/atom/ns#' term='AM'/><category scheme='http://www.blogger.com/atom/ns#' term='50 MHz'/><title type='text'>50 MHz AM Transmitter and Receiver</title><content type='html'>&lt;object height="300" width="400"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Rv1pxBMGIiE&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Rv1pxBMGIiE&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="300" width="400"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;My fist adventure in radio! I  started off by building a Hartley oscillator with one transistor and  then amplitude modulated a signal with a second transistor. I then built  an AM receiver schematic I found and calculated the tank circuit for the 50 MHz band.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Understand that this transmitter is extremely simple and haphazardly thrown together, it does not transmit any further than across the room but it is useful for understanding the basic concept of a transmitter.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://docs.google.com/leaf?id=0B-kMjjaL8EzpZjBhYmQzOTctN2NiOS00ZjYwLWE5M2UtYzgwNGRmOTVhZmMy&amp;amp;sort=name&amp;amp;layout=list&amp;amp;num=50"&gt;AM Transmitter Schematic&lt;/a&gt;&lt;br /&gt;(Q1 makes the Hartley oscillator, Q2 amplitude modulates the signal. It's only broadcast across a room. To increase power you would need to add some amplification. You may &lt;a href="http://www.dxzone.com/cgi-bin/dir/jump2.cgi?ID=13211"&gt;find this helpful&lt;/a&gt; for calculating the resistance values needed)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.epanorama.net/zen_schematics/Circuits/rf/amrec.html"&gt;AM Receiver Schematic&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;(I recommend replacing the 120k &lt;/span&gt;regenerative feedback resistor with a variable resistor. I used 2N3904 transistors in my build)&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The Tank Circuit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The operating frequency of the Hartley oscillator and the frequency tuned in by the receiver is determined by the inductor (L) and the capacitance (C) values in the tank circuit.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://www.allaboutcircuits.com/vol_2/chpt_6/2.html"&gt;Explanation of a "tank circuit".&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In my circuit the variable capacitor's max  capacitance is at 265 pF (estimated 290 pF to account for some stray capacitance) and the coils are roughly 1.746 uH (Micro Henrys). Turning the variable capacitor lowers it's capacitance and thus increases the resonant frequency.&lt;br /&gt;&lt;br /&gt;I made the air-core inductor out of a .25 inch diameter soda straw.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Specs:&lt;/span&gt;&lt;br /&gt;Diameter:   &lt;span style="font-style: italic;"&gt;.25 inches&lt;/span&gt;&lt;br /&gt;Length:      &lt;span style="font-style: italic;"&gt;.75 inches&lt;/span&gt;&lt;br /&gt;Turns:        &lt;span style="font-style: italic;"&gt;31&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This equation can be used for calculating the dimensions of an air-core inductor,&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://2.bp.blogspot.com/-Twx1oZQ-wkw/Tjuj9fsf1hI/AAAAAAAAAWk/8Qx6K9xgiks/s1600/aircore_formula.gif"&gt;&lt;img style="cursor: pointer; width: 227px; height: 72px;" src="http://2.bp.blogspot.com/-Twx1oZQ-wkw/Tjuj9fsf1hI/AAAAAAAAAWk/8Qx6K9xgiks/s400/aircore_formula.gif" alt="" id="BLOGGER_PHOTO_ID_5637279635459790354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;Where,&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;L is inductance  in uH&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;        d is coil diameter in inches&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;       l  is coil length in inches&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;       n is number of turns.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I found this &lt;a href="http://www.daycounter.com/Calculators/Air-Core-Inductor-Calculator.phtml"&gt;air-core inductor calculator&lt;/a&gt; to be a very handy tool for designing coils.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Calculating Inductance Needed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;To calculate the inductance L (in mico Henrys) needed you will need to know 2 things. What frequency you want to operate in (I chose 50 MHz because its in the amateur band)&lt;span style="font-weight: bold;"&gt; and &lt;/span&gt;your maximum variable capacitance (265 pF + 25 pF estimated stray capacitance = 290 pF)&lt;br /&gt;&lt;br /&gt;The easy way to calculate this is,&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-3n08v6Vt2x0/Ti0PcCJ-PhI/AAAAAAAAAWA/nmXLLoaVQ60/s1600/air_core_dimensions.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 63px;" src="http://2.bp.blogspot.com/-3n08v6Vt2x0/Ti0PcCJ-PhI/AAAAAAAAAWA/nmXLLoaVQ60/s400/air_core_dimensions.png" alt="" id="BLOGGER_PHOTO_ID_5633175683199811090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So using my values as an example,&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-liC7bIzjwyc/TjuiCRBHVAI/AAAAAAAAAWU/WK_H5h6yD8Y/s1600/inductor_equation_two.gif"&gt;&lt;img style="cursor: pointer; width: 317px; height: 79px;" src="http://2.bp.blogspot.com/-liC7bIzjwyc/TjuiCRBHVAI/AAAAAAAAAWU/WK_H5h6yD8Y/s400/inductor_equation_two.gif" alt="" id="BLOGGER_PHOTO_ID_5637277518395823106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Which comes out to,&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-YHULxfc8t8w/TjuidmaYcXI/AAAAAAAAAWc/b84y70WRfXU/s1600/result.gif"&gt;&lt;img style="cursor: pointer; width: 176px; height: 33px;" src="http://4.bp.blogspot.com/-YHULxfc8t8w/TjuidmaYcXI/AAAAAAAAAWc/b84y70WRfXU/s400/result.gif" alt="" id="BLOGGER_PHOTO_ID_5637277987995414898" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1181078707803334890-4577206042285483455?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/4577206042285483455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=4577206042285483455' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/4577206042285483455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/4577206042285483455'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2010/05/50-mhz-am-transmitter-and-receiver.html' title='50 MHz AM Transmitter and Receiver'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Twx1oZQ-wkw/Tjuj9fsf1hI/AAAAAAAAAWk/8Qx6K9xgiks/s72-c/aircore_formula.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-7915040162257752469</id><published>2010-04-01T23:38:00.000-07:00</published><updated>2011-08-05T01:59:58.565-07:00</updated><title type='text'>Digital Clock - 7490 Decade Counters and a Hacked Quartz Clock</title><content type='html'>&lt;param name="movie" value="http://www.youtube.com/v/KUlbw_Mzkh4&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/KUlbw_Mzkh4&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="300" width="400"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;No microcontrollers needed here! I started playing with some 7490 decade counters and decided to build a digital clock. The first trick was getting an accurate 1 second time base. There are a few options here, you can divide the 60 Hz AC line frequency (in the US) down to 1 Hz or you can build a crystal oscillator and divide that frequency down with decade counters.&lt;br /&gt;&lt;br /&gt;I decided to take a more hacky approach and took a 1 Hz oscillator circuit out of an analog Micky Mouse clock. There are a few different ways you can wire these up &lt;a href="http://www.josepino.com/?one_second_timebase"&gt;explained very nicely here.&lt;/a&gt; With my clock I didn't have to run the outputs  through diodes or transistors (each output is 1/2 Hz), connecting them directly together worked just fine. I also powered it off the 5 volt supply by using a current limiting LED across its power input, the alternative is to have a separate battery for the clock. Every quartz clock circuit is different so its something you have to experiment with on the breadboard before building!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oklj7eZwg2g/S7WgLti1T2I/AAAAAAAAAJg/33ZdVaztdkk/s1600/digital_clock.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_oklj7eZwg2g/S7WgLti1T2I/AAAAAAAAAJg/33ZdVaztdkk/s400/digital_clock.JPG" alt="" id="BLOGGER_PHOTO_ID_5455442646693924706" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://docs.google.com/fileview?id=0B-kMjjaL8EzpOGVmZmVmZjUtYjA5NC00YTE5LWFiNmQtOWM5MjcyYjFlY2Ji&amp;amp;hl=en"&gt;digital_clock_schematic.pdf&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The time is kept by six 7490 decade counters. The 1 Hz clock is pulsed into a 7490 wired up as a mod 10 counter (for seconds 0-9). The output of the mod 10 counter is pulsed into a 7490 wired as a mod 6 counter (for seconds 0-5). That circuit is then duplicated for the minutes (0-59). The hours are then counted by two 7490s wired up as a mod 24 counter. (0-23).&lt;br /&gt;&lt;br /&gt;The tens of seconds are displayed by 3 LEDs in binary. The 7 segment displays are driven by four 4511 BCD-to-7 segment decoders. I needed thirty-three 100 Ohm resistors in total for all the displays and LEDs. Good luck!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://hackaday.com/2010/04/03/clock-sans-microcontroller/"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 198px; height: 30px;" src="http://4.bp.blogspot.com/_oklj7eZwg2g/THIof8NksdI/AAAAAAAAAQA/QhGT2loXtq4/s400/featured.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1181078707803334890-7915040162257752469?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/7915040162257752469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=7915040162257752469' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/7915040162257752469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/7915040162257752469'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2010/04/digital-clock-7490-decade-counters-and.html' title='Digital Clock - 7490 Decade Counters and a Hacked Quartz Clock'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_oklj7eZwg2g/S7WgLti1T2I/AAAAAAAAAJg/33ZdVaztdkk/s72-c/digital_clock.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-1869420107798610247</id><published>2010-01-30T15:23:00.000-08:00</published><updated>2010-08-23T00:53:18.586-07:00</updated><title type='text'>Time Delayed Door Alarm</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oklj7eZwg2g/S2TA6ACrZrI/AAAAAAAAAFU/Y4G8zL_Fajs/s1600-h/door_alarm_finished.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 270px;" src="http://2.bp.blogspot.com/_oklj7eZwg2g/S2TA6ACrZrI/AAAAAAAAAFU/Y4G8zL_Fajs/s400/door_alarm_finished.JPG" alt="" id="BLOGGER_PHOTO_ID_5432679153191839410" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;My cat likes to open the front door if we don't latch it properly, which is often. Waking up to a cold house sucks! I designed a time delayed alarm with a couple of 555 timers, if the door is open for roughly 30 seconds it sounds off a piezoelectric speaker until the door is closed again.&lt;br /&gt;&lt;br /&gt;Here is the circuit.&lt;br /&gt;&lt;a href="https://docs.google.com/fileview?id=0B-kMjjaL8EzpODJjOTI4OWYtMTAzMS00YzZhLWIwZjQtOTkzYjNhMDBmM2Nl&amp;amp;hl=en"&gt;(Printer Friendly PDF)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_oklj7eZwg2g/S2TBuV4s-SI/AAAAAAAAAFk/gFJ3I8tQD1o/s1600-h/door_alarm.png"&gt;&lt;img style="cursor: pointer; width: 236px; height: 400px;" src="http://4.bp.blogspot.com/_oklj7eZwg2g/S2TBuV4s-SI/AAAAAAAAAFk/gFJ3I8tQD1o/s400/door_alarm.png" alt="" id="BLOGGER_PHOTO_ID_5432680052408776994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;Parts Needed:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=27422"&gt;555 Timer (x2)&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=691340"&gt;100k Resistor (x2)&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=691104"&gt;10k Resistor (x3)&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=691585"&gt;1 Meg-ohm Resistor&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=93747"&gt;33uF Electrolytic Capacitor&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=1947327"&gt;2.2 nF Ceramic Capacitor&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=38359"&gt;NPN Transistor&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=36011"&gt;Diode&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=2077280"&gt;Piezoelectric Speaker&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/StoreCatalogDrillDownView?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;freeText=16%20pin%20socket&amp;amp;search_type=jamecoall"&gt;16 Pin Socket&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=11280"&gt;9 Volt Battery Clip&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=105794"&gt;9 Volt Battery Holder&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=198731"&gt;9 Volt Battery&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=588131"&gt;Magnetic Contact Switch&lt;/a&gt; (found much cheaper at Radio Shack)&lt;br /&gt;- Radio Shack General-Purpose Circuit Board (46.8 x 72.2 mm)&lt;br /&gt;&lt;br /&gt;If you don't have any of the resistors it would be cheaper to get a &lt;a href="https://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=18104"&gt;grab bag&lt;/a&gt; rather than buy individual resistances in bulk.&lt;br /&gt;&lt;br /&gt;Also this circuit is not picky about voltages, you could probably use anywhere from 3 to 16 volts, anything that the 555 will handle.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How it works:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When the door is closed the diode keeps the capacitor (C1) discharged to ground.&lt;br /&gt;&lt;br /&gt;When the door opens and the magnetic switch is disconnected the pull up resistor (R2) sets the trigger, on the first 555, high and allows the 33uF capacitor (C1) to charge through the 1 meg-ohm resistor (R1). When the charge reaches 2/3 of the supply voltage the output pin on the 555 is set low. The time it takes for the capacitor (C1) to reach 2/3 of the supply voltage is found by this equation,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Time(sec) = (1.1) x (Resistance) x (Capacitance)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For example if we take the values used in my circuit,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Time = (1.1) x (1,000,000) x (.000033)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The time delay comes out to about 36 seconds. Depending on the quality of the capacitor its not going to be totally precise for such a long delay but its close enough for our purposes. For more precise timing you would want to use a decade counter clocked with a 555.&lt;br /&gt;&lt;br /&gt;Anyway, the output on the first 555 is inverted by the transistor, so when the output goes low after 36 seconds R4 pulls the output high, its basically a logic NOT gate. The second 555 is a simple multivibrator circuit which generates a square wave used to drive the Piezoelectric Speaker. The alarm will keep sounding until the door is closed thus resetting the circuit.&lt;br /&gt;&lt;br /&gt;If you wanted to cheat you could do away with the second 555 timer and get a Piezoelectric Buzzer which will generate a tone on its own when a DC voltage is applied to it.&lt;br /&gt;&lt;br /&gt;Let me know if you bother building one.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://hackaday.com/2010/03/06/time-delay-door-alarm/"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 198px; height: 30px;" src="http://4.bp.blogspot.com/_oklj7eZwg2g/THIof8NksdI/AAAAAAAAAQA/QhGT2loXtq4/s400/featured.png" alt="" id="BLOGGER_PHOTO_ID_5508509823431651794" border="0" /&gt;&lt;/a&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/1181078707803334890-1869420107798610247?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/1869420107798610247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=1869420107798610247' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/1869420107798610247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/1869420107798610247'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2010/01/time-delayed-door-alarm.html' title='Time Delayed Door Alarm'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_oklj7eZwg2g/S2TA6ACrZrI/AAAAAAAAAFU/Y4G8zL_Fajs/s72-c/door_alarm_finished.JPG' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-7656501607612172805</id><published>2009-11-24T20:32:00.000-08:00</published><updated>2010-08-20T12:52:17.136-07:00</updated><title type='text'>Tunnel Firefox through SSH with a SOCKS Proxy</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oklj7eZwg2g/TG7bDQ8JxvI/AAAAAAAAAOc/57TOD79ywXQ/s1600/wall-of-sheep.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_oklj7eZwg2g/TG7bDQ8JxvI/AAAAAAAAAOc/57TOD79ywXQ/s400/wall-of-sheep.jpg" alt="" id="BLOGGER_PHOTO_ID_5507580243454052082" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;You should always be careful when connecting to a public WiFi connection, you don't want to end up like these poor saps at the Defcon convention. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm sure you have found yourself in a situation where you had an &lt;span class="hw"&gt;overzealous network filter block websites on a public connection (like at a library, work, or school). Or perhaps you don't quite trust the connection you are on?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you have a Linux box at home that you can SSH into, you can set up a socks proxy to tunnel firefox over an SSH connection. To anyone else it will appear as if you were surfing from your servers connection.&lt;br /&gt;&lt;br /&gt;The command is:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ssh -D 8080 user@host -N&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;(This will work with putty on windows too)&lt;br /&gt;&lt;br /&gt;Leave that terminal running in the background then in firefox go to...&lt;br /&gt;&lt;br /&gt;Tools &gt; Options (Edit &gt; Prefrences in Linux) &gt; Advanced &gt; Network &gt; Connection Settings&lt;br /&gt;&lt;br /&gt;And set up a manual proxy configuration under the SOCKS Host to connect to localhost (IP: 127.0.0.1) and port 8080.&lt;br /&gt;&lt;br /&gt;You can also set up Pidgin to use a SOCKS proxy in the same way for more secure IM conversations.&lt;br /&gt;&lt;br /&gt;Cheers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1181078707803334890-7656501607612172805?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/7656501607612172805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=7656501607612172805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/7656501607612172805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/7656501607612172805'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2009/11/tunnel-firefox-through-ssh-with-socks.html' title='Tunnel Firefox through SSH with a SOCKS Proxy'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_oklj7eZwg2g/TG7bDQ8JxvI/AAAAAAAAAOc/57TOD79ywXQ/s72-c/wall-of-sheep.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-7315215303265052602</id><published>2009-11-08T02:05:00.000-08:00</published><updated>2011-03-20T21:12:41.257-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='dns'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='ddclient'/><title type='text'>Set up a free Dynamic DNS for your home Ubuntu server.</title><content type='html'>&lt;span style="font-style: italic;"&gt;This tutorial assumes you are using Debian based linux, such as ubuntu, and you have a server set up with root privileges on a home connection.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; Your router might already have Dynamic DNS functionality built it, specifically for the DynDNS service. If you can use that instead it will save yourself a lot of trouble! If not, read on and good luck :-)&lt;br /&gt;&lt;br /&gt;DNS stands for Domain Name System, it is the service that allows you to go to google.com instead of having to remember google's IP address. A Dynamic DNS service will accept a change in IP address for a domain name. So instead of remembering your latest IP address assigned from your ISP to connect to your home server we will only have to remember one name, for example myhomeserver.dyndns.org. The server will then report any IP changes to the Dynamic DNS service.&lt;br /&gt;&lt;br /&gt;There are a number of free Dynamic DNS services out there, for this tutorial we will be using DynDNS.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Head over to &lt;a href="http://www.dyndns.com/"&gt;http://www.dyndns.com/&lt;/a&gt; and enter in a name for your server.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.dyndns.com/"&gt;&lt;img style="cursor: pointer; width: 320px; height: 161px;" src="http://3.bp.blogspot.com/_oklj7eZwg2g/SvacQjjoYMI/AAAAAAAAAEs/J4Hp4U3yOpM/s320/dyndns.jpg" alt="" id="BLOGGER_PHOTO_ID_5401676611314016450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You will then need to make an account with Dynamic DNS. Once you are finished it should set an IP address from where you logged in from by default. Now we are going to get your Ubuntu server to check if there is a change in IP address and if so log into your DynDNS account and report the change.&lt;br /&gt;&lt;br /&gt;To accomplish this we are going to use the &lt;a href="http://www.ddclient.sourceforge.net/"&gt;ddclient&lt;/a&gt; program.&lt;br /&gt;&lt;br /&gt;First lets get ddclient from synaptic; execute this command:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo apt-get install ddclient&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It will then run through a command line based installer and ask you a few questions to set up a basic config file. Answer all the questions it asks you, the DynDNS hostname you set, your DynDNS username and password, etc.&lt;br /&gt;&lt;br /&gt;The tricky part is when it asks, "Enter the interface which is used for using dynamic DNS service."&lt;br /&gt;&lt;br /&gt;If you &lt;span style="font-weight: bold;"&gt;are not&lt;/span&gt; behind a router or a firewall you can simply enter: eth0&lt;br /&gt;&lt;br /&gt;But in my case I am behind a router so I cannot see what my global IP is, so I am going to use another server that will check the IP for me.&lt;br /&gt;&lt;br /&gt;So if you are behind a router just skip this question and we will fix it manually in the config file later.&lt;br /&gt;&lt;br /&gt;After synaptic is done installing ddclient we are going to have to manually edit the config file and add a few things. For this tutorial I am going to use emacs to edit the files.&lt;br /&gt;&lt;br /&gt;Run the command: &lt;span style="font-style: italic;"&gt;sudo emacs /etc/ddclient.conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Your config file should look something like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Configuration file for ddclient generated by debconf&lt;br /&gt;#&lt;br /&gt;# /etc/ddclient.conf&lt;br /&gt;&lt;br /&gt;pid=/var/run/ddclient.pid&lt;br /&gt;protocol=dyndns2&lt;br /&gt;use=if, if=&lt;br /&gt;server=members.dyndns.org&lt;br /&gt;login=[your dyndns username]&lt;br /&gt;password=[your dyndns password]&lt;br /&gt;yoursite.dyndns.org&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If your server &lt;span style="font-weight: bold;"&gt;is not&lt;/span&gt; behind a router then the use line should be set to "use=if, if=eth0".&lt;br /&gt;&lt;br /&gt;However if your server &lt;span style="font-weight: bold;"&gt;is&lt;/span&gt; behind a router change this line,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;use=if, if=&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to this,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;use=web, web=checkip.dyndns.com/, web-skip='IP Address'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And lastly put a new line that says,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;daemon=600&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This will tell the script to check your IP address every 10 minutes (600 seconds) using checkip.dyndns.com as a reference. If the IP has changed it will send an update to DynDNS else it will wait another 10 min and check again. The smallest value you are allowed to set for the update interval is every 60 seconds.&lt;br /&gt;&lt;br /&gt;If you are using the emacs editor hold down the CTRL key and hit "X", then "S" to save your file. Then hold down CTRL again and hit "Z" to get back to the command line.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So your final configuration file should look something like this,&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Configuration file for ddclient generated by debconf&lt;br /&gt;#&lt;br /&gt;# /etc/ddclient.conf&lt;br /&gt;&lt;br /&gt;daemon=600    #reports IP every 600 seconds&lt;br /&gt;&lt;br /&gt;pid=/var/run/ddclient.pid&lt;br /&gt;protocol=dyndns2&lt;br /&gt;use=web, web=checkip.dyndns.com/, web-skip='IP Address'&lt;br /&gt;server=members.dyndns.org&lt;br /&gt;login=[your dyndns username]&lt;br /&gt;password=[your dyndns password]&lt;br /&gt;yoursite.dyndns.org&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now that we are all configured it is time to restart the ddclient program.&lt;br /&gt;&lt;br /&gt;Cross your fingers and execute this command,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo /etc/init.d/ddclient restart&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Assuming everything is set up properly ddclient should report any IP address changes. Now there is still one problem, DynDNS expects an update at LEAST once a month or else it will set your account as inactive. This is an issue if you keep the same IP for more than a month.&lt;br /&gt;&lt;br /&gt;To avoid this we are going to make a cron job that will force ddclient to update every month.&lt;br /&gt;&lt;br /&gt;Execute the command "&lt;span style="font-style: italic;"&gt;crontab -e&lt;/span&gt;". You will be greeted with a simple editor. Add this on a new line,&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;00 00 28 * * ddclient -host yoursite.dyndns.org -force&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then hold down CTRL and hit X, it will ask you if you want to save, type "y" to say yes and hit enter.&lt;br /&gt;&lt;br /&gt;Everything should work beautifully now!&lt;br /&gt;&lt;br /&gt;Cheers.&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/1181078707803334890-7315215303265052602?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/7315215303265052602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=7315215303265052602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/7315215303265052602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/7315215303265052602'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2009/11/how-to-set-up-free-dynamic-dns-for-your.html' title='Set up a free Dynamic DNS for your home Ubuntu server.'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_oklj7eZwg2g/SvacQjjoYMI/AAAAAAAAAEs/J4Hp4U3yOpM/s72-c/dyndns.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-1230726843379442195</id><published>2009-07-01T17:30:00.000-07:00</published><updated>2010-04-02T00:23:03.096-07:00</updated><title type='text'>Early 80's Pirate Computers</title><content type='html'>&lt;span property="dcterms:abstract"&gt;Pete Perkins, an early pioneer of pirate hardware. He created, improved, and sold copies of Apple and IBM computers.&lt;/span&gt; A much simpler time for computers indeed. Core Duo's are great but when it comes to homebrew 8 bit was, and still is, king.&lt;br /&gt;&lt;br /&gt;                   &lt;div id="c-text-c26551708" class="c-body"&gt;&lt;span style="font-weight: bold;"&gt;"Whatever you're mind can conceive and your heart can believe, than you can achieve; that's the purpose of this chip."&lt;br /&gt;-Pete Perkins&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/AuTnaB5Q7DQ&amp;amp;hl=en&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/AuTnaB5Q7DQ&amp;amp;hl=en&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1181078707803334890-1230726843379442195?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/1230726843379442195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=1230726843379442195' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/1230726843379442195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/1230726843379442195'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2009/07/early-80s-pirate-computers.html' title='Early 80&apos;s Pirate Computers'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-7108345881016477546</id><published>2009-03-27T22:09:00.000-07:00</published><updated>2010-05-09T21:25:27.410-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='port'/><category scheme='http://www.blogger.com/atom/ns#' term='car'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><category scheme='http://www.blogger.com/atom/ns#' term='parallel'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><title type='text'>Internet Controled Car v2 Parallel Port</title><content type='html'>&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/h1IBm4SFa04&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/h1IBm4SFa04&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;My &lt;a href="http://homebrewtechnology.blogspot.com/2009/02/internet-controled-car-v1-basic-stamp.html"&gt;first version of the Internet Controled Car&lt;/a&gt; used a BASIC stamp to handle serial communication. This was a mundane task for a complex and expensive little microchip&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;This new version uses a parallel port printer cable which is controlled by a C program on the server. &lt;/span&gt;Using a parallel port also fixed an issue where the direction commands would get "stuck" if you hit two keys at once as the BASIC stamp code didn't have a buffer. I also mounted the components to a piece of wood and some standoffs so it wasn't a mess of wires all over the place.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;The Parallel Port C Program&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The parallel port program, written in C, will take a parameter to set the data lines, that is pins 2 through 9, to a logic high or logic low.&lt;br /&gt;&lt;br /&gt;Example: &lt;span style="font-style: italic;"&gt;ppp 1l 2l 3h 5h 8l&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oklj7eZwg2g/Sew98sahZGI/AAAAAAAAAEc/vd9rQqCxEww/s1600-h/pinout.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 168px;" src="http://2.bp.blogspot.com/_oklj7eZwg2g/Sew98sahZGI/AAAAAAAAAEc/vd9rQqCxEww/s320/pinout.gif" alt="" id="BLOGGER_PHOTO_ID_5326700572196299874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here is the C source code for Linux.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/ioctl.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/io.h&amp;gt;&lt;br /&gt;&lt;br /&gt;//#include &amp;lt;asm/io.h&amp;gt;&lt;br /&gt;// Didn't work, replaced with sys/io.h&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;char *binprint( unsigned char x, char *buf )&lt;br /&gt;{&lt;br /&gt;int i;&lt;br /&gt;for( i=0; i&amp;lt;8; i++ )&lt;br /&gt;buf[7-i]=(x&amp;amp;(1&amp;lt;&amp;lt;i))?'1':'0';&lt;br /&gt;buf[8]=0;&lt;br /&gt;return buf;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main( int argc, char *argv[] )&lt;br /&gt;{&lt;br /&gt;char c;&lt;br /&gt;unsigned char val;&lt;br /&gt;char buf[9];&lt;br /&gt;int x;&lt;br /&gt;if( argc&amp;lt;2 )&lt;br /&gt;{&lt;br /&gt;printf("Example usage: ppp 1l 2l 3h 5h 8l\n");&lt;br /&gt;return 2;&lt;br /&gt;}&lt;br /&gt;if( ioperm(888,1,1) )&lt;br /&gt;{&lt;br /&gt;printf("Couldn't find parallel port (888)\n");&lt;br /&gt;return 1;&lt;br /&gt;}&lt;br /&gt;val = inb(888);&lt;br /&gt;printf("old = %s\n",binprint(val,buf));&lt;br /&gt;for( x=1; x&amp;lt;argc; x++ )&lt;br /&gt;if( argv[x][1]!='h' )&lt;br /&gt;val &amp;amp;= ~(1&amp;lt;&amp;lt;(argv[x][0]-'1'));&lt;br /&gt;else&lt;br /&gt;val |= 1&amp;lt;&amp;lt;(argv[x][0]-'1');&lt;br /&gt;printf("new = %s\n",binprint(val,buf));&lt;br /&gt;outb(val,888);&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;To compile save the above code, in a text editor, as &lt;span style="font-style: italic;"&gt;ppp.c&lt;/span&gt;&lt;br /&gt;Then in the command line execute,&lt;br /&gt;&lt;span style="font-style: italic;"&gt;gcc ppp.c -o ppp&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;And then drop the compiled executable into $/bin/ so it can be executed from anywhere as a linux command.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Flash controller code:&lt;/span&gt;&lt;br /&gt;The flash controller is pretty similar to &lt;a href="http://homebrewtechnology.blogspot.com/2009/02/internet-controled-car-v1-basic-stamp.html"&gt;netcar v1&lt;/a&gt;, it detects what arrowkey is being pressed and sends the information to the PHP script. I did change the variables though so use the new actionscript,&lt;br /&gt;&lt;br /&gt;Download: &lt;a href="https://docs.google.com/#folders/folder.0.0B-kMjjaL8EzpMDY0NWNjNWUtNTMxMy00M2NhLWFiZTQtOWZkYmU5ZDkxNzMw"&gt;car_remote_pp.as&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PHP&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;The PHP program, combined with the C program, is basiaclly replacing what the BASIC stamp did, turning pins high and low to control the relays.&lt;br /&gt;&lt;br /&gt;The PHP program gets the command from the flash aplication and, depending on what that command is, executes the C program with the paramaters to turn the proper data pins logic high or low.&lt;br /&gt;&lt;br /&gt;In my hardware configuration I mapped pin 2 for forward, so to make the car go forward you would execute, &lt;span style="font-style: italic;"&gt;&lt;br /&gt;ppp 1h&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt; 2l&lt;br /&gt;&lt;/span&gt;Pin 3 is mapped to backward so I make 2 a logic low because you can't be going forward and backward at the same time.&lt;br /&gt;&lt;br /&gt;To make PHP execute a program you put the command in single quotes, for example &lt;span&gt;&lt;span style="font-style: italic;"&gt;'ppp 1h&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt; 2l'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let &lt;a href="https://docs.google.com/leaf?id=0B-kMjjaL8EzpYzFlMzE4MWQtMzQ0NC00Yzg4LTllYWQtZTIxZjMzOTg1OTc3&amp;amp;hl=en"&gt;this PHP file&lt;/a&gt; sit in the same directory as your flash app.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Hardware&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oklj7eZwg2g/SwQVqUViIEI/AAAAAAAAAE0/ErN1A_fJMHY/s1600/par_port_dip_plug.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 206px; height: 154px;" src="http://2.bp.blogspot.com/_oklj7eZwg2g/SwQVqUViIEI/AAAAAAAAAE0/ErN1A_fJMHY/s400/par_port_dip_plug.JPG" alt="" id="BLOGGER_PHOTO_ID_5405469269509152834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The rest of the hardware, for me, is the same as &lt;a href="http://homebrewtechnology.blogspot.com/2009/02/internet-controled-car-v1-basic-stamp.html"&gt;Net Car v1&lt;/a&gt; sans the Basic Stamp. You will have to find a parallel port cable to splice open and use a multimeter with a continuity check to find what wires correspond to the data pins and, of course, ground. If you can find a ribbon cable parallel port those are very easy to solder into a chip socket and can be plugged into and removed from a breadboard or another chip socket if you decide to make a circuit board.&lt;br /&gt;&lt;br /&gt;The hardware interface to the car remote circuit will be a little bit different depending on how the remote works. I used some double pole, double throw relays, turned on by transistors, to make the connections on the circuit board, which replaced what would normally be the connections made by the controller sticks. Now that I think about it I could have just used the transistors. You may have to put a diode on the base to make sure no higher voltage can back-feed into the lower voltage TTL circuitry, because most car remotes operate on 9v. Please correct me if I am wrong!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Edit: &lt;/span&gt;A couple of people recommended in the comments to use &lt;a href="http://www.futurlec.com/LED/4N26.shtml"&gt;optoisolators&lt;/a&gt; instead of relays. They draw less power off the parallel port and are simpler, and quieter, than having a transistor turn on a relay. Actually now that I think of it using relay's is probably the most ridiculous idea I have ever had! I kinda like the clicking sound though :-)&lt;br /&gt;&lt;br /&gt;The next step is to put a mini wireless webcam on it and stream the video through a webcam service. Or you can just have a webcam look at the car in a room and drive it around with an overview.&lt;br /&gt;&lt;br /&gt;Let me know if you complete this project successfully, take a video and post it as a video response to my youtube video&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1181078707803334890-7108345881016477546?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/7108345881016477546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=7108345881016477546' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/7108345881016477546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/7108345881016477546'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2009/03/internet-controled-car-v2-parallel-port.html' title='Internet Controled Car v2 Parallel Port'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_oklj7eZwg2g/Sew98sahZGI/AAAAAAAAAEc/vd9rQqCxEww/s72-c/pinout.gif' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-7193470976612335470</id><published>2009-02-13T15:37:00.000-08:00</published><updated>2009-02-13T16:01:25.914-08:00</updated><title type='text'>Epoch win! Happy 1234567890.</title><content type='html'>On Friday the 13th on Feb 2009 at 23:31:30 GMT human time, Unix time hit 1234567890.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.epochconverter.com/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 102px;" src="http://4.bp.blogspot.com/_oklj7eZwg2g/SZYFeQTixEI/AAAAAAAAADw/8YneaFQYd9k/s400/epoch.jpg" alt="" id="BLOGGER_PHOTO_ID_5302431628606489666" border="0" /&gt;&lt;/a&gt;Unix time is measured in the number of seconds elapsed since&lt;span style="font-style: italic;"&gt;&lt;/span&gt; January 1st, 1970 (&lt;span style="font-style: italic;"&gt;Midnight Coordinated Universal time (UTC)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/1970" title="1970"&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://xkcd.com/376/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 271px; height: 258px;" src="http://imgs.xkcd.com/comics/bug.png" alt="" border="0" /&gt;&lt;/a&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/1181078707803334890-7193470976612335470?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/7193470976612335470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=7193470976612335470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/7193470976612335470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/7193470976612335470'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2009/02/epoch-happy-1234567890.html' title='Epoch win! Happy 1234567890.'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oklj7eZwg2g/SZYFeQTixEI/AAAAAAAAADw/8YneaFQYd9k/s72-c/epoch.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-746110437849496198</id><published>2009-02-12T19:28:00.000-08:00</published><updated>2011-08-05T02:12:13.003-07:00</updated><title type='text'>Net Neutrality</title><content type='html'>It's not often I get to do a highschool school project on something I am interested in. I made this video, with some friends, for my global issues class. It came out pretty good for an all-nighter.&lt;br /&gt;&lt;br /&gt;A special thanks to Burnsy for staying up to record and ftp narrations to me on the fly.&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/mMqV7otamQ8&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/mMqV7otamQ8&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1181078707803334890-746110437849496198?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/746110437849496198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=746110437849496198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/746110437849496198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/746110437849496198'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2009/02/net-neutrality.html' title='Net Neutrality'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-6254870314723990345</id><published>2009-02-07T11:50:00.000-08:00</published><updated>2010-05-09T21:19:24.107-07:00</updated><title type='text'>Internet Controled Car v1 BASIC Stamp</title><content type='html'>&lt;a href="http://homebrewtechnology.blogspot.com/2009/03/internet-controled-car-v2-parallel-port.html"&gt;&lt;span style="font-weight: bold;"&gt;Update: &lt;/span&gt;I found a better way to do this using a parallel printer port instead, I recommend that instead of using a BASIC Stamp.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The BASIC Stamp microcontroller is a neat little device to play with and very simple to program. It can also handle RS232 serial data. With a little flash actionscript, some very simple PHP, and an Ubuntu Linux server I modified an RC car so that it could be driven from anywhere on the internets.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;This is how it works:&lt;/span&gt;&lt;br /&gt;The client program, written in Flash Actionscript, detects if an arrow key is down or up and sends the appropriate ASCII character to a PHP server side script, using the sendAndLoad function and the POST method. The PHP script takes that ASCII character, for example capital W for forward, and writes it to the com server’s com port.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Flash controler code:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I'm sure this is very possible to do in Javascript, instead of flash Actionscript. If anyone wants to post a Javascript version in the comments I would be happy to add it to the article.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Download: &lt;a href="http://docs.google.com/leaf?id=0B-kMjjaL8EzpMjE5NDY5YjktMWVhNS00ZDBiLTlkMGQtMDUwZDM5MjFlMjAx&amp;amp;hl=en"&gt;car_remote.as&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PHP:&lt;/span&gt;&lt;br /&gt;Sending data through a com-port is really easy in Linux. The com-port is treated as a file and can be written to by a PHP script. The com-port “file” is located in “/dev/ttyS0”; ttyS0 is com-port 1, ttyS1 would be com-port 2, etc.&lt;br /&gt;&lt;a href="http://pastebin.com/ERLrm4St"&gt;PHP Script&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This “writes” your command variable to the servers com-port. To make the comport writable by everyone execute the following command,&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sudo chmod a+w /dev/ttyS0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Serial Cable:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i23.photobucket.com/albums/b397/blackcow99/rs232.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 500px; height: 348px;" src="http://i23.photobucket.com/albums/b397/blackcow99/rs232.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To make the RS232 cable I took a 9-pin com port female connector and a USB cable wire and solderd pins 2, for receiving data, 3, for transmitting data, and 5, for ground. For the car I don’t really need to receive data, as I am only interested in transmitting commands to it, so really you only need pins 2 and 5.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Input to the BASIC Stamp:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i23.photobucket.com/albums/b397/blackcow99/stamp.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 500px; height: 302px;" src="http://i23.photobucket.com/albums/b397/blackcow99/stamp.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The next step is to take the RS232 output and put it into a BASIC Stamp microcontroller. But before you do this you must convert the RS232 +/- 12v signal into a +5v signal for the microcontroller to handle the input. To do this you need a MAX232 chip to build a UART circut (a quick google search can tell you how to build one). To take an input from, in my case, port 0 you say&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cmd VAR Byte&lt;br /&gt;SERIN 0, 84, [cmd]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then whatever ASCII character is put in is saved in “cmd”. You can then turn on and off other ports depending on what cmd is.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Relays&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i23.photobucket.com/albums/b397/blackcow99/relays.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 500px; height: 350px;" src="http://i23.photobucket.com/albums/b397/blackcow99/relays.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now that we can turn pins high and low, depending on what arrow key is pressed on the first controller program, we can turn on transistors. I have my transistors click on a “double pole, double throw” relay. I crakced open the RC car controller and had the relays make the proper connections to make the car go forward, back, left, and right (replacing what was once the mechanical connecters of the sticks).&lt;br /&gt;&lt;br /&gt;So say we want the car to go forward, ASCII character capital W mapped to the up arrow key. When the BASIC Stamp gets this character it makes P1 go high and turns on the transistor which then turns on the relay. The relay makes the proper connection on the RC Car’s controller circuit to go forward. When the up-arrow comes back up the client program sends a lower case w turn the relay off. Same for back, left, and right.&lt;br /&gt;&lt;br /&gt;Now you can set up a webcam to see the car and drive it around from anywhere in the world. This concept can be used to control anything you want over the Internet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1181078707803334890-6254870314723990345?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/6254870314723990345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=6254870314723990345' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/6254870314723990345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/6254870314723990345'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2009/02/internet-controled-car-v1-basic-stamp.html' title='Internet Controled Car v1 BASIC Stamp'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-1750819007667002004</id><published>2008-12-02T12:33:00.000-08:00</published><updated>2008-12-02T13:51:34.024-08:00</updated><title type='text'>Beta Testing Quake Live</title><content type='html'>A while back I put my email in for a chance to be a beta tester for Quake Live. Long since forgotten I got an email today asking me to try it...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_oklj7eZwg2g/STWhHB61LmI/AAAAAAAAADQ/4enZWt6Whkc/s1600-h/matches.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 240px; height: 167px;" src="http://1.bp.blogspot.com/_oklj7eZwg2g/STWhHB61LmI/AAAAAAAAADQ/4enZWt6Whkc/s200/matches.png" alt="" id="BLOGGER_PHOTO_ID_5275299680680750690" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.quakelive.com/"&gt;Quake Live&lt;/a&gt; is a free (ad-supported) browser based first person shooter in development by &lt;span style="font-style: italic;"&gt;id Software&lt;/span&gt;. It only supports Windows right now (IE and Firefox) but will eventually support Linux and Mac.&lt;br /&gt;No word on the release date yet but it seems to be well on its way.&lt;br /&gt;&lt;br /&gt;To get started I had to make an account and download a 3.78 MB plug-in. I was greeted by a friendly tutorial talking me through the game.. I promptly skipped it. Starting an online match was quick, all the matches and settings are selected through the web browser. The game is rendered in a little box which can be made full screen; I'm happy to say that it supports wide screen resolutions (that's better than Battlefield 2!).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oklj7eZwg2g/STWsbIFfzAI/AAAAAAAAADY/kOj-f-QivJY/s1600-h/quake_live_screen.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 254px; height: 187px;" src="http://3.bp.blogspot.com/_oklj7eZwg2g/STWsbIFfzAI/AAAAAAAAADY/kOj-f-QivJY/s320/quake_live_screen.png" alt="" id="BLOGGER_PHOTO_ID_5275312120561388546" border="0" /&gt;&lt;/a&gt;Once I started playing I noticed that it was pretty much Quake 3 loaded off a server. The textures and models may be a little bit compressed but all of the guns, maps, and game types are very close to the same. The graphics are decent, nothing stunning but something that will play well on older computers. I can see this being very useful for getting my online FPS fix when I am away from home.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1181078707803334890-1750819007667002004?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/1750819007667002004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=1750819007667002004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/1750819007667002004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/1750819007667002004'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2008/12/beta-testing-quake-live.html' title='Beta Testing Quake Live'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oklj7eZwg2g/STWhHB61LmI/AAAAAAAAADQ/4enZWt6Whkc/s72-c/matches.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1181078707803334890.post-326581687925073374</id><published>2008-11-04T10:10:00.000-08:00</published><updated>2008-11-04T10:17:06.132-08:00</updated><title type='text'>Happy Halloween!</title><content type='html'>An open source pumpkin...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_oklj7eZwg2g/SRCRA0fiwRI/AAAAAAAAAC8/xFIeFts2YWQ/s1600-h/1.JPG"&gt;&lt;img style="cursor: pointer; width: 259px; height: 145px;" src="http://4.bp.blogspot.com/_oklj7eZwg2g/SRCRA0fiwRI/AAAAAAAAAC8/xFIeFts2YWQ/s200/1.JPG" alt="" id="BLOGGER_PHOTO_ID_5264867407673082130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oklj7eZwg2g/SRCQiw0YE9I/AAAAAAAAAC0/1T5Gw47acsQ/s1600-h/2.JPG"&gt;&lt;img style="cursor: pointer; width: 258px; height: 145px;" src="http://2.bp.blogspot.com/_oklj7eZwg2g/SRCQiw0YE9I/AAAAAAAAAC0/1T5Gw47acsQ/s200/2.JPG" alt="" id="BLOGGER_PHOTO_ID_5264866891290645458" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1181078707803334890-326581687925073374?l=www.homebrewtechnology.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.homebrewtechnology.org/feeds/326581687925073374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1181078707803334890&amp;postID=326581687925073374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/326581687925073374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1181078707803334890/posts/default/326581687925073374'/><link rel='alternate' type='text/html' href='http://www.homebrewtechnology.org/2008/11/happy-halloween.html' title='Happy Halloween!'/><author><name>Chris "BlackCow" Handwerker</name><uri>http://www.blogger.com/profile/14537737013122827659</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://2.bp.blogspot.com/_oklj7eZwg2g/SeOrjx1l11I/AAAAAAAAAD8/BKdH6n7m_WI/S220/profile_pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oklj7eZwg2g/SRCRA0fiwRI/AAAAAAAAAC8/xFIeFts2YWQ/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
