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,794 @@
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 63 seconds ago
5
+ generated in 0.516 seconds
6
+ served from batcache in 0.003 seconds
7
+ expires in 237 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=1366801065&amp;back=hackaday.com%2Fpage%2F3%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-3 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-97618 post type-post status-publish format-standard hentry category-parts tag-buck-converter tag-lithium-ion tag-rt8289 tag-switch-mode">
197
+
198
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/19/replace-your-project-power-supplies-with-recycled-li-ion-cells-and-a-switching-regulator/" title="Replace your project power supplies with recycled Li-Ion cells and a switching&nbsp;regulator" rel="bookmark">Replace your project power supplies with recycled Li-Ion cells and a switching&nbsp;regulator</a></h2>
199
+
200
+ <div class="post-info"><span class="date published time" title="2013-04-19T12:01:09+00:00">April 19, 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/19/replace-your-project-power-supplies-with-recycled-li-ion-cells-and-a-switching-regulator/#comments">14 Comments</a></span> </div> <div class="entry-content">
201
+ <p><img class="aligncenter size-full wp-image-97619" alt="buck-regulator" src="http://hackadaycom.files.wordpress.com/2013/04/buck-regulator.jpg?w=500&#038;h=213" width="500" height="213" /></p>
202
+ <p>[Dr. Iguana's] experience moving from projects powered by disposable Alkaline cells and linear regulators to <a href="http://www.dr-iguana.com/prj_fitzy_and_carraldo/prj_fitzy_and_carraldo_buck_regulator/">recycled Lithium Ion cells using the buck regulators</a> seen above might serve as an inspiration to make the transition in your own projects.</p>
203
+ <p>The recycled cells he&#8217;s talking about are pulled out of larger battery packs. <a href="http://hackaday.com/2010/09/27/making-your-own-lithium-ion-batteries/">As we&#8217;ve seen in the past</a>, dead battery packs for rechargeable tools, laptops, etc., are often plagued by a few bad apples. A small number of dead cells can bork the entire battery even though many perfectly usable cells remain. Once he decided to make the switch it was time to consider power regulation. He first looked at whether to use the cells in parallel or series. Parallel are easier to charge, but boosting the voltage to the desired level ends up costing more. He decided to go with cells in series, which can be regulated with the a less expensive buck converter. In this case he made a board for the RT8289 chip. The drawback of this method requires that you monitor each cell individually during charging to ensure you don&#8217;t have the same problem that killed the battery from which you pulled these good cells.</p>
204
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
205
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/parts/" title="View all posts in parts" rel="category tag">parts</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/buck-converter/" rel="tag">buck converter</a>, <a href="http://hackaday.com/tag/lithium-ion/" rel="tag">lithium ion</a>, <a href="http://hackaday.com/tag/rt8289/" rel="tag">rt8289</a>, <a href="http://hackaday.com/tag/switch-mode/" rel="tag">switch mode</a></span> </div>
206
+ </div><!-- end .postclass -->
207
+ <div class="post-97614 post type-post status-publish format-standard hentry category-arduino-hacks category-toy-hacks tag-failure tag-lego tag-servo tag-wear">
208
+
209
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/19/measuring-the-lifespan-of-lego/" title="Measuring the lifespan of&nbsp;LEGO" rel="bookmark">Measuring the lifespan of&nbsp;LEGO</a></h2>
210
+
211
+ <div class="post-info"><span class="date published time" title="2013-04-19T06:01:09+00:00">April 19, 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/19/measuring-the-lifespan-of-lego/#comments">34 Comments</a></span> </div> <div class="entry-content">
212
+ <p><img class="aligncenter size-large wp-image-97615" alt="lifespan-of-LEGO" src="http://hackadaycom.files.wordpress.com/2013/04/lifespan-of-lego.png?w=580&#038;h=369" width="580" height="369" /></p>
213
+ <p>How many times can you put two LEGO pieces together and take them apart again before they wear out? The answer is 37,112. At least that&#8217;s the number established by one test case. [Phillipe Cantin] was interested in this peculiar question so <a href="http://phillipecantin.blogspot.com/2013/02/legos-magic-number-is-37112.html">he built the test rig above to measure a LEGO&#8217;s lifespan</a>.</p>
214
+ <p>The hacked together apparatus is pretty ingenious. It uses two servo motors for testing, each driven by the Arduino which is logging the count on an SD card. One of the two white LEGO parts has been screwed onto an arm of the upper servo. That servo presses down onto the mating piece which is sitting inside that yellow band. Look close and you&#8217;ll realize the yellow is the handle end of an IC puller. When the post on the lower servo is moved toward one arm of the puller it grips the lower LEGO piece tightly so that the upper servo can pull the two apart. In addition to the assembly and disassembly step there&#8217;s a verification step which raises the mated parts so that a reflectance sensor can verify that they&#8217;re holding together. [Phillipe] let the rig run for ten days straight before the pieces failed.</p>
215
+ <p>Don&#8217;t miss his video description of the project after the break.</p>
216
+ <p> <a href="http://hackaday.com/2013/04/19/measuring-the-lifespan-of-lego/#more-97614" class="more-link">[Read more...]</a></p>
217
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
218
+ <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>, <a href="http://hackaday.com/category/toy-hacks/" title="View all posts in toy hacks" rel="category tag">toy hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/failure/" rel="tag">failure</a>, <a href="http://hackaday.com/tag/lego/" rel="tag">lego</a>, <a href="http://hackaday.com/tag/servo/" rel="tag">servo</a>, <a href="http://hackaday.com/tag/wear/" rel="tag">wear</a></span> </div>
219
+ </div><!-- end .postclass -->
220
+ <div class="post-97610 post type-post status-publish format-standard hentry category-medical-hacks tag-lm324 tag-op-amp tag-opamp tag-pulse-oximeter">
221
+
222
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/18/pulse-oximeter-from-lm324-led-and-photodiode/" title="Pulse Oximeter from LM324, LED, and&nbsp;Photodiode" rel="bookmark">Pulse Oximeter from LM324, LED, and&nbsp;Photodiode</a></h2>
223
+
224
+ <div class="post-info"><span class="date published time" title="2013-04-18T14:01:19+00:00">April 18, 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/18/pulse-oximeter-from-lm324-led-and-photodiode/#comments">24 Comments</a></span> </div> <div class="entry-content">
225
+ <p><img class="aligncenter size-full wp-image-97611" alt="pulse-oximeter" src="http://hackadaycom.files.wordpress.com/2013/04/pulse-oximeter.jpg?w=525&#038;h=393" width="525" height="393" /></p>
226
+ <p>This <a href="http://www.swharden.com/blog/2013-04-14-simple-diy-ecg-pulse-oximeter-version-2/">pulse oximeter is so simple and cheap to build</a> it&#8217;s almost criminal. The most obvious way to monitor the output of the sensor is to use an oscilloscope. The poor-man&#8217;s stand-in for that is a sound card, which is what [Scott Harden] demonstrates in his write-up.</p>
227
+ <p>It uses <a href="http://hackaday.com/2012/11/27/pulse-oximeter-displays-blood-oxygen-levels-on-a-pc/">a concept we&#8217;ve seen a few times before</a>. The light from an LED shines through your finger and is measured on the other side by a phototransistor. It&#8217;s that light grey plastic thing you see on a patient&#8217;s finger when they&#8217;re in the hospital. [Scott] went with a common wooden clothes pin as a way to mount and align the sensor with your finger. It is monitored by the simplest of circuits which uses just one chip: an LM324 op-amp. There are three basic stages which he explains well in the video after the jump. The incoming signal is decoupled before being fed to the first amplifier stage. From there it is fed to an adjustable low-pass filter to help eliminate 60Hz noise from AC power in the room. The last stage amplifies the signal again while using another low-pass filter in parallel.</p>
228
+ <p> <a href="http://hackaday.com/2013/04/18/pulse-oximeter-from-lm324-led-and-photodiode/#more-97610" class="more-link">[Read more...]</a></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/medical-hacks/" title="View all posts in Medical hacks" rel="category tag">Medical hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/lm324/" rel="tag">lm324</a>, <a href="http://hackaday.com/tag/op-amp/" rel="tag">op-amp</a>, <a href="http://hackaday.com/tag/opamp/" rel="tag">opamp</a>, <a href="http://hackaday.com/tag/pulse-oximeter/" rel="tag">pulse oximeter</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-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">
261
+
262
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/18/living-night-light-with-glowing-algae/" title="Living night light with glowing&nbsp;algae" rel="bookmark">Living night light with glowing&nbsp;algae</a></h2>
263
+
264
+ <div class="post-info"><span class="date published time" title="2013-04-18T13:03:26+00:00">April 18, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/calebkraft/" class="fn n" title="Caleb Kraft" rel="author">Caleb Kraft</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/04/18/living-night-light-with-glowing-algae/#comments">67 Comments</a></span> </div> <div class="entry-content">
265
+ <p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='470' height='295' src='http://www.youtube.com/embed/TsMTDnd8lZE?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
266
+ <p>I may sound like I&#8217;m being over enthusiastic in this video. I&#8217;m not. Everyone who has seen this thinks it is simply amazing.</p>
267
+ <p>My father, an ex navy man, has told me stories of glowing water since I was little.  Being a person who was obsessed with all things that light up, this always stuck with me. I saw a headline one day that someone was making an algae-light. Sadly when I clicked on it, the algae was just there to create oxygen. It was a cool idea, but not what I was hoping for.</p>
268
+ <p>That slight disappointment drove me to create a night light using glowing algae. The process could be extremely simple.</p>
269
+ <p>1. <a href="http://empco.org/edu/index.php/pyrocystis-fusiformis-11.html">Buy Algae</a>.</p>
270
+ <p>2. set up light for algae (it needs a 12 hour light cycle and putting it in a window sill would kill it due to heat). It needs bulbs labelled 6500k or higher.</p>
271
+ <p>3. shake algae at night (it only lights up when agitated, and when it is on its &#8220;night&#8221; cycle).</p>
272
+ <p>I really wanted to add more to this project though, so I decided to put the algae in a <a href="http://www.kleinbottle.com/">klein bottle</a> and build a custom base for it that would allow me to move a BB around inside the bottle using magnets. This would in turn, hopefully, agitate the algae and make it light up.</p>
273
+ <p> <a href="http://hackaday.com/2013/04/18/living-night-light-with-glowing-algae/#more-97657" class="more-link">[Read more...]</a></p>
274
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
275
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/3d-printer-hacks/" title="View all posts in 3d Printer hacks" rel="category tag">3d Printer hacks</a>, <a href="http://hackaday.com/category/featured/" title="View all posts in Featured" rel="category tag">Featured</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/algae/" rel="tag">algae</a>, <a href="http://hackaday.com/tag/bioluminescence/" rel="tag">bioluminescence</a>, <a href="http://hackaday.com/tag/dinoflagellate/" rel="tag">dinoflagellate</a>, <a href="http://hackaday.com/tag/glowing/" rel="tag">glowing</a>, <a href="http://hackaday.com/tag/phosphorescence/" rel="tag">phosphorescence</a></span> </div>
276
+ </div><!-- end .postclass -->
277
+ <div class="post-97606 post type-post status-publish format-standard hentry category-cnc-hacks category-tool-hacks tag-android tag-pick-and-place tag-smd tag-tablet tag-vacuum-tweezers">
278
+
279
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/18/semi-automatic-pick-and-place-machine/" title="Semi-automatic pick and place&nbsp;machine" rel="bookmark">Semi-automatic pick and place&nbsp;machine</a></h2>
280
+
281
+ <div class="post-info"><span class="date published time" title="2013-04-18T12:01:20+00:00">April 18, 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/18/semi-automatic-pick-and-place-machine/#comments">24 Comments</a></span> </div> <div class="entry-content">
282
+ <p><img class="aligncenter size-large wp-image-97607" alt="semi-automatic-pick-and-place" src="http://hackadaycom.files.wordpress.com/2013/04/semi-automatic-pick-and-place.jpg?w=580&#038;h=386" width="580" height="386" /></p>
283
+ <p>This is a fascinating take on building your own pick and place machine. It does an amazing job of automating the hardest parts of hand assembly, while relying on human dexterity to achieve the hardest parts of automation. It&#8217;s <a href="http://www.briandorey.com/post/Android-Tablet-and-Arduino-DIY-pick-and-place-component-selector.aspx">a semiautomatic pick and place machine</a> driven by an Arduino and controlled by an Android tablet.</p>
284
+ <p>The machine is built in two parts. The portion in the upper left feeds components from reels and is fully automated. The portion on the lower right consists of a padded arm-rest which slides smoothly along two axes. A mechanical arm with multiple articulations is attached to the end, culminating in a tip connector for some vacuum tweezers. Right handers are the only ones who will find this convenient, but oh well. The clip after the break shows it in action. The assembly technician first selects the component from an icon on the Android tablet. The reel machine then dispenses that part, which is picked up by the vacuum tweezers using the let hand to switch the vacuum on and off again. If the part orientation needs to be rotated it can done using the jog wheel on the Android app. It smooth, quick, and best of all, clever!</p>
285
+ <p> <a href="http://hackaday.com/2013/04/18/semi-automatic-pick-and-place-machine/#more-97606" 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/cnc-hacks/" title="View all posts in cnc hacks" rel="category tag">cnc 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/android/" rel="tag">android</a>, <a href="http://hackaday.com/tag/pick-and-place/" rel="tag">pick and place</a>, <a href="http://hackaday.com/tag/smd/" rel="tag">smd</a>, <a href="http://hackaday.com/tag/tablet/" rel="tag">tablet</a>, <a href="http://hackaday.com/tag/vacuum-tweezers/" rel="tag">vacuum tweezers</a></span> </div>
288
+ </div><!-- end .postclass -->
289
+ <div class="post-97601 post type-post status-publish format-standard hentry category-home-hacks tag-blinds tag-home-automation tag-servo">
290
+
291
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/18/hidden-servo-automates-slat-style-window-blinds/" title="Hidden servo automates slat-style window&nbsp;blinds" rel="bookmark">Hidden servo automates slat-style window&nbsp;blinds</a></h2>
292
+
293
+ <div class="post-info"><span class="date published time" title="2013-04-18T06:01:23+00:00">April 18, 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/18/hidden-servo-automates-slat-style-window-blinds/#comments">33 Comments</a></span> </div> <div class="entry-content">
294
+ <p><img class="aligncenter size-large wp-image-97602" alt="slat-blind-automation" src="http://hackadaycom.files.wordpress.com/2013/04/slat-blind-automation.png?w=580&#038;h=320" width="580" height="320" /></p>
295
+ <p>[Home Awesomation] has been working on <a href="http://homeawesomation.wordpress.com/2013/02/26/automated-window-blinds-with-arduino/">automating his slat-style window blinds</a>. His focus has been on adjusting the angle of the slats, not on completely retracting the shades. Since the slat angle adjustment requires little torque a servo motor turns out to be just perfect for the job. The good news is that the existing blinds in his house have room in the top enclosure to completely hide his add-on hardware.</p>
296
+ <p>The image above is a screenshot from the demo which you can watch after the break. The top enclosure for the blinds is just shown at the top of the frame. Here [HA] is demonstrating a few different control designs which he has been trying out. You can see what looks like a Molex connector with some type of component attached to it. That&#8217;s an IR motion sensor and he&#8217;s really happy with its performance. He feels the same way about the black momentary push switch sticking down next to the power cable. But his DIY solution that works quite well is the pull string attached to a flexible piece of metal. When that metal bends enough to touch a stationary conductor it completes the circuit, telling the Arduino to start driving the servo.</p>
297
+ <p>The main idea behind the project is to poll a temperature sensor, closing the blind automatically to help keep the place cool during the day. We figure if he&#8217;s already using a microcontroller to drive the project he might as well <a href="http://hackaday.com/2012/01/30/firmware-programmer-for-a-cheap-bluetooth-module/">throw a cheap Bluetooth in module there</a> and make it controllable with a smart phone.</p>
298
+ <p> <a href="http://hackaday.com/2013/04/18/hidden-servo-automates-slat-style-window-blinds/#more-97601" 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/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/blinds/" rel="tag">blinds</a>, <a href="http://hackaday.com/tag/home-automation/" rel="tag">home automation</a>, <a href="http://hackaday.com/tag/servo/" rel="tag">servo</a></span> </div>
301
+ </div><!-- end .postclass -->
302
+ <div class="post-97598 post type-post status-publish format-standard hentry category-microcontrollers category-musical-hacks tag-chiptunes">
303
+
304
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/04/17/upgrade-a-toy-keyboards-tone-production/" title="Upgrade a toy keyboard&#8217;s tone&nbsp;production" rel="bookmark">Upgrade a toy keyboard&#8217;s tone&nbsp;production</a></h2>
305
+
306
+ <div class="post-info"><span class="date published time" title="2013-04-17T14:01:08+00:00">April 17, 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/17/upgrade-a-toy-keyboards-tone-production/#comments">18 Comments</a></span> </div> <div class="entry-content">
307
+ <p><img class="aligncenter size-large wp-image-97599" alt="hacking-a-toy-keyboard" src="http://hackadaycom.files.wordpress.com/2013/04/hacking-a-toy-keyboard.png?w=580&#038;h=347" width="580" height="347" /></p>
308
+ <p>[Jan] was given this toy keyboard and decided to make it the subject of his next project. In addition to having three octaves of keys it&#8217;s got a ton of buttons used to select different modes. He gave it an upgrade by <a href="http://buranelectrix.com/pulsemaster.html">installing his own tone production circuitry</a> seen in the upper right.</p>
309
+ <p>His preliminary investigation of the stock components yielded a mystery uC encased in a blob of black epoxy. He wasn&#8217;t going to be getting anywhere with that, so he started by figuring out how to use 4051 multiplexers to read all of the keys. Outputs for that were routed to a 20 pin header for easy connection to the synthesizer board he would build in the next part of the project. He based it around an ATmega8, which we know <a href="http://hackaday.com/2011/12/23/bitbuf-delivers-some-of-the-best-chiptune-effects-around/">can produce some killer chiptunes</a> audio. Once he had everything working he laid out a circuit board in Kicad to ensure the transplanted circuitry would hold up inside of the toy keyboard. You can hear all of different effects it&#8217;s capable of in the clip after the break.</p>
310
+ <p> <a href="http://hackaday.com/2013/04/17/upgrade-a-toy-keyboards-tone-production/#more-97598" class="more-link">[Read more...]</a></p>
311
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
312
+ <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>, <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/chiptunes/" rel="tag">chiptunes</a></span> </div>
313
+ </div><!-- end .postclass -->
314
+ <div class="navigation"><div class="alignleft"><a href="http://hackaday.com/page/4/" >&laquo; Older Posts</a></div><div class="alignright"><a href="http://hackaday.com/page/2/" >Newer Posts &raquo;</a></div></div><!-- end .navigation --> </div><!-- end #content -->
315
+ <div id="sidebar" class="sidebar widget-area">
316
+ <div id=tl_ad>
317
+ <script type="text/javascript"><!--
318
+ google_ad_client = "ca-pub-1812638130783065";
319
+ /* Hackaday, 300x250, created 4/26/08, MedRect sidebar */
320
+ google_ad_slot = "7800245928";
321
+ google_ad_width = 300;
322
+ google_ad_height = 250;
323
+ //-->
324
+ </script>
325
+ <script type="text/javascript"
326
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
327
+ </script>
328
+
329
+ </div>
330
+
331
+
332
+
333
+
334
+
335
+
336
+ <div class="widget">
337
+ <h4>Never Miss a Hack</h4>
338
+ <div class="textwidget">
339
+
340
+ <!-- Place this tag where you want the badge to render. -->
341
+ <div class="g-plus" data-width= "280" data-href="https://plus.google.com/114843073658390316652" data-rel="publisher" data-theme="dark"></div>
342
+ <!-- Place this tag after the last badge tag. -->
343
+ <script type="text/javascript">
344
+ (function() {
345
+ var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
346
+ po.src = 'https://apis.google.com/js/plusone.js';
347
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
348
+ })();
349
+ </script>
350
+
351
+ <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>
352
+
353
+ <a href="https://twitter.com/hackaday" class="twitter-follow-button" data-show-count="true" data-lang="en" data-size="large">Follow @twitter</a>
354
+ <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>
355
+
356
+ <a href="http://feeds2.feedburner.com/hackaday/LgoM" target="_blank"><img src="http://hackadaycom.files.wordpress.com/2012/11/orange.png" border="0"/></a>
357
+ <div class="clear"> </div>
358
+ <!-- Begin MailChimp Signup Form -->
359
+ <link href="http://cdn-images.mailchimp.com/embedcode/slim-081711.css" rel="stylesheet" type="text/css">
360
+
361
+ <div id="mc_embed_signup">
362
+ <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>
363
+ <label for="mce-EMAIL">Subscribe to our mailing list for sneak previews and behind the scenes info</label>
364
+ <input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="email address" required>
365
+ <div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
366
+ </form>
367
+ </div>
368
+
369
+ <!--End mc_embed_signup-->
370
+ </div>
371
+ </div>
372
+
373
+ <div id="categories-2" class="widget widget_categories"><div class="widget-wrap"><h4 class="widgettitle">Categories</h4>
374
+ <select name='cat' id='cat' class='postform' >
375
+ <option value='-1'>Select Category</option>
376
+ <option class="level-0" value="114554125">3d Printer hacks&nbsp;&nbsp;(116)</option>
377
+ <option class="level-0" value="18020710">android hacks&nbsp;&nbsp;(240)</option>
378
+ <option class="level-0" value="18020705">arduino hacks&nbsp;&nbsp;(1029)</option>
379
+ <option class="level-0" value="27981650">ARM&nbsp;&nbsp;(51)</option>
380
+ <option class="level-0" value="33199679">Ask Hackaday&nbsp;&nbsp;(29)</option>
381
+ <option class="level-0" value="64298109">ATtiny hacks&nbsp;&nbsp;(45)</option>
382
+ <option class="level-0" value="25122024">beer hacks&nbsp;&nbsp;(63)</option>
383
+ <option class="level-0" value="12115263">blackberry hacks&nbsp;&nbsp;(8)</option>
384
+ <option class="level-0" value="10969031">cellphones hacks&nbsp;&nbsp;(337)</option>
385
+ <option class="level-0" value="35745764">chemistry hacks&nbsp;&nbsp;(102)</option>
386
+ <option class="level-0" value="24483654">classic hacks&nbsp;&nbsp;(852)</option>
387
+ <option class="level-0" value="31677810">clock hacks&nbsp;&nbsp;(189)</option>
388
+ <option class="level-0" value="18755632">cnc hacks&nbsp;&nbsp;(341)</option>
389
+ <option class="level-0" value="568165">computer hacks&nbsp;&nbsp;(390)</option>
390
+ <option class="level-0" value="78428">cons&nbsp;&nbsp;(192)</option>
391
+ <option class="level-0" value="5738">contests&nbsp;&nbsp;(136)</option>
392
+ <option class="level-0" value="3923181">cooking hacks&nbsp;&nbsp;(72)</option>
393
+ <option class="level-0" value="10969032">digital audio hacks&nbsp;&nbsp;(422)</option>
394
+ <option class="level-0" value="10969033">digital cameras hacks&nbsp;&nbsp;(415)</option>
395
+ <option class="level-0" value="10969034">downloads hacks&nbsp;&nbsp;(101)</option>
396
+ <option class="level-0" value="107827385">drone hacks&nbsp;&nbsp;(10)</option>
397
+ <option class="level-0" value="63176382">Engine Hacks&nbsp;&nbsp;(31)</option>
398
+ <option class="level-0" value="35890">Featured&nbsp;&nbsp;(72)</option>
399
+ <option class="level-0" value="551890">firefox hacks&nbsp;&nbsp;(23)</option>
400
+ <option class="level-0" value="53446541">FPGA&nbsp;&nbsp;(1)</option>
401
+ <option class="level-0" value="18020562">g1 hacks&nbsp;&nbsp;(26)</option>
402
+ <option class="level-0" value="320557">google hacks&nbsp;&nbsp;(44)</option>
403
+ <option class="level-0" value="10969036">gps hacks&nbsp;&nbsp;(108)</option>
404
+ <option class="level-0" value="24535490">green hacks&nbsp;&nbsp;(152)</option>
405
+ <option class="level-0" value="27311668">Hackaday links&nbsp;&nbsp;(146)</option>
406
+ <option class="level-0" value="21755374">Hackerspaces&nbsp;&nbsp;(93)</option>
407
+ <option class="level-0" value="6310599">HackIt&nbsp;&nbsp;(101)</option>
408
+ <option class="level-0" value="10969037">handhelds hacks&nbsp;&nbsp;(189)</option>
409
+ <option class="level-0" value="79">hardware&nbsp;&nbsp;(249)</option>
410
+ <option class="level-0" value="144422905">High Voltage Hacks&nbsp;&nbsp;(5)</option>
411
+ <option class="level-0" value="66307084">Holiday Hacks&nbsp;&nbsp;(93)</option>
412
+ <option class="level-0" value="10969038">home entertainment hacks&nbsp;&nbsp;(516)</option>
413
+ <option class="level-0" value="5660882">home hacks&nbsp;&nbsp;(705)</option>
414
+ <option class="level-0" value="2708">how-to&nbsp;&nbsp;(135)</option>
415
+ <option class="level-0" value="908478">internet hacks&nbsp;&nbsp;(2)</option>
416
+ <option class="level-0" value="831">Interviews&nbsp;&nbsp;(13)</option>
417
+ <option class="level-0" value="1416772">iphone hacks&nbsp;&nbsp;(176)</option>
418
+ <option class="level-0" value="1275163">ipod hacks&nbsp;&nbsp;(144)</option>
419
+ <option class="level-0" value="344761">kickstarter&nbsp;&nbsp;(29)</option>
420
+ <option class="level-0" value="4157506">Kindle hacks&nbsp;&nbsp;(15)</option>
421
+ <option class="level-0" value="46717088">Kinect hacks&nbsp;&nbsp;(81)</option>
422
+ <option class="level-0" value="10969048">laptops hacks&nbsp;&nbsp;(111)</option>
423
+ <option class="level-0" value="10969055">laser hacks&nbsp;&nbsp;(167)</option>
424
+ <option class="level-0" value="18020716">led hacks&nbsp;&nbsp;(695)</option>
425
+ <option class="level-0" value="10626">lifehacks&nbsp;&nbsp;(54)</option>
426
+ <option class="level-0" value="729674">linux hacks&nbsp;&nbsp;(129)</option>
427
+ <option class="level-0" value="20732807">lockpicking hacks&nbsp;&nbsp;(11)</option>
428
+ <option class="level-0" value="10969060">macs hacks&nbsp;&nbsp;(135)</option>
429
+ <option class="level-0" value="144395979">Marijuana Hacks&nbsp;&nbsp;(2)</option>
430
+ <option class="level-0" value="11284667">Medical hacks&nbsp;&nbsp;(102)</option>
431
+ <option class="level-0" value="139916">Microcontrollers&nbsp;&nbsp;(512)</option>
432
+ <option class="level-0" value="5611793">misc hacks&nbsp;&nbsp;(1747)</option>
433
+ <option class="level-0" value="18020730">multitouch hacks&nbsp;&nbsp;(89)</option>
434
+ <option class="level-0" value="22652725">musical hacks&nbsp;&nbsp;(290)</option>
435
+ <option class="level-0" value="18020722">netbook hacks&nbsp;&nbsp;(50)</option>
436
+ <option class="level-0" value="6166512">Network Hacks&nbsp;&nbsp;(4)</option>
437
+ <option class="level-0" value="103">news&nbsp;&nbsp;(1091)</option>
438
+ <option class="level-0" value="1861880">nintendo ds hacks&nbsp;&nbsp;(34)</option>
439
+ <option class="level-0" value="114555425">nintendo gameboy hacks&nbsp;&nbsp;(90)</option>
440
+ <option class="level-0" value="18020685">nintendo hacks&nbsp;&nbsp;(261)</option>
441
+ <option class="level-0" value="4992726">nintendo wii hacks&nbsp;&nbsp;(78)</option>
442
+ <option class="level-0" value="118011206">Nook Hacks&nbsp;&nbsp;(1)</option>
443
+ <option class="level-0" value="114556430">palm pre hacks&nbsp;&nbsp;(6)</option>
444
+ <option class="level-0" value="245123">parts&nbsp;&nbsp;(72)</option>
445
+ <option class="level-0" value="10969081">peripherals hacks&nbsp;&nbsp;(648)</option>
446
+ <option class="level-0" value="16325149">phone hacks&nbsp;&nbsp;(17)</option>
447
+ <option class="level-0" value="10969088">playstation hacks&nbsp;&nbsp;(120)</option>
448
+ <option class="level-0" value="2060">podcasts&nbsp;&nbsp;(8)</option>
449
+ <option class="level-0" value="10969096">portable audio hacks&nbsp;&nbsp;(66)</option>
450
+ <option class="level-0" value="10969099">portable video hacks&nbsp;&nbsp;(57)</option>
451
+ <option class="level-0" value="588444">psp hacks&nbsp;&nbsp;(47)</option>
452
+ <option class="level-0" value="23971578">radio hacks&nbsp;&nbsp;(137)</option>
453
+ <option class="level-0" value="47">rants&nbsp;&nbsp;(28)</option>
454
+ <option class="level-0" value="69218551">Raspberry Pi&nbsp;&nbsp;(153)</option>
455
+ <option class="level-0" value="21870780">repair hacks&nbsp;&nbsp;(101)</option>
456
+ <option class="level-0" value="309">reviews&nbsp;&nbsp;(19)</option>
457
+ <option class="level-0" value="10969101">robots hacks&nbsp;&nbsp;(874)</option>
458
+ <option class="level-0" value="30302">roundup&nbsp;&nbsp;(35)</option>
459
+ <option class="level-0" value="10969111">security hacks&nbsp;&nbsp;(460)</option>
460
+ <option class="level-0" value="2301">Software Development&nbsp;&nbsp;(91)</option>
461
+ <option class="level-0" value="3796421">software hacks&nbsp;&nbsp;(47)</option>
462
+ <option class="level-0" value="10969116">solar hacks&nbsp;&nbsp;(46)</option>
463
+ <option class="level-0" value="10969121">tablet pcs hacks&nbsp;&nbsp;(40)</option>
464
+ <option class="level-0" value="3075183">teardown&nbsp;&nbsp;(31)</option>
465
+ <option class="level-0" value="10969130">tool hacks&nbsp;&nbsp;(657)</option>
466
+ <option class="level-0" value="25277004">toy hacks&nbsp;&nbsp;(360)</option>
467
+ <option class="level-0" value="10969134">transportation hacks&nbsp;&nbsp;(472)</option>
468
+ <option class="level-0" value="1">Uncategorized&nbsp;&nbsp;(332)</option>
469
+ <option class="level-0" value="3184456">video hacks&nbsp;&nbsp;(211)</option>
470
+ <option class="level-0" value="34942364">Virtual Reality&nbsp;&nbsp;(9)</option>
471
+ <option class="level-0" value="50802420">weapons hacks&nbsp;&nbsp;(63)</option>
472
+ <option class="level-0" value="12552193">wearable hacks&nbsp;&nbsp;(183)</option>
473
+ <option class="level-0" value="39510952">Weekly roundup&nbsp;&nbsp;(18)</option>
474
+ <option class="level-0" value="4891215">wireless hacks&nbsp;&nbsp;(333)</option>
475
+ <option class="level-0" value="7079455">xbox hacks&nbsp;&nbsp;(130)</option>
476
+ </select>
477
+
478
+ <script type='text/javascript'>
479
+ /* <![CDATA[ */
480
+ var dropdown = document.getElementById("cat");
481
+ function onCatChange() {
482
+ if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
483
+ location.href = "http://hackaday.com/?cat="+dropdown.options[dropdown.selectedIndex].value;
484
+ }
485
+ }
486
+ dropdown.onchange = onCatChange;
487
+ /* ]]> */
488
+ </script>
489
+
490
+ </div></div>
491
+ <div id="featured-post-2" class="widget featuredpost"><div class="widget-wrap"><h4 class="widgettitle">In case you missed it</h4>
492
+ <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()-->
493
+
494
+ <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()-->
495
+
496
+ <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()-->
497
+
498
+ <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()-->
499
+
500
+ <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()-->
501
+
502
+ <p class="more-from-category"><a href="http://hackaday.com/category/featured/" title="Featured">More Posts from this Category</a></p></div></div>
503
+ <div id="recent-comments-2" class="widget widget_recent_comments"><div class="widget-wrap"><h4 class="widgettitle">Recent comments</h4>
504
+ <ul id="recentcomments">
505
+ <li class="recentcomments">
506
+ 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>
507
+ <li class="recentcomments">
508
+ <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>
509
+ <li class="recentcomments">
510
+ 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>
511
+ <li class="recentcomments">
512
+ 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>
513
+ <li class="recentcomments">
514
+ 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>
515
+ <li class="recentcomments">
516
+ 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>
517
+ <li class="recentcomments">
518
+ 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>
519
+ <li class="recentcomments">
520
+ <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>
521
+ <li class="recentcomments">
522
+ <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>
523
+ <li class="recentcomments">
524
+ 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>
525
+ </ul>
526
+ </div></div>
527
+ <div id="calendar-2" class="widget widget_calendar"><div class="widget-wrap"><h4 class="widgettitle">Find Hacks by Date</h4>
528
+ <div id="calendar_wrap"><table id="wp-calendar">
529
+ <caption>April 2013</caption>
530
+ <thead>
531
+ <tr>
532
+ <th scope="col" title="Sunday">S</th>
533
+ <th scope="col" title="Monday">M</th>
534
+ <th scope="col" title="Tuesday">T</th>
535
+ <th scope="col" title="Wednesday">W</th>
536
+ <th scope="col" title="Thursday">T</th>
537
+ <th scope="col" title="Friday">F</th>
538
+ <th scope="col" title="Saturday">S</th>
539
+ </tr>
540
+ </thead>
541
+
542
+ <tfoot>
543
+ <tr>
544
+ <td colspan="3" id="prev"><a href="http://hackaday.com/2013/03/" title="View posts for March 2013">&laquo; Mar</a></td>
545
+ <td class="pad">&nbsp;</td>
546
+ <td colspan="3" id="next" class="pad">&nbsp;</td>
547
+ </tr>
548
+ </tfoot>
549
+
550
+ <tbody>
551
+ <tr>
552
+ <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
553
+ Doctor Who-style&nbsp;WiFi
554
+ Kindle weather and recycling&nbsp;display
555
+ Windmill made from washing machine, 555&nbsp;chip
556
+ SNES headphones scream out for Bluetooth&nbsp;control
557
+ 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
558
+ Dual displays on a Playstation&nbsp;2
559
+ Ask Hackaday: Hacking lingo&nbsp;fails
560
+ Cooling a photomultiplier&nbsp;tube
561
+ Hackerspace tour: Arch Reactor in St. Louis&nbsp;Missouri
562
+ Adafruit launches educational show aimed at&nbsp;kids
563
+ CNC Tic Tac&nbsp;Toe
564
+ Building a vehicle parking&nbsp;camera
565
+ April Fools&#8217; project teaches coworkers not to touch your&nbsp;stuff
566
+ 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
567
+ Powering the Oculus Rift with&nbsp;USB
568
+ Upgrading a router with impeccable soldering&nbsp;skills
569
+ Homebuilt Laser Cutter&nbsp;Ideas
570
+ Building a&nbsp;Theremincello
571
+ Microscope ring light with a number of different&nbsp;features
572
+ Hall effect limit switches for a 3D&nbsp;printer
573
+ 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
574
+ MP3/USB/Aux hack hidden behind cassette&nbsp;facade
575
+ Pranking a hackerspace IRC for April Fool&#8217;s&nbsp;Day
576
+ Turning an easter egg hunt into a fox&nbsp;hunt
577
+ Wireless Temperature Control for a&nbsp;Microbrewery
578
+ Melting Metal with a DIY Foundry&nbsp;Furnace
579
+ Top 10 Hacking Failures in movies: part&nbsp;2
580
+ Steampunk theremin&nbsp;goggles
581
+ High speed circuit design for quantum physics light&nbsp;sensing
582
+ 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
583
+ Electric tricycle build log is like hacker&nbsp;crack
584
+ H-bot style 3D printer moves bed for&nbsp;Z-axis
585
+ Stapler hack fastens infinitely large sheets of&nbsp;paper
586
+ 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
587
+ Rolling your own minimal USB to serial Arduino&nbsp;programmer
588
+ Making PLA stick to a 3D printer build platform by using hairspray or an acetone ABS&nbsp;slurry">6</a></td>
589
+ </tr>
590
+ <tr>
591
+ <td><a href="http://hackaday.com/2013/04/07/" title="Acoustic bass guitar uses water jug and two&nbsp;strings
592
+ Solar powered robot mows your lawn while you chill&nbsp;indoors
593
+ 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
594
+ Combo lock uses relays and logic&nbsp;gates
595
+ 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
596
+ The RedBull creation contest&nbsp;begins!
597
+ Recurve bow make from wood and&nbsp;skis
598
+ 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
599
+ MIDI pedal project looks as good as it&nbsp;sounds
600
+ 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
601
+ Guitar EQ levels trigger the stage&nbsp;lights
602
+ Top 10 best hacking scenes in&nbsp;movies
603
+ Automating a mechanical&nbsp;typewriter
604
+ 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
605
+ Horribly complicated electric guitar&nbsp;keyboard
606
+ Generating electricity from&nbsp;alcohol">12</a></td><td><a href="http://hackaday.com/2013/04/13/" title="Network-controlled fireworks&nbsp;launcher
607
+ Working 3D printed stepper&nbsp;motor
608
+ SqueezeBerry: a Raspberri Pi powered Squeezebox&nbsp;appliance">13</a></td>
609
+ </tr>
610
+ <tr>
611
+ <td><a href="http://hackaday.com/2013/04/14/" title="Teaching a computer to play Mario&#8230; seemingly through&nbsp;voodoo
612
+ Building a replacement for a broken dehumidifier&nbsp;controller
613
+ 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
614
+ [FlorianH] shows off MinimaBL, the next generation of his quadcopter&nbsp;project
615
+ 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
616
+ Building a kegerator with visual&nbsp;style
617
+ 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
618
+ Apple MagSafe cord&nbsp;repair
619
+ 3D Printing sensor mounts for the Oculus&nbsp;Rift
620
+ 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
621
+ Semi-automatic pick and place&nbsp;machine
622
+ Living night light with glowing&nbsp;algae
623
+ 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
624
+ Replace your project power supplies with recycled Li-Ion cells and a switching&nbsp;regulator
625
+ 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
626
+ GUI window manager on an AVR&nbsp;chip
627
+ Mood lamp/notifier uses neat modular PCB&nbsp;design">20</a></td>
628
+ </tr>
629
+ <tr>
630
+ <td><a href="http://hackaday.com/2013/04/21/" title="3D printing some sweet&nbsp;music
631
+ Drop-in pcb makes Nintendo Four Score a USB&nbsp;joystick
632
+ 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
633
+ Connect a Retina display to a regular&nbsp;computer
634
+ 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
635
+ What are the best hacking&nbsp;documentaries?
636
+ OTM-02 is a 3D printed&nbsp;wristwatch
637
+ 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>
638
+ </tr>
639
+ <tr>
640
+ <td>28</td><td>29</td><td>30</td>
641
+ <td class="pad" colspan="4">&nbsp;</td>
642
+ </tr>
643
+ </tbody>
644
+ </table></div></div></div>
645
+ <div id=virurl>
646
+ <!-- BEGIN - VIRURL Widget - iFrame Embed Code -->
647
+ <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"
648
+ width="300" height="600" scrolling="no" >
649
+ </iframe>
650
+ <!-- END - VIRURL Widget - iFrame Embed Code -->
651
+ </div>
652
+ <br />
653
+ <br />
654
+ <div id=tl_ad_bottom>
655
+ <script type="text/javascript"><!--
656
+ google_ad_client = "ca-pub-1812638130783065";
657
+ /* Hackaday sidebar wide skyscraper */
658
+ google_ad_slot = "1587378096";
659
+ google_ad_width = 160;
660
+ google_ad_height = 600;
661
+ google_ad_region = "test";
662
+ //-->
663
+ </script>
664
+ <script type="text/javascript"
665
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
666
+ </script>
667
+ </div>
668
+
669
+
670
+ <br />
671
+
672
+
673
+
674
+
675
+
676
+
677
+ </div> </div><!-- end #content-sidebar-wrap -->
678
+ </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 -->
679
+ <script type="text/javascript">
680
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
681
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
682
+ </script>
683
+ <script type="text/javascript">
684
+ var pageTracker = _gat._getTracker("UA-2201445-6");
685
+ pageTracker._trackPageview();
686
+ </script>
687
+ <!-- Start Quantcast tag -->
688
+ <script type="text/javascript">
689
+ _qoptions={
690
+ qacct:"p-cc6zkdHuZwUDM"
691
+ };
692
+ </script>
693
+ <script type="text/javascript"
694
+ src="http://edge.quantserve.com/quant.js"></script>
695
+ <noscript>
696
+ <img src="http://pixel.quantserve.com/pixel/p-cc6zkdHuZwUDM.gif"
697
+ style="display: none;" border="0" height="1" width="1"
698
+ alt="Quantcast"/>
699
+ </noscript></div><!-- end #wrap -->
700
+
701
+ <script type="text/javascript">
702
+ var _qevents = _qevents || [], wpcomQuantcastData = {"qacct":"p-18-mFEk4J448M","labels":",language.en,type.wpcom,vip.hackadaycom"};
703
+ function wpcomQuantcastPixel( labels, options ) {
704
+ var i, defaults = wpcomQuantcastData, data = { event: 'ajax' };
705
+
706
+ labels = labels || '';
707
+ options = options || {};
708
+
709
+ if ( typeof labels != 'string' )
710
+ options = labels;
711
+
712
+ for ( i in defaults ) {
713
+ data[i] = defaults[i];
714
+ }
715
+
716
+ for ( i in options ) {
717
+ data[i] = options[i];
718
+ }
719
+
720
+ if ( data.labels ) {
721
+ data.labels += ',' + labels;
722
+ } else {
723
+ data.labels = labels;
724
+ }
725
+
726
+ _qevents.push( data );
727
+ };
728
+ (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); })();
729
+ _qevents.push( wpcomQuantcastData );
730
+ </script>
731
+ <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>
732
+
733
+
734
+ <!-- /// LOAD CHARTBEAT /// -->
735
+ <script type="text/javascript">
736
+ var _sf_async_config={};
737
+ _sf_async_config.uid = 2021;
738
+ _sf_async_config.useCanonical = true;
739
+
740
+ (function(){
741
+ function loadChartbeat() {
742
+ window._sf_endpt=(new Date()).getTime();
743
+ var e = document.createElement('script');
744
+ e.setAttribute('language', 'javascript');
745
+ e.setAttribute('type', 'text/javascript');
746
+ e.setAttribute('src',
747
+ (("https:" == document.location.protocol) ? "https://s3.amazonaws.com/" : "http://") +
748
+ "static.chartbeat.com/js/chartbeat.js");
749
+ document.body.appendChild(e);
750
+ }
751
+ var oldonload = window.onload;
752
+ window.onload = (typeof window.onload != 'function') ?
753
+ loadChartbeat : function() { oldonload(); loadChartbeat(); };
754
+ })();
755
+ </script>
756
+ <div style="display:none">
757
+ </div>
758
+ <script type='text/javascript' src='http://s2.wp.com/_static/??-eJylzMsOREAQRuEXMoqgEwvxLC4/qjPVOl3dZh4fO3vrk+/Qz3+m3UW4SFZpxsET/D+3mtEjxQ0CJR8gnIRWOCgrfXm8lcAl0uQRFtbtlR3Cqtegl66smto0xhStPQEw5Dy+'></script>
759
+ <script type="text/javascript">
760
+ // <![CDATA[
761
+ (function() {
762
+ try{
763
+ if ( window.external &&'msIsSiteMode' in window.external) {
764
+ if (window.external.msIsSiteMode()) {
765
+ var jl = document.createElement('script');
766
+ jl.type='text/javascript';
767
+ jl.async=true;
768
+ jl.src='/wp-content/plugins/ie-sitemode/custom-jumplist.php';
769
+ var s = document.getElementsByTagName('script')[0];
770
+ s.parentNode.insertBefore(jl, s);
771
+ }
772
+ }
773
+ }catch(e){}
774
+ })();
775
+ // ]]>
776
+ </script><script src="http://s.stats.wordpress.com/w.js?21" type="text/javascript"></script>
777
+ <script type="text/javascript">
778
+ st_go({'blog':'4779443','v':'wpcom','tz':'-7','user_id':'0','subd':'hackadaycom'});
779
+ 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();}
780
+ ex_go({'crypt':'UE40eW5QN0p8M2Y/RE1BNmNJfGhxNCVxUDExYmtXRThKbHcwXTdETWI1alhvb1oseHImN101ZFpEakVpYjlQYVFLYzBaVHRtPz0wXS9bVlFpZ3c1Qn5KSThLNS9lSHNGOE1IJk9+N2srY2F4NUlbQ0hqX2EmSFpVYk9FRDdbV29bU1RMNUdOLjRYbmtzaGV8TU1lMEI/fElTSUg1cFIreEtxRjdbSnFlX2dYN0FNNkJsS0dKJUowW3ktbGpYNytoYXV+cj1deTF+UCxpNHJ3cz9iay8lfFBbcUZieEc0bzFqaGlxa2lHb1dWZ2dtLVJ0OW8wP1pRTXFqN3ZlW3g='});
781
+ addLoadEvent(function(){linktracker_init('4779443',0);});
782
+ </script>
783
+ <noscript><img src="http://stats.wordpress.com/b.gif?v=noscript" style="height:0px;width:0px;overflow:hidden" alt="" /></noscript>
784
+ <script type="text/javascript">
785
+ // Trigger Quantcast pixel for each Infinite Scroll post load
786
+ if ( 'function' === typeof( jQuery ) ) {
787
+ jQuery( document.body ).on( 'post-load', function() {
788
+ if ( 'function' === typeof( wpcomQuantcastPixel ) )
789
+ wpcomQuantcastPixel();
790
+ } );
791
+ }
792
+ </script>
793
+ </body>
794
+ </html>