docparser 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +5 -0
  4. data/.travis.yml +3 -0
  5. data/Gemfile +9 -1
  6. data/README.md +11 -4
  7. data/Rakefile +15 -0
  8. data/example.rb +9 -7
  9. data/lib/docparser.rb +1 -0
  10. data/lib/docparser/document.rb +18 -11
  11. data/lib/docparser/output.rb +8 -8
  12. data/lib/docparser/output/html_output.rb +53 -47
  13. data/lib/docparser/output/json_output.rb +8 -3
  14. data/lib/docparser/output/multi_output.rb +4 -8
  15. data/lib/docparser/output/nil_output.rb +21 -0
  16. data/lib/docparser/output/screen_output.rb +2 -1
  17. data/lib/docparser/output/xlsx_output.rb +12 -2
  18. data/lib/docparser/output/yaml_output.rb +6 -1
  19. data/lib/docparser/parser.rb +80 -49
  20. data/lib/docparser/version.rb +1 -1
  21. data/test/lib/docparser/blackbox_test.rb +29 -0
  22. data/test/lib/docparser/document_test.rb +134 -0
  23. data/test/lib/docparser/logging_test.rb +19 -0
  24. data/test/lib/docparser/output/csv_output_test.rb +51 -0
  25. data/test/lib/docparser/output/html_output_test.rb +57 -0
  26. data/test/lib/docparser/output/json_output_test.rb +65 -0
  27. data/test/lib/docparser/output/multi_output_test.rb +80 -0
  28. data/test/lib/docparser/output/nil_output_test.rb +27 -0
  29. data/test/lib/docparser/output/screen_output_test.rb +55 -0
  30. data/test/lib/docparser/output/xlsx_output_test.rb +53 -0
  31. data/test/lib/docparser/output/yaml_output_test.rb +76 -0
  32. data/test/lib/docparser/output_test.rb +85 -0
  33. data/test/lib/docparser/parser_test.rb +197 -0
  34. data/test/lib/docparser/version_test.rb +11 -0
  35. data/test/support/hackaday/dl.rb +4 -0
  36. data/test/support/hackaday/file_1.html +716 -0
  37. data/test/support/hackaday/file_10.html +791 -0
  38. data/test/support/hackaday/file_11.html +787 -0
  39. data/test/support/hackaday/file_12.html +715 -0
  40. data/test/support/hackaday/file_13.html +793 -0
  41. data/test/support/hackaday/file_14.html +718 -0
  42. data/test/support/hackaday/file_15.html +707 -0
  43. data/test/support/hackaday/file_16.html +713 -0
  44. data/test/support/hackaday/file_17.html +715 -0
  45. data/test/support/hackaday/file_18.html +725 -0
  46. data/test/support/hackaday/file_19.html +715 -0
  47. data/test/support/hackaday/file_2.html +793 -0
  48. data/test/support/hackaday/file_20.html +795 -0
  49. data/test/support/hackaday/file_21.html +804 -0
  50. data/test/support/hackaday/file_22.html +722 -0
  51. data/test/support/hackaday/file_23.html +793 -0
  52. data/test/support/hackaday/file_24.html +717 -0
  53. data/test/support/hackaday/file_25.html +715 -0
  54. data/test/support/hackaday/file_26.html +717 -0
  55. data/test/support/hackaday/file_27.html +723 -0
  56. data/test/support/hackaday/file_28.html +711 -0
  57. data/test/support/hackaday/file_29.html +711 -0
  58. data/test/support/hackaday/file_3.html +794 -0
  59. data/test/support/hackaday/file_30.html +715 -0
  60. data/test/support/hackaday/file_31.html +713 -0
  61. data/test/support/hackaday/file_32.html +714 -0
  62. data/test/support/hackaday/file_33.html +716 -0
  63. data/test/support/hackaday/file_34.html +714 -0
  64. data/test/support/hackaday/file_35.html +792 -0
  65. data/test/support/hackaday/file_36.html +719 -0
  66. data/test/support/hackaday/file_37.html +712 -0
  67. data/test/support/hackaday/file_38.html +709 -0
  68. data/test/support/hackaday/file_39.html +808 -0
  69. data/test/support/hackaday/file_4.html +814 -0
  70. data/test/support/hackaday/file_40.html +801 -0
  71. data/test/support/hackaday/file_5.html +715 -0
  72. data/test/support/hackaday/file_6.html +792 -0
  73. data/test/support/hackaday/file_7.html +714 -0
  74. data/test/support/hackaday/file_8.html +717 -0
  75. data/test/support/hackaday/file_9.html +719 -0
  76. data/test/support/test_encoding.html +12 -0
  77. data/test/support/test_encoding2.html +12 -0
  78. data/test/support/test_html.html +16 -0
  79. data/test/support/test_xml.xml +5 -0
  80. data/test/test_helper.rb +14 -0
  81. metadata +126 -3
