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,719 @@
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 206 seconds ago
5
+ generated in 0.363 seconds
6
+ served from batcache in 0.002 seconds
7
+ expires in 94 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=1366800927&amp;back=hackaday.com%2Fpage%2F9%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-9 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-97413 post type-post status-publish format-standard hentry category-musical-hacks tag-acoustic tag-bass-guitar tag-iron-maiden tag-ironman tag-string-bass tag-water-bottle">
197
+
198
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/07/acoustic-bass-guitar-uses-water-jug-and-two-strings/" title="Acoustic bass guitar uses water jug and two&nbsp;strings" rel="bookmark">Acoustic bass guitar uses water jug and two&nbsp;strings</a></h2>
199
+
200
+ <div class="post-info"><span class="date published time" title="2013-04-07T06:01:06+00:00">April 7, 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/07/acoustic-bass-guitar-uses-water-jug-and-two-strings/#comments">15 Comments</a></span> </div> <div class="entry-content">
201
+ <p><img class="aligncenter size-large wp-image-97414" alt="water-bottle-acoustic-guitar" src="http://hackadaycom.files.wordpress.com/2013/04/water-bottle-acoustic-guitar.png?w=580&#038;h=406" width="580" height="406" /></p>
202
+ <p>It&#8217;s easy to dismiss this one at first glance. But once you hear [Tychsen81] <a href="http://www.youtube.com/watch?v=KDN1UbFyVwQ">playing the thing</a> you&#8217;ll want to know more.</p>
203
+ <p>He posted the demonstration way back in 2009. It wasn&#8217;t until a year later that he filmed the particulars of <a href="http://www.youtube.com/watch?v=bzGJQliNIbo">how the thing was made</a>. The strings are actually bass guitar strings, an A and D string that are tuned down to E and A to play along with Black Sabbath&#8217;s &#8220;Ironman&#8221;. The neck is made out of two boards. One serves as the fingerboard, which is fretless. The other is mounted under that in order to provide negative space for the bridge while keeping the strings at the right height for the fingerboard. The water bottle helps to amplify the sound and that&#8217;s why the bottom end of the strings pivot on the bridge, pass through the neck, and are anchored on the bottom edge of the bottle.</p>
204
+ <p>We&#8217;ve embedded both the demo and the build videos after the break.</p>
205
+ <p>If this gets you thinking about making your own instruments you will also be interested in <a href="http://hackaday.com/2012/06/01/how-to-make-a-whamola/">the Whamola</a>.</p>
206
+ <p> <a href="http://hackaday.com/2013/04/07/acoustic-bass-guitar-uses-water-jug-and-two-strings/#more-97413" class="more-link">[Read more...]</a></p>
207
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
208
+ <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/acoustic/" rel="tag">acoustic</a>, <a href="http://hackaday.com/tag/bass-guitar/" rel="tag">bass guitar</a>, <a href="http://hackaday.com/tag/iron-maiden/" rel="tag">iron maiden</a>, <a href="http://hackaday.com/tag/ironman/" rel="tag">ironman</a>, <a href="http://hackaday.com/tag/string-bass/" rel="tag">string bass</a>, <a href="http://hackaday.com/tag/water-bottle/" rel="tag">water bottle</a></span> </div>
209
+ </div><!-- end .postclass -->
210
+ <div class="post-97409 post type-post status-publish format-standard hentry category-3d-printer-hacks tag-abs tag-acetone tag-hairspray tag-kapton tag-pla">
211
+
212
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/06/making-pla-stick-to-a-3d-printer-build-platform-by-using-hairspray-or-an-acetone-abs-slurry/" title="Making PLA stick to a 3D printer build platform by using hairspray or an acetone ABS&nbsp;slurry" rel="bookmark">Making PLA stick to a 3D printer build platform by using hairspray or an acetone ABS&nbsp;slurry</a></h2>
213
+
214
+ <div class="post-info"><span class="date published time" title="2013-04-06T14:01:04+00:00">April 6, 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/06/making-pla-stick-to-a-3d-printer-build-platform-by-using-hairspray-or-an-acetone-abs-slurry/#comments">31 Comments</a></span> </div> <div class="entry-content">
215
+ <p><img class="aligncenter size-large wp-image-97410" alt="hairspary-pla-adhesion" src="http://hackadaycom.files.wordpress.com/2013/04/hairspary-pla-adhesion.png?w=580&#038;h=392" width="580" height="392" /></p>
216
+ <p>[Chris] has been having some real problems getting PLA to stick to the build platform of his Printrbot. This is of course not limited to this brand of printers, and affects all extruder-based hardware using the PLA as a source material. He came up with <a href="http://www.trenchphysics.com/?p=143">a couple of ways to fix the problem</a>.</p>
217
+ <p>The first is something we&#8217;re quite familiar with. The image above shows [Chris] applying a thin layer of hairspray to the platform. This is a technique the we use with our own 3D printer. The sheets of paper are used as a mask to help keep the sticky stuff off of the threaded rod. For more info on the hairspray trick [Chris] recommends that you <a href="http://www.thingiverse.com/thing:28787">read this article</a>.</p>
218
+ <p>The second technique uses a slurry made from saturating a bottle of acetone with ABS leftovers. In the clip after the break he shows off a glass jar of the solvent with scraps from past print jobs hanging out inside. After a couple of days like that it&#8217;s ready to use. He takes a paper towel, wets it with the solution, and wipes on a very small amount. He does mention that this will eventually eat through the Kapton tape so apply it rarely and sparingly.</p>
219
+ <p> <a href="http://hackaday.com/2013/04/06/making-pla-stick-to-a-3d-printer-build-platform-by-using-hairspray-or-an-acetone-abs-slurry/#more-97409" class="more-link">[Read more...]</a></p>
220
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
221
+ <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/abs/" rel="tag">abs</a>, <a href="http://hackaday.com/tag/acetone/" rel="tag">acetone</a>, <a href="http://hackaday.com/tag/hairspray/" rel="tag">hairspray</a>, <a href="http://hackaday.com/tag/kapton/" rel="tag">Kapton</a>, <a href="http://hackaday.com/tag/pla/" rel="tag">PLA</a></span> </div>
222
+ </div><!-- end .postclass -->
223
+ <div class="post-97405 post type-post status-publish format-standard hentry category-arduino-hacks tag-arduino tag-avrdude tag-ft230x tag-ft232r tag-ftdi tag-programmer">
224
+
225
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/06/rolling-your-own-minimal-usb-to-serial-arduino-programmer/" title="Rolling your own minimal USB to serial Arduino&nbsp;programmer" rel="bookmark">Rolling your own minimal USB to serial Arduino&nbsp;programmer</a></h2>
226
+
227
+ <div class="post-info"><span class="date published time" title="2013-04-06T10:01:57+00:00">April 6, 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/06/rolling-your-own-minimal-usb-to-serial-arduino-programmer/#comments">13 Comments</a></span> </div> <div class="entry-content">
228
+ <p><img class="aligncenter size-large wp-image-97406" alt="usb-to-serial-programmer" src="http://hackadaycom.files.wordpress.com/2013/04/usb-to-serial-programmer.jpg?w=580&#038;h=326" width="580" height="326" /></p>
229
+ <p>[Hans Peter] wanted to move away from using full Arduino boards in his projects. One of the components he rarely used after the development stage is the USB hardware. Once the firmware is flashed to the chip he didn&#8217;t need it any longer. So he tried his hand with some really small SMD parts by <a href="http://embryonic.dk/wordpress/?p=195">building this USB to serial Arduino programmer</a>.</p>
230
+ <p>The chip he went with isn&#8217;t the FTDI part we&#8217;re used to. Instead of using an FT232RL, he opted for its smaller cousin the FT230x. This chip doesn&#8217;t fully implement the communications protocol of the 232, but it does work with AVRdude and that&#8217;s all that really matters. Above you can see [Hans'] creation next to the official Arduino USB-to-serial programmer. He used the same connection scheme, but went with an edge connector for the USB instead of using a mini-B jack.</p>
231
+ <p>It&#8217;s pretty impressive to see his prototyping work with the 16-pin QFN package. He soldered it dead-bug style to a couple of SIL pin headers in order to test it on a breadboard. The first board he assembled was too loose in the USB port, but he added some tape to the back to make it thicker, and coated the edge connector traces with a bit of solder and that did the trick.</p>
232
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
233
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/arduino-hacks/" title="View all posts in arduino hacks" rel="category tag">arduino 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/avrdude/" rel="tag">avrdude</a>, <a href="http://hackaday.com/tag/ft230x/" rel="tag">ft230x</a>, <a href="http://hackaday.com/tag/ft232r/" rel="tag">FT232R</a>, <a href="http://hackaday.com/tag/ftdi/" rel="tag">ftdi</a>, <a href="http://hackaday.com/tag/programmer/" rel="tag">programmer</a></span> </div>
234
+ </div><!-- end .postclass -->
235
+ <div align="center">
236
+
237
+
238
+
239
+ <script type="text/javascript"><!--
240
+
241
+ google_ad_client = "ca-pub-1812638130783065";
242
+
243
+ /* Hackaday, 300x250, created 4/26/08, MedRect main column */
244
+
245
+ google_ad_slot = "3449215672";
246
+
247
+ google_ad_width = 300;
248
+
249
+ google_ad_height = 250;
250
+
251
+ //-->
252
+
253
+ </script>
254
+
255
+ <script type="text/javascript"
256
+
257
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
258
+
259
+ </script>
260
+
261
+
262
+
263
+ </div> <div class="post-97399 post type-post status-publish format-standard hentry category-software-hacks tag-2600 tag-atari tag-bugs tag-e-t tag-et tag-extra-terrestrial tag-video-game">
264
+
265
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/06/fixing-the-worst-video-game-ever-e-t-for-atari-2600/" title="Fixing the worst video game ever: E.T. for Atari&nbsp;2600" rel="bookmark">Fixing the worst video game ever: E.T. for Atari&nbsp;2600</a></h2>
266
+
267
+ <div class="post-info"><span class="date published time" title="2013-04-06T06:01:53+00:00">April 6, 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/06/fixing-the-worst-video-game-ever-e-t-for-atari-2600/#comments">42 Comments</a></span> </div> <div class="entry-content">
268
+ <p><img class="aligncenter size-full wp-image-97401" alt="fixing-et-for-atari-2600" src="http://hackadaycom.files.wordpress.com/2013/04/fixing-et-for-atari-26001.png?w=580&#038;h=400" width="580" height="400" /></p>
269
+ <p>This hack has got to be every gamer&#8217;s dream. Someone actually took the time to <a href="http://www.neocomputer.org/projects/et/">dig through the binary file of <em>E.T. the Extra-Terrestrial</em> and fix the errors</a> that made it an abomination of a title for the Atari 2600.</p>
270
+ <p>This is quite a feat in many ways. First off, you need to know the game well enough to understand where they problems lie. The Internet is a huge help in that regard as there&#8217;s no shortage of sources complaining about the game&#8217;s shortcomings. This turns out to be one of the articles strongest points as the author takes time to address the most common myths about bugs in the game. From there he goes on to discuss the problems that were actually fixed. Some are just general tweaks like the color fix listed above. But most of them are genuine improvements in the game play, like the falling fix which prevents E.T. from falling in this pit when his feet are obviously not anywhere near the edge.</p>
271
+ <p>So you couldn&#8217;t get your hard earned bucks back for a bummer of a game back in the day. But at least a few decades later you can fix the things that made it suck and play it through the way it should have been.</p>
272
+ <p>[via <a href="http://www.reddit.com/r/programming/comments/1bp174/fixing_et_for_the_atari_2600/">Reddit</a>]</p>
273
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
274
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/software-hacks/" title="View all posts in software hacks" rel="category tag">software hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/2600/" rel="tag">2600</a>, <a href="http://hackaday.com/tag/atari/" rel="tag">atari</a>, <a href="http://hackaday.com/tag/bugs/" rel="tag">bugs</a>, <a href="http://hackaday.com/tag/e-t/" rel="tag">e.t.</a>, <a href="http://hackaday.com/tag/et/" rel="tag">et</a>, <a href="http://hackaday.com/tag/extra-terrestrial/" rel="tag">extra-terrestrial</a>, <a href="http://hackaday.com/tag/video-game/" rel="tag">video game</a></span> </div>
275
+ </div><!-- end .postclass -->
276
+ <div class="post-93816 post type-post status-publish format-standard hentry category-digital-cameras-hacks category-laptops-hacks tag-laser tag-light-graffiti tag-light-painting">
277
+
278
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/05/light-graffiti-with-servos-and-python/" title="Light Graffiti with Servos and&nbsp;Python" rel="bookmark">Light Graffiti with Servos and&nbsp;Python</a></h2>
279
+
280
+ <div class="post-info"><span class="date published time" title="2013-04-05T12:20:38+00:00">April 5, 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/05/light-graffiti-with-servos-and-python/#comments">12 Comments</a></span> </div> <div class="entry-content">
281
+ <p><a href="http://hackaday.com/2013/04/05/light-graffiti-with-servos-and-python/servo-laser-light-graffiti/" rel="attachment wp-att-93817"><img class="aligncenter size-large wp-image-93817" alt="servo-laser-light-graffiti" src="http://hackadaycom.files.wordpress.com/2013/01/servo-laser-light-graffiti.gif?w=580&#038;h=328" width="580" height="328" /></a></p>
282
+ <p>Light Graffiti is can be lots of fun if you have a decent amount of artistic ability, and a keen sense of timing. If you don&#8217;t have the necessary skills, you can always compensate by<a title="Servo light graffiti with Python" href="http://www.jcopro.net/2013/01/30/servo-light-graffiti-pixel-painting-an-image/" target="_blank"> using Python-controlled servos to move everything automatically</a>. The Python code can be found here, and makes use of the Python Image Library to process the images into a &#8220;drawable&#8221; form. A <a title="pyMCU" href="http://pymcu.com/" target="_blank">[pyMCU]</a> with firmware capable of simultaneous servo control was used to move the laser fixture around.</p>
283
+ <p>One of the more difficult aspects of this experiment was getting the timing correct between each laser pulse. The timing routine involes a bit of geometry, calculating the distance between each using trig. As explained in the article, this may be a bit of overkill.  It still didn&#8217;t compare to the trig involved in a previous experiment <a title="servo circle light graffiti" href="http://www.jcopro.net/2013/01/20/servo-light-graffiti-preliminary-results-servo-painting-a-circle/" target="_blank">drawing a circle with this laser-servo fixture</a>.  Be sure to check out the video of this laser-setup in action after the break.  I&#8217;ve been quite pleased with the results, and look forward to what can be done with it in the future!</p>
284
+ <p>Thanks to [pyMCU] for letting me have a few of these boards to play with!</p>
285
+ <p> <a href="http://hackaday.com/2013/04/05/light-graffiti-with-servos-and-python/#more-93816" class="more-link">[Read more...]</a></p>
286
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
287
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/digital-cameras-hacks/" title="View all posts in digital cameras hacks" rel="category tag">digital cameras hacks</a>, <a href="http://hackaday.com/category/laptops-hacks/" title="View all posts in laptops hacks" rel="category tag">laptops 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/light-graffiti/" rel="tag">light graffiti</a>, <a href="http://hackaday.com/tag/light-painting/" rel="tag">light painting</a></span> </div>
288
+ </div><!-- end .postclass -->
289
+ <div class="post-97350 post type-post status-publish format-standard hentry category-tool-hacks tag-magnet tag-stapler">
290
+
291
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/05/stapler-hack-fastens-infinitely-large-sheets-of-paper/" title="Stapler hack fastens infinitely large sheets of&nbsp;paper" rel="bookmark">Stapler hack fastens infinitely large sheets of&nbsp;paper</a></h2>
292
+
293
+ <div class="post-info"><span class="date published time" title="2013-04-05T10:01:17+00:00">April 5, 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/05/stapler-hack-fastens-infinitely-large-sheets-of-paper/#comments">78 Comments</a></span> </div> <div class="entry-content">
294
+ <p><img class="aligncenter size-large wp-image-97351" alt="infinity-stapler" src="http://hackadaycom.files.wordpress.com/2013/04/infinity-stapler.jpg?w=580&#038;h=326" width="580" height="326" /></p>
295
+ <p>It&#8217;s not called the infinity stapler, but we think it should be. This magnetic hack allows you to <a href="http://www.instructables.com/id/How-to-Make-a-Two-Part-Magnetic-Stapler/">use a plain old stapler to fasten very large pieces of paper</a>.</p>
296
+ <p>The limiting factor has always been the distance between the stapler&#8217;s hinge and where the staples come out. To get around this, the crimped connections between the base and the dispenser were drilled out. Larger holes were then drilled in both the top and bottom halves to accept a set of magnets. These were held in place temporarily with some tape while the super glue had time to set up.</p>
297
+ <p>The result is two halves which are placed on either side of the over sized paper. The magnets are responsible for aligning the staples with the die which bends them to their final shape. The whole process is shown in the video clip after the break.</p>
298
+ <p> <a href="http://hackaday.com/2013/04/05/stapler-hack-fastens-infinitely-large-sheets-of-paper/#more-97350" class="more-link">[Read more...]</a></p>
299
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
300
+ <div class="post-meta"><span class="categories">Filed Under: <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/magnet/" rel="tag">magnet</a>, <a href="http://hackaday.com/tag/stapler/" rel="tag">stapler</a></span> </div>
301
+ </div><!-- end .postclass -->
302
+ <div class="post-97360 post type-post status-publish format-standard hentry category-3d-printer-hacks tag-h-bot tag-smoothieboard">
303
+
304
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/05/h-bot-style-3d-printer-moves-bed-for-z-axis/" title="H-bot style 3D printer moves bed for&nbsp;Z-axis" rel="bookmark">H-bot style 3D printer moves bed for&nbsp;Z-axis</a></h2>
305
+
306
+ <div class="post-info"><span class="date published time" title="2013-04-05T08:01:13+00:00">April 5, 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/05/h-bot-style-3d-printer-moves-bed-for-z-axis/#comments">23 Comments</a></span> </div> <div class="entry-content">
307
+ <p><img class="aligncenter size-large wp-image-97361" alt="h-bot-style-3d-printer" src="http://hackadaycom.files.wordpress.com/2013/04/h-bot-style-3d-printer.jpg?w=580&#038;h=435" width="580" height="435" /></p>
308
+ <p><a href="http://3d-printers.pl/projekty/hhot/h-bot-pierwszy-wydruk/">Check out this 3D printer</a> (<a href="http://translate.google.com/translate?sl=auto&amp;tl=en&amp;js=n&amp;prev=_t&amp;hl=en&amp;ie=UTF-8&amp;eotf=1&amp;u=http%3A%2F%2F3d-printers.pl%2Fprojekty%2Fhhot%2Fh-bot-pierwszy-wydruk%2F">translated</a>) which [Arkadiusz Śpiewak] has been working on. When sending in the tip about his project he made the important distinction that it isn&#8217;t finished, but he has reached that critical threshold where he has printed items with it.</p>
309
+ <p>He decided to go with a design that is sometimes referred to as an H-bot. If you&#8217;re completely unfamiliar with it, you may find <a href="http://www.edn.com/electronics-blogs/mechatronics-in-design/4368079/So-you-want-to-build-an-H-bot-">this H-bot design article</a> helpful. The gist of it is that this technique makes it so that the motors used to move the extruder along the X and Y axes are themselves stationary. One large timing (toothed) belt makes a circuit around the top of this cube in the shape of the letter H. This is a bit easier to see in [Arkadiusz's] rendered image found after the jump along with video of an early print test.</p>
310
+ <p>The Z axis uses two motors mounted along the bottom of the cube. These raise and lower the bead, instead of moving the extruder itself. All-in the printer should have a maximum object size of 30x30x30 centimeters. It&#8217;s being driven by a <a href="http://smoothieware.org/smoothieboard">Smoothieboard</a>, which was mentioned quite a bit when <a href="http://hackaday.com/2012/07/10/ra-3d-printer-controller-board-does-everything-has-disco-lights/">we were discussing using the RA driver board with a 3D printer</a>.</p>
311
+ <p> <a href="http://hackaday.com/2013/04/05/h-bot-style-3d-printer-moves-bed-for-z-axis/#more-97360" class="more-link">[Read more...]</a></p>
312
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
313
+ <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/h-bot/" rel="tag">h-bot</a>, <a href="http://hackaday.com/tag/smoothieboard/" rel="tag">smoothieboard</a></span> </div>
314
+ </div><!-- end .postclass -->
315
+ <div class="navigation"><div class="alignleft"><a href="http://hackaday.com/page/10/" >&laquo; Older Posts</a></div><div class="alignright"><a href="http://hackaday.com/page/8/" >Newer Posts &raquo;</a></div></div><!-- end .navigation --> </div><!-- end #content -->
316
+ <div id="sidebar" class="sidebar widget-area">
317
+ <div id=tl_ad>
318
+ <script type="text/javascript"><!--
319
+ google_ad_client = "ca-pub-1812638130783065";
320
+ /* Hackaday, 300x250, created 4/26/08, MedRect sidebar */
321
+ google_ad_slot = "7800245928";
322
+ google_ad_width = 300;
323
+ google_ad_height = 250;
324
+ //-->
325
+ </script>
326
+ <script type="text/javascript"
327
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
328
+ </script>
329
+
330
+ </div>
331
+
332
+
333
+
334
+
335
+
336
+
337
+ <div class="widget">
338
+ <h4>Never Miss a Hack</h4>
339
+ <div class="textwidget">
340
+
341
+ <!-- Place this tag where you want the badge to render. -->
342
+ <div class="g-plus" data-width= "280" data-href="https://plus.google.com/114843073658390316652" data-rel="publisher" data-theme="dark"></div>
343
+ <!-- Place this tag after the last badge tag. -->
344
+ <script type="text/javascript">
345
+ (function() {
346
+ var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
347
+ po.src = 'https://apis.google.com/js/plusone.js';
348
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
349
+ })();
350
+ </script>
351
+
352
+ <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>
353
+
354
+ <a href="https://twitter.com/hackaday" class="twitter-follow-button" data-show-count="true" data-lang="en" data-size="large">Follow @twitter</a>
355
+ <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>
356
+
357
+ <a href="http://feeds2.feedburner.com/hackaday/LgoM" target="_blank"><img src="http://hackadaycom.files.wordpress.com/2012/11/orange.png" border="0"/></a>
358
+ <div class="clear"> </div>
359
+ <!-- Begin MailChimp Signup Form -->
360
+ <link href="http://cdn-images.mailchimp.com/embedcode/slim-081711.css" rel="stylesheet" type="text/css">
361
+
362
+ <div id="mc_embed_signup">
363
+ <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>
364
+ <label for="mce-EMAIL">Subscribe to our mailing list for sneak previews and behind the scenes info</label>
365
+ <input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="email address" required>
366
+ <div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
367
+ </form>
368
+ </div>
369
+
370
+ <!--End mc_embed_signup-->
371
+ </div>
372
+ </div>
373
+
374
+ <div id="categories-2" class="widget widget_categories"><div class="widget-wrap"><h4 class="widgettitle">Categories</h4>
375
+ <select name='cat' id='cat' class='postform' >
376
+ <option value='-1'>Select Category</option>
377
+ <option class="level-0" value="114554125">3d Printer hacks&nbsp;&nbsp;(116)</option>
378
+ <option class="level-0" value="18020710">android hacks&nbsp;&nbsp;(240)</option>
379
+ <option class="level-0" value="18020705">arduino hacks&nbsp;&nbsp;(1029)</option>
380
+ <option class="level-0" value="27981650">ARM&nbsp;&nbsp;(51)</option>
381
+ <option class="level-0" value="33199679">Ask Hackaday&nbsp;&nbsp;(29)</option>
382
+ <option class="level-0" value="64298109">ATtiny hacks&nbsp;&nbsp;(45)</option>
383
+ <option class="level-0" value="25122024">beer hacks&nbsp;&nbsp;(63)</option>
384
+ <option class="level-0" value="12115263">blackberry hacks&nbsp;&nbsp;(8)</option>
385
+ <option class="level-0" value="10969031">cellphones hacks&nbsp;&nbsp;(337)</option>
386
+ <option class="level-0" value="35745764">chemistry hacks&nbsp;&nbsp;(102)</option>
387
+ <option class="level-0" value="24483654">classic hacks&nbsp;&nbsp;(852)</option>
388
+ <option class="level-0" value="31677810">clock hacks&nbsp;&nbsp;(189)</option>
389
+ <option class="level-0" value="18755632">cnc hacks&nbsp;&nbsp;(341)</option>
390
+ <option class="level-0" value="568165">computer hacks&nbsp;&nbsp;(390)</option>
391
+ <option class="level-0" value="78428">cons&nbsp;&nbsp;(192)</option>
392
+ <option class="level-0" value="5738">contests&nbsp;&nbsp;(136)</option>
393
+ <option class="level-0" value="3923181">cooking hacks&nbsp;&nbsp;(72)</option>
394
+ <option class="level-0" value="10969032">digital audio hacks&nbsp;&nbsp;(422)</option>
395
+ <option class="level-0" value="10969033">digital cameras hacks&nbsp;&nbsp;(415)</option>
396
+ <option class="level-0" value="10969034">downloads hacks&nbsp;&nbsp;(101)</option>
397
+ <option class="level-0" value="107827385">drone hacks&nbsp;&nbsp;(10)</option>
398
+ <option class="level-0" value="63176382">Engine Hacks&nbsp;&nbsp;(31)</option>
399
+ <option class="level-0" value="35890">Featured&nbsp;&nbsp;(72)</option>
400
+ <option class="level-0" value="551890">firefox hacks&nbsp;&nbsp;(23)</option>
401
+ <option class="level-0" value="53446541">FPGA&nbsp;&nbsp;(1)</option>
402
+ <option class="level-0" value="18020562">g1 hacks&nbsp;&nbsp;(26)</option>
403
+ <option class="level-0" value="320557">google hacks&nbsp;&nbsp;(44)</option>
404
+ <option class="level-0" value="10969036">gps hacks&nbsp;&nbsp;(108)</option>
405
+ <option class="level-0" value="24535490">green hacks&nbsp;&nbsp;(152)</option>
406
+ <option class="level-0" value="27311668">Hackaday links&nbsp;&nbsp;(146)</option>
407
+ <option class="level-0" value="21755374">Hackerspaces&nbsp;&nbsp;(93)</option>
408
+ <option class="level-0" value="6310599">HackIt&nbsp;&nbsp;(101)</option>
409
+ <option class="level-0" value="10969037">handhelds hacks&nbsp;&nbsp;(189)</option>
410
+ <option class="level-0" value="79">hardware&nbsp;&nbsp;(249)</option>
411
+ <option class="level-0" value="144422905">High Voltage Hacks&nbsp;&nbsp;(5)</option>
412
+ <option class="level-0" value="66307084">Holiday Hacks&nbsp;&nbsp;(93)</option>
413
+ <option class="level-0" value="10969038">home entertainment hacks&nbsp;&nbsp;(516)</option>
414
+ <option class="level-0" value="5660882">home hacks&nbsp;&nbsp;(705)</option>
415
+ <option class="level-0" value="2708">how-to&nbsp;&nbsp;(135)</option>
416
+ <option class="level-0" value="908478">internet hacks&nbsp;&nbsp;(2)</option>
417
+ <option class="level-0" value="831">Interviews&nbsp;&nbsp;(13)</option>
418
+ <option class="level-0" value="1416772">iphone hacks&nbsp;&nbsp;(176)</option>
419
+ <option class="level-0" value="1275163">ipod hacks&nbsp;&nbsp;(144)</option>
420
+ <option class="level-0" value="344761">kickstarter&nbsp;&nbsp;(29)</option>
421
+ <option class="level-0" value="4157506">Kindle hacks&nbsp;&nbsp;(15)</option>
422
+ <option class="level-0" value="46717088">Kinect hacks&nbsp;&nbsp;(81)</option>
423
+ <option class="level-0" value="10969048">laptops hacks&nbsp;&nbsp;(111)</option>
424
+ <option class="level-0" value="10969055">laser hacks&nbsp;&nbsp;(167)</option>
425
+ <option class="level-0" value="18020716">led hacks&nbsp;&nbsp;(695)</option>
426
+ <option class="level-0" value="10626">lifehacks&nbsp;&nbsp;(54)</option>
427
+ <option class="level-0" value="729674">linux hacks&nbsp;&nbsp;(129)</option>
428
+ <option class="level-0" value="20732807">lockpicking hacks&nbsp;&nbsp;(11)</option>
429
+ <option class="level-0" value="10969060">macs hacks&nbsp;&nbsp;(135)</option>
430
+ <option class="level-0" value="144395979">Marijuana Hacks&nbsp;&nbsp;(2)</option>
431
+ <option class="level-0" value="11284667">Medical hacks&nbsp;&nbsp;(102)</option>
432
+ <option class="level-0" value="139916">Microcontrollers&nbsp;&nbsp;(512)</option>
433
+ <option class="level-0" value="5611793">misc hacks&nbsp;&nbsp;(1747)</option>
434
+ <option class="level-0" value="18020730">multitouch hacks&nbsp;&nbsp;(89)</option>
435
+ <option class="level-0" value="22652725">musical hacks&nbsp;&nbsp;(290)</option>
436
+ <option class="level-0" value="18020722">netbook hacks&nbsp;&nbsp;(50)</option>
437
+ <option class="level-0" value="6166512">Network Hacks&nbsp;&nbsp;(4)</option>
438
+ <option class="level-0" value="103">news&nbsp;&nbsp;(1091)</option>
439
+ <option class="level-0" value="1861880">nintendo ds hacks&nbsp;&nbsp;(34)</option>
440
+ <option class="level-0" value="114555425">nintendo gameboy hacks&nbsp;&nbsp;(90)</option>
441
+ <option class="level-0" value="18020685">nintendo hacks&nbsp;&nbsp;(261)</option>
442
+ <option class="level-0" value="4992726">nintendo wii hacks&nbsp;&nbsp;(78)</option>
443
+ <option class="level-0" value="118011206">Nook Hacks&nbsp;&nbsp;(1)</option>
444
+ <option class="level-0" value="114556430">palm pre hacks&nbsp;&nbsp;(6)</option>
445
+ <option class="level-0" value="245123">parts&nbsp;&nbsp;(72)</option>
446
+ <option class="level-0" value="10969081">peripherals hacks&nbsp;&nbsp;(648)</option>
447
+ <option class="level-0" value="16325149">phone hacks&nbsp;&nbsp;(17)</option>
448
+ <option class="level-0" value="10969088">playstation hacks&nbsp;&nbsp;(120)</option>
449
+ <option class="level-0" value="2060">podcasts&nbsp;&nbsp;(8)</option>
450
+ <option class="level-0" value="10969096">portable audio hacks&nbsp;&nbsp;(66)</option>
451
+ <option class="level-0" value="10969099">portable video hacks&nbsp;&nbsp;(57)</option>
452
+ <option class="level-0" value="588444">psp hacks&nbsp;&nbsp;(47)</option>
453
+ <option class="level-0" value="23971578">radio hacks&nbsp;&nbsp;(137)</option>
454
+ <option class="level-0" value="47">rants&nbsp;&nbsp;(28)</option>
455
+ <option class="level-0" value="69218551">Raspberry Pi&nbsp;&nbsp;(153)</option>
456
+ <option class="level-0" value="21870780">repair hacks&nbsp;&nbsp;(101)</option>
457
+ <option class="level-0" value="309">reviews&nbsp;&nbsp;(19)</option>
458
+ <option class="level-0" value="10969101">robots hacks&nbsp;&nbsp;(874)</option>
459
+ <option class="level-0" value="30302">roundup&nbsp;&nbsp;(35)</option>
460
+ <option class="level-0" value="10969111">security hacks&nbsp;&nbsp;(460)</option>
461
+ <option class="level-0" value="2301">Software Development&nbsp;&nbsp;(91)</option>
462
+ <option class="level-0" value="3796421">software hacks&nbsp;&nbsp;(47)</option>
463
+ <option class="level-0" value="10969116">solar hacks&nbsp;&nbsp;(46)</option>
464
+ <option class="level-0" value="10969121">tablet pcs hacks&nbsp;&nbsp;(40)</option>
465
+ <option class="level-0" value="3075183">teardown&nbsp;&nbsp;(31)</option>
466
+ <option class="level-0" value="10969130">tool hacks&nbsp;&nbsp;(657)</option>
467
+ <option class="level-0" value="25277004">toy hacks&nbsp;&nbsp;(360)</option>
468
+ <option class="level-0" value="10969134">transportation hacks&nbsp;&nbsp;(472)</option>
469
+ <option class="level-0" value="1">Uncategorized&nbsp;&nbsp;(332)</option>
470
+ <option class="level-0" value="3184456">video hacks&nbsp;&nbsp;(211)</option>
471
+ <option class="level-0" value="34942364">Virtual Reality&nbsp;&nbsp;(9)</option>
472
+ <option class="level-0" value="50802420">weapons hacks&nbsp;&nbsp;(63)</option>
473
+ <option class="level-0" value="12552193">wearable hacks&nbsp;&nbsp;(183)</option>
474
+ <option class="level-0" value="39510952">Weekly roundup&nbsp;&nbsp;(18)</option>
475
+ <option class="level-0" value="4891215">wireless hacks&nbsp;&nbsp;(333)</option>
476
+ <option class="level-0" value="7079455">xbox hacks&nbsp;&nbsp;(130)</option>
477
+ </select>
478
+
479
+ <script type='text/javascript'>
480
+ /* <![CDATA[ */
481
+ var dropdown = document.getElementById("cat");
482
+ function onCatChange() {
483
+ if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
484
+ location.href = "http://hackaday.com/?cat="+dropdown.options[dropdown.selectedIndex].value;
485
+ }
486
+ }
487
+ dropdown.onchange = onCatChange;
488
+ /* ]]> */
489
+ </script>
490
+
491
+ </div></div>
492
+ <div id="featured-post-2" class="widget featuredpost"><div class="widget-wrap"><h4 class="widgettitle">In case you missed it</h4>
493
+ <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()-->
494
+
495
+ <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()-->
496
+
497
+ <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()-->
498
+
499
+ <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()-->
500
+
501
+ <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()-->
502
+
503
+ <p class="more-from-category"><a href="http://hackaday.com/category/featured/" title="Featured">More Posts from this Category</a></p></div></div>
504
+ <div id="recent-comments-2" class="widget widget_recent_comments"><div class="widget-wrap"><h4 class="widgettitle">Recent comments</h4>
505
+ <ul id="recentcomments">
506
+ <li class="recentcomments">
507
+ 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>
508
+ <li class="recentcomments">
509
+ <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>
510
+ <li class="recentcomments">
511
+ 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>
512
+ <li class="recentcomments">
513
+ 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>
514
+ <li class="recentcomments">
515
+ 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>
516
+ <li class="recentcomments">
517
+ 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>
518
+ <li class="recentcomments">
519
+ 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>
520
+ <li class="recentcomments">
521
+ <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>
522
+ <li class="recentcomments">
523
+ <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>
524
+ <li class="recentcomments">
525
+ 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>
526
+ </ul>
527
+ </div></div>
528
+ <div id="calendar-2" class="widget widget_calendar"><div class="widget-wrap"><h4 class="widgettitle">Find Hacks by Date</h4>
529
+ <div id="calendar_wrap"><table id="wp-calendar">
530
+ <caption>April 2013</caption>
531
+ <thead>
532
+ <tr>
533
+ <th scope="col" title="Sunday">S</th>
534
+ <th scope="col" title="Monday">M</th>
535
+ <th scope="col" title="Tuesday">T</th>
536
+ <th scope="col" title="Wednesday">W</th>
537
+ <th scope="col" title="Thursday">T</th>
538
+ <th scope="col" title="Friday">F</th>
539
+ <th scope="col" title="Saturday">S</th>
540
+ </tr>
541
+ </thead>
542
+
543
+ <tfoot>
544
+ <tr>
545
+ <td colspan="3" id="prev"><a href="http://hackaday.com/2013/03/" title="View posts for March 2013">&laquo; Mar</a></td>
546
+ <td class="pad">&nbsp;</td>
547
+ <td colspan="3" id="next" class="pad">&nbsp;</td>
548
+ </tr>
549
+ </tfoot>
550
+
551
+ <tbody>
552
+ <tr>
553
+ <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>
554
+ </tr>
555
+ <tr>
556
+ <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>
557
+ </tr>
558
+ <tr>
559
+ <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>
560
+ </tr>
561
+ <tr>
562
+ <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>
563
+ </tr>
564
+ <tr>
565
+ <td>28</td><td>29</td><td>30</td>
566
+ <td class="pad" colspan="4">&nbsp;</td>
567
+ </tr>
568
+ </tbody>
569
+ </table></div></div></div>
570
+ <div id=virurl>
571
+ <!-- BEGIN - VIRURL Widget - iFrame Embed Code -->
572
+ <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"
573
+ width="300" height="600" scrolling="no" >
574
+ </iframe>
575
+ <!-- END - VIRURL Widget - iFrame Embed Code -->
576
+ </div>
577
+ <br />
578
+ <br />
579
+ <div id=tl_ad_bottom>
580
+ <script type="text/javascript"><!--
581
+ google_ad_client = "ca-pub-1812638130783065";
582
+ /* Hackaday sidebar wide skyscraper */
583
+ google_ad_slot = "1587378096";
584
+ google_ad_width = 160;
585
+ google_ad_height = 600;
586
+ google_ad_region = "test";
587
+ //-->
588
+ </script>
589
+ <script type="text/javascript"
590
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
591
+ </script>
592
+ </div>
593
+
594
+
595
+ <br />
596
+
597
+
598
+
599
+
600
+
601
+
602
+ </div> </div><!-- end #content-sidebar-wrap -->
603
+ </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 -->
604
+ <script type="text/javascript">
605
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
606
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
607
+ </script>
608
+ <script type="text/javascript">
609
+ var pageTracker = _gat._getTracker("UA-2201445-6");
610
+ pageTracker._trackPageview();
611
+ </script>
612
+ <!-- Start Quantcast tag -->
613
+ <script type="text/javascript">
614
+ _qoptions={
615
+ qacct:"p-cc6zkdHuZwUDM"
616
+ };
617
+ </script>
618
+ <script type="text/javascript"
619
+ src="http://edge.quantserve.com/quant.js"></script>
620
+ <noscript>
621
+ <img src="http://pixel.quantserve.com/pixel/p-cc6zkdHuZwUDM.gif"
622
+ style="display: none;" border="0" height="1" width="1"
623
+ alt="Quantcast"/>
624
+ </noscript></div><!-- end #wrap -->
625
+
626
+ <script type="text/javascript">
627
+ var _qevents = _qevents || [], wpcomQuantcastData = {"qacct":"p-18-mFEk4J448M","labels":",language.en,type.wpcom,vip.hackadaycom"};
628
+ function wpcomQuantcastPixel( labels, options ) {
629
+ var i, defaults = wpcomQuantcastData, data = { event: 'ajax' };
630
+
631
+ labels = labels || '';
632
+ options = options || {};
633
+
634
+ if ( typeof labels != 'string' )
635
+ options = labels;
636
+
637
+ for ( i in defaults ) {
638
+ data[i] = defaults[i];
639
+ }
640
+
641
+ for ( i in options ) {
642
+ data[i] = options[i];
643
+ }
644
+
645
+ if ( data.labels ) {
646
+ data.labels += ',' + labels;
647
+ } else {
648
+ data.labels = labels;
649
+ }
650
+
651
+ _qevents.push( data );
652
+ };
653
+ (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); })();
654
+ _qevents.push( wpcomQuantcastData );
655
+ </script>
656
+ <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>
657
+
658
+
659
+ <!-- /// LOAD CHARTBEAT /// -->
660
+ <script type="text/javascript">
661
+ var _sf_async_config={};
662
+ _sf_async_config.uid = 2021;
663
+ _sf_async_config.useCanonical = true;
664
+
665
+ (function(){
666
+ function loadChartbeat() {
667
+ window._sf_endpt=(new Date()).getTime();
668
+ var e = document.createElement('script');
669
+ e.setAttribute('language', 'javascript');
670
+ e.setAttribute('type', 'text/javascript');
671
+ e.setAttribute('src',
672
+ (("https:" == document.location.protocol) ? "https://s3.amazonaws.com/" : "http://") +
673
+ "static.chartbeat.com/js/chartbeat.js");
674
+ document.body.appendChild(e);
675
+ }
676
+ var oldonload = window.onload;
677
+ window.onload = (typeof window.onload != 'function') ?
678
+ loadChartbeat : function() { oldonload(); loadChartbeat(); };
679
+ })();
680
+ </script>
681
+ <div style="display:none">
682
+ </div>
683
+ <script type='text/javascript' src='http://s2.wp.com/_static/??-eJylzMsOREAQRuEXMoqgEwvxLC4/qjPVOl3dZh4fO3vrk+/Qz3+m3UW4SFZpxsET/D+3mtEjxQ0CJR8gnIRWOCgrfXm8lcAl0uQRFtbtlR3Cqtegl66smto0xhStPQEw5Dy+'></script>
684
+ <script type="text/javascript">
685
+ // <![CDATA[
686
+ (function() {
687
+ try{
688
+ if ( window.external &&'msIsSiteMode' in window.external) {
689
+ if (window.external.msIsSiteMode()) {
690
+ var jl = document.createElement('script');
691
+ jl.type='text/javascript';
692
+ jl.async=true;
693
+ jl.src='/wp-content/plugins/ie-sitemode/custom-jumplist.php';
694
+ var s = document.getElementsByTagName('script')[0];
695
+ s.parentNode.insertBefore(jl, s);
696
+ }
697
+ }
698
+ }catch(e){}
699
+ })();
700
+ // ]]>
701
+ </script><script src="http://s.stats.wordpress.com/w.js?21" type="text/javascript"></script>
702
+ <script type="text/javascript">
703
+ st_go({'blog':'4779443','v':'wpcom','tz':'-7','user_id':'0','subd':'hackadaycom'});
704
+ 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();}
705
+ ex_go({'crypt':'UE40eW5QN0p8M2Y/RE1BNmNJfGhxNCVxUDExYmtXRThKbHcwXTdETWI1alhvb1oseHImN101ZFpEakVpYjlQYVFLYzBaVHRtPz0wXS9bVlFpZ3c1Qn5KSThLNS9lSHNGOE1IJk9+N3xFNWxyT2x+MUpnR1dJcFZJU21wdW5bfG1BVnZySnFxZUFfRTJaa0o/RFZQTGkmUnorVWFXdD9Rd1JOWS9BV3xXMVlkUzZpM1YxQ051d2FmMENaTmNkU0Qybm5oeCUrZEN4T0FRM2hodkdJPU0yMUhyJlBfOF9baVJ0QVNkPUJDRG5dSEU3OSZlUytrWFFDLVA4dnx4K0U='});
706
+ addLoadEvent(function(){linktracker_init('4779443',0);});
707
+ </script>
708
+ <noscript><img src="http://stats.wordpress.com/b.gif?v=noscript" style="height:0px;width:0px;overflow:hidden" alt="" /></noscript>
709
+ <script type="text/javascript">
710
+ // Trigger Quantcast pixel for each Infinite Scroll post load
711
+ if ( 'function' === typeof( jQuery ) ) {
712
+ jQuery( document.body ).on( 'post-load', function() {
713
+ if ( 'function' === typeof( wpcomQuantcastPixel ) )
714
+ wpcomQuantcastPixel();
715
+ } );
716
+ }
717
+ </script>
718
+ </body>
719
+ </html>