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,715 @@
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 in 0.362 seconds
5
+ 67246 bytes batcached for 300 seconds
6
+ -->
7
+ <head profile="http://gmpg.org/xfn/11">
8
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
9
+ <title>Hack a Day — Fresh hacks every day</title>
10
+ <meta name="description" content="Fresh hacks every day" />
11
+ <meta name="robots" content="noodp,noydir" />
12
+ <link rel="Shortcut Icon" href="http://s1.wp.com/wp-content/themes/vip/hackaday2/images/favicon.ico?m=1353160633g" type="image/x-icon" />
13
+ <link rel="stylesheet" href="http://s1.wp.com/wp-content/themes/vip/hackaday2/style.css?m=1363789849g" type="text/css" media="screen" />
14
+
15
+ <meta name="description" content="Fresh hacks every day" />
16
+ <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" />
17
+ <script src='http://r-login.wordpress.com/remote-login.php?action=js&amp;host=hackaday.com&amp;id=4779443&amp;t=1366801135&amp;back=hackaday.com%2Fpage%2F12%2F' type="text/javascript"></script>
18
+ <script type="text/javascript">
19
+ /* <![CDATA[ */
20
+ if ( 'function' === typeof WPRemoteLogin ) {
21
+ document.cookie = "wordpress_test_cookie=test; path=/";
22
+ if ( document.cookie.match( /(;|^)\s*wordpress_test_cookie\=/ ) ) {
23
+ WPRemoteLogin();
24
+ }
25
+ }
26
+ /* ]]> */
27
+ </script>
28
+ <link rel="alternate" type="application/rss+xml" title="Hack a Day &raquo; Feed" href="http://feeds2.feedburner.com/hackaday/LgoM" />
29
+ <link rel="alternate" type="application/rss+xml" title="Hack a Day &raquo; Comments Feed" href="http://hackaday.com/comments/feed/" />
30
+ <script type="text/javascript">
31
+ /* <![CDATA[ */
32
+ function addLoadEvent(func){var oldonload=window.onload;if(typeof window.onload!='function'){window.onload=func;}else{window.onload=function(){oldonload();func();}}}
33
+ /* ]]> */
34
+ </script>
35
+ <link rel="canonical" href="http://hackaday.com/" />
36
+ <link rel='stylesheet' id='all-css-0' href='http://s0.wp.com/_static/??-eJzTLy/QTc7PK0nNK9HPLdUtyClNz8wr1s/JzE4t1s9KLSlITM7WBfP0kouLdfSxKy/ILy7RTctJzCzSLy6pzEklVm1GYlFmXjqMxtBVkpGaC3RGhol+ek5+UmIOSIF9rq2hsZmZuYmxqbFlFgANUUYu' type='text/css' media='all' />
37
+ <script type='text/javascript'>
38
+ /* <![CDATA[ */
39
+ var SafeCommentsAjax = {"ajaxurl":"http:\/\/hackaday.com\/wp-admin\/admin-ajax.php"};
40
+ /* ]]> */
41
+ </script>
42
+ <script type='text/javascript' src='http://s0.wp.com/_static/??-eJyFz0sKAjEMBuALWUsZpjvxLKXGmjp92KQz6umNogtRFAJZ5Et+opeqMPup74B0lDp1aJdnW0da6V9AJQzNMbygL5kh893VQpyAyIVv0/cYzDPC8pdF4Or8UTUgvH5c5QNInp6x6jr1gJk0uT2IrqWxsJSEPX5w0Z1lfZs2ZrB2NIOxY7wBpfljQw=='></script>
43
+ <link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://hackadaycom.wordpress.com/xmlrpc.php?rsd" />
44
+ <link rel="shortcut icon" type="image/x-icon" href="http://0.gravatar.com/blavatar/4f3e6b6daa090af416a1ba595885efd1?s=16" sizes="16x16" />
45
+ <link rel="icon" type="image/x-icon" href="http://0.gravatar.com/blavatar/4f3e6b6daa090af416a1ba595885efd1?s=16" sizes="16x16" />
46
+ <link rel="apple-touch-icon-precomposed" href="http://1.gravatar.com/blavatar/5560f98f805877b0e332f191cb9e0af3?s=114" />
47
+ <link rel='openid.server' href='http://hackadaycom.wordpress.com/?openidserver=1' />
48
+ <link rel='openid.delegate' href='http://hackadaycom.wordpress.com/' />
49
+ <link rel="search" type="application/opensearchdescription+xml" href="http://hackaday.com/osd.xml" title="Hack a Day" />
50
+ <link rel="search" type="application/opensearchdescription+xml" href="http://wordpress.com/opensearch.xml" title="WordPress.com" />
51
+ <style>
52
+ /* <![CDATA[ */
53
+ /* Block: reblog */
54
+
55
+ .reblog-from img { margin: 0 10px 0 0; vertical-align: middle; padding: 0; border: 0; }
56
+ .reblogger-note img.avatar { float: left; padding: 0; border: 0; }
57
+ .reblogger-note-content { margin: 0 0 20px; }
58
+ .reblog-post .wpcom-enhanced-excerpt-content { border-left: 3px solid #eee; padding-left: 15px; }
59
+ .reblog-post ul.thumb-list { display: block; list-style: none; margin: 2px 0; padding: 0; clear: both; }
60
+ .reblog-post ul.thumb-list li { display: inline; margin: 0; padding: 0 1px; border: 0; }
61
+ .reblog-post ul.thumb-list li a { margin: 0; padding: 0; border: 0; }
62
+ .reblog-post ul.thumb-list li img { margin: 0; padding: 0; border: 0; }
63
+
64
+ .reblog-post .wpcom-enhanced-excerpt { clear: both; }
65
+
66
+ .reblog-post .wpcom-enhanced-excerpt address,
67
+ .reblog-post .wpcom-enhanced-excerpt li,
68
+ .reblog-post .wpcom-enhanced-excerpt h1,
69
+ .reblog-post .wpcom-enhanced-excerpt h2,
70
+ .reblog-post .wpcom-enhanced-excerpt h3,
71
+ .reblog-post .wpcom-enhanced-excerpt h4,
72
+ .reblog-post .wpcom-enhanced-excerpt h5,
73
+ .reblog-post .wpcom-enhanced-excerpt h6,
74
+ .reblog-post .wpcom-enhanced-excerpt p { font-size: 100% !important; }
75
+
76
+ .reblog-post .wpcom-enhanced-excerpt blockquote,
77
+ .reblog-post .wpcom-enhanced-excerpt pre,
78
+ .reblog-post .wpcom-enhanced-excerpt code,
79
+ .reblog-post .wpcom-enhanced-excerpt q { font-size: 98% !important; }
80
+
81
+
82
+ /* ]]> */
83
+ </style>
84
+
85
+ <script type="text/javascript">var _sf_startpt=(new Date()).getTime()</script>
86
+ <style>
87
+ .wpcom-related-posts ul li {
88
+ list-style-type: none;
89
+ display: inline-block;
90
+ }
91
+ </style>
92
+ <style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
93
+ <style type="text/css">
94
+ .recentcomments a {
95
+ display: inline !important;
96
+ padding: 0 !important;
97
+ margin: 0 !important;
98
+ }
99
+
100
+ table.recentcommentsavatartop img.avatar, table.recentcommentsavatarend img.avatar {
101
+ border: 0px;
102
+ margin: 0;
103
+ }
104
+
105
+ table.recentcommentsavatartop a, table.recentcommentsavatarend a {
106
+ border: 0px !important;
107
+ background-color: transparent !important;
108
+ }
109
+
110
+ td.recentcommentsavatarend, td.recentcommentsavatartop {
111
+ padding: 0px 0px 1px 0px;
112
+ margin: 0px;
113
+ }
114
+
115
+ td.recentcommentstextend {
116
+ border: none !important;
117
+ padding: 0px 0px 2px 10px;
118
+ }
119
+
120
+ .rtl td.recentcommentstextend {
121
+ padding: 0px 10px 2px 0px;
122
+ }
123
+
124
+ td.recentcommentstexttop {
125
+ border: none !important;
126
+ padding: 0px 0px 0px 10px;
127
+ }
128
+
129
+ .rtl td.recentcommentstexttop {
130
+ padding: 0px 10px 0px 0px;
131
+ }
132
+ </style>
133
+ <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>
134
+
135
+ <script>jQuery(document).ready(function($) {
136
+ $("cswap li a").click(function() {
137
+ $("link").attr("href",$(this).attr('rel'));
138
+ return false;
139
+ });
140
+ });</script>
141
+ <meta name="google-site-verification" content="v0_F4q2HixEv6wrQCEKBEbp2Wuj0oI9ywwaN6aoV0JE" />
142
+ </head>
143
+ <body class="home blog paged paged-12 typekit-enabled header-image content-sidebar highlander-enabled highlander-light">
144
+
145
+ <div id="fb-root"></div>
146
+ <script>(function(d, s, id) {
147
+ var js, fjs = d.getElementsByTagName(s)[0];
148
+ if (d.getElementById(id)) return;
149
+ js = d.createElement(s); js.id = id;
150
+ js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
151
+ fjs.parentNode.insertBefore(js, fjs);
152
+ }(document, 'script', 'facebook-jssdk'));</script>
153
+ <div id="wrap">
154
+ <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">
155
+ <script type="text/javascript"><!--
156
+ google_ad_client = "ca-pub-1812638130783065";
157
+ /* Hackaday, 728x90, created 4/26/08, Leaderboard */
158
+ google_ad_slot = "4036713767";
159
+ google_ad_width = 728;
160
+ google_ad_height = 90;
161
+ //-->
162
+ </script>
163
+ <script type="text/javascript"
164
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
165
+ </script>
166
+ </div>
167
+ <div id="adslice">
168
+
169
+ <script type="text/javascript"><!--
170
+ google_ad_client = "pub-1812638130783065";
171
+ /* Hackaday, 728x15, created 4/26/08, AdSlice */
172
+ google_ad_slot = "0246324944";
173
+ google_ad_width = 728;
174
+ google_ad_height = 15;
175
+ //-->
176
+ </script>
177
+
178
+ <script type="text/javascript"
179
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
180
+ </script>
181
+
182
+ </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>
183
+ <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>
184
+ <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>
185
+ <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>
186
+ <li class="right search">
187
+ <form method="get" class="searchform" action="http://hackaday.com/" >
188
+
189
+ <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;';}" />
190
+ <input type="submit" class="searchsubmit" value="Search" />
191
+ </form>
192
+ </li></ul></div><!-- end .wrap --></div><div id="inner"><div class="wrap"> <div id="content-sidebar-wrap">
193
+ <div id="content" class="hfeed">
194
+ <div class="post-97306 post type-post status-publish format-standard hentry category-led-hacks category-tool-hacks tag-attiny1634 tag-led tag-light-ring tag-microscope tag-pcb tag-rotary-encoder">
195
+
196
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/03/microscope-ring-light-with-a-number-of-different-features/" title="Microscope ring light with a number of different&nbsp;features" rel="bookmark">Microscope ring light with a number of different&nbsp;features</a></h2>
197
+
198
+ <div class="post-info"><span class="date published time" title="2013-04-03T15:07:58+00:00">April 3, 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/04/03/microscope-ring-light-with-a-number-of-different-features/#comments">40 Comments</a></span> </div> <div class="entry-content">
199
+ <p><img class="aligncenter size-large wp-image-97307" alt="microscope-ring-light" src="http://hackadaycom.files.wordpress.com/2013/04/microscope-ring-light.jpg?w=580&#038;h=385" width="580" height="385" /></p>
200
+ <p>Microscopes magnify light. It makes sense that having more light reflecting off of the subject will result in a better magnified image. And so we come to Aziz! Light! It&#8217;s [Steve's] <a href="http://www.tangentaudio.com/2013/03/aziz-light/">LED light ring for a stereo microscope</a>. It&#8217;s also a <a href="http://www.youtube.com/watch?v=mvwd13F_1Gs">shout out to one of our favorite Sci-Fi movies</a>.</p>
201
+ <p>He&#8217;s not messing around with this microscope. We&#8217;ve already seen his <a href="http://hackaday.com/2013/02/20/the-perils-of-buying-a-stereo-microscope-without-a-stand/">custom stand</a> and <a href="http://hackaday.com/2013/03/12/camera-adapter-for-a-microscope/">camera add-on</a>. This is no exception. The device uses a fab-house PCB which he designed. It boasts a dual-ring of white LEDs. But the controls don&#8217;t simply stop with on and off. He&#8217;s included two rotary encoders, three momentary push switches, and three LEDs as a user interface. This is all shown off in his demo video after the break.</p>
202
+ <p>An ATtiny1634 is responsible for controlling the device. When turned on it gently ramps the light up to medium brightness. This can be adjusted with one of the rotary encoders. If there are shadows or other issues one of the push buttons can be used to change the mode, allowing a rotary encoder to select different lighting patterns to remedy the situation. There are even different setting for driving the inner and outer rings of LEDs.</p>
203
+ <p>We haven&#8217;t worked with any high-end optical microscopy. Are these features something that is available on commercial hardware, or is [Steve] forging new ground here?</p>
204
+ <p> <a href="http://hackaday.com/2013/04/03/microscope-ring-light-with-a-number-of-different-features/#more-97306" class="more-link">[Read more...]</a></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/led-hacks/" title="View all posts in led hacks" rel="category tag">led hacks</a>, <a href="http://hackaday.com/category/tool-hacks/" title="View all posts in tool hacks" rel="category tag">tool hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/attiny1634/" rel="tag">attiny1634</a>, <a href="http://hackaday.com/tag/led/" rel="tag">led</a>, <a href="http://hackaday.com/tag/light-ring/" rel="tag">light ring</a>, <a href="http://hackaday.com/tag/microscope/" rel="tag">microscope</a>, <a href="http://hackaday.com/tag/pcb/" rel="tag">pcb</a>, <a href="http://hackaday.com/tag/rotary-encoder/" rel="tag">rotary encoder</a></span> </div>
207
+ </div><!-- end .postclass -->
208
+ <div class="post-97310 post type-post status-publish format-standard hentry category-musical-hacks tag-cello tag-theremin tag-theremincello">
209
+
210
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/03/building-a-theremincello/" title="Building a&nbsp;Theremincello" rel="bookmark">Building a&nbsp;Theremincello</a></h2>
211
+
212
+ <div class="post-info"><span class="date published time" title="2013-04-03T13:08:02+00:00">April 3, 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/04/03/building-a-theremincello/#comments">11 Comments</a></span> </div> <div class="entry-content">
213
+ <p><img class="aligncenter size-full wp-image-97311" alt="building-a-theremin-cello" src="http://hackadaycom.files.wordpress.com/2013/04/building-a-theremin-cello.jpg?w=550&#038;h=412" width="550" height="412" /></p>
214
+ <p>We totally missed the ball on this project. It should have been run on April Fools&#8217; day and you would have no idea if it were real or a hoax. That&#8217;s because the very serious performance given after the break is hard to watch without a least a bit of a chuckle. The instrument shown above is a Theremincello. It&#8217;s an instrument in the shape of <a href="http://theremincello.me/">a cello which functions in a similar way to a Theremin</a>.</p>
215
+ <p>The instrument being played in that video clip is the first generation and the one pictured above is its successor. The creator wanted to refine the electronics so that the resulting sound wasn&#8217;t so &#8216;flutey&#8217;. The result can be heard on the video embedded in <a href="http://www.thereminworld.com/Article/14782/thierry-frenkel-demonstrates-his-new-theremin-cello-design">this Theremin World article</a> and we think they&#8217;ve accomplished the goal; it sounds much better! In the clip [Thierry Frenkel] demonstrates changing notes on the fingerboard with the left hand. The right hand which would normally bow the strings operates the lever to adjust the volume of the note being played back.</p>
216
+ <p>If a single fingerboard isn&#8217;t enough for your needs you may consider <a href="http://hackaday.com/2011/09/22/why-wasnt-this-magnetic-cello-made-in-the-70s/">building this four-track design instead</a>.</p>
217
+ <p> <a href="http://hackaday.com/2013/04/03/building-a-theremincello/#more-97310" 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/musical-hacks/" title="View all posts in musical hacks" rel="category tag">musical hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/cello/" rel="tag">cello</a>, <a href="http://hackaday.com/tag/theremin/" rel="tag">theremin</a>, <a href="http://hackaday.com/tag/theremincello/" rel="tag">theremincello</a></span> </div>
220
+ </div><!-- end .postclass -->
221
+ <div class="post-97270 post type-post status-publish format-standard hentry category-laser-hacks tag-laser tag-pcb">
222
+
223
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/03/homebuilt-laser-cutter-ideas/" title="Homebuilt Laser Cutter&nbsp;Ideas" rel="bookmark">Homebuilt Laser Cutter&nbsp;Ideas</a></h2>
224
+
225
+ <div class="post-info"><span class="date published time" title="2013-04-03T10:01:48+00:00">April 3, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/jeremyscook/" class="fn n" title="Jeremy Cook" rel="author">Jeremy Cook</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/04/03/homebuilt-laser-cutter-ideas/#comments">33 Comments</a></span> </div> <div class="entry-content">
226
+ <p><a href="http://hackaday.com/2013/04/03/homebuilt-laser-cutter-ideas/laser-cutter/" rel="attachment wp-att-97272"><img class="aligncenter size-large wp-image-97272" alt="Laser-Cutter" src="http://hackadaycom.files.wordpress.com/2013/04/laser-cutter.jpg?w=580&#038;h=435" width="580" height="435" /></a></p>
227
+ <p>[Wuzabear] wrote in to tell us about this <a title="DIY laser cutter" href="http://hardwarebreakout.com/2013/03/diy-laser-cutter-for-pcb-stencils/" target="_blank">&#8220;DIY Laser Cutter for PCB Stencils.&#8221;</a> While a full BOM and step-by-step build instructions aren&#8217;t provided for the frame, pictures of the build are available, and some different options for construction are discussed. One other option that was especially interesting would be to use a ready-built RepRap or other 3D printer to act as the laser motion controller. Apparently <a title="Laser RepStrap" href="http://reprap.org/wiki/LaserCut_Mendel" target="_blank">this has been experimented with</a>, and we&#8217;d love to see any versions that or readers have come up with!</p>
228
+ <p>Besides some different ideas and resources for the moving parts of the cutter, there is some information on how to hook up a laser for this purpose, as well as  for the software and calibration required. It should be noted that you should always wear the appropriate safety goggles if you&#8217;re working with a high-powered laser. Although any machine-tool can be dangerous, lasers provide some safety issues that should be treated with extreme caution.</p>
229
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
230
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/laser-hacks/" title="View all posts in laser hacks" rel="category tag">laser hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/laser/" rel="tag">laser</a>, <a href="http://hackaday.com/tag/pcb/" rel="tag">pcb</a></span> </div>
231
+ </div><!-- end .postclass -->
232
+ <div align="center">
233
+
234
+
235
+
236
+ <script type="text/javascript"><!--
237
+
238
+ google_ad_client = "ca-pub-1812638130783065";
239
+
240
+ /* Hackaday, 300x250, created 4/26/08, MedRect main column */
241
+
242
+ google_ad_slot = "3449215672";
243
+
244
+ google_ad_width = 300;
245
+
246
+ google_ad_height = 250;
247
+
248
+ //-->
249
+
250
+ </script>
251
+
252
+ <script type="text/javascript"
253
+
254
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
255
+
256
+ </script>
257
+
258
+
259
+
260
+ </div> <div class="post-97282 post type-post status-publish format-standard hentry category-hardware category-wireless-hacks tag-mercury-mw150r tag-openwrt tag-router">
261
+
262
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/03/upgrading-a-router-with-impeccable-soldering-skills/" title="Upgrading a router with impeccable soldering&nbsp;skills" rel="bookmark">Upgrading a router with impeccable soldering&nbsp;skills</a></h2>
263
+
264
+ <div class="post-info"><span class="date published time" title="2013-04-03T08:00:32+00:00">April 3, 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/04/03/upgrading-a-router-with-impeccable-soldering-skills/#comments">24 Comments</a></span> </div> <div class="entry-content">
265
+ <p><img class="aligncenter size-full wp-image-97283" alt="router" src="http://hackadaycom.files.wordpress.com/2013/04/router.png?w=580&#038;h=208" width="580" height="208" /></p>
266
+ <p>[Necromant] recently acquired a router that was nearly free. Looking his gift horse in the mouth, he hooked up a serial port to see if it could run some updated firmware such as OpenWRT. The initial findings were promising; it used the same CPU as the very popular WR703N, but this free router only had 2 MiB of Flash and 8 MiB of RAM &#8211; barely enough to do anything. His solution to this problem is in the true hacker tradition: <a href="http://ncrmnt.org/wp/2012/07/29/mercury-mw150r-turning-an-epic-fail-to-an-epic-win/">just solder some more chips</a> onto the router.</p>
267
+ <p>Upgrading the RAM was comparatively easy; [Necromant] found an old stick of RAM, desoldered one of the chips, and replaced the measly 8 MiB chip with a new 64 Megabyte chip.</p>
268
+ <p>The Flash, though, proved more difficult. Without the right code in the Flash for the radio test, the router wouldn&#8217;t be useful at all. The solution was to read the original 2 MiB chip, read the Flash from a  WR703, and combined the two with a simple dd command. This was written to a new SPI flash chip with a buspirate and a home etched board.</p>
269
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
270
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/hardware/" title="View all posts in hardware" rel="category tag">hardware</a>, <a href="http://hackaday.com/category/wireless-hacks/" title="View all posts in wireless hacks" rel="category tag">wireless hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/mercury-mw150r/" rel="tag">Mercury MW150R</a>, <a href="http://hackaday.com/tag/openwrt/" rel="tag">openwrt</a>, <a href="http://hackaday.com/tag/router/" rel="tag">router</a></span> </div>
271
+ </div><!-- end .postclass -->
272
+ <div class="post-97276 post type-post status-publish format-standard hentry category-hardware category-virtual-reality-2 tag-oculus-rift tag-vr">
273
+
274
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/03/powering-the-oculus-rift-with-usb/" title="Powering the Oculus Rift with&nbsp;USB" rel="bookmark">Powering the Oculus Rift with&nbsp;USB</a></h2>
275
+
276
+ <div class="post-info"><span class="date published time" title="2013-04-03T06:00:41+00:00">April 3, 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/04/03/powering-the-oculus-rift-with-usb/#comments">52 Comments</a></span> </div> <div class="entry-content">
277
+ <p><img class="aligncenter size-full wp-image-97277" alt="rift" src="http://hackadaycom.files.wordpress.com/2013/04/rift.jpg?w=580&#038;h=194" width="580" height="194" /></p>
278
+ <p>Oculus Rift dev kits are starting to make their way onto the workbenches of makers around the globe. Some are even going so far as to tear open the hardware and see how they can improve it. [Mike] didn&#8217;t like the fact the Oculus Rift needed a wall wart power supply, <a href="http://mikejmoffitt.com/wp/?p=156">so he modded it so it can be powered over a USB port.</a></p>
279
+ <p>The key insight for this mod comes after [Mike] put a Kill-a-Watt between his outlet and the Rift&#8217;s power adapter. He found only 600 mA of current was being used by the Rift, assuming 100% efficiency in the adapter. A USB port is supposed to provide 500 mA of current, so with a soldering gun, [Mike] bridged the DC input jack and the USB port on the Rift. Perhaps unsurprisingly, everything worked perfectly.</p>
280
+ <p>In case you&#8217;ve forgotten, <a href="http://hackaday.com/2012/08/17/were-getting-an-oculus-rift-dev-kit/">Hackaday is getting one of these Oculus Rift dev kits</a>. We&#8217;ll post a teardown when [Caleb] learns to share. You can check out a video of [Mike]&#8216;s modded Rift and some dolla dolla billz after the break.</p>
281
+ <p> <a href="http://hackaday.com/2013/04/03/powering-the-oculus-rift-with-usb/#more-97276" class="more-link">[Read more...]</a></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/hardware/" title="View all posts in hardware" rel="category tag">hardware</a>, <a href="http://hackaday.com/category/virtual-reality-2/" title="View all posts in Virtual Reality" rel="category tag">Virtual Reality</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/oculus-rift/" rel="tag">oculus rift</a>, <a href="http://hackaday.com/tag/vr/" rel="tag">vr</a></span> </div>
284
+ </div><!-- end .postclass -->
285
+ <div class="post-97154 post type-post status-publish format-standard hentry category-microcontrollers tag-atmega16 tag-avr tag-enc28j60 tag-olimex tag-server">
286
+
287
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/03/embedded-web-server-is-all-about-clever-formatting/" title="Embedded web server is all about clever&nbsp;formatting" rel="bookmark">Embedded web server is all about clever&nbsp;formatting</a></h2>
288
+
289
+ <div class="post-info"><span class="date published time" title="2013-04-03T04:01:26+00:00">April 3, 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/04/03/embedded-web-server-is-all-about-clever-formatting/#comments">16 Comments</a></span> </div> <div class="entry-content">
290
+ <p><img class="aligncenter size-large wp-image-97155" alt="embedded-web-server" src="http://hackadaycom.files.wordpress.com/2013/03/embedded-web-server.jpg?w=580&#038;h=403" width="580" height="403" /></p>
291
+ <p>Take a look around here and you&#8217;ll find all kinds of embedded web servers. This one doesn&#8217;t look all that interesting, especially because it&#8217;s just a NIC plugged into a development board. But for us the interesting part is in how [Andrew Rossignol] chose to <a href="http://www.theresistornetwork.com/2013/03/fun-with-embedded-http-servers.html">format the webpage assets to best utilize the under-powered server</a>.</p>
292
+ <p>The project was spawned as part of a class in Internet Embedded Systems which [Andrew] is taking. The board has an ATmega16 microcontroller and he&#8217;s using the ever popular ENC28J60 on that Ethernet adapter board. The <a href="http://tuxgraphics.org/electronics/200905/embedded-tcp-ip-stack.shtml">TuxGraphics TCP/IP Stack</a> takes care of communications with the network.</p>
293
+ <p>One constraint which [Andrew] imposed upon himself was to use just a single response which the available RAM limits to about  700 bytes. Any decent webpage needs to have at least some graphics but that&#8217;s tough with the size limit. He managed to display an AVR logo by optimizing an SVG in Inkscape then stripped the rest of the cruft using VIM (explained in the demo after the break). With that piece of Linux-fu in his pocket he set to work streamlining the CSS file. The webpage isn&#8217;t just static either. He displays the server up-time and even allows the relays and LEDs on the Olimex board to be controlled.</p>
294
+ <p>Despite the limitations of the ATmega family they still seem to do some amazing Internet-connected stuff. Here&#8217;s <a href="http://hackaday.com/2012/11/16/avr-minecraft-server-lets-you-toggle-pins-from-the-virtual-world/">one used as a Minecraft server</a>.</p>
295
+ <p> <a href="http://hackaday.com/2013/04/03/embedded-web-server-is-all-about-clever-formatting/#more-97154" class="more-link">[Read more...]</a></p>
296
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
297
+ <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/atmega16/" rel="tag">atmega16</a>, <a href="http://hackaday.com/tag/avr/" rel="tag">AVR</a>, <a href="http://hackaday.com/tag/enc28j60/" rel="tag">enc28j60</a>, <a href="http://hackaday.com/tag/olimex/" rel="tag">olimex</a>, <a href="http://hackaday.com/tag/server/" rel="tag">server</a></span> </div>
298
+ </div><!-- end .postclass -->
299
+ <div class="post-97241 post type-post status-publish format-standard hentry category-home-hacks tag-home-automation tag-lamp tag-ldr tag-light tag-light-fixture tag-motion-sensor tag-pir tag-tl-wr703n tag-tplink">
300
+
301
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/02/senselamp-automates-rooms-by-replacing-light-fixtures/" title="SenseLamp automates rooms by replacing light&nbsp;fixtures" rel="bookmark">SenseLamp automates rooms by replacing light&nbsp;fixtures</a></h2>
302
+
303
+ <div class="post-info"><span class="date published time" title="2013-04-02T19:01:14+00:00">April 2, 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/04/02/senselamp-automates-rooms-by-replacing-light-fixtures/#comments">24 Comments</a></span> </div> <div class="entry-content">
304
+ <p><img class="aligncenter size-large wp-image-97242" alt="senselamp" src="http://hackadaycom.files.wordpress.com/2013/04/senselamp.jpg?w=580&#038;h=386" width="580" height="386" /></p>
305
+ <p>Would you believe that this beautiful light fixture is actually <a href="http://32leav.es/?p=1152">a hacked together home automation project</a>? Okay, so this wire mess is the second of three versions that [Christian] built. It replaces a light fixture in the room, but if you look closely you&#8217;ll see that there is a compact fluorescent bulb included in the build. The laser-cut frame acts as a bit of a lamp shade, while providing a place to mount the rest of the hardware.</p>
306
+ <p>The final version cleans things up a bit, and adds a footprint for the PIR motion sensor that he forgot to design into this version. The idea is that each lamp monitors motion in the room, switching the light on and off again as necessary. A light-dependent resistor ensures that the bulb is only powered up if the room is dark so as not to waste electricity during the day.</p>
307
+ <p>The build includes a sensor package that reports back temperature and humidity data. Communications are provided by a WR703N router rolled into each of the four units installed in his house. With this kind of hardware at his disposal it should be a snap to <a href="http://hackaday.com/2013/03/21/remote-control-command-center-includes-rf-and-ir-functions/">control every IR remote control device in his house</a> via the network by adding an IR LED and some code to the lamps.</p>
308
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
309
+ <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/home-automation/" rel="tag">home automation</a>, <a href="http://hackaday.com/tag/lamp/" rel="tag">lamp</a>, <a href="http://hackaday.com/tag/ldr/" rel="tag">ldr</a>, <a href="http://hackaday.com/tag/light/" rel="tag">light</a>, <a href="http://hackaday.com/tag/light-fixture/" rel="tag">light fixture</a>, <a href="http://hackaday.com/tag/motion-sensor/" rel="tag">motion sensor</a>, <a href="http://hackaday.com/tag/pir/" rel="tag">pir</a>, <a href="http://hackaday.com/tag/tl-wr703n/" rel="tag">TL-WR703N</a>, <a href="http://hackaday.com/tag/tplink/" rel="tag">TPlink</a></span> </div>
310
+ </div><!-- end .postclass -->
311
+ <div class="navigation"><div class="alignleft"><a href="http://hackaday.com/page/13/" >&laquo; Older Posts</a></div><div class="alignright"><a href="http://hackaday.com/page/11/" >Newer Posts &raquo;</a></div></div><!-- end .navigation --> </div><!-- end #content -->
312
+ <div id="sidebar" class="sidebar widget-area">
313
+ <div id=tl_ad>
314
+ <script type="text/javascript"><!--
315
+ google_ad_client = "ca-pub-1812638130783065";
316
+ /* Hackaday, 300x250, created 4/26/08, MedRect sidebar */
317
+ google_ad_slot = "7800245928";
318
+ google_ad_width = 300;
319
+ google_ad_height = 250;
320
+ //-->
321
+ </script>
322
+ <script type="text/javascript"
323
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
324
+ </script>
325
+
326
+ </div>
327
+
328
+
329
+
330
+
331
+
332
+
333
+ <div class="widget">
334
+ <h4>Never Miss a Hack</h4>
335
+ <div class="textwidget">
336
+
337
+ <!-- Place this tag where you want the badge to render. -->
338
+ <div class="g-plus" data-width= "280" data-href="https://plus.google.com/114843073658390316652" data-rel="publisher" data-theme="dark"></div>
339
+ <!-- Place this tag after the last badge tag. -->
340
+ <script type="text/javascript">
341
+ (function() {
342
+ var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
343
+ po.src = 'https://apis.google.com/js/plusone.js';
344
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
345
+ })();
346
+ </script>
347
+
348
+ <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>
349
+
350
+ <a href="https://twitter.com/hackaday" class="twitter-follow-button" data-show-count="true" data-lang="en" data-size="large">Follow @twitter</a>
351
+ <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>
352
+
353
+ <a href="http://feeds2.feedburner.com/hackaday/LgoM" target="_blank"><img src="http://hackadaycom.files.wordpress.com/2012/11/orange.png" border="0"/></a>
354
+ <div class="clear"> </div>
355
+ <!-- Begin MailChimp Signup Form -->
356
+ <link href="http://cdn-images.mailchimp.com/embedcode/slim-081711.css" rel="stylesheet" type="text/css">
357
+
358
+ <div id="mc_embed_signup">
359
+ <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>
360
+ <label for="mce-EMAIL">Subscribe to our mailing list for sneak previews and behind the scenes info</label>
361
+ <input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="email address" required>
362
+ <div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
363
+ </form>
364
+ </div>
365
+
366
+ <!--End mc_embed_signup-->
367
+ </div>
368
+ </div>
369
+
370
+ <div id="categories-2" class="widget widget_categories"><div class="widget-wrap"><h4 class="widgettitle">Categories</h4>
371
+ <select name='cat' id='cat' class='postform' >
372
+ <option value='-1'>Select Category</option>
373
+ <option class="level-0" value="114554125">3d Printer hacks&nbsp;&nbsp;(116)</option>
374
+ <option class="level-0" value="18020710">android hacks&nbsp;&nbsp;(240)</option>
375
+ <option class="level-0" value="18020705">arduino hacks&nbsp;&nbsp;(1029)</option>
376
+ <option class="level-0" value="27981650">ARM&nbsp;&nbsp;(51)</option>
377
+ <option class="level-0" value="33199679">Ask Hackaday&nbsp;&nbsp;(29)</option>
378
+ <option class="level-0" value="64298109">ATtiny hacks&nbsp;&nbsp;(45)</option>
379
+ <option class="level-0" value="25122024">beer hacks&nbsp;&nbsp;(63)</option>
380
+ <option class="level-0" value="12115263">blackberry hacks&nbsp;&nbsp;(8)</option>
381
+ <option class="level-0" value="10969031">cellphones hacks&nbsp;&nbsp;(337)</option>
382
+ <option class="level-0" value="35745764">chemistry hacks&nbsp;&nbsp;(102)</option>
383
+ <option class="level-0" value="24483654">classic hacks&nbsp;&nbsp;(852)</option>
384
+ <option class="level-0" value="31677810">clock hacks&nbsp;&nbsp;(189)</option>
385
+ <option class="level-0" value="18755632">cnc hacks&nbsp;&nbsp;(341)</option>
386
+ <option class="level-0" value="568165">computer hacks&nbsp;&nbsp;(390)</option>
387
+ <option class="level-0" value="78428">cons&nbsp;&nbsp;(192)</option>
388
+ <option class="level-0" value="5738">contests&nbsp;&nbsp;(136)</option>
389
+ <option class="level-0" value="3923181">cooking hacks&nbsp;&nbsp;(72)</option>
390
+ <option class="level-0" value="10969032">digital audio hacks&nbsp;&nbsp;(422)</option>
391
+ <option class="level-0" value="10969033">digital cameras hacks&nbsp;&nbsp;(415)</option>
392
+ <option class="level-0" value="10969034">downloads hacks&nbsp;&nbsp;(101)</option>
393
+ <option class="level-0" value="107827385">drone hacks&nbsp;&nbsp;(10)</option>
394
+ <option class="level-0" value="63176382">Engine Hacks&nbsp;&nbsp;(31)</option>
395
+ <option class="level-0" value="35890">Featured&nbsp;&nbsp;(72)</option>
396
+ <option class="level-0" value="551890">firefox hacks&nbsp;&nbsp;(23)</option>
397
+ <option class="level-0" value="53446541">FPGA&nbsp;&nbsp;(1)</option>
398
+ <option class="level-0" value="18020562">g1 hacks&nbsp;&nbsp;(26)</option>
399
+ <option class="level-0" value="320557">google hacks&nbsp;&nbsp;(44)</option>
400
+ <option class="level-0" value="10969036">gps hacks&nbsp;&nbsp;(108)</option>
401
+ <option class="level-0" value="24535490">green hacks&nbsp;&nbsp;(152)</option>
402
+ <option class="level-0" value="27311668">Hackaday links&nbsp;&nbsp;(146)</option>
403
+ <option class="level-0" value="21755374">Hackerspaces&nbsp;&nbsp;(93)</option>
404
+ <option class="level-0" value="6310599">HackIt&nbsp;&nbsp;(101)</option>
405
+ <option class="level-0" value="10969037">handhelds hacks&nbsp;&nbsp;(189)</option>
406
+ <option class="level-0" value="79">hardware&nbsp;&nbsp;(249)</option>
407
+ <option class="level-0" value="144422905">High Voltage Hacks&nbsp;&nbsp;(5)</option>
408
+ <option class="level-0" value="66307084">Holiday Hacks&nbsp;&nbsp;(93)</option>
409
+ <option class="level-0" value="10969038">home entertainment hacks&nbsp;&nbsp;(516)</option>
410
+ <option class="level-0" value="5660882">home hacks&nbsp;&nbsp;(705)</option>
411
+ <option class="level-0" value="2708">how-to&nbsp;&nbsp;(135)</option>
412
+ <option class="level-0" value="908478">internet hacks&nbsp;&nbsp;(2)</option>
413
+ <option class="level-0" value="831">Interviews&nbsp;&nbsp;(13)</option>
414
+ <option class="level-0" value="1416772">iphone hacks&nbsp;&nbsp;(176)</option>
415
+ <option class="level-0" value="1275163">ipod hacks&nbsp;&nbsp;(144)</option>
416
+ <option class="level-0" value="344761">kickstarter&nbsp;&nbsp;(29)</option>
417
+ <option class="level-0" value="4157506">Kindle hacks&nbsp;&nbsp;(15)</option>
418
+ <option class="level-0" value="46717088">Kinect hacks&nbsp;&nbsp;(81)</option>
419
+ <option class="level-0" value="10969048">laptops hacks&nbsp;&nbsp;(111)</option>
420
+ <option class="level-0" value="10969055">laser hacks&nbsp;&nbsp;(167)</option>
421
+ <option class="level-0" value="18020716">led hacks&nbsp;&nbsp;(695)</option>
422
+ <option class="level-0" value="10626">lifehacks&nbsp;&nbsp;(54)</option>
423
+ <option class="level-0" value="729674">linux hacks&nbsp;&nbsp;(129)</option>
424
+ <option class="level-0" value="20732807">lockpicking hacks&nbsp;&nbsp;(11)</option>
425
+ <option class="level-0" value="10969060">macs hacks&nbsp;&nbsp;(135)</option>
426
+ <option class="level-0" value="144395979">Marijuana Hacks&nbsp;&nbsp;(2)</option>
427
+ <option class="level-0" value="11284667">Medical hacks&nbsp;&nbsp;(102)</option>
428
+ <option class="level-0" value="139916">Microcontrollers&nbsp;&nbsp;(512)</option>
429
+ <option class="level-0" value="5611793">misc hacks&nbsp;&nbsp;(1747)</option>
430
+ <option class="level-0" value="18020730">multitouch hacks&nbsp;&nbsp;(89)</option>
431
+ <option class="level-0" value="22652725">musical hacks&nbsp;&nbsp;(290)</option>
432
+ <option class="level-0" value="18020722">netbook hacks&nbsp;&nbsp;(50)</option>
433
+ <option class="level-0" value="6166512">Network Hacks&nbsp;&nbsp;(4)</option>
434
+ <option class="level-0" value="103">news&nbsp;&nbsp;(1091)</option>
435
+ <option class="level-0" value="1861880">nintendo ds hacks&nbsp;&nbsp;(34)</option>
436
+ <option class="level-0" value="114555425">nintendo gameboy hacks&nbsp;&nbsp;(90)</option>
437
+ <option class="level-0" value="18020685">nintendo hacks&nbsp;&nbsp;(261)</option>
438
+ <option class="level-0" value="4992726">nintendo wii hacks&nbsp;&nbsp;(78)</option>
439
+ <option class="level-0" value="118011206">Nook Hacks&nbsp;&nbsp;(1)</option>
440
+ <option class="level-0" value="114556430">palm pre hacks&nbsp;&nbsp;(6)</option>
441
+ <option class="level-0" value="245123">parts&nbsp;&nbsp;(72)</option>
442
+ <option class="level-0" value="10969081">peripherals hacks&nbsp;&nbsp;(648)</option>
443
+ <option class="level-0" value="16325149">phone hacks&nbsp;&nbsp;(17)</option>
444
+ <option class="level-0" value="10969088">playstation hacks&nbsp;&nbsp;(120)</option>
445
+ <option class="level-0" value="2060">podcasts&nbsp;&nbsp;(8)</option>
446
+ <option class="level-0" value="10969096">portable audio hacks&nbsp;&nbsp;(66)</option>
447
+ <option class="level-0" value="10969099">portable video hacks&nbsp;&nbsp;(57)</option>
448
+ <option class="level-0" value="588444">psp hacks&nbsp;&nbsp;(47)</option>
449
+ <option class="level-0" value="23971578">radio hacks&nbsp;&nbsp;(137)</option>
450
+ <option class="level-0" value="47">rants&nbsp;&nbsp;(28)</option>
451
+ <option class="level-0" value="69218551">Raspberry Pi&nbsp;&nbsp;(153)</option>
452
+ <option class="level-0" value="21870780">repair hacks&nbsp;&nbsp;(101)</option>
453
+ <option class="level-0" value="309">reviews&nbsp;&nbsp;(19)</option>
454
+ <option class="level-0" value="10969101">robots hacks&nbsp;&nbsp;(874)</option>
455
+ <option class="level-0" value="30302">roundup&nbsp;&nbsp;(35)</option>
456
+ <option class="level-0" value="10969111">security hacks&nbsp;&nbsp;(460)</option>
457
+ <option class="level-0" value="2301">Software Development&nbsp;&nbsp;(91)</option>
458
+ <option class="level-0" value="3796421">software hacks&nbsp;&nbsp;(47)</option>
459
+ <option class="level-0" value="10969116">solar hacks&nbsp;&nbsp;(46)</option>
460
+ <option class="level-0" value="10969121">tablet pcs hacks&nbsp;&nbsp;(40)</option>
461
+ <option class="level-0" value="3075183">teardown&nbsp;&nbsp;(31)</option>
462
+ <option class="level-0" value="10969130">tool hacks&nbsp;&nbsp;(657)</option>
463
+ <option class="level-0" value="25277004">toy hacks&nbsp;&nbsp;(360)</option>
464
+ <option class="level-0" value="10969134">transportation hacks&nbsp;&nbsp;(472)</option>
465
+ <option class="level-0" value="1">Uncategorized&nbsp;&nbsp;(332)</option>
466
+ <option class="level-0" value="3184456">video hacks&nbsp;&nbsp;(211)</option>
467
+ <option class="level-0" value="34942364">Virtual Reality&nbsp;&nbsp;(9)</option>
468
+ <option class="level-0" value="50802420">weapons hacks&nbsp;&nbsp;(63)</option>
469
+ <option class="level-0" value="12552193">wearable hacks&nbsp;&nbsp;(183)</option>
470
+ <option class="level-0" value="39510952">Weekly roundup&nbsp;&nbsp;(18)</option>
471
+ <option class="level-0" value="4891215">wireless hacks&nbsp;&nbsp;(333)</option>
472
+ <option class="level-0" value="7079455">xbox hacks&nbsp;&nbsp;(130)</option>
473
+ </select>
474
+
475
+ <script type='text/javascript'>
476
+ /* <![CDATA[ */
477
+ var dropdown = document.getElementById("cat");
478
+ function onCatChange() {
479
+ if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
480
+ location.href = "http://hackaday.com/?cat="+dropdown.options[dropdown.selectedIndex].value;
481
+ }
482
+ }
483
+ dropdown.onchange = onCatChange;
484
+ /* ]]> */
485
+ </script>
486
+
487
+ </div></div>
488
+ <div id="featured-post-2" class="widget featuredpost"><div class="widget-wrap"><h4 class="widgettitle">In case you missed it</h4>
489
+ <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()-->
490
+
491
+ <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()-->
492
+
493
+ <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()-->
494
+
495
+ <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()-->
496
+
497
+ <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()-->
498
+
499
+ <p class="more-from-category"><a href="http://hackaday.com/category/featured/" title="Featured">More Posts from this Category</a></p></div></div>
500
+ <div id="recent-comments-2" class="widget widget_recent_comments"><div class="widget-wrap"><h4 class="widgettitle">Recent comments</h4>
501
+ <ul id="recentcomments">
502
+ <li class="recentcomments">
503
+ 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>
504
+ <li class="recentcomments">
505
+ <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>
506
+ <li class="recentcomments">
507
+ 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>
508
+ <li class="recentcomments">
509
+ 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>
510
+ <li class="recentcomments">
511
+ 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>
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-997017">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
514
+ <li class="recentcomments">
515
+ 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>
516
+ <li class="recentcomments">
517
+ <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>
518
+ <li class="recentcomments">
519
+ <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>
520
+ <li class="recentcomments">
521
+ 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>
522
+ </ul>
523
+ </div></div>
524
+ <div id="calendar-2" class="widget widget_calendar"><div class="widget-wrap"><h4 class="widgettitle">Find Hacks by Date</h4>
525
+ <div id="calendar_wrap"><table id="wp-calendar">
526
+ <caption>April 2013</caption>
527
+ <thead>
528
+ <tr>
529
+ <th scope="col" title="Sunday">S</th>
530
+ <th scope="col" title="Monday">M</th>
531
+ <th scope="col" title="Tuesday">T</th>
532
+ <th scope="col" title="Wednesday">W</th>
533
+ <th scope="col" title="Thursday">T</th>
534
+ <th scope="col" title="Friday">F</th>
535
+ <th scope="col" title="Saturday">S</th>
536
+ </tr>
537
+ </thead>
538
+
539
+ <tfoot>
540
+ <tr>
541
+ <td colspan="3" id="prev"><a href="http://hackaday.com/2013/03/" title="View posts for March 2013">&laquo; Mar</a></td>
542
+ <td class="pad">&nbsp;</td>
543
+ <td colspan="3" id="next" class="pad">&nbsp;</td>
544
+ </tr>
545
+ </tfoot>
546
+
547
+ <tbody>
548
+ <tr>
549
+ <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>
550
+ </tr>
551
+ <tr>
552
+ <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>
553
+ </tr>
554
+ <tr>
555
+ <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>
556
+ </tr>
557
+ <tr>
558
+ <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>
559
+ </tr>
560
+ <tr>
561
+ <td>28</td><td>29</td><td>30</td>
562
+ <td class="pad" colspan="4">&nbsp;</td>
563
+ </tr>
564
+ </tbody>
565
+ </table></div></div></div>
566
+ <div id=virurl>
567
+ <!-- BEGIN - VIRURL Widget - iFrame Embed Code -->
568
+ <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"
569
+ width="300" height="600" scrolling="no" >
570
+ </iframe>
571
+ <!-- END - VIRURL Widget - iFrame Embed Code -->
572
+ </div>
573
+ <br />
574
+ <br />
575
+ <div id=tl_ad_bottom>
576
+ <script type="text/javascript"><!--
577
+ google_ad_client = "ca-pub-1812638130783065";
578
+ /* Hackaday sidebar wide skyscraper */
579
+ google_ad_slot = "1587378096";
580
+ google_ad_width = 160;
581
+ google_ad_height = 600;
582
+ google_ad_region = "test";
583
+ //-->
584
+ </script>
585
+ <script type="text/javascript"
586
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
587
+ </script>
588
+ </div>
589
+
590
+
591
+ <br />
592
+
593
+
594
+
595
+
596
+
597
+
598
+ </div> </div><!-- end #content-sidebar-wrap -->
599
+ </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 -->
600
+ <script type="text/javascript">
601
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
602
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
603
+ </script>
604
+ <script type="text/javascript">
605
+ var pageTracker = _gat._getTracker("UA-2201445-6");
606
+ pageTracker._trackPageview();
607
+ </script>
608
+ <!-- Start Quantcast tag -->
609
+ <script type="text/javascript">
610
+ _qoptions={
611
+ qacct:"p-cc6zkdHuZwUDM"
612
+ };
613
+ </script>
614
+ <script type="text/javascript"
615
+ src="http://edge.quantserve.com/quant.js"></script>
616
+ <noscript>
617
+ <img src="http://pixel.quantserve.com/pixel/p-cc6zkdHuZwUDM.gif"
618
+ style="display: none;" border="0" height="1" width="1"
619
+ alt="Quantcast"/>
620
+ </noscript></div><!-- end #wrap -->
621
+
622
+ <script type="text/javascript">
623
+ var _qevents = _qevents || [], wpcomQuantcastData = {"qacct":"p-18-mFEk4J448M","labels":",language.en,type.wpcom,vip.hackadaycom"};
624
+ function wpcomQuantcastPixel( labels, options ) {
625
+ var i, defaults = wpcomQuantcastData, data = { event: 'ajax' };
626
+
627
+ labels = labels || '';
628
+ options = options || {};
629
+
630
+ if ( typeof labels != 'string' )
631
+ options = labels;
632
+
633
+ for ( i in defaults ) {
634
+ data[i] = defaults[i];
635
+ }
636
+
637
+ for ( i in options ) {
638
+ data[i] = options[i];
639
+ }
640
+
641
+ if ( data.labels ) {
642
+ data.labels += ',' + labels;
643
+ } else {
644
+ data.labels = labels;
645
+ }
646
+
647
+ _qevents.push( data );
648
+ };
649
+ (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); })();
650
+ _qevents.push( wpcomQuantcastData );
651
+ </script>
652
+ <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>
653
+
654
+
655
+ <!-- /// LOAD CHARTBEAT /// -->
656
+ <script type="text/javascript">
657
+ var _sf_async_config={};
658
+ _sf_async_config.uid = 2021;
659
+ _sf_async_config.useCanonical = true;
660
+
661
+ (function(){
662
+ function loadChartbeat() {
663
+ window._sf_endpt=(new Date()).getTime();
664
+ var e = document.createElement('script');
665
+ e.setAttribute('language', 'javascript');
666
+ e.setAttribute('type', 'text/javascript');
667
+ e.setAttribute('src',
668
+ (("https:" == document.location.protocol) ? "https://s3.amazonaws.com/" : "http://") +
669
+ "static.chartbeat.com/js/chartbeat.js");
670
+ document.body.appendChild(e);
671
+ }
672
+ var oldonload = window.onload;
673
+ window.onload = (typeof window.onload != 'function') ?
674
+ loadChartbeat : function() { oldonload(); loadChartbeat(); };
675
+ })();
676
+ </script>
677
+ <div style="display:none">
678
+ </div>
679
+ <script type='text/javascript' src='http://s2.wp.com/_static/??-eJylzMsOREAQRuEXMoqgEwvxLC4/qjPVOl3dZh4fO3vrk+/Qz3+m3UW4SFZpxsET/D+3mtEjxQ0CJR8gnIRWOCgrfXm8lcAl0uQRFtbtlR3Cqtegl66smto0xhStPQEw5Dy+'></script>
680
+ <script type="text/javascript">
681
+ // <![CDATA[
682
+ (function() {
683
+ try{
684
+ if ( window.external &&'msIsSiteMode' in window.external) {
685
+ if (window.external.msIsSiteMode()) {
686
+ var jl = document.createElement('script');
687
+ jl.type='text/javascript';
688
+ jl.async=true;
689
+ jl.src='/wp-content/plugins/ie-sitemode/custom-jumplist.php';
690
+ var s = document.getElementsByTagName('script')[0];
691
+ s.parentNode.insertBefore(jl, s);
692
+ }
693
+ }
694
+ }catch(e){}
695
+ })();
696
+ // ]]>
697
+ </script><script src="http://s.stats.wordpress.com/w.js?21" type="text/javascript"></script>
698
+ <script type="text/javascript">
699
+ st_go({'blog':'4779443','v':'wpcom','tz':'-7','user_id':'0','subd':'hackadaycom'});
700
+ 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();}
701
+ ex_go({'crypt':'UE40eW5QN0p8M2Y/RE1BNmNJfGhxNCVxUDExYmtXRThKbHcwXTdETWI1alhvb1oseHImN101ZFpEakVpYjlQYVFLYzBaVHRtPz0wXS9bVlFpZ3c1Qn5KSThLNS9lSHNGOE1IJk9+N3xFNWxyT2x+MUpnR1dJcFZycSxUcUdTLmsvZTR1YlZrLy42U29JcXc3SlpqazQ1OUFYSEZ8a05iZHgzfkh0QVozfDdFJWYzSj91QUIsLEJTeklfb2M4YkJmbF9Jfnp5aUo4S3olLHlXMyV8JkRmUXgrZGhMaGs/QWJjSExkOUpsQSxKVnBPNiU5QU82eFVEUjlYfmo9'});
702
+ addLoadEvent(function(){linktracker_init('4779443',0);});
703
+ </script>
704
+ <noscript><img src="http://stats.wordpress.com/b.gif?v=noscript" style="height:0px;width:0px;overflow:hidden" alt="" /></noscript>
705
+ <script type="text/javascript">
706
+ // Trigger Quantcast pixel for each Infinite Scroll post load
707
+ if ( 'function' === typeof( jQuery ) ) {
708
+ jQuery( document.body ).on( 'post-load', function() {
709
+ if ( 'function' === typeof( wpcomQuantcastPixel ) )
710
+ wpcomQuantcastPixel();
711
+ } );
712
+ }
713
+ </script>
714
+ </body>
715
+ </html>