@@ -0,0 +1,713 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
3
+ <!--
4
+ generated 94 seconds ago
5
+ generated in 0.335 seconds
6
+ served from batcache in 0.003 seconds
7
+ expires in 206 seconds
8
+ -->
9
+ <head profile="http://gmpg.org/xfn/11">
10
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
11
+ <title>Hack a Day — Fresh hacks every day</title>
12
+ <meta name="description" content="Fresh hacks every day" />
13
+ <meta name="robots" content="noodp,noydir" />
14
+ <link rel="Shortcut Icon" href="http://s1.wp.com/wp-content/themes/vip/hackaday2/images/favicon.ico?m=1353160633g" type="image/x-icon" />
15
+ <link rel="stylesheet" href="http://s1.wp.com/wp-content/themes/vip/hackaday2/style.css?m=1363789849g" type="text/css" media="screen" />
16
+
17
+ <meta name="description" content="Fresh hacks every day" />
18
+ <meta name="keywords" content="hall of fame, fpga, nook hacks, internet hacks, marijuana hacks, network hacks, high voltage hacks, palm pre hacks, blackberry hacks, podcasts, virtual reality, drone hacks, lockpicking hacks, interviews, kindle hacks, phone hacks, weekly roundup, reviews, firefox hacks, g1 hacks" />
19
+ <script src='http://r-login.wordpress.com/remote-login.php?action=js&amp;host=hackaday.com&amp;id=4779443&amp;t=1366801057&amp;back=hackaday.com%2Fpage%2F31%2F' type="text/javascript"></script>
20
+ <script type="text/javascript">
21
+ /* <![CDATA[ */
22
+ if ( 'function' === typeof WPRemoteLogin ) {
23
+ document.cookie = "wordpress_test_cookie=test; path=/";
24
+ if ( document.cookie.match( /(;|^)\s*wordpress_test_cookie\=/ ) ) {
25
+ WPRemoteLogin();
26
+ }
27
+ }
28
+ /* ]]> */
29
+ </script>
30
+ <link rel="alternate" type="application/rss+xml" title="Hack a Day &raquo; Feed" href="http://feeds2.feedburner.com/hackaday/LgoM" />
31
+ <link rel="alternate" type="application/rss+xml" title="Hack a Day &raquo; Comments Feed" href="http://hackaday.com/comments/feed/" />
32
+ <script type="text/javascript">
33
+ /* <![CDATA[ */
34
+ function addLoadEvent(func){var oldonload=window.onload;if(typeof window.onload!='function'){window.onload=func;}else{window.onload=function(){oldonload();func();}}}
35
+ /* ]]> */
36
+ </script>
37
+ <link rel="canonical" href="http://hackaday.com/" />
38
+ <link rel='stylesheet' id='all-css-0' href='http://s0.wp.com/_static/??-eJzTLy/QTc7PK0nNK9HPLdUtyClNz8wr1s/JzE4t1s9KLSlITM7WBfP0kouLdfSxKy/ILy7RTctJzCzSLy6pzEklVm1GYlFmXjqMxtBVkpGaC3RGhol+ek5+UmIOSIF9rq2hsZmZuYmxqbFlFgANUUYu' type='text/css' media='all' />
39
+ <script type='text/javascript'>
40
+ /* <![CDATA[ */
41
+ var SafeCommentsAjax = {"ajaxurl":"http:\/\/hackaday.com\/wp-admin\/admin-ajax.php"};
42
+ /* ]]> */
43
+ </script>
44
+ <script type='text/javascript' src='http://s0.wp.com/_static/??-eJyFz0sKAjEMBuALWUsZpjvxLKXGmjp92KQz6umNogtRFAJZ5Et+opeqMPup74B0lDp1aJdnW0da6V9AJQzNMbygL5kh893VQpyAyIVv0/cYzDPC8pdF4Or8UTUgvH5c5QNInp6x6jr1gJk0uT2IrqWxsJSEPX5w0Z1lfZs2ZrB2NIOxY7wBpfljQw=='></script>
45
+ <link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://hackadaycom.wordpress.com/xmlrpc.php?rsd" />
46
+ <link rel="shortcut icon" type="image/x-icon" href="http://0.gravatar.com/blavatar/4f3e6b6daa090af416a1ba595885efd1?s=16" sizes="16x16" />
47
+ <link rel="icon" type="image/x-icon" href="http://0.gravatar.com/blavatar/4f3e6b6daa090af416a1ba595885efd1?s=16" sizes="16x16" />
48
+ <link rel="apple-touch-icon-precomposed" href="http://1.gravatar.com/blavatar/5560f98f805877b0e332f191cb9e0af3?s=114" />
49
+ <link rel='openid.server' href='http://hackadaycom.wordpress.com/?openidserver=1' />
50
+ <link rel='openid.delegate' href='http://hackadaycom.wordpress.com/' />
51
+ <link rel="search" type="application/opensearchdescription+xml" href="http://hackaday.com/osd.xml" title="Hack a Day" />
52
+ <link rel="search" type="application/opensearchdescription+xml" href="http://wordpress.com/opensearch.xml" title="WordPress.com" />
53
+ <style>
54
+ /* <![CDATA[ */
55
+ /* Block: reblog */
56
+
57
+ .reblog-from img { margin: 0 10px 0 0; vertical-align: middle; padding: 0; border: 0; }
58
+ .reblogger-note img.avatar { float: left; padding: 0; border: 0; }
59
+ .reblogger-note-content { margin: 0 0 20px; }
60
+ .reblog-post .wpcom-enhanced-excerpt-content { border-left: 3px solid #eee; padding-left: 15px; }
61
+ .reblog-post ul.thumb-list { display: block; list-style: none; margin: 2px 0; padding: 0; clear: both; }
62
+ .reblog-post ul.thumb-list li { display: inline; margin: 0; padding: 0 1px; border: 0; }
63
+ .reblog-post ul.thumb-list li a { margin: 0; padding: 0; border: 0; }
64
+ .reblog-post ul.thumb-list li img { margin: 0; padding: 0; border: 0; }
65
+
66
+ .reblog-post .wpcom-enhanced-excerpt { clear: both; }
67
+
68
+ .reblog-post .wpcom-enhanced-excerpt address,
69
+ .reblog-post .wpcom-enhanced-excerpt li,
70
+ .reblog-post .wpcom-enhanced-excerpt h1,
71
+ .reblog-post .wpcom-enhanced-excerpt h2,
72
+ .reblog-post .wpcom-enhanced-excerpt h3,
73
+ .reblog-post .wpcom-enhanced-excerpt h4,
74
+ .reblog-post .wpcom-enhanced-excerpt h5,
75
+ .reblog-post .wpcom-enhanced-excerpt h6,
76
+ .reblog-post .wpcom-enhanced-excerpt p { font-size: 100% !important; }
77
+
78
+ .reblog-post .wpcom-enhanced-excerpt blockquote,
79
+ .reblog-post .wpcom-enhanced-excerpt pre,
80
+ .reblog-post .wpcom-enhanced-excerpt code,
81
+ .reblog-post .wpcom-enhanced-excerpt q { font-size: 98% !important; }
82
+
83
+
84
+ /* ]]> */
85
+ </style>
86
+
87
+ <script type="text/javascript">var _sf_startpt=(new Date()).getTime()</script>
88
+ <style>
89
+ .wpcom-related-posts ul li {
90
+ list-style-type: none;
91
+ display: inline-block;
92
+ }
93
+ </style>
94
+ <style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
95
+ <style type="text/css">
96
+ .recentcomments a {
97
+ display: inline !important;
98
+ padding: 0 !important;
99
+ margin: 0 !important;
100
+ }
101
+
102
+ table.recentcommentsavatartop img.avatar, table.recentcommentsavatarend img.avatar {
103
+ border: 0px;
104
+ margin: 0;
105
+ }
106
+
107
+ table.recentcommentsavatartop a, table.recentcommentsavatarend a {
108
+ border: 0px !important;
109
+ background-color: transparent !important;
110
+ }
111
+
112
+ td.recentcommentsavatarend, td.recentcommentsavatartop {
113
+ padding: 0px 0px 1px 0px;
114
+ margin: 0px;
115
+ }
116
+
117
+ td.recentcommentstextend {
118
+ border: none !important;
119
+ padding: 0px 0px 2px 10px;
120
+ }
121
+
122
+ .rtl td.recentcommentstextend {
123
+ padding: 0px 10px 2px 0px;
124
+ }
125
+
126
+ td.recentcommentstexttop {
127
+ border: none !important;
128
+ padding: 0px 0px 0px 10px;
129
+ }
130
+
131
+ .rtl td.recentcommentstexttop {
132
+ padding: 0px 10px 0px 0px;
133
+ }
134
+ </style>
135
+ <meta name="application-name" content="Hack a Day" /><meta name="msapplication-window" content="width=device-width;height=device-height" /><meta name="msapplication-tooltip" content="Fresh hacks every day" /><meta name="msapplication-task" content="name=Subscribe;action-uri=http://feeds2.feedburner.com/hackaday/LgoM;icon-uri=http://0.gravatar.com/blavatar/4f3e6b6daa090af416a1ba595885efd1?s=16" /><style id="syntaxhighlighteranchor"></style>
136
+
137
+ <script>jQuery(document).ready(function($) {
138
+ $("cswap li a").click(function() {
139
+ $("link").attr("href",$(this).attr('rel'));
140
+ return false;
141
+ });
142
+ });</script>
143
+ <meta name="google-site-verification" content="v0_F4q2HixEv6wrQCEKBEbp2Wuj0oI9ywwaN6aoV0JE" />
144
+ </head>
145
+ <body class="home blog paged paged-31 typekit-enabled header-image content-sidebar highlander-enabled highlander-light">
146
+
147
+ <div id="fb-root"></div>
148
+ <script>(function(d, s, id) {
149
+ var js, fjs = d.getElementsByTagName(s)[0];
150
+ if (d.getElementById(id)) return;
151
+ js = d.createElement(s); js.id = id;
152
+ js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
153
+ fjs.parentNode.insertBefore(js, fjs);
154
+ }(document, 'script', 'facebook-jssdk'));</script>
155
+ <div id="wrap">
156
+ <div id="header"><div class="wrap"><div id="title-area"><h1 id="title"><a href="http://hackaday.com/" title="Hack a Day">Hack a Day</a></h1><p id="description">Fresh hacks every day</p></div><!-- end #title-area --><div class="widget-area"><div = "leaderboard">
157
+ <script type="text/javascript"><!--
158
+ google_ad_client = "ca-pub-1812638130783065";
159
+ /* Hackaday, 728x90, created 4/26/08, Leaderboard */
160
+ google_ad_slot = "4036713767";
161
+ google_ad_width = 728;
162
+ google_ad_height = 90;
163
+ //-->
164
+ </script>
165
+ <script type="text/javascript"
166
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
167
+ </script>
168
+ </div>
169
+ <div id="adslice">
170
+
171
+ <script type="text/javascript"><!--
172
+ google_ad_client = "pub-1812638130783065";
173
+ /* Hackaday, 728x15, created 4/26/08, AdSlice */
174
+ google_ad_slot = "0246324944";
175
+ google_ad_width = 728;
176
+ google_ad_height = 15;
177
+ //-->
178
+ </script>
179
+
180
+ <script type="text/javascript"
181
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
182
+ </script>
183
+
184
+ </div></div><!-- end .widget-area --></div><!-- end .wrap --></div><!--end #header--><div id="nav"><div class="wrap"><ul id="menu-main" class="menu menu-primary superfish"><li id="menu-item-90201" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-90201"><a href="http://www.hackaday.com">Home</a></li>
185
+ <li id="menu-item-77211" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-77211"><a href="http://hackaday.com/contact-hack-a-day/">Submit a tip</a></li>
186
+ <li id="menu-item-90210" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-90210"><a href="http://forums.hackaday.com">forums</a></li>
187
+ <li id="menu-item-94591" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-94591"><a href="http://hackaday.com/hackaday-staff/">Hackaday Staff</a></li>
188
+ <li class="right search">
189
+ <form method="get" class="searchform" action="http://hackaday.com/" >
190
+
191
+ <input type="text" value="Search this website &hellip;" name="s" class="s" onfocus="if (this.value == 'Search this website &hellip;') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Search this website &hellip;';}" />
192
+ <input type="submit" class="searchsubmit" value="Search" />
193
+ </form>
194
+ </li></ul></div><!-- end .wrap --></div><div id="inner"><div class="wrap"> <div id="content-sidebar-wrap">
195
+ <div id="content" class="hfeed">
196
+ <div class="post-96223 post type-post status-publish format-standard hentry category-3d-printer-hacks tag-festival tag-maker-faire tag-reprap">
197
+
198
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/16/midwest-reprap-festival-2/" title="Midwest RepRap&nbsp;Festival" rel="bookmark">Midwest RepRap&nbsp;Festival</a></h2>
199
+
200
+ <div class="post-info"><span class="date published time" title="2013-03-16T04:00:49+00:00">March 16, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/brianbenchoff/" class="fn n" title="Brian Benchoff" rel="author">Brian Benchoff</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/16/midwest-reprap-festival-2/#comments">19 Comments</a></span> </div> <div class="entry-content">
201
+ <p><img class="aligncenter" alt="" src="http://hackadaycom.files.wordpress.com/2013/02/midwest-reprap-meetup.jpg?w=580&#038;h=362&#038;h=362" width="580" height="362" /></p>
202
+ <p>We&#8217;re a US-centric site, but aside from events in New York or California, we don&#8217;t see many hacker, maker, or 3D printer events aimed at the parts of the country filled with corn and WalMarts. <a href="http://midwestreprapfest.org/wordpress/">The 1st annual Midwest RepRap Festival aims to change that</a> with enough events, speakers, and activities to make Elkhart, Indiana look like the hoppingist place around.</p>
203
+ <p>Officially, the festival started yesterday but <a href="http://midwestreprapfest.org/wordpress/?page_id=9">the schedule of events</a> really ramps up today. [Josef Prusa] will be taking the stage talking about the state of the RepRap, and a ton of 3d printing vendors will be there showing off their wares and selling some really cool stuff. There&#8217;s also tons of experienced RepRappers available to help you tune your machine to perfection; just as well, because the festival is going for the world record for the greatest number of 3D printers printing simultaneously.</p>
204
+ <p>If you&#8217;re around northern Indiana, you might want to check out the festival and send us a few pics or videos.</p>
205
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
206
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/3d-printer-hacks/" title="View all posts in 3d Printer hacks" rel="category tag">3d Printer hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/festival/" rel="tag">festival</a>, <a href="http://hackaday.com/tag/maker-faire/" rel="tag">maker faire</a>, <a href="http://hackaday.com/tag/reprap/" rel="tag">reprap</a></span> </div>
207
+ </div><!-- end .postclass -->
208
+ <div class="post-96201 post type-post status-publish format-standard hentry category-cnc-hacks tag-coffee tag-eggbot tag-laser-cut tag-mug tag-plotter">
209
+
210
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/15/mug-plotter-based-on-the-eggbot/" title="Mug Plotter based on the&nbsp;Eggbot" rel="bookmark">Mug Plotter based on the&nbsp;Eggbot</a></h2>
211
+
212
+ <div class="post-info"><span class="date published time" title="2013-03-15T18:01:37+00:00">March 15, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/15/mug-plotter-based-on-the-eggbot/#comments">21 Comments</a></span> </div> <div class="entry-content">
213
+ <p><img class="aligncenter size-large wp-image-96202" alt="mug-plotter" src="http://hackadaycom.files.wordpress.com/2013/03/mug-plotter.jpg?w=580&#038;h=414" width="580" height="414" /></p>
214
+ <p>Here&#8217;s a fun way to break up the monotony in the old cubicle farm. The Mug Plotter will let you <a href="http://www.instructables.com/id/Mug-Plotter">expertly inscribe your coffee vessel</a> with a different witty saying or design for each day of the week. If it looks familiar that&#8217;s because it&#8217;s loosely based on the non-flat drawing robot, <a href="http://hackaday.com/2010/03/30/cnc-egg-decorating/">the Eggbot</a>.</p>
215
+ <p>[Teed] built the machine using laser cut plywood parts. He starts off the build description with the griping technique. There are two parts to this, one is concave and fits in the mouth of the mug. The convex side grips the bottom edges of it. These parts go on the frame along with the slide and thread rods which hold the stylus. A servo motor is along for the ride, providing the ability to lift the marker when necessary.</p>
216
+ <p>You can see in the clip after the break that there&#8217;s a bit of oscillation in the rig when one of the steppers starts turning really fast. But it doesn&#8217;t seem to affect the look of the design very much at all.</p>
217
+ <p> <a href="http://hackaday.com/2013/03/15/mug-plotter-based-on-the-eggbot/#more-96201" class="more-link">[Read more...]</a></p>
218
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
219
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/cnc-hacks/" title="View all posts in cnc hacks" rel="category tag">cnc hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/coffee/" rel="tag">coffee</a>, <a href="http://hackaday.com/tag/eggbot/" rel="tag">eggbot</a>, <a href="http://hackaday.com/tag/laser-cut/" rel="tag">laser cut</a>, <a href="http://hackaday.com/tag/mug/" rel="tag">mug</a>, <a href="http://hackaday.com/tag/plotter/" rel="tag">plotter</a></span> </div>
220
+ </div><!-- end .postclass -->
221
+ <div class="post-96196 post type-post status-publish format-standard hentry category-peripherals-hacks tag-asetniop tag-chorded-keyboard tag-midi tag-piano tag-typing">
222
+
223
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/15/asetniop-chorded-typing-with-a-piano-keyboard/" title="ASETNIOP chorded typing with a piano&nbsp;keyboard" rel="bookmark">ASETNIOP chorded typing with a piano&nbsp;keyboard</a></h2>
224
+
225
+ <div class="post-info"><span class="date published time" title="2013-03-15T16:01:31+00:00">March 15, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/15/asetniop-chorded-typing-with-a-piano-keyboard/#comments">21 Comments</a></span> </div> <div class="entry-content">
226
+ <p><img class="aligncenter size-large wp-image-96197" alt="asetniop-chorded-typing-with-a-piano" src="http://hackadaycom.files.wordpress.com/2013/03/asetniop-chorded-typing-with-a-piano.png?w=580&#038;h=390" width="580" height="390" /></p>
227
+ <p>We don&#8217;t know if typing your Facebook updates from a piano keyboard counts as practicing or not. But if you want to give it a try here&#8217;s how. [Zach] wrote in to our tips line with his latest <a href="http://www.youtube.com/watch?v=8-hZv-owHMY">ASETNIOP hack which uses a MIDI piano keyboard to touch type</a> on a computer.</p>
228
+ <p>Last July was <a href="http://hackaday.com/2012/07/21/chorded-keyboard-for-touchscreens/">when we first heard about ASETNIOP</a>. It&#8217;s a chorded typing system which at the time was aimed at, but not limited to, touch screen devices. This version gives a pretty good idea of how the system actually works. Your fingers and thumbs are each assigned a key and they never move away from it. To type more than just the ten letters, combinations of keys are assigned the rest of the alphabet. You can see the piano example of the system after the break. But better yet would be hooking your own MIDI keyboard up to the computer and <a href="http://asetniop.com/piano.html">trying it in a browser</a>.</p>
229
+ <p> <a href="http://hackaday.com/2013/03/15/asetniop-chorded-typing-with-a-piano-keyboard/#more-96196" class="more-link">[Read more...]</a></p>
230
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
231
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/peripherals-hacks/" title="View all posts in peripherals hacks" rel="category tag">peripherals hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/asetniop/" rel="tag">asetniop</a>, <a href="http://hackaday.com/tag/chorded-keyboard/" rel="tag">chorded keyboard</a>, <a href="http://hackaday.com/tag/midi/" rel="tag">midi</a>, <a href="http://hackaday.com/tag/piano/" rel="tag">piano</a>, <a href="http://hackaday.com/tag/typing/" rel="tag">typing</a></span> </div>
232
+ </div><!-- end .postclass -->
233
+ <div align="center">
234
+
235
+
236
+
237
+ <script type="text/javascript"><!--
238
+
239
+ google_ad_client = "ca-pub-1812638130783065";
240
+
241
+ /* Hackaday, 300x250, created 4/26/08, MedRect main column */
242
+
243
+ google_ad_slot = "3449215672";
244
+
245
+ google_ad_width = 300;
246
+
247
+ google_ad_height = 250;
248
+
249
+ //-->
250
+
251
+ </script>
252
+
253
+ <script type="text/javascript"
254
+
255
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
256
+
257
+ </script>
258
+
259
+
260
+
261
+ </div> <div class="post-96139 post type-post status-publish format-standard hentry category-microcontrollers tag-label-maker tag-pdip tag-pearl tag-pinout tag-prototyping tag-yaml">
262
+
263
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/15/script-makes-custom-pinout-labels-for-your-chips/" title="Script makes custom pinout labels for your&nbsp;chips" rel="bookmark">Script makes custom pinout labels for your&nbsp;chips</a></h2>
264
+
265
+ <div class="post-info"><span class="date published time" title="2013-03-15T14:01:14+00:00">March 15, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/15/script-makes-custom-pinout-labels-for-your-chips/#comments">50 Comments</a></span> </div> <div class="entry-content">
266
+ <p><img class="aligncenter size-full wp-image-96140" alt="cusom-pinout-labels" src="http://hackadaycom.files.wordpress.com/2013/03/cusom-pinout-labels.jpg?w=580&#038;h=300" width="580" height="300" /></p>
267
+ <p>After years of prototyping hobby electronics we&#8217;ve learned (several times actually) that when something&#8217;s not working it&#8217;s a problem with the hardware. Usually the jumper wires aren&#8217;t hooked up correctly, or we needed to throw a pull-up resistor in and forgot to. One thing that can really help sort these problems out quickly is a pinout label for each chip like the ones seen above. This is a project which [John Meacham] came up with. It uses <a href="http://notanumber.net/archives/83/label-your-chips">a script to generate chip pinouts on a label maker</a>.</p>
268
+ <p>The label maker he started with is a Brother PT-1230PC. It connects to a computer via USB and can use a few different widths of self adhesive label tape. [John] found that the 1/4&#8243; wide tape is nearly a perfect fit for PDIP components.</p>
269
+ <p>His script takes <a href="http://www.yaml.org/">a YAML file</a> as the input. This formatting standard makes is quick an easy to whip up a label for a new chip using just your text editor. From there his Pearl script turns the data into a Portable Network Graphics (.png) file with the labels spaced for the 0.1&#8243; pitch of the chip. Send this graphic to your label maker and you&#8217;ve got an adhesive reminder that will help reduce the time you spend pawing through datasheets just for the pinouts.</p>
270
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
271
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/microcontrollers/" title="View all posts in Microcontrollers" rel="category tag">Microcontrollers</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/label-maker/" rel="tag">label maker</a>, <a href="http://hackaday.com/tag/pdip/" rel="tag">PDIP</a>, <a href="http://hackaday.com/tag/pearl/" rel="tag">Pearl</a>, <a href="http://hackaday.com/tag/pinout/" rel="tag">pinout</a>, <a href="http://hackaday.com/tag/prototyping/" rel="tag">prototyping</a>, <a href="http://hackaday.com/tag/yaml/" rel="tag">yaml</a></span> </div>
272
+ </div><!-- end .postclass -->
273
+ <div class="post-96143 post type-post status-publish format-standard hentry category-home-hacks tag-arduino tag-fireplace tag-gas tag-home-automation tag-remote-control tag-rf">
274
+
275
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/15/adding-fireplace-control-to-your-home-automation/" title="Adding fireplace control to your home&nbsp;automation" rel="bookmark">Adding fireplace control to your home&nbsp;automation</a></h2>
276
+
277
+ <div class="post-info"><span class="date published time" title="2013-03-15T12:01:07+00:00">March 15, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/15/adding-fireplace-control-to-your-home-automation/#comments">5 Comments</a></span> </div> <div class="entry-content">
278
+ <p><img class="aligncenter size-large wp-image-96144" alt="fireplace-automation" src="http://hackadaycom.files.wordpress.com/2013/03/fireplace-automation.jpg?w=580&#038;h=341" width="580" height="341" /></p>
279
+ <p>[James] has an admirable home automation system which he&#8217;s been working on for years. It does things like monitor the state of the garage door, control the lights, and it even notifies him of a power failure. One thing that wasn&#8217;t on the system yet are the fireplaces he has in his home. The hardware you see above is <a href="http://www.geek-tips.com/2013/02/23/hacking-a-fireplace/">how he patched into the fireplace remote control system</a> in order to automate them.</p>
280
+ <p>The remote control uses RF to communicate with a base station. Unlike controlling home theater components which use IR, this makes it a bit more difficult to patch into. Sure, we&#8217;d love to see some <a href="http://hackaday.com/2010/07/05/reverse-engineering-an-rf-clicker/">reverse engineering of the protocol</a> so that a simple radio module could be used, but [James] chose the route which would mean the least amount of hacking on his part. He soldered wires onto the PCB for the buttons and connected to them using reed relays. These let the Arduino simulate button presses.</p>
281
+ <p>With the rig connected to the home network he has a lot of options. The system can sense if the house is occupied. If it determines that no one is home it will switch off the fireplaces. [James] also mentions the ability to monitor for carbon monoxide or house fires, switching off the gas fireplaces in either case.</p>
282
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
283
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/home-hacks/" title="View all posts in home hacks" rel="category tag">home hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/arduino/" rel="tag">arduino</a>, <a href="http://hackaday.com/tag/fireplace/" rel="tag">fireplace</a>, <a href="http://hackaday.com/tag/gas/" rel="tag">gas</a>, <a href="http://hackaday.com/tag/home-automation/" rel="tag">home automation</a>, <a href="http://hackaday.com/tag/remote-control/" rel="tag">remote control</a>, <a href="http://hackaday.com/tag/rf/" rel="tag">RF</a></span> </div>
284
+ </div><!-- end .postclass -->
285
+ <div class="post-96170 post type-post status-publish format-standard hentry category-3d-printer-hacks category-repair-hacks tag-123d tag-bracket tag-broken tag-mount tag-tom-tom">
286
+
287
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/15/repairing-broken-injection-molded-parts-with-a-3d-printer/" title="Repairing broken injection molded parts with a 3D&nbsp;printer" rel="bookmark">Repairing broken injection molded parts with a 3D&nbsp;printer</a></h2>
288
+
289
+ <div class="post-info"><span class="date published time" title="2013-03-15T10:01:45+00:00">March 15, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/15/repairing-broken-injection-molded-parts-with-a-3d-printer/#comments">28 Comments</a></span> </div> <div class="entry-content">
290
+ <p><img class="aligncenter size-full wp-image-96171" alt="injection-molded-part-repair" src="http://hackadaycom.files.wordpress.com/2013/03/injection-molded-part-repair.jpg?w=519&#038;h=392" width="519" height="392" /></p>
291
+ <p>The value of a 3D printer is obvious for people who hack hardware as a hobby. But this repair project should drive home their usefulness for the commoner. [James Bruton] <a href="http://xrobots.co.uk/3D/index_satnav.html">used a 3D printer to recreate a hopelessly broken injection molded plastic part</a>. This is a suction cup mounting bracket for a Tom Tom GPS module. The sphere which makes it adjustable had broken off of the column holding it. For 100% of non-hacking consumers that&#8217;s the end of this item. We can&#8217;t see a fix that would restore the strength of the original part.</p>
292
+ <p>The replacement starts by measuring the broken part with precision calipers. [James] then grabbed a copy of 123D, which is free software. He starts by modeling the sphere, then builds up the support column and the base with a cut-out. It&#8217;s obvious he&#8217;s already very familiar with the software, but even the uninitiated should be able to get this done pretty quickly. After slicing the design for the 3D printer he finds the part will be ready in about 11 minutes. The first prototype is a bit too small (the ball requires close tolerances to work well). He spins up a second version which is a bit large and uneven. A few minutes of filing leaves him with a smooth sphere which replaces the original part beautifully!</p>
293
+ <p>You can see the entire design, print, and assembly process in the clip after the break.</p>
294
+ <p> <a href="http://hackaday.com/2013/03/15/repairing-broken-injection-molded-parts-with-a-3d-printer/#more-96170" class="more-link">[Read more...]</a></p>
295
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
296
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/3d-printer-hacks/" title="View all posts in 3d Printer hacks" rel="category tag">3d Printer hacks</a>, <a href="http://hackaday.com/category/repair-hacks/" title="View all posts in repair hacks" rel="category tag">repair hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/123d/" rel="tag">123d</a>, <a href="http://hackaday.com/tag/bracket/" rel="tag">bracket</a>, <a href="http://hackaday.com/tag/broken/" rel="tag">broken</a>, <a href="http://hackaday.com/tag/mount/" rel="tag">mount</a>, <a href="http://hackaday.com/tag/tom-tom/" rel="tag">tom tom</a></span> </div>
297
+ </div><!-- end .postclass -->
298
+ <div class="post-96161 post type-post status-publish format-standard hentry category-microcontrollers tag-arduino tag-resistive tag-rpi tag-touch-screen">
299
+
300
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/15/enabling-an-unused-touchscreen-overlay-on-a-consumer-lcd/" title="Enabling an unused touchscreen overlay on a consumer&nbsp;LCD" rel="bookmark">Enabling an unused touchscreen overlay on a consumer&nbsp;LCD</a></h2>
301
+
302
+ <div class="post-info"><span class="date published time" title="2013-03-15T08:01:11+00:00">March 15, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/15/enabling-an-unused-touchscreen-overlay-on-a-consumer-lcd/#comments">22 Comments</a></span> </div> <div class="entry-content">
303
+ <p><img class="aligncenter size-large wp-image-96162" alt="uncovering-an-unused-touchscreen-on-a-consumer-lcd" src="http://hackadaycom.files.wordpress.com/2013/03/uncovering-an-unused-touchscreen-on-a-consumer-lcd.jpg?w=580&#038;h=434" width="580" height="434" /></p>
304
+ <p>When [Andrei] first got his Raspberry Pi he wanted to make it a standalone computer right away. This means the normal input devices like a mouse and keyboard, but also some type of display. To avoid waiting for shipping he ended up using a cheap vehicle backup camera screen from the local big box store. It worked great, and recently he decided he would try to convert it to run off of 5V power to simplify his setup. While snooping around inside the device he discovered an <a href="http://errincode.blogspot.com/2013/03/free-touchscreen-in-cheap-car-back-up.html">unused resistive touch overlay and figured out how to get it to work</a>.</p>
305
+ <p>What tipped him off is the small four-conductor connector which wasn&#8217;t hooked up to anything. He carefully soldered wires onto the flexible circuit traces, then generously covered them in hot glue to help prevent movement from breaking the rigid connection. To get this working you need to measure the resistance between the conductors. Most of the time we figure the RPi GPIO header can be used directly, but for this task an intermediary is necessary. [Andrei] went with a small Arduino clone board. A bit of trial and error was all it took to get the connections right and to iron out the code which translates the values into coordinates.</p>
306
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
307
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/microcontrollers/" title="View all posts in Microcontrollers" rel="category tag">Microcontrollers</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/arduino/" rel="tag">arduino</a>, <a href="http://hackaday.com/tag/resistive/" rel="tag">resistive</a>, <a href="http://hackaday.com/tag/rpi/" rel="tag">RPi</a>, <a href="http://hackaday.com/tag/touch-screen/" rel="tag">touch screen</a></span> </div>
308
+ </div><!-- end .postclass -->
309
+ <div class="navigation"><div class="alignleft"><a href="http://hackaday.com/page/32/" >&laquo; Older Posts</a></div><div class="alignright"><a href="http://hackaday.com/page/30/" >Newer Posts &raquo;</a></div></div><!-- end .navigation --> </div><!-- end #content -->
310
+ <div id="sidebar" class="sidebar widget-area">
311
+ <div id=tl_ad>
312
+ <script type="text/javascript"><!--
313
+ google_ad_client = "ca-pub-1812638130783065";
314
+ /* Hackaday, 300x250, created 4/26/08, MedRect sidebar */
315
+ google_ad_slot = "7800245928";
316
+ google_ad_width = 300;
317
+ google_ad_height = 250;
318
+ //-->
319
+ </script>
320
+ <script type="text/javascript"
321
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
322
+ </script>
323
+
324
+ </div>
325
+
326
+
327
+
328
+
329
+
330
+
331
+ <div class="widget">
332
+ <h4>Never Miss a Hack</h4>
333
+ <div class="textwidget">
334
+
335
+ <!-- Place this tag where you want the badge to render. -->
336
+ <div class="g-plus" data-width= "280" data-href="https://plus.google.com/114843073658390316652" data-rel="publisher" data-theme="dark"></div>
337
+ <!-- Place this tag after the last badge tag. -->
338
+ <script type="text/javascript">
339
+ (function() {
340
+ var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
341
+ po.src = 'https://apis.google.com/js/plusone.js';
342
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
343
+ })();
344
+ </script>
345
+
346
+ <div class="fb-like" data-href="https://www.facebook.com/pages/Hack-a-Day/136115233068429?ref=hl" data-send="true" data-width="280" data-show-faces="true" data-colorscheme="dark"></div>
347
+
348
+ <a href="https://twitter.com/hackaday" class="twitter-follow-button" data-show-count="true" data-lang="en" data-size="large">Follow @twitter</a>
349
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
350
+
351
+ <a href="http://feeds2.feedburner.com/hackaday/LgoM" target="_blank"><img src="http://hackadaycom.files.wordpress.com/2012/11/orange.png" border="0"/></a>
352
+ <div class="clear"> </div>
353
+ <!-- Begin MailChimp Signup Form -->
354
+ <link href="http://cdn-images.mailchimp.com/embedcode/slim-081711.css" rel="stylesheet" type="text/css">
355
+
356
+ <div id="mc_embed_signup">
357
+ <form action="http://mahalo.us5.list-manage.com/subscribe/post?u=126b2ab712043075d9bd7210e&amp;id=cb1aa8bd16" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
358
+ <label for="mce-EMAIL">Subscribe to our mailing list for sneak previews and behind the scenes info</label>
359
+ <input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="email address" required>
360
+ <div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
361
+ </form>
362
+ </div>
363
+
364
+ <!--End mc_embed_signup-->
365
+ </div>
366
+ </div>
367
+
368
+ <div id="categories-2" class="widget widget_categories"><div class="widget-wrap"><h4 class="widgettitle">Categories</h4>
369
+ <select name='cat' id='cat' class='postform' >
370
+ <option value='-1'>Select Category</option>
371
+ <option class="level-0" value="114554125">3d Printer hacks&nbsp;&nbsp;(116)</option>
372
+ <option class="level-0" value="18020710">android hacks&nbsp;&nbsp;(240)</option>
373
+ <option class="level-0" value="18020705">arduino hacks&nbsp;&nbsp;(1029)</option>
374
+ <option class="level-0" value="27981650">ARM&nbsp;&nbsp;(51)</option>
375
+ <option class="level-0" value="33199679">Ask Hackaday&nbsp;&nbsp;(29)</option>
376
+ <option class="level-0" value="64298109">ATtiny hacks&nbsp;&nbsp;(45)</option>
377
+ <option class="level-0" value="25122024">beer hacks&nbsp;&nbsp;(63)</option>
378
+ <option class="level-0" value="12115263">blackberry hacks&nbsp;&nbsp;(8)</option>
379
+ <option class="level-0" value="10969031">cellphones hacks&nbsp;&nbsp;(337)</option>
380
+ <option class="level-0" value="35745764">chemistry hacks&nbsp;&nbsp;(102)</option>
381
+ <option class="level-0" value="24483654">classic hacks&nbsp;&nbsp;(852)</option>
382
+ <option class="level-0" value="31677810">clock hacks&nbsp;&nbsp;(189)</option>
383
+ <option class="level-0" value="18755632">cnc hacks&nbsp;&nbsp;(341)</option>
384
+ <option class="level-0" value="568165">computer hacks&nbsp;&nbsp;(390)</option>
385
+ <option class="level-0" value="78428">cons&nbsp;&nbsp;(192)</option>
386
+ <option class="level-0" value="5738">contests&nbsp;&nbsp;(136)</option>
387
+ <option class="level-0" value="3923181">cooking hacks&nbsp;&nbsp;(72)</option>
388
+ <option class="level-0" value="10969032">digital audio hacks&nbsp;&nbsp;(422)</option>
389
+ <option class="level-0" value="10969033">digital cameras hacks&nbsp;&nbsp;(415)</option>
390
+ <option class="level-0" value="10969034">downloads hacks&nbsp;&nbsp;(101)</option>
391
+ <option class="level-0" value="107827385">drone hacks&nbsp;&nbsp;(10)</option>
392
+ <option class="level-0" value="63176382">Engine Hacks&nbsp;&nbsp;(31)</option>
393
+ <option class="level-0" value="35890">Featured&nbsp;&nbsp;(72)</option>
394
+ <option class="level-0" value="551890">firefox hacks&nbsp;&nbsp;(23)</option>
395
+ <option class="level-0" value="53446541">FPGA&nbsp;&nbsp;(1)</option>
396
+ <option class="level-0" value="18020562">g1 hacks&nbsp;&nbsp;(26)</option>
397
+ <option class="level-0" value="320557">google hacks&nbsp;&nbsp;(44)</option>
398
+ <option class="level-0" value="10969036">gps hacks&nbsp;&nbsp;(108)</option>
399
+ <option class="level-0" value="24535490">green hacks&nbsp;&nbsp;(152)</option>
400
+ <option class="level-0" value="27311668">Hackaday links&nbsp;&nbsp;(146)</option>
401
+ <option class="level-0" value="21755374">Hackerspaces&nbsp;&nbsp;(93)</option>
402
+ <option class="level-0" value="6310599">HackIt&nbsp;&nbsp;(101)</option>
403
+ <option class="level-0" value="10969037">handhelds hacks&nbsp;&nbsp;(189)</option>
404
+ <option class="level-0" value="79">hardware&nbsp;&nbsp;(249)</option>
405
+ <option class="level-0" value="144422905">High Voltage Hacks&nbsp;&nbsp;(5)</option>
406
+ <option class="level-0" value="66307084">Holiday Hacks&nbsp;&nbsp;(93)</option>
407
+ <option class="level-0" value="10969038">home entertainment hacks&nbsp;&nbsp;(516)</option>
408
+ <option class="level-0" value="5660882">home hacks&nbsp;&nbsp;(705)</option>
409
+ <option class="level-0" value="2708">how-to&nbsp;&nbsp;(135)</option>
410
+ <option class="level-0" value="908478">internet hacks&nbsp;&nbsp;(2)</option>
411
+ <option class="level-0" value="831">Interviews&nbsp;&nbsp;(13)</option>
412
+ <option class="level-0" value="1416772">iphone hacks&nbsp;&nbsp;(176)</option>
413
+ <option class="level-0" value="1275163">ipod hacks&nbsp;&nbsp;(144)</option>
414
+ <option class="level-0" value="344761">kickstarter&nbsp;&nbsp;(29)</option>
415
+ <option class="level-0" value="4157506">Kindle hacks&nbsp;&nbsp;(15)</option>
416
+ <option class="level-0" value="46717088">Kinect hacks&nbsp;&nbsp;(81)</option>
417
+ <option class="level-0" value="10969048">laptops hacks&nbsp;&nbsp;(111)</option>
418
+ <option class="level-0" value="10969055">laser hacks&nbsp;&nbsp;(167)</option>
419
+ <option class="level-0" value="18020716">led hacks&nbsp;&nbsp;(695)</option>
420
+ <option class="level-0" value="10626">lifehacks&nbsp;&nbsp;(54)</option>
421
+ <option class="level-0" value="729674">linux hacks&nbsp;&nbsp;(129)</option>
422
+ <option class="level-0" value="20732807">lockpicking hacks&nbsp;&nbsp;(11)</option>
423
+ <option class="level-0" value="10969060">macs hacks&nbsp;&nbsp;(135)</option>
424
+ <option class="level-0" value="144395979">Marijuana Hacks&nbsp;&nbsp;(2)</option>
425
+ <option class="level-0" value="11284667">Medical hacks&nbsp;&nbsp;(102)</option>
426
+ <option class="level-0" value="139916">Microcontrollers&nbsp;&nbsp;(512)</option>
427
+ <option class="level-0" value="5611793">misc hacks&nbsp;&nbsp;(1747)</option>
428
+ <option class="level-0" value="18020730">multitouch hacks&nbsp;&nbsp;(89)</option>
429
+ <option class="level-0" value="22652725">musical hacks&nbsp;&nbsp;(290)</option>
430
+ <option class="level-0" value="18020722">netbook hacks&nbsp;&nbsp;(50)</option>
431
+ <option class="level-0" value="6166512">Network Hacks&nbsp;&nbsp;(4)</option>
432
+ <option class="level-0" value="103">news&nbsp;&nbsp;(1091)</option>
433
+ <option class="level-0" value="1861880">nintendo ds hacks&nbsp;&nbsp;(34)</option>
434
+ <option class="level-0" value="114555425">nintendo gameboy hacks&nbsp;&nbsp;(90)</option>
435
+ <option class="level-0" value="18020685">nintendo hacks&nbsp;&nbsp;(261)</option>
436
+ <option class="level-0" value="4992726">nintendo wii hacks&nbsp;&nbsp;(78)</option>
437
+ <option class="level-0" value="118011206">Nook Hacks&nbsp;&nbsp;(1)</option>
438
+ <option class="level-0" value="114556430">palm pre hacks&nbsp;&nbsp;(6)</option>
439
+ <option class="level-0" value="245123">parts&nbsp;&nbsp;(72)</option>
440
+ <option class="level-0" value="10969081">peripherals hacks&nbsp;&nbsp;(648)</option>
441
+ <option class="level-0" value="16325149">phone hacks&nbsp;&nbsp;(17)</option>
442
+ <option class="level-0" value="10969088">playstation hacks&nbsp;&nbsp;(120)</option>
443
+ <option class="level-0" value="2060">podcasts&nbsp;&nbsp;(8)</option>
444
+ <option class="level-0" value="10969096">portable audio hacks&nbsp;&nbsp;(66)</option>
445
+ <option class="level-0" value="10969099">portable video hacks&nbsp;&nbsp;(57)</option>
446
+ <option class="level-0" value="588444">psp hacks&nbsp;&nbsp;(47)</option>
447
+ <option class="level-0" value="23971578">radio hacks&nbsp;&nbsp;(137)</option>
448
+ <option class="level-0" value="47">rants&nbsp;&nbsp;(28)</option>
449
+ <option class="level-0" value="69218551">Raspberry Pi&nbsp;&nbsp;(153)</option>
450
+ <option class="level-0" value="21870780">repair hacks&nbsp;&nbsp;(101)</option>
451
+ <option class="level-0" value="309">reviews&nbsp;&nbsp;(19)</option>
452
+ <option class="level-0" value="10969101">robots hacks&nbsp;&nbsp;(874)</option>
453
+ <option class="level-0" value="30302">roundup&nbsp;&nbsp;(35)</option>
454
+ <option class="level-0" value="10969111">security hacks&nbsp;&nbsp;(460)</option>
455
+ <option class="level-0" value="2301">Software Development&nbsp;&nbsp;(91)</option>
456
+ <option class="level-0" value="3796421">software hacks&nbsp;&nbsp;(47)</option>
457
+ <option class="level-0" value="10969116">solar hacks&nbsp;&nbsp;(46)</option>
458
+ <option class="level-0" value="10969121">tablet pcs hacks&nbsp;&nbsp;(40)</option>
459
+ <option class="level-0" value="3075183">teardown&nbsp;&nbsp;(31)</option>
460
+ <option class="level-0" value="10969130">tool hacks&nbsp;&nbsp;(657)</option>
461
+ <option class="level-0" value="25277004">toy hacks&nbsp;&nbsp;(360)</option>
462
+ <option class="level-0" value="10969134">transportation hacks&nbsp;&nbsp;(472)</option>
463
+ <option class="level-0" value="1">Uncategorized&nbsp;&nbsp;(332)</option>
464
+ <option class="level-0" value="3184456">video hacks&nbsp;&nbsp;(211)</option>
465
+ <option class="level-0" value="34942364">Virtual Reality&nbsp;&nbsp;(9)</option>
466
+ <option class="level-0" value="50802420">weapons hacks&nbsp;&nbsp;(63)</option>
467
+ <option class="level-0" value="12552193">wearable hacks&nbsp;&nbsp;(183)</option>
468
+ <option class="level-0" value="39510952">Weekly roundup&nbsp;&nbsp;(18)</option>
469
+ <option class="level-0" value="4891215">wireless hacks&nbsp;&nbsp;(333)</option>
470
+ <option class="level-0" value="7079455">xbox hacks&nbsp;&nbsp;(130)</option>
471
+ </select>
472
+
473
+ <script type='text/javascript'>
474
+ /* <![CDATA[ */
475
+ var dropdown = document.getElementById("cat");
476
+ function onCatChange() {
477
+ if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
478
+ location.href = "http://hackaday.com/?cat="+dropdown.options[dropdown.selectedIndex].value;
479
+ }
480
+ }
481
+ dropdown.onchange = onCatChange;
482
+ /* ]]> */
483
+ </script>
484
+
485
+ </div></div>
486
+ <div id="featured-post-2" class="widget featuredpost"><div class="widget-wrap"><h4 class="widgettitle">In case you missed it</h4>
487
+ <div class="post-97657 post type-post status-publish format-standard hentry category-3d-printer-hacks category-featured tag-algae tag-bioluminescence tag-dinoflagellate tag-glowing tag-phosphorescence"><a href="http://hackaday.com/2013/04/18/living-night-light-with-glowing-algae/" title="Living night light with glowing&nbsp;algae" class="alignleft"><img width="90" height="61" src="http://hackadaycom.files.wordpress.com/2013/04/thumb1.jpg?w=90" class="attachment-thumbnail" alt="thumb" /></a><h2><a href="http://hackaday.com/2013/04/18/living-night-light-with-glowing-algae/" title="Living night light with glowing&nbsp;algae">Living night light with glowing&nbsp;algae</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/18/living-night-light-with-glowing-algae/#comments">67 Comments</a></span></p></div><!--end post_class()-->
488
+
489
+ <div class="post-97648 post type-post status-publish format-standard hentry category-3d-printer-hacks category-featured category-virtual-reality-2 tag-3d-printing tag-lulzbot tag-oculus-rift tag-virtual-reality tag-vr"><a href="http://hackaday.com/2013/04/17/3d-printing-sensor-mounts-for-the-oculus-rift/" title="3D Printing sensor mounts for the Oculus&nbsp;Rift" class="alignleft"><img width="90" height="67" src="http://hackadaycom.files.wordpress.com/2013/04/thumb.jpg?w=90" class="attachment-thumbnail" alt="thumb" /></a><h2><a href="http://hackaday.com/2013/04/17/3d-printing-sensor-mounts-for-the-oculus-rift/" title="3D Printing sensor mounts for the Oculus&nbsp;Rift">3D Printing sensor mounts for the Oculus&nbsp;Rift</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/17/3d-printing-sensor-mounts-for-the-oculus-rift/#comments">7 Comments</a></span></p></div><!--end post_class()-->
490
+
491
+ <div class="post-97564 post type-post status-publish format-standard hentry category-featured category-virtual-reality-2 tag-adaliight tag-ambilight tag-oculus-rift tag-virtual-reality tag-vr"><a href="http://hackaday.com/2013/04/11/hacking-the-oculus-rift-the-oculight/" title="Hacking the Oculus Rift: the&nbsp;Oculight" class="alignleft"><img width="90" height="54" src="http://hackadaycom.files.wordpress.com/2013/04/screen-shot-2013-04-14-at-9-52-43-am.png?w=90" class="attachment-thumbnail" alt="Screen Shot 2013-04-14 at 9.52.43 AM" /></a><h2><a href="http://hackaday.com/2013/04/11/hacking-the-oculus-rift-the-oculight/" title="Hacking the Oculus Rift: the&nbsp;Oculight">Hacking the Oculus Rift: the&nbsp;Oculight</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/11/hacking-the-oculus-rift-the-oculight/#comments">20 Comments</a></span></p></div><!--end post_class()-->
492
+
493
+ <div class="post-97538 post type-post status-publish format-standard hentry category-featured category-news tag-top-10 tag-wins"><a href="http://hackaday.com/2013/04/11/top-10-best-hacking-scenes-in-movies/" title="Top 10 best hacking scenes in&nbsp;movies" class="alignleft"><img width="90" height="55" src="http://hackadaycom.files.wordpress.com/2013/04/screen-shot-2013-04-14-at-9-51-38-am.png?w=90" class="attachment-thumbnail" alt="Screen Shot 2013-04-14 at 9.51.38 AM" /></a><h2><a href="http://hackaday.com/2013/04/11/top-10-best-hacking-scenes-in-movies/" title="Top 10 best hacking scenes in&nbsp;movies">Top 10 best hacking scenes in&nbsp;movies</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/11/top-10-best-hacking-scenes-in-movies/#comments">88 Comments</a></span></p></div><!--end post_class()-->
494
+
495
+ <div class="post-97094 post type-post status-publish format-standard hentry category-featured category-news tag-april-fools"><a href="http://hackaday.com/2013/04/01/hackadays-very-first-kickstarter-campaign/" title="Hackaday&#8217;s very first Kickstarter&nbsp;campaign" class="alignleft"><img width="90" height="54" src="http://hackadaycom.files.wordpress.com/2013/03/hackaday-kickstarter.jpg?w=90" class="attachment-thumbnail" alt="hackaday-kickstarter" /></a><h2><a href="http://hackaday.com/2013/04/01/hackadays-very-first-kickstarter-campaign/" title="Hackaday&#8217;s very first Kickstarter&nbsp;campaign">Hackaday&#8217;s very first Kickstarter&nbsp;campaign</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/01/hackadays-very-first-kickstarter-campaign/#comments">58 Comments</a></span></p></div><!--end post_class()-->
496
+
497
+ <p class="more-from-category"><a href="http://hackaday.com/category/featured/" title="Featured">More Posts from this Category</a></p></div></div>
498
+ <div id="recent-comments-2" class="widget widget_recent_comments"><div class="widget-wrap"><h4 class="widgettitle">Recent comments</h4>
499
+ <ul id="recentcomments">
500
+ <li class="recentcomments">
501
+ echodelta on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-997083">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
502
+ <li class="recentcomments">
503
+ <a href='http://jsutton.co.uk' rel='external nofollow' class='url'>James</a> on <a href="http://hackaday.com/2013/04/23/console-radio-given-new-life-with-a-wifi-router-retrofit/comment-page-1/#comment-997080">Console radio given new life with a WiFi router&nbsp;retrofit</a> </li>
504
+ <li class="recentcomments">
505
+ nhede on <a href="http://hackaday.com/2013/04/22/20-pounds-and-a-gut-feeling-yields-a-configurable-rubidium-atomic-clock-source/comment-page-1/#comment-997074">20 pounds and a gut feeling yields a configurable Rubidium atomic clock&nbsp;source</a> </li>
506
+ <li class="recentcomments">
507
+ Dax on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-997071">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
508
+ <li class="recentcomments">
509
+ TacticalNinja on <a href="http://hackaday.com/2013/04/23/otm-02-is-a-3d-printed-wristwatch/comment-page-1/#comment-997070">OTM-02 is a 3D printed&nbsp;wristwatch</a> </li>
510
+ <li class="recentcomments">
511
+ Arlet on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-997017">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
512
+ <li class="recentcomments">
513
+ Arlet on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-997016">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
514
+ <li class="recentcomments">
515
+ <a href='http://smonson.com/' rel='external nofollow' class='url'>Smonson</a> on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-996997">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
516
+ <li class="recentcomments">
517
+ <a href='http://twitter.com/admsch' rel='external nofollow' class='url'>Adam Scheuring (@admsch)</a> on <a href="http://hackaday.com/2013/04/23/otm-02-is-a-3d-printed-wristwatch/comment-page-1/#comment-996993">OTM-02 is a 3D printed&nbsp;wristwatch</a> </li>
518
+ <li class="recentcomments">
519
+ JoSSte on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-996990">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
520
+ </ul>
521
+ </div></div>
522
+ <div id="calendar-2" class="widget widget_calendar"><div class="widget-wrap"><h4 class="widgettitle">Find Hacks by Date</h4>
523
+ <div id="calendar_wrap"><table id="wp-calendar">
524
+ <caption>April 2013</caption>
525
+ <thead>
526
+ <tr>
527
+ <th scope="col" title="Sunday">S</th>
528
+ <th scope="col" title="Monday">M</th>
529
+ <th scope="col" title="Tuesday">T</th>
530
+ <th scope="col" title="Wednesday">W</th>
531
+ <th scope="col" title="Thursday">T</th>
532
+ <th scope="col" title="Friday">F</th>
533
+ <th scope="col" title="Saturday">S</th>
534
+ </tr>
535
+ </thead>
536
+
537
+ <tfoot>
538
+ <tr>
539
+ <td colspan="3" id="prev"><a href="http://hackaday.com/2013/03/" title="View posts for March 2013">&laquo; Mar</a></td>
540
+ <td class="pad">&nbsp;</td>
541
+ <td colspan="3" id="next" class="pad">&nbsp;</td>
542
+ </tr>
543
+ </tfoot>
544
+
545
+ <tbody>
546
+ <tr>
547
+ <td colspan="1" class="pad">&nbsp;</td><td><a href="http://hackaday.com/2013/04/01/" title="Hackaday&#8217;s very first Kickstarter&nbsp;campaign, Doctor Who-style&nbsp;WiFi, Kindle weather and recycling&nbsp;display, Windmill made from washing machine, 555&nbsp;chip, SNES headphones scream out for Bluetooth&nbsp;control, How-to: turn on a light&nbsp;bulb">1</a></td><td><a href="http://hackaday.com/2013/04/02/" title="An EQ display for a pedal&nbsp;board, Dual displays on a Playstation&nbsp;2, Ask Hackaday: Hacking lingo&nbsp;fails, Cooling a photomultiplier&nbsp;tube, Hackerspace tour: Arch Reactor in St. Louis&nbsp;Missouri, Adafruit launches educational show aimed at&nbsp;kids, CNC Tic Tac&nbsp;Toe, Building a vehicle parking&nbsp;camera, April Fools&#8217; project teaches coworkers not to touch your&nbsp;stuff, SenseLamp automates rooms by replacing light&nbsp;fixtures">2</a></td><td><a href="http://hackaday.com/2013/04/03/" title="Embedded web server is all about clever&nbsp;formatting, Powering the Oculus Rift with&nbsp;USB, Upgrading a router with impeccable soldering&nbsp;skills, Homebuilt Laser Cutter&nbsp;Ideas, Building a&nbsp;Theremincello, Microscope ring light with a number of different&nbsp;features, Hall effect limit switches for a 3D&nbsp;printer, Adding an optical mouse sensor to an autonomous&nbsp;vehicle">3</a></td><td><a href="http://hackaday.com/2013/04/04/" title="Retrotechtacular: The Fourier&nbsp;Series, MP3/USB/Aux hack hidden behind cassette&nbsp;facade, Pranking a hackerspace IRC for April Fool&#8217;s&nbsp;Day, Turning an easter egg hunt into a fox&nbsp;hunt, Wireless Temperature Control for a&nbsp;Microbrewery, Melting Metal with a DIY Foundry&nbsp;Furnace, Top 10 Hacking Failures in movies: part&nbsp;2, Steampunk theremin&nbsp;goggles, High speed circuit design for quantum physics light&nbsp;sensing, Home security hardware makes you the monitoring&nbsp;service">4</a></td><td><a href="http://hackaday.com/2013/04/05/" title="Snowboard goggle HUD displays critical data while falling down a&nbsp;mountain, Electric tricycle build log is like hacker&nbsp;crack, H-bot style 3D printer moves bed for&nbsp;Z-axis, Stapler hack fastens infinitely large sheets of&nbsp;paper, Light Graffiti with Servos and&nbsp;Python">5</a></td><td><a href="http://hackaday.com/2013/04/06/" title="Fixing the worst video game ever: E.T. for Atari&nbsp;2600, Rolling your own minimal USB to serial Arduino&nbsp;programmer, Making PLA stick to a 3D printer build platform by using hairspray or an acetone ABS&nbsp;slurry">6</a></td>
548
+ </tr>
549
+ <tr>
550
+ <td><a href="http://hackaday.com/2013/04/07/" title="Acoustic bass guitar uses water jug and two&nbsp;strings, Solar powered robot mows your lawn while you chill&nbsp;indoors, Hackaday Links: Sunday, April 7th,&nbsp;2013">7</a></td><td><a href="http://hackaday.com/2013/04/08/" title="Another way to look at&nbsp;Charlieplexing, Combo lock uses relays and logic&nbsp;gates, Yamaha SW60XG hack lets you use it as a standalone MIDI&nbsp;device">8</a></td><td><a href="http://hackaday.com/2013/04/09/" title="Synthesizing graphene in your basement&nbsp;laboratory, The RedBull creation contest&nbsp;begins!, Recurve bow make from wood and&nbsp;skis, Wall wart computer&nbsp;mouse">9</a></td><td><a href="http://hackaday.com/2013/04/10/" title="Hacker sends this through the mail to record a video of the&nbsp;process, MIDI pedal project looks as good as it&nbsp;sounds, Perpetual&nbsp;pong">10</a></td><td><a href="http://hackaday.com/2013/04/11/" title="Snowboard propulsion system motors you through the&nbsp;flats, Guitar EQ levels trigger the stage&nbsp;lights, Top 10 best hacking scenes in&nbsp;movies, Automating a mechanical&nbsp;typewriter, Hacking the Oculus Rift: the&nbsp;Oculight">11</a></td><td><a href="http://hackaday.com/2013/04/12/" title="Jeep Wrangler gets pressurized water right out of the&nbsp;bumper, Horribly complicated electric guitar&nbsp;keyboard, Generating electricity from&nbsp;alcohol">12</a></td><td><a href="http://hackaday.com/2013/04/13/" title="Network-controlled fireworks&nbsp;launcher, Working 3D printed stepper&nbsp;motor, SqueezeBerry: a Raspberri Pi powered Squeezebox&nbsp;appliance">13</a></td>
551
+ </tr>
552
+ <tr>
553
+ <td><a href="http://hackaday.com/2013/04/14/" title="Teaching a computer to play Mario&#8230; seemingly through&nbsp;voodoo, Building a replacement for a broken dehumidifier&nbsp;controller, Hackaday Links: Sunday, April 14th,&nbsp;2013">14</a></td><td><a href="http://hackaday.com/2013/04/15/" title="Glowing Easter eggs more fun than a dye&nbsp;job, [FlorianH] shows off MinimaBL, the next generation of his quadcopter&nbsp;project, Original hardware for fifteen consoles jammed into recently completed Project&nbsp;Unity">15</a></td><td><a href="http://hackaday.com/2013/04/16/" title="Tube radio husk gets a web radio&nbsp;transplant, Building a kegerator with visual&nbsp;style, Hacked together Mac isn&#8217;t a&nbsp;hackintosh">16</a></td><td><a href="http://hackaday.com/2013/04/17/" title="Hackerspace security system brings RFID, video feedback, and automatic&nbsp;doors, Apple MagSafe cord&nbsp;repair, 3D Printing sensor mounts for the Oculus&nbsp;Rift, Upgrade a toy keyboard&#8217;s tone&nbsp;production">17</a></td><td><a href="http://hackaday.com/2013/04/18/" title="Hidden servo automates slat-style window&nbsp;blinds, Semi-automatic pick and place&nbsp;machine, Living night light with glowing&nbsp;algae, Pulse Oximeter from LM324, LED, and&nbsp;Photodiode">18</a></td><td><a href="http://hackaday.com/2013/04/19/" title="Measuring the lifespan of&nbsp;LEGO, Replace your project power supplies with recycled Li-Ion cells and a switching&nbsp;regulator, Asynchronous fireflies use few&nbsp;parts">19</a></td><td><a href="http://hackaday.com/2013/04/20/" title="This piggy bank is our stock&nbsp;broker, GUI window manager on an AVR&nbsp;chip, Mood lamp/notifier uses neat modular PCB&nbsp;design">20</a></td>
554
+ </tr>
555
+ <tr>
556
+ <td><a href="http://hackaday.com/2013/04/21/" title="3D printing some sweet&nbsp;music, Drop-in pcb makes Nintendo Four Score a USB&nbsp;joystick, Hackaday Links: Sunday, April 21st,&nbsp;2013">21</a></td><td><a href="http://hackaday.com/2013/04/22/" title="Automatic tubular bells given a MIDI interface&nbsp;too, Connect a Retina display to a regular&nbsp;computer, 20 pounds and a gut feeling yields a configurable Rubidium atomic clock&nbsp;source">22</a></td><td><a href="http://hackaday.com/2013/04/23/" title="Console radio given new life with a WiFi router&nbsp;retrofit, What are the best hacking&nbsp;documentaries?, OTM-02 is a 3D printed&nbsp;wristwatch, Rattle generator is a new type of dynamo for a&nbsp;bicycle">23</a></td><td id="today">24</td><td>25</td><td>26</td><td>27</td>
557
+ </tr>
558
+ <tr>
559
+ <td>28</td><td>29</td><td>30</td>
560
+ <td class="pad" colspan="4">&nbsp;</td>
561
+ </tr>
562
+ </tbody>
563
+ </table></div></div></div>
564
+ <div id=virurl>
565
+ <!-- BEGIN - VIRURL Widget - iFrame Embed Code -->
566
+ <iframe style="border: none; margin: 0; padding: 0; width: 300px; height: 600px;" src="https://www.virurl.com/iframe_widget?t=hackaday&l=5&category=Tech&w=23&u=147555"
567
+ width="300" height="600" scrolling="no" >
568
+ </iframe>
569
+ <!-- END - VIRURL Widget - iFrame Embed Code -->
570
+ </div>
571
+ <br />
572
+ <br />
573
+ <div id=tl_ad_bottom>
574
+ <script type="text/javascript"><!--
575
+ google_ad_client = "ca-pub-1812638130783065";
576
+ /* Hackaday sidebar wide skyscraper */
577
+ google_ad_slot = "1587378096";
578
+ google_ad_width = 160;
579
+ google_ad_height = 600;
580
+ google_ad_region = "test";
581
+ //-->
582
+ </script>
583
+ <script type="text/javascript"
584
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
585
+ </script>
586
+ </div>
587
+
588
+
589
+ <br />
590
+
591
+
592
+
593
+
594
+
595
+
596
+ </div> </div><!-- end #content-sidebar-wrap -->
597
+ </div><!-- end .wrap --></div><!-- end #inner --><div id="footer" class="footer"><div class="wrap"><div class="gototop"><p><a href="#wrap" rel="nofollow">Return to top of page</a></p></div><div class="creds"><p>Copyright &copy; 2013 &middot; <a href="http://www.studiopress.com/" title="Genesis Framework">Genesis Framework</a> &middot; <a href="http://wordpress.org/" title="WordPress">WordPress</a> &middot; <a href="http://hackadaycom.wordpress.com/wp-login.php">Log in</a></p></div></div><!-- end .wrap --></div><!-- end #footer -->
598
+ <script type="text/javascript">
599
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
600
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
601
+ </script>
602
+ <script type="text/javascript">
603
+ var pageTracker = _gat._getTracker("UA-2201445-6");
604
+ pageTracker._trackPageview();
605
+ </script>
606
+ <!-- Start Quantcast tag -->
607
+ <script type="text/javascript">
608
+ _qoptions={
609
+ qacct:"p-cc6zkdHuZwUDM"
610
+ };
611
+ </script>
612
+ <script type="text/javascript"
613
+ src="http://edge.quantserve.com/quant.js"></script>
614
+ <noscript>
615
+ <img src="http://pixel.quantserve.com/pixel/p-cc6zkdHuZwUDM.gif"
616
+ style="display: none;" border="0" height="1" width="1"
617
+ alt="Quantcast"/>
618
+ </noscript></div><!-- end #wrap -->
619
+
620
+ <script type="text/javascript">
621
+ var _qevents = _qevents || [], wpcomQuantcastData = {"qacct":"p-18-mFEk4J448M","labels":",language.en,type.wpcom,vip.hackadaycom"};
622
+ function wpcomQuantcastPixel( labels, options ) {
623
+ var i, defaults = wpcomQuantcastData, data = { event: 'ajax' };
624
+
625
+ labels = labels || '';
626
+ options = options || {};
627
+
628
+ if ( typeof labels != 'string' )
629
+ options = labels;
630
+
631
+ for ( i in defaults ) {
632
+ data[i] = defaults[i];
633
+ }
634
+
635
+ for ( i in options ) {
636
+ data[i] = options[i];
637
+ }
638
+
639
+ if ( data.labels ) {
640
+ data.labels += ',' + labels;
641
+ } else {
642
+ data.labels = labels;
643
+ }
644
+
645
+ _qevents.push( data );
646
+ };
647
+ (function() {var elem = document.createElement('script');elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge") + ".quantserve.com/quant.js";elem.async = true;elem.type = "text/javascript";var scpt = document.getElementsByTagName('script')[0];scpt.parentNode.insertBefore(elem, scpt); })();
648
+ _qevents.push( wpcomQuantcastData );
649
+ </script>
650
+ <noscript><div style="display: none;"><img src="//pixel.quantserve.com/pixel/p-18-mFEk4J448M.gif?labels=%2Clanguage.en%2Ctype.wpcom%2Cvip.hackadaycom" height="1" width="1" alt="" /></div></noscript>
651
+
652
+
653
+ <!-- /// LOAD CHARTBEAT /// -->
654
+ <script type="text/javascript">
655
+ var _sf_async_config={};
656
+ _sf_async_config.uid = 2021;
657
+ _sf_async_config.useCanonical = true;
658
+
659
+ (function(){
660
+ function loadChartbeat() {
661
+ window._sf_endpt=(new Date()).getTime();
662
+ var e = document.createElement('script');
663
+ e.setAttribute('language', 'javascript');
664
+ e.setAttribute('type', 'text/javascript');
665
+ e.setAttribute('src',
666
+ (("https:" == document.location.protocol) ? "https://s3.amazonaws.com/" : "http://") +
667
+ "static.chartbeat.com/js/chartbeat.js");
668
+ document.body.appendChild(e);
669
+ }
670
+ var oldonload = window.onload;
671
+ window.onload = (typeof window.onload != 'function') ?
672
+ loadChartbeat : function() { oldonload(); loadChartbeat(); };
673
+ })();
674
+ </script>
675
+ <div style="display:none">
676
+ </div>
677
+ <script type='text/javascript' src='http://s2.wp.com/_static/??-eJylzMsOREAQRuEXMoqgEwvxLC4/qjPVOl3dZh4fO3vrk+/Qz3+m3UW4SFZpxsET/D+3mtEjxQ0CJR8gnIRWOCgrfXm8lcAl0uQRFtbtlR3Cqtegl66smto0xhStPQEw5Dy+'></script>
678
+ <script type="text/javascript">
679
+ // <![CDATA[
680
+ (function() {
681
+ try{
682
+ if ( window.external &&'msIsSiteMode' in window.external) {
683
+ if (window.external.msIsSiteMode()) {
684
+ var jl = document.createElement('script');
685
+ jl.type='text/javascript';
686
+ jl.async=true;
687
+ jl.src='/wp-content/plugins/ie-sitemode/custom-jumplist.php';
688
+ var s = document.getElementsByTagName('script')[0];
689
+ s.parentNode.insertBefore(jl, s);
690
+ }
691
+ }
692
+ }catch(e){}
693
+ })();
694
+ // ]]>
695
+ </script><script src="http://s.stats.wordpress.com/w.js?21" type="text/javascript"></script>
696
+ <script type="text/javascript">
697
+ st_go({'blog':'4779443','v':'wpcom','tz':'-7','user_id':'0','subd':'hackadaycom'});
698
+ function st_vt() {var x=document.createElement("img");x.src="http://stats.wordpress.com/g.gif?blog=4779443&v=wpcomvt&tz=-7&user_id=0&subd=hackadaycom&rand="+Math.random();}
699
+ ex_go({'crypt':'UE40eW5QN0p8M2Y/RE1BNmNJfGhxNCVxUDExYmtXRThKbHcwXTdETWI1alhvb1oseHImN101ZFpEakVpYjlQYVFLYzBaVHRtPz0wXS9bVlFpZ3c1Qn5KSThLNS9lSHNGOE1IJk9+N3xFNWxyT2x+MUpnR1dJcFZJcTcvemU2JkIyaVpocEtidXdHajMvMHQxc20ucitkST9Eem5qT3E3NEdVYXMyYVJnS0ZJUTNCWzd5X0M1W3U9Nks5cUVJUV1BSmNyM3dzcXFbdDh2eEF4TXx8d100cUVmR09LaDElc2xQW3NLd1p8WmU3V25aTXpwK1Z3X0RbQktPY0hjfnc='});
700
+ addLoadEvent(function(){linktracker_init('4779443',0);});
701
+ </script>
702
+ <noscript><img src="http://stats.wordpress.com/b.gif?v=noscript" style="height:0px;width:0px;overflow:hidden" alt="" /></noscript>
703
+ <script type="text/javascript">
704
+ // Trigger Quantcast pixel for each Infinite Scroll post load
705
+ if ( 'function' === typeof( jQuery ) ) {
706
+ jQuery( document.body ).on( 'post-load', function() {
707
+ if ( 'function' === typeof( wpcomQuantcastPixel ) )
708
+ wpcomQuantcastPixel();
709
+ } );
710
+ }
711
+ </script>
712
+ </body>
713
+ </html>