docparser 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +5 -0
  4. data/.travis.yml +3 -0
  5. data/Gemfile +9 -1
  6. data/README.md +11 -4
  7. data/Rakefile +15 -0
  8. data/example.rb +9 -7
  9. data/lib/docparser.rb +1 -0
  10. data/lib/docparser/document.rb +18 -11
  11. data/lib/docparser/output.rb +8 -8
  12. data/lib/docparser/output/html_output.rb +53 -47
  13. data/lib/docparser/output/json_output.rb +8 -3
  14. data/lib/docparser/output/multi_output.rb +4 -8
  15. data/lib/docparser/output/nil_output.rb +21 -0
  16. data/lib/docparser/output/screen_output.rb +2 -1
  17. data/lib/docparser/output/xlsx_output.rb +12 -2
  18. data/lib/docparser/output/yaml_output.rb +6 -1
  19. data/lib/docparser/parser.rb +80 -49
  20. data/lib/docparser/version.rb +1 -1
  21. data/test/lib/docparser/blackbox_test.rb +29 -0
  22. data/test/lib/docparser/document_test.rb +134 -0
  23. data/test/lib/docparser/logging_test.rb +19 -0
  24. data/test/lib/docparser/output/csv_output_test.rb +51 -0
  25. data/test/lib/docparser/output/html_output_test.rb +57 -0
  26. data/test/lib/docparser/output/json_output_test.rb +65 -0
  27. data/test/lib/docparser/output/multi_output_test.rb +80 -0
  28. data/test/lib/docparser/output/nil_output_test.rb +27 -0
  29. data/test/lib/docparser/output/screen_output_test.rb +55 -0
  30. data/test/lib/docparser/output/xlsx_output_test.rb +53 -0
  31. data/test/lib/docparser/output/yaml_output_test.rb +76 -0
  32. data/test/lib/docparser/output_test.rb +85 -0
  33. data/test/lib/docparser/parser_test.rb +197 -0
  34. data/test/lib/docparser/version_test.rb +11 -0
  35. data/test/support/hackaday/dl.rb +4 -0
  36. data/test/support/hackaday/file_1.html +716 -0
  37. data/test/support/hackaday/file_10.html +791 -0
  38. data/test/support/hackaday/file_11.html +787 -0
  39. data/test/support/hackaday/file_12.html +715 -0
  40. data/test/support/hackaday/file_13.html +793 -0
  41. data/test/support/hackaday/file_14.html +718 -0
  42. data/test/support/hackaday/file_15.html +707 -0
  43. data/test/support/hackaday/file_16.html +713 -0
  44. data/test/support/hackaday/file_17.html +715 -0
  45. data/test/support/hackaday/file_18.html +725 -0
  46. data/test/support/hackaday/file_19.html +715 -0
  47. data/test/support/hackaday/file_2.html +793 -0
  48. data/test/support/hackaday/file_20.html +795 -0
  49. data/test/support/hackaday/file_21.html +804 -0
  50. data/test/support/hackaday/file_22.html +722 -0
  51. data/test/support/hackaday/file_23.html +793 -0
  52. data/test/support/hackaday/file_24.html +717 -0
  53. data/test/support/hackaday/file_25.html +715 -0
  54. data/test/support/hackaday/file_26.html +717 -0
  55. data/test/support/hackaday/file_27.html +723 -0
  56. data/test/support/hackaday/file_28.html +711 -0
  57. data/test/support/hackaday/file_29.html +711 -0
  58. data/test/support/hackaday/file_3.html +794 -0
  59. data/test/support/hackaday/file_30.html +715 -0
  60. data/test/support/hackaday/file_31.html +713 -0
  61. data/test/support/hackaday/file_32.html +714 -0
  62. data/test/support/hackaday/file_33.html +716 -0
  63. data/test/support/hackaday/file_34.html +714 -0
  64. data/test/support/hackaday/file_35.html +792 -0
  65. data/test/support/hackaday/file_36.html +719 -0
  66. data/test/support/hackaday/file_37.html +712 -0
  67. data/test/support/hackaday/file_38.html +709 -0
  68. data/test/support/hackaday/file_39.html +808 -0
  69. data/test/support/hackaday/file_4.html +814 -0
  70. data/test/support/hackaday/file_40.html +801 -0
  71. data/test/support/hackaday/file_5.html +715 -0
  72. data/test/support/hackaday/file_6.html +792 -0
  73. data/test/support/hackaday/file_7.html +714 -0
  74. data/test/support/hackaday/file_8.html +717 -0
  75. data/test/support/hackaday/file_9.html +719 -0
  76. data/test/support/test_encoding.html +12 -0
  77. data/test/support/test_encoding2.html +12 -0
  78. data/test/support/test_html.html +16 -0
  79. data/test/support/test_xml.xml +5 -0
  80. data/test/test_helper.rb +14 -0
  81. metadata +126 -3
@@ -0,0 +1,715 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
3
+ <!--
4
+ generated 199 seconds ago
5
+ generated in 0.379 seconds
6
+ served from batcache in 0.002 seconds
7
+ expires in 101 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=1366800939&amp;back=hackaday.com%2Fpage%2F17%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-17 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-97090 post type-post status-publish format-standard hentry category-microcontrollers category-video-hacks tag-assembly tag-atmega1284 tag-vga">
197
+
198
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/29/avr-vga-generator/" title="AVR VGA&nbsp;generator" rel="bookmark">AVR VGA&nbsp;generator</a></h2>
199
+
200
+ <div class="post-info"><span class="date published time" title="2013-03-29T12:01:37+00:00">March 29, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/29/avr-vga-generator/#comments">17 Comments</a></span> </div> <div class="entry-content">
201
+ <p><img class="aligncenter size-large wp-image-97091" alt="avr-vga-generator" src="http://hackadaycom.files.wordpress.com/2013/03/avr-vga-generator.jpg?w=580&#038;h=435" width="580" height="435" /></p>
202
+ <p>This simple circuitry makes up the hardware for [Andrew's] <a href="http://www.theresistornetwork.com/2013/03/avr-vga-generation.html">AVR-based VGA generator</a>. He managed to get an ATmega1284 to output a stable VGA signal. Anyone who&#8217;s looked into the VGA standard will know that this is quite an accomplishment. That&#8217;s because VGA is all about timing, and that presented him with a problem almost immediately.</p>
203
+ <p>The chip is meant to run at a top speed of 20 MHz. [Andrew] did manage to get code written that implemented the horizontal and vertical sync at this speed. But there weren&#8217;t enough clock cycles left to deal with frame buffering. His solution was to overclock the chip to 25 MHz. We assume he chose that because he had a crystal on hand, because we think it would have been easier to use a 25.174 MHz crystal which is one of the speeds listed in the specification.</p>
204
+ <p>Red, green, and blue each get their own two-bit range selected via a set of resistors for a total of 64 colors. As you can see in the video after the break, the 128&#215;96 pixel video is up and running. [Andrew] plans to enlarge the scope of the project from here to make it more versatile than just showing standard images. The code (written in assembly) is available at <a href="https://github.com/aarossig/avr-vga">his GitHub repository</a>.</p>
205
+ <p> <a href="http://hackaday.com/2013/03/29/avr-vga-generator/#more-97090" class="more-link">[Read more...]</a></p>
206
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
207
+ <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/video-hacks/" title="View all posts in video hacks" rel="category tag">video hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/assembly/" rel="tag">assembly</a>, <a href="http://hackaday.com/tag/atmega1284/" rel="tag">atmega1284</a>, <a href="http://hackaday.com/tag/vga/" rel="tag">vga</a></span> </div>
208
+ </div><!-- end .postclass -->
209
+ <div class="post-97007 post type-post status-publish format-standard hentry category-android-hacks category-ask-hackaday category-iphone-hacks category-multitouch-hacks category-peripherals-hacks tag-asetniop tag-keyboard tag-minuum tag-smart-phone tag-tablet tag-touch-screen">
210
+
211
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/29/ask-hackaday-are-we-close-to-reinventing-the-keyboard-for-touchscreens/" title="Ask Hackaday: Are we close to reinventing the keyboard for&nbsp;touchscreens?" rel="bookmark">Ask Hackaday: Are we close to reinventing the keyboard for&nbsp;touchscreens?</a></h2>
212
+
213
+ <div class="post-info"><span class="date published time" title="2013-03-29T10:01:31+00:00">March 29, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/29/ask-hackaday-are-we-close-to-reinventing-the-keyboard-for-touchscreens/#comments">97 Comments</a></span> </div> <div class="entry-content">
214
+ <p><img class="aligncenter size-large wp-image-97012" alt="minuum-keyboard" src="http://hackadaycom.files.wordpress.com/2013/03/minuum-keyboard.png?w=580&#038;h=377" width="580" height="377" /></p>
215
+ <p>We mourn the loss of the physical keyboard with the advent of tablets. After all, we do a bit of typing getting all of these features posted throughout the week. And we kind of blame tablets for the decline of the netbook industry (we still use a Dell Vostro A90 when not at home). But we&#8217;re trying to keep an open mind that we may not need a physical keyboard anymore. If someone can come up with an innovative alternative to the Qwerty layout that we are able to learn and can use with speed and without physical strain we&#8217;ll be on board. Our question is,  do you think we are close to a screen typing breakthrough?</p>
216
+ <p>This question came to mind after seeing <a href="http://minuum.com/">the Minuum keyboard</a> shown above. It compresses all of the rows of a Qwerty into a single row, monopolizing less screen space than conventional smartphone input methods. The demo video (embedded after the break) even shows them hacking the concept into a distance sensor and using a graphite-on-paper resistor. Pretty cool. But what happens when you type a word not in the dictionary, like this author&#8217;s last name?</p>
217
+ <p>You can actually try out the Minuum style thanks to [Zack's] <a href="http://www.asetniop.com/blog/?p=300">in-browser demo hack</a>. He&#8217;s not affiliated with Minuum, but has done quite a bit of alternative keyboard input work already with <a href="http://hackaday.com/2012/07/21/chorded-keyboard-for-touchscreens/">his ASETNIOP chorded typing project</a>. It&#8217;s another contender for changing how we do things.</p>
218
+ <p> <a href="http://hackaday.com/2013/03/29/ask-hackaday-are-we-close-to-reinventing-the-keyboard-for-touchscreens/#more-97007" class="more-link">[Read more...]</a></p>
219
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
220
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/android-hacks/" title="View all posts in android hacks" rel="category tag">android hacks</a>, <a href="http://hackaday.com/category/ask-hackaday/" title="View all posts in Ask Hackaday" rel="category tag">Ask Hackaday</a>, <a href="http://hackaday.com/category/iphone-hacks/" title="View all posts in iphone hacks" rel="category tag">iphone hacks</a>, <a href="http://hackaday.com/category/multitouch-hacks/" title="View all posts in multitouch hacks" rel="category tag">multitouch hacks</a>, <a href="http://hackaday.com/category/peripherals-hacks/" title="View all posts in peripherals hacks" rel="category tag">peripherals hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/asetniop/" rel="tag">asetniop</a>, <a href="http://hackaday.com/tag/keyboard/" rel="tag">keyboard</a>, <a href="http://hackaday.com/tag/minuum/" rel="tag">minuum</a>, <a href="http://hackaday.com/tag/smart-phone/" rel="tag">smart phone</a>, <a href="http://hackaday.com/tag/tablet/" rel="tag">tablet</a>, <a href="http://hackaday.com/tag/touch-screen/" rel="tag">touch screen</a></span> </div>
221
+ </div><!-- end .postclass -->
222
+ <div class="post-96995 post type-post status-publish format-standard hentry category-repair-hacks tag-bridge-rectifier tag-diode tag-dvd tag-electrolytic-capacitor tag-power-supply">
223
+
224
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/29/dvd-power-supply-repair-tips/" title="DVD power supply repair&nbsp;tips" rel="bookmark">DVD power supply repair&nbsp;tips</a></h2>
225
+
226
+ <div class="post-info"><span class="date published time" title="2013-03-29T08:01:27+00:00">March 29, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/29/dvd-power-supply-repair-tips/#comments">26 Comments</a></span> </div> <div class="entry-content">
227
+ <p><img class="aligncenter size-large wp-image-96996" alt="bridge-rectifier-repair" src="http://hackadaycom.files.wordpress.com/2013/03/bridge-rectifier-repair.jpg?w=580&#038;h=435" width="580" height="435" /></p>
228
+ <p>This demonstration fixes the power supply of a DVD player, but the skills transcend this one application. [Alan] walks us through <a href="http://www.moddingstudio.com/content.php?1448-Elettronica-Analisi-e-risoluzione-dei-guasti-ep.1">the process of repairing a power supply</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%2Fwww.moddingstudio.com%2Fcontent.php%3F1448-Elettronica-Analisi-e-risoluzione-dei-guasti-ep.1">translated</a>) on a simple consumer electronics unit.</p>
229
+ <p>Obviously this starts by cracking open the dead device and verifying that the culprit is the power supply. [Alan] then removes that board from the chassis and gets down to work with a visual inspection. He&#8217;s got several images which illustrate things to look for; blistered electrolytic capacitors, cracked solder joins, scorch marks, etc. In his case there&#8217;s obviously a burnt out fuse, but that merely protects the hardware from further damage, it&#8217;s not the cause. Next he examines the diodes of the bridge rectifier. These need to be removed from the system to do so, which he accomplishes by clipping one end of each as seen above. He found that two diodes on one side of the bridge had broken down. After replacing them he tries a new fuse which immediately burns out. But a quick swap of the capacitors and he gets the thing back up and running.</p>
230
+ <p>We perk up every time we see this type of repair hack. We figure if <a href="http://hackaday.com/2012/04/29/a-novel-binary-clock-from-hackadays-own/">we can build our own hobby electronics</a> we should be able to fix the cheap devices like this one.</p>
231
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
232
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/repair-hacks/" title="View all posts in repair hacks" rel="category tag">repair hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/bridge-rectifier/" rel="tag">bridge rectifier</a>, <a href="http://hackaday.com/tag/diode/" rel="tag">diode</a>, <a href="http://hackaday.com/tag/dvd/" rel="tag">dvd</a>, <a href="http://hackaday.com/tag/electrolytic-capacitor/" rel="tag">electrolytic capacitor</a>, <a href="http://hackaday.com/tag/power-supply/" rel="tag">power supply</a></span> </div>
233
+ </div><!-- end .postclass -->
234
+ <div align="center">
235
+
236
+
237
+
238
+ <script type="text/javascript"><!--
239
+
240
+ google_ad_client = "ca-pub-1812638130783065";
241
+
242
+ /* Hackaday, 300x250, created 4/26/08, MedRect main column */
243
+
244
+ google_ad_slot = "3449215672";
245
+
246
+ google_ad_width = 300;
247
+
248
+ google_ad_height = 250;
249
+
250
+ //-->
251
+
252
+ </script>
253
+
254
+ <script type="text/javascript"
255
+
256
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
257
+
258
+ </script>
259
+
260
+
261
+
262
+ </div> <div class="post-96991 post type-post status-publish format-standard hentry category-cnc-hacks category-peripherals-hacks tag-keyboard tag-usb tag-wood">
263
+
264
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/29/wooden-teeth-for-your-usb-keyboard/" title="Wooden teeth for your USB&nbsp;keyboard" rel="bookmark">Wooden teeth for your USB&nbsp;keyboard</a></h2>
265
+
266
+ <div class="post-info"><span class="date published time" title="2013-03-29T06:01:24+00:00">March 29, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/29/wooden-teeth-for-your-usb-keyboard/#comments">15 Comments</a></span> </div> <div class="entry-content">
267
+ <p><img class="aligncenter size-large wp-image-96992" alt="wooden-keyboard" src="http://hackadaycom.files.wordpress.com/2013/03/wooden-keyboard.jpg?w=576&#038;h=450" width="576" height="450" /></p>
268
+ <p>We just got an ergonomic keyboard for the first time and absolutely love it. But the look of this keyboard hack has us second guessing ourselves. [Will Pretend] pulled off <a href="http://imgur.com/a/qvnk4/layout/blog">an absolutely stunning wooden retrofit for his USB keyboard</a>. Be warned, his project log includes 175 photos, and most of them have captions.</p>
269
+ <p>He started off by taking apart the original USB keyboard to see what he was working with. Before digging in to the valuable wood stock he cut test pieces using some thin MDF. But once he had a clear plan to get to the end of the project it was full stem ahead.</p>
270
+ <p>The keys are not simple Chicklet style overlays, they have depth like you would expect to find on low-grade plastic peripherals. This was accomplished by milling each key, then sending them through the laser cutter to each the letter on top.</p>
271
+ <p>Take some time to make your way through the entire project (here&#8217;s <a href="http://imgur.com/a/qvnk4/all">a thumbnail layout</a> if you get frustrated). Unfortunately [Will] says <a href="http://www.reddit.com/r/DIY/comments/1b4grl/wooden_keyboard_build/c93i1lt">he doesn&#8217;t actually use the keyboard</a> because of grains catching and the keys move around a bit too much. But it does work.</p>
272
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
273
+ <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/peripherals-hacks/" title="View all posts in peripherals hacks" rel="category tag">peripherals hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/keyboard/" rel="tag">keyboard</a>, <a href="http://hackaday.com/tag/usb/" rel="tag">usb</a>, <a href="http://hackaday.com/tag/wood/" rel="tag">wood</a></span> </div>
274
+ </div><!-- end .postclass -->
275
+ <div class="post-96986 post type-post status-publish format-standard hentry category-cnc-hacks tag-brass tag-brazing tag-mill tag-oil tag-pipe tag-silver-solder">
276
+
277
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/29/oil-feed-retrofit-for-a-cnc-mill-starting-to-come-together/" title="Oil feed retrofit for a CNC mill starting to come&nbsp;together" rel="bookmark">Oil feed retrofit for a CNC mill starting to come&nbsp;together</a></h2>
278
+
279
+ <div class="post-info"><span class="date published time" title="2013-03-29T04:01:22+00:00">March 29, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/29/oil-feed-retrofit-for-a-cnc-mill-starting-to-come-together/#comments">8 Comments</a></span> </div> <div class="entry-content">
280
+ <p><img class="aligncenter size-large wp-image-96988" alt="oil-feed-retrofit-for-cnc-mill" src="http://hackadaycom.files.wordpress.com/2013/03/oil-feed-retrofit-for-cnc-mill1.jpg?w=580&#038;h=435" width="580" height="435" /></p>
281
+ <p>Here is the first real fruit of [Joel's] labor on <a href="http://jmillerid.com/wordpress/2013/03/cnc-mill-oiling-system-plumbing/">his oiling system for a CNC mill</a>. Regular readers will remember hearing about his quest to go from a manual mill to a CNC version. As part of the overhaul he decided to add a system that can dispense oil to the different wear parts on the machine. We first looked in on the project when he showed off <a href="http://hackaday.com/2013/01/21/building-a-tool-to-bend-small-metal-tubes/">the pipe bender he built for the task</a>. Now that he has that at his disposal he was able to route tubing to many of the parts.</p>
282
+ <p>The system starts with a central brass manifold which is pictured in the foreground. Each pipe was bent and cut to reach its destination with a minimum of wasted space. After a test fit showed good results he brazed the pieces together using silver solder. Each of the ball nuts have been drilled out so that oil will be injected onto the threads of the ball rod. Three input ports on the manifold will eventually let [Joel] connect the oil injection system via flexible tubing.</p>
283
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
284
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/cnc-hacks/" title="View all posts in cnc hacks" rel="category tag">cnc hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/brass/" rel="tag">brass</a>, <a href="http://hackaday.com/tag/brazing/" rel="tag">brazing</a>, <a href="http://hackaday.com/tag/mill/" rel="tag">mill</a>, <a href="http://hackaday.com/tag/oil/" rel="tag">oil</a>, <a href="http://hackaday.com/tag/pipe/" rel="tag">pipe</a>, <a href="http://hackaday.com/tag/silver-solder/" rel="tag">silver solder</a></span> </div>
285
+ </div><!-- end .postclass -->
286
+ <div class="post-96900 post type-post status-publish format-standard hentry category-microcontrollers tag-assembly tag-reverse-engineering tag-teensy-3-0">
287
+
288
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/28/reverse-engineering-challenge-starts-off-simple/" title="Reverse engineering challenge starts off&nbsp;simple" rel="bookmark">Reverse engineering challenge starts off&nbsp;simple</a></h2>
289
+
290
+ <div class="post-info"><span class="date published time" title="2013-03-28T19:01:50+00:00">March 28, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/28/reverse-engineering-challenge-starts-off-simple/#comments">11 Comments</a></span> </div> <div class="entry-content">
291
+ <p><img class="aligncenter size-full wp-image-96903" alt="img_20130326_102537" src="http://hackadaycom.files.wordpress.com/2013/03/img_20130326_102537.jpg?w=580&#038;h=350" width="580" height="350" /></p>
292
+ <p>We love seeing hard-core firmware reverse engineering projects, but the number of hackers who can pull those off is relatively small. It&#8217;s possible to grow the ranks of the hacker elite though. A hackerspace is a great place to have a little challenge like this one. [Nicolas Oberli] put together <a href="http://blog.scrt.ch/2013/03/26/insomnihack-2013-life-is-hardware/">a capture the flag game that requires the contestants to reverse engineer Teensy 3.0 firmware</a>.</p>
293
+ <p>He developed this piece of hardware for the Insomni&#8217;hack 2013 event. It uses the Teensy 3.0 capacitive touch capabilities to form a nine-digit keypad with a character LCD screen for feedback. When the correct code is entered the screen will display instructions on how to retrieve the &#8216;flag&#8217;.</p>
294
+ <p>To the right you can see the disassembly of the .elf file generated by the Arduino IDE. This is what [Nicolas] gave to the contestants, which gets them past the barrier of figuring out how to dump the code from the chip itself. But it does get them thinking in assembly and eventually leads to figuring out what the secret code is for the device. This may be just enough of a shove in the right direction that one needs to get elbow deep into picking apart embedded hardware as a hobby.</p>
295
+ <p> <a href="http://hackaday.com/2013/03/28/reverse-engineering-challenge-starts-off-simple/#more-96900" class="more-link">[Read more...]</a></p>
296
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
297
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/microcontrollers/" title="View all posts in Microcontrollers" rel="category tag">Microcontrollers</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/assembly/" rel="tag">assembly</a>, <a href="http://hackaday.com/tag/reverse-engineering/" rel="tag">reverse engineering</a>, <a href="http://hackaday.com/tag/teensy-3-0/" rel="tag">Teensy 3.0</a></span> </div>
298
+ </div><!-- end .postclass -->
299
+ <div class="post-97000 post type-post status-publish format-standard hentry category-musical-hacks category-radio-hacks tag-arduino tag-fldigi tag-ham tag-hammond-organ tag-spectrogram">
300
+
301
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/28/hammond-organ-sends-messages-which-can-be-decoded-by-a-spectrogram/" title="Hammond Organ sends messages which can be decoded by a&nbsp;Spectrogram" rel="bookmark">Hammond Organ sends messages which can be decoded by a&nbsp;Spectrogram</a></h2>
302
+
303
+ <div class="post-info"><span class="date published time" title="2013-03-28T17:01:43+00:00">March 28, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/mikehackaday/" class="fn n" title="Mike Szczys" rel="author">Mike Szczys</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/28/hammond-organ-sends-messages-which-can-be-decoded-by-a-spectrogram/#comments">6 Comments</a></span> </div> <div class="entry-content">
304
+ <p><img class="aligncenter size-large wp-image-97001" alt="hammond-organ-encodes-messages-spectrogram" src="http://hackadaycom.files.wordpress.com/2013/03/hammond-organ-encodes-messages-spectrogram.jpg?w=580&#038;h=290" width="580" height="290" /></p>
305
+ <p>Here&#8217;s an interesting use for an old organ. Let it get in on your Ham radio action. [Forrest Cook]  is showing off his project which uses <a href="http://www.solorb.com/elect/hamcirc/tonewriter/index.html">a Hammond Organ to encode messages which can be displayed by a Spectrogram</a>. We&#8217;ve seen this <a href="http://hackaday.com/2011/05/26/hidden-messages-in-audio/">type of message encoding</a> before (just not involving a musical instrument). It&#8217;s rather popular with Hams in the form of <a href="http://www.w1hkj.com/beginners.html">the fldigi program</a>.</p>
306
+ <p>An Arduino was connected to the organ via a UNL2003 darlington array chip. This chip is driving some reed relays which make the organ connections to create the sine wave tones. With that hardware in place it&#8217;s a matter of formatting data to generate the target audio. [Forrest] wrote his own Arduino sketch which takes characters from the serial port (pushed over USB by the laptop), maps then to a stored 5&#215;7 character font set, then drives the pins to produce the tones. As you can see in the clip after the break the resulting audio can be turned into quite readable text.</p>
307
+ <p> <a href="http://hackaday.com/2013/03/28/hammond-organ-sends-messages-which-can-be-decoded-by-a-spectrogram/#more-97000" class="more-link">[Read more...]</a></p>
308
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
309
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/musical-hacks/" title="View all posts in musical hacks" rel="category tag">musical hacks</a>, <a href="http://hackaday.com/category/radio-hacks/" title="View all posts in radio hacks" rel="category tag">radio 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/fldigi/" rel="tag">fldigi</a>, <a href="http://hackaday.com/tag/ham/" rel="tag">ham</a>, <a href="http://hackaday.com/tag/hammond-organ/" rel="tag">hammond organ</a>, <a href="http://hackaday.com/tag/spectrogram/" rel="tag">spectrogram</a></span> </div>
310
+ </div><!-- end .postclass -->
311
+ <div class="navigation"><div class="alignleft"><a href="http://hackaday.com/page/18/" >&laquo; Older Posts</a></div><div class="alignright"><a href="http://hackaday.com/page/16/" >Newer Posts &raquo;</a></div></div><!-- end .navigation --> </div><!-- end #content -->
312
+ <div id="sidebar" class="sidebar widget-area">
313
+ <div id=tl_ad>
314
+ <script type="text/javascript"><!--
315
+ google_ad_client = "ca-pub-1812638130783065";
316
+ /* Hackaday, 300x250, created 4/26/08, MedRect sidebar */
317
+ google_ad_slot = "7800245928";
318
+ google_ad_width = 300;
319
+ google_ad_height = 250;
320
+ //-->
321
+ </script>
322
+ <script type="text/javascript"
323
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
324
+ </script>
325
+
326
+ </div>
327
+
328
+
329
+
330
+
331
+
332
+
333
+ <div class="widget">
334
+ <h4>Never Miss a Hack</h4>
335
+ <div class="textwidget">
336
+
337
+ <!-- Place this tag where you want the badge to render. -->
338
+ <div class="g-plus" data-width= "280" data-href="https://plus.google.com/114843073658390316652" data-rel="publisher" data-theme="dark"></div>
339
+ <!-- Place this tag after the last badge tag. -->
340
+ <script type="text/javascript">
341
+ (function() {
342
+ var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
343
+ po.src = 'https://apis.google.com/js/plusone.js';
344
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
345
+ })();
346
+ </script>
347
+
348
+ <div class="fb-like" data-href="https://www.facebook.com/pages/Hack-a-Day/136115233068429?ref=hl" data-send="true" data-width="280" data-show-faces="true" data-colorscheme="dark"></div>
349
+
350
+ <a href="https://twitter.com/hackaday" class="twitter-follow-button" data-show-count="true" data-lang="en" data-size="large">Follow @twitter</a>
351
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
352
+
353
+ <a href="http://feeds2.feedburner.com/hackaday/LgoM" target="_blank"><img src="http://hackadaycom.files.wordpress.com/2012/11/orange.png" border="0"/></a>
354
+ <div class="clear"> </div>
355
+ <!-- Begin MailChimp Signup Form -->
356
+ <link href="http://cdn-images.mailchimp.com/embedcode/slim-081711.css" rel="stylesheet" type="text/css">
357
+
358
+ <div id="mc_embed_signup">
359
+ <form action="http://mahalo.us5.list-manage.com/subscribe/post?u=126b2ab712043075d9bd7210e&amp;id=cb1aa8bd16" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
360
+ <label for="mce-EMAIL">Subscribe to our mailing list for sneak previews and behind the scenes info</label>
361
+ <input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="email address" required>
362
+ <div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
363
+ </form>
364
+ </div>
365
+
366
+ <!--End mc_embed_signup-->
367
+ </div>
368
+ </div>
369
+
370
+ <div id="categories-2" class="widget widget_categories"><div class="widget-wrap"><h4 class="widgettitle">Categories</h4>
371
+ <select name='cat' id='cat' class='postform' >
372
+ <option value='-1'>Select Category</option>
373
+ <option class="level-0" value="114554125">3d Printer hacks&nbsp;&nbsp;(116)</option>
374
+ <option class="level-0" value="18020710">android hacks&nbsp;&nbsp;(240)</option>
375
+ <option class="level-0" value="18020705">arduino hacks&nbsp;&nbsp;(1029)</option>
376
+ <option class="level-0" value="27981650">ARM&nbsp;&nbsp;(51)</option>
377
+ <option class="level-0" value="33199679">Ask Hackaday&nbsp;&nbsp;(29)</option>
378
+ <option class="level-0" value="64298109">ATtiny hacks&nbsp;&nbsp;(45)</option>
379
+ <option class="level-0" value="25122024">beer hacks&nbsp;&nbsp;(63)</option>
380
+ <option class="level-0" value="12115263">blackberry hacks&nbsp;&nbsp;(8)</option>
381
+ <option class="level-0" value="10969031">cellphones hacks&nbsp;&nbsp;(337)</option>
382
+ <option class="level-0" value="35745764">chemistry hacks&nbsp;&nbsp;(102)</option>
383
+ <option class="level-0" value="24483654">classic hacks&nbsp;&nbsp;(852)</option>
384
+ <option class="level-0" value="31677810">clock hacks&nbsp;&nbsp;(189)</option>
385
+ <option class="level-0" value="18755632">cnc hacks&nbsp;&nbsp;(341)</option>
386
+ <option class="level-0" value="568165">computer hacks&nbsp;&nbsp;(390)</option>
387
+ <option class="level-0" value="78428">cons&nbsp;&nbsp;(192)</option>
388
+ <option class="level-0" value="5738">contests&nbsp;&nbsp;(136)</option>
389
+ <option class="level-0" value="3923181">cooking hacks&nbsp;&nbsp;(72)</option>
390
+ <option class="level-0" value="10969032">digital audio hacks&nbsp;&nbsp;(422)</option>
391
+ <option class="level-0" value="10969033">digital cameras hacks&nbsp;&nbsp;(415)</option>
392
+ <option class="level-0" value="10969034">downloads hacks&nbsp;&nbsp;(101)</option>
393
+ <option class="level-0" value="107827385">drone hacks&nbsp;&nbsp;(10)</option>
394
+ <option class="level-0" value="63176382">Engine Hacks&nbsp;&nbsp;(31)</option>
395
+ <option class="level-0" value="35890">Featured&nbsp;&nbsp;(72)</option>
396
+ <option class="level-0" value="551890">firefox hacks&nbsp;&nbsp;(23)</option>
397
+ <option class="level-0" value="53446541">FPGA&nbsp;&nbsp;(1)</option>
398
+ <option class="level-0" value="18020562">g1 hacks&nbsp;&nbsp;(26)</option>
399
+ <option class="level-0" value="320557">google hacks&nbsp;&nbsp;(44)</option>
400
+ <option class="level-0" value="10969036">gps hacks&nbsp;&nbsp;(108)</option>
401
+ <option class="level-0" value="24535490">green hacks&nbsp;&nbsp;(152)</option>
402
+ <option class="level-0" value="27311668">Hackaday links&nbsp;&nbsp;(146)</option>
403
+ <option class="level-0" value="21755374">Hackerspaces&nbsp;&nbsp;(93)</option>
404
+ <option class="level-0" value="6310599">HackIt&nbsp;&nbsp;(101)</option>
405
+ <option class="level-0" value="10969037">handhelds hacks&nbsp;&nbsp;(189)</option>
406
+ <option class="level-0" value="79">hardware&nbsp;&nbsp;(249)</option>
407
+ <option class="level-0" value="144422905">High Voltage Hacks&nbsp;&nbsp;(5)</option>
408
+ <option class="level-0" value="66307084">Holiday Hacks&nbsp;&nbsp;(93)</option>
409
+ <option class="level-0" value="10969038">home entertainment hacks&nbsp;&nbsp;(516)</option>
410
+ <option class="level-0" value="5660882">home hacks&nbsp;&nbsp;(705)</option>
411
+ <option class="level-0" value="2708">how-to&nbsp;&nbsp;(135)</option>
412
+ <option class="level-0" value="908478">internet hacks&nbsp;&nbsp;(2)</option>
413
+ <option class="level-0" value="831">Interviews&nbsp;&nbsp;(13)</option>
414
+ <option class="level-0" value="1416772">iphone hacks&nbsp;&nbsp;(176)</option>
415
+ <option class="level-0" value="1275163">ipod hacks&nbsp;&nbsp;(144)</option>
416
+ <option class="level-0" value="344761">kickstarter&nbsp;&nbsp;(29)</option>
417
+ <option class="level-0" value="4157506">Kindle hacks&nbsp;&nbsp;(15)</option>
418
+ <option class="level-0" value="46717088">Kinect hacks&nbsp;&nbsp;(81)</option>
419
+ <option class="level-0" value="10969048">laptops hacks&nbsp;&nbsp;(111)</option>
420
+ <option class="level-0" value="10969055">laser hacks&nbsp;&nbsp;(167)</option>
421
+ <option class="level-0" value="18020716">led hacks&nbsp;&nbsp;(695)</option>
422
+ <option class="level-0" value="10626">lifehacks&nbsp;&nbsp;(54)</option>
423
+ <option class="level-0" value="729674">linux hacks&nbsp;&nbsp;(129)</option>
424
+ <option class="level-0" value="20732807">lockpicking hacks&nbsp;&nbsp;(11)</option>
425
+ <option class="level-0" value="10969060">macs hacks&nbsp;&nbsp;(135)</option>
426
+ <option class="level-0" value="144395979">Marijuana Hacks&nbsp;&nbsp;(2)</option>
427
+ <option class="level-0" value="11284667">Medical hacks&nbsp;&nbsp;(102)</option>
428
+ <option class="level-0" value="139916">Microcontrollers&nbsp;&nbsp;(512)</option>
429
+ <option class="level-0" value="5611793">misc hacks&nbsp;&nbsp;(1747)</option>
430
+ <option class="level-0" value="18020730">multitouch hacks&nbsp;&nbsp;(89)</option>
431
+ <option class="level-0" value="22652725">musical hacks&nbsp;&nbsp;(290)</option>
432
+ <option class="level-0" value="18020722">netbook hacks&nbsp;&nbsp;(50)</option>
433
+ <option class="level-0" value="6166512">Network Hacks&nbsp;&nbsp;(4)</option>
434
+ <option class="level-0" value="103">news&nbsp;&nbsp;(1091)</option>
435
+ <option class="level-0" value="1861880">nintendo ds hacks&nbsp;&nbsp;(34)</option>
436
+ <option class="level-0" value="114555425">nintendo gameboy hacks&nbsp;&nbsp;(90)</option>
437
+ <option class="level-0" value="18020685">nintendo hacks&nbsp;&nbsp;(261)</option>
438
+ <option class="level-0" value="4992726">nintendo wii hacks&nbsp;&nbsp;(78)</option>
439
+ <option class="level-0" value="118011206">Nook Hacks&nbsp;&nbsp;(1)</option>
440
+ <option class="level-0" value="114556430">palm pre hacks&nbsp;&nbsp;(6)</option>
441
+ <option class="level-0" value="245123">parts&nbsp;&nbsp;(72)</option>
442
+ <option class="level-0" value="10969081">peripherals hacks&nbsp;&nbsp;(648)</option>
443
+ <option class="level-0" value="16325149">phone hacks&nbsp;&nbsp;(17)</option>
444
+ <option class="level-0" value="10969088">playstation hacks&nbsp;&nbsp;(120)</option>
445
+ <option class="level-0" value="2060">podcasts&nbsp;&nbsp;(8)</option>
446
+ <option class="level-0" value="10969096">portable audio hacks&nbsp;&nbsp;(66)</option>
447
+ <option class="level-0" value="10969099">portable video hacks&nbsp;&nbsp;(57)</option>
448
+ <option class="level-0" value="588444">psp hacks&nbsp;&nbsp;(47)</option>
449
+ <option class="level-0" value="23971578">radio hacks&nbsp;&nbsp;(137)</option>
450
+ <option class="level-0" value="47">rants&nbsp;&nbsp;(28)</option>
451
+ <option class="level-0" value="69218551">Raspberry Pi&nbsp;&nbsp;(153)</option>
452
+ <option class="level-0" value="21870780">repair hacks&nbsp;&nbsp;(101)</option>
453
+ <option class="level-0" value="309">reviews&nbsp;&nbsp;(19)</option>
454
+ <option class="level-0" value="10969101">robots hacks&nbsp;&nbsp;(874)</option>
455
+ <option class="level-0" value="30302">roundup&nbsp;&nbsp;(35)</option>
456
+ <option class="level-0" value="10969111">security hacks&nbsp;&nbsp;(460)</option>
457
+ <option class="level-0" value="2301">Software Development&nbsp;&nbsp;(91)</option>
458
+ <option class="level-0" value="3796421">software hacks&nbsp;&nbsp;(47)</option>
459
+ <option class="level-0" value="10969116">solar hacks&nbsp;&nbsp;(46)</option>
460
+ <option class="level-0" value="10969121">tablet pcs hacks&nbsp;&nbsp;(40)</option>
461
+ <option class="level-0" value="3075183">teardown&nbsp;&nbsp;(31)</option>
462
+ <option class="level-0" value="10969130">tool hacks&nbsp;&nbsp;(657)</option>
463
+ <option class="level-0" value="25277004">toy hacks&nbsp;&nbsp;(360)</option>
464
+ <option class="level-0" value="10969134">transportation hacks&nbsp;&nbsp;(472)</option>
465
+ <option class="level-0" value="1">Uncategorized&nbsp;&nbsp;(332)</option>
466
+ <option class="level-0" value="3184456">video hacks&nbsp;&nbsp;(211)</option>
467
+ <option class="level-0" value="34942364">Virtual Reality&nbsp;&nbsp;(9)</option>
468
+ <option class="level-0" value="50802420">weapons hacks&nbsp;&nbsp;(63)</option>
469
+ <option class="level-0" value="12552193">wearable hacks&nbsp;&nbsp;(183)</option>
470
+ <option class="level-0" value="39510952">Weekly roundup&nbsp;&nbsp;(18)</option>
471
+ <option class="level-0" value="4891215">wireless hacks&nbsp;&nbsp;(333)</option>
472
+ <option class="level-0" value="7079455">xbox hacks&nbsp;&nbsp;(130)</option>
473
+ </select>
474
+
475
+ <script type='text/javascript'>
476
+ /* <![CDATA[ */
477
+ var dropdown = document.getElementById("cat");
478
+ function onCatChange() {
479
+ if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
480
+ location.href = "http://hackaday.com/?cat="+dropdown.options[dropdown.selectedIndex].value;
481
+ }
482
+ }
483
+ dropdown.onchange = onCatChange;
484
+ /* ]]> */
485
+ </script>
486
+
487
+ </div></div>
488
+ <div id="featured-post-2" class="widget featuredpost"><div class="widget-wrap"><h4 class="widgettitle">In case you missed it</h4>
489
+ <div class="post-97657 post type-post status-publish format-standard hentry category-3d-printer-hacks category-featured tag-algae tag-bioluminescence tag-dinoflagellate tag-glowing tag-phosphorescence"><a href="http://hackaday.com/2013/04/18/living-night-light-with-glowing-algae/" title="Living night light with glowing&nbsp;algae" class="alignleft"><img width="90" height="61" src="http://hackadaycom.files.wordpress.com/2013/04/thumb1.jpg?w=90" class="attachment-thumbnail" alt="thumb" /></a><h2><a href="http://hackaday.com/2013/04/18/living-night-light-with-glowing-algae/" title="Living night light with glowing&nbsp;algae">Living night light with glowing&nbsp;algae</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/18/living-night-light-with-glowing-algae/#comments">67 Comments</a></span></p></div><!--end post_class()-->
490
+
491
+ <div class="post-97648 post type-post status-publish format-standard hentry category-3d-printer-hacks category-featured category-virtual-reality-2 tag-3d-printing tag-lulzbot tag-oculus-rift tag-virtual-reality tag-vr"><a href="http://hackaday.com/2013/04/17/3d-printing-sensor-mounts-for-the-oculus-rift/" title="3D Printing sensor mounts for the Oculus&nbsp;Rift" class="alignleft"><img width="90" height="67" src="http://hackadaycom.files.wordpress.com/2013/04/thumb.jpg?w=90" class="attachment-thumbnail" alt="thumb" /></a><h2><a href="http://hackaday.com/2013/04/17/3d-printing-sensor-mounts-for-the-oculus-rift/" title="3D Printing sensor mounts for the Oculus&nbsp;Rift">3D Printing sensor mounts for the Oculus&nbsp;Rift</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/17/3d-printing-sensor-mounts-for-the-oculus-rift/#comments">7 Comments</a></span></p></div><!--end post_class()-->
492
+
493
+ <div class="post-97564 post type-post status-publish format-standard hentry category-featured category-virtual-reality-2 tag-adaliight tag-ambilight tag-oculus-rift tag-virtual-reality tag-vr"><a href="http://hackaday.com/2013/04/11/hacking-the-oculus-rift-the-oculight/" title="Hacking the Oculus Rift: the&nbsp;Oculight" class="alignleft"><img width="90" height="54" src="http://hackadaycom.files.wordpress.com/2013/04/screen-shot-2013-04-14-at-9-52-43-am.png?w=90" class="attachment-thumbnail" alt="Screen Shot 2013-04-14 at 9.52.43 AM" /></a><h2><a href="http://hackaday.com/2013/04/11/hacking-the-oculus-rift-the-oculight/" title="Hacking the Oculus Rift: the&nbsp;Oculight">Hacking the Oculus Rift: the&nbsp;Oculight</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/11/hacking-the-oculus-rift-the-oculight/#comments">20 Comments</a></span></p></div><!--end post_class()-->
494
+
495
+ <div class="post-97538 post type-post status-publish format-standard hentry category-featured category-news tag-top-10 tag-wins"><a href="http://hackaday.com/2013/04/11/top-10-best-hacking-scenes-in-movies/" title="Top 10 best hacking scenes in&nbsp;movies" class="alignleft"><img width="90" height="55" src="http://hackadaycom.files.wordpress.com/2013/04/screen-shot-2013-04-14-at-9-51-38-am.png?w=90" class="attachment-thumbnail" alt="Screen Shot 2013-04-14 at 9.51.38 AM" /></a><h2><a href="http://hackaday.com/2013/04/11/top-10-best-hacking-scenes-in-movies/" title="Top 10 best hacking scenes in&nbsp;movies">Top 10 best hacking scenes in&nbsp;movies</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/11/top-10-best-hacking-scenes-in-movies/#comments">88 Comments</a></span></p></div><!--end post_class()-->
496
+
497
+ <div class="post-97094 post type-post status-publish format-standard hentry category-featured category-news tag-april-fools"><a href="http://hackaday.com/2013/04/01/hackadays-very-first-kickstarter-campaign/" title="Hackaday&#8217;s very first Kickstarter&nbsp;campaign" class="alignleft"><img width="90" height="54" src="http://hackadaycom.files.wordpress.com/2013/03/hackaday-kickstarter.jpg?w=90" class="attachment-thumbnail" alt="hackaday-kickstarter" /></a><h2><a href="http://hackaday.com/2013/04/01/hackadays-very-first-kickstarter-campaign/" title="Hackaday&#8217;s very first Kickstarter&nbsp;campaign">Hackaday&#8217;s very first Kickstarter&nbsp;campaign</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/01/hackadays-very-first-kickstarter-campaign/#comments">58 Comments</a></span></p></div><!--end post_class()-->
498
+
499
+ <p class="more-from-category"><a href="http://hackaday.com/category/featured/" title="Featured">More Posts from this Category</a></p></div></div>
500
+ <div id="recent-comments-2" class="widget widget_recent_comments"><div class="widget-wrap"><h4 class="widgettitle">Recent comments</h4>
501
+ <ul id="recentcomments">
502
+ <li class="recentcomments">
503
+ echodelta on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-997083">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
504
+ <li class="recentcomments">
505
+ <a href='http://jsutton.co.uk' rel='external nofollow' class='url'>James</a> on <a href="http://hackaday.com/2013/04/23/console-radio-given-new-life-with-a-wifi-router-retrofit/comment-page-1/#comment-997080">Console radio given new life with a WiFi router&nbsp;retrofit</a> </li>
506
+ <li class="recentcomments">
507
+ nhede on <a href="http://hackaday.com/2013/04/22/20-pounds-and-a-gut-feeling-yields-a-configurable-rubidium-atomic-clock-source/comment-page-1/#comment-997074">20 pounds and a gut feeling yields a configurable Rubidium atomic clock&nbsp;source</a> </li>
508
+ <li class="recentcomments">
509
+ Dax on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-997071">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
510
+ <li class="recentcomments">
511
+ TacticalNinja on <a href="http://hackaday.com/2013/04/23/otm-02-is-a-3d-printed-wristwatch/comment-page-1/#comment-997070">OTM-02 is a 3D printed&nbsp;wristwatch</a> </li>
512
+ <li class="recentcomments">
513
+ Arlet on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-997017">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
514
+ <li class="recentcomments">
515
+ Arlet on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-997016">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
516
+ <li class="recentcomments">
517
+ <a href='http://smonson.com/' rel='external nofollow' class='url'>Smonson</a> on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-996997">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
518
+ <li class="recentcomments">
519
+ <a href='http://twitter.com/admsch' rel='external nofollow' class='url'>Adam Scheuring (@admsch)</a> on <a href="http://hackaday.com/2013/04/23/otm-02-is-a-3d-printed-wristwatch/comment-page-1/#comment-996993">OTM-02 is a 3D printed&nbsp;wristwatch</a> </li>
520
+ <li class="recentcomments">
521
+ JoSSte on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-996990">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
522
+ </ul>
523
+ </div></div>
524
+ <div id="calendar-2" class="widget widget_calendar"><div class="widget-wrap"><h4 class="widgettitle">Find Hacks by Date</h4>
525
+ <div id="calendar_wrap"><table id="wp-calendar">
526
+ <caption>April 2013</caption>
527
+ <thead>
528
+ <tr>
529
+ <th scope="col" title="Sunday">S</th>
530
+ <th scope="col" title="Monday">M</th>
531
+ <th scope="col" title="Tuesday">T</th>
532
+ <th scope="col" title="Wednesday">W</th>
533
+ <th scope="col" title="Thursday">T</th>
534
+ <th scope="col" title="Friday">F</th>
535
+ <th scope="col" title="Saturday">S</th>
536
+ </tr>
537
+ </thead>
538
+
539
+ <tfoot>
540
+ <tr>
541
+ <td colspan="3" id="prev"><a href="http://hackaday.com/2013/03/" title="View posts for March 2013">&laquo; Mar</a></td>
542
+ <td class="pad">&nbsp;</td>
543
+ <td colspan="3" id="next" class="pad">&nbsp;</td>
544
+ </tr>
545
+ </tfoot>
546
+
547
+ <tbody>
548
+ <tr>
549
+ <td colspan="1" class="pad">&nbsp;</td><td><a href="http://hackaday.com/2013/04/01/" title="Hackaday&#8217;s very first Kickstarter&nbsp;campaign, Doctor Who-style&nbsp;WiFi, Kindle weather and recycling&nbsp;display, Windmill made from washing machine, 555&nbsp;chip, SNES headphones scream out for Bluetooth&nbsp;control, How-to: turn on a light&nbsp;bulb">1</a></td><td><a href="http://hackaday.com/2013/04/02/" title="An EQ display for a pedal&nbsp;board, Dual displays on a Playstation&nbsp;2, Ask Hackaday: Hacking lingo&nbsp;fails, Cooling a photomultiplier&nbsp;tube, Hackerspace tour: Arch Reactor in St. Louis&nbsp;Missouri, Adafruit launches educational show aimed at&nbsp;kids, CNC Tic Tac&nbsp;Toe, Building a vehicle parking&nbsp;camera, April Fools&#8217; project teaches coworkers not to touch your&nbsp;stuff, SenseLamp automates rooms by replacing light&nbsp;fixtures">2</a></td><td><a href="http://hackaday.com/2013/04/03/" title="Embedded web server is all about clever&nbsp;formatting, Powering the Oculus Rift with&nbsp;USB, Upgrading a router with impeccable soldering&nbsp;skills, Homebuilt Laser Cutter&nbsp;Ideas, Building a&nbsp;Theremincello, Microscope ring light with a number of different&nbsp;features, Hall effect limit switches for a 3D&nbsp;printer, Adding an optical mouse sensor to an autonomous&nbsp;vehicle">3</a></td><td><a href="http://hackaday.com/2013/04/04/" title="Retrotechtacular: The Fourier&nbsp;Series, MP3/USB/Aux hack hidden behind cassette&nbsp;facade, Pranking a hackerspace IRC for April Fool&#8217;s&nbsp;Day, Turning an easter egg hunt into a fox&nbsp;hunt, Wireless Temperature Control for a&nbsp;Microbrewery, Melting Metal with a DIY Foundry&nbsp;Furnace, Top 10 Hacking Failures in movies: part&nbsp;2, Steampunk theremin&nbsp;goggles, High speed circuit design for quantum physics light&nbsp;sensing, Home security hardware makes you the monitoring&nbsp;service">4</a></td><td><a href="http://hackaday.com/2013/04/05/" title="Snowboard goggle HUD displays critical data while falling down a&nbsp;mountain, Electric tricycle build log is like hacker&nbsp;crack, H-bot style 3D printer moves bed for&nbsp;Z-axis, Stapler hack fastens infinitely large sheets of&nbsp;paper, Light Graffiti with Servos and&nbsp;Python">5</a></td><td><a href="http://hackaday.com/2013/04/06/" title="Fixing the worst video game ever: E.T. for Atari&nbsp;2600, Rolling your own minimal USB to serial Arduino&nbsp;programmer, Making PLA stick to a 3D printer build platform by using hairspray or an acetone ABS&nbsp;slurry">6</a></td>
550
+ </tr>
551
+ <tr>
552
+ <td><a href="http://hackaday.com/2013/04/07/" title="Acoustic bass guitar uses water jug and two&nbsp;strings, Solar powered robot mows your lawn while you chill&nbsp;indoors, Hackaday Links: Sunday, April 7th,&nbsp;2013">7</a></td><td><a href="http://hackaday.com/2013/04/08/" title="Another way to look at&nbsp;Charlieplexing, Combo lock uses relays and logic&nbsp;gates, Yamaha SW60XG hack lets you use it as a standalone MIDI&nbsp;device">8</a></td><td><a href="http://hackaday.com/2013/04/09/" title="Synthesizing graphene in your basement&nbsp;laboratory, The RedBull creation contest&nbsp;begins!, Recurve bow make from wood and&nbsp;skis, Wall wart computer&nbsp;mouse">9</a></td><td><a href="http://hackaday.com/2013/04/10/" title="Hacker sends this through the mail to record a video of the&nbsp;process, MIDI pedal project looks as good as it&nbsp;sounds, Perpetual&nbsp;pong">10</a></td><td><a href="http://hackaday.com/2013/04/11/" title="Snowboard propulsion system motors you through the&nbsp;flats, Guitar EQ levels trigger the stage&nbsp;lights, Top 10 best hacking scenes in&nbsp;movies, Automating a mechanical&nbsp;typewriter, Hacking the Oculus Rift: the&nbsp;Oculight">11</a></td><td><a href="http://hackaday.com/2013/04/12/" title="Jeep Wrangler gets pressurized water right out of the&nbsp;bumper, Horribly complicated electric guitar&nbsp;keyboard, Generating electricity from&nbsp;alcohol">12</a></td><td><a href="http://hackaday.com/2013/04/13/" title="Network-controlled fireworks&nbsp;launcher, Working 3D printed stepper&nbsp;motor, SqueezeBerry: a Raspberri Pi powered Squeezebox&nbsp;appliance">13</a></td>
553
+ </tr>
554
+ <tr>
555
+ <td><a href="http://hackaday.com/2013/04/14/" title="Teaching a computer to play Mario&#8230; seemingly through&nbsp;voodoo, Building a replacement for a broken dehumidifier&nbsp;controller, Hackaday Links: Sunday, April 14th,&nbsp;2013">14</a></td><td><a href="http://hackaday.com/2013/04/15/" title="Glowing Easter eggs more fun than a dye&nbsp;job, [FlorianH] shows off MinimaBL, the next generation of his quadcopter&nbsp;project, Original hardware for fifteen consoles jammed into recently completed Project&nbsp;Unity">15</a></td><td><a href="http://hackaday.com/2013/04/16/" title="Tube radio husk gets a web radio&nbsp;transplant, Building a kegerator with visual&nbsp;style, Hacked together Mac isn&#8217;t a&nbsp;hackintosh">16</a></td><td><a href="http://hackaday.com/2013/04/17/" title="Hackerspace security system brings RFID, video feedback, and automatic&nbsp;doors, Apple MagSafe cord&nbsp;repair, 3D Printing sensor mounts for the Oculus&nbsp;Rift, Upgrade a toy keyboard&#8217;s tone&nbsp;production">17</a></td><td><a href="http://hackaday.com/2013/04/18/" title="Hidden servo automates slat-style window&nbsp;blinds, Semi-automatic pick and place&nbsp;machine, Living night light with glowing&nbsp;algae, Pulse Oximeter from LM324, LED, and&nbsp;Photodiode">18</a></td><td><a href="http://hackaday.com/2013/04/19/" title="Measuring the lifespan of&nbsp;LEGO, Replace your project power supplies with recycled Li-Ion cells and a switching&nbsp;regulator, Asynchronous fireflies use few&nbsp;parts">19</a></td><td><a href="http://hackaday.com/2013/04/20/" title="This piggy bank is our stock&nbsp;broker, GUI window manager on an AVR&nbsp;chip, Mood lamp/notifier uses neat modular PCB&nbsp;design">20</a></td>
556
+ </tr>
557
+ <tr>
558
+ <td><a href="http://hackaday.com/2013/04/21/" title="3D printing some sweet&nbsp;music, Drop-in pcb makes Nintendo Four Score a USB&nbsp;joystick, Hackaday Links: Sunday, April 21st,&nbsp;2013">21</a></td><td><a href="http://hackaday.com/2013/04/22/" title="Automatic tubular bells given a MIDI interface&nbsp;too, Connect a Retina display to a regular&nbsp;computer, 20 pounds and a gut feeling yields a configurable Rubidium atomic clock&nbsp;source">22</a></td><td><a href="http://hackaday.com/2013/04/23/" title="Console radio given new life with a WiFi router&nbsp;retrofit, What are the best hacking&nbsp;documentaries?, OTM-02 is a 3D printed&nbsp;wristwatch, Rattle generator is a new type of dynamo for a&nbsp;bicycle">23</a></td><td id="today">24</td><td>25</td><td>26</td><td>27</td>
559
+ </tr>
560
+ <tr>
561
+ <td>28</td><td>29</td><td>30</td>
562
+ <td class="pad" colspan="4">&nbsp;</td>
563
+ </tr>
564
+ </tbody>
565
+ </table></div></div></div>
566
+ <div id=virurl>
567
+ <!-- BEGIN - VIRURL Widget - iFrame Embed Code -->
568
+ <iframe style="border: none; margin: 0; padding: 0; width: 300px; height: 600px;" src="https://www.virurl.com/iframe_widget?t=hackaday&l=5&category=Tech&w=23&u=147555"
569
+ width="300" height="600" scrolling="no" >
570
+ </iframe>
571
+ <!-- END - VIRURL Widget - iFrame Embed Code -->
572
+ </div>
573
+ <br />
574
+ <br />
575
+ <div id=tl_ad_bottom>
576
+ <script type="text/javascript"><!--
577
+ google_ad_client = "ca-pub-1812638130783065";
578
+ /* Hackaday sidebar wide skyscraper */
579
+ google_ad_slot = "1587378096";
580
+ google_ad_width = 160;
581
+ google_ad_height = 600;
582
+ google_ad_region = "test";
583
+ //-->
584
+ </script>
585
+ <script type="text/javascript"
586
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
587
+ </script>
588
+ </div>
589
+
590
+
591
+ <br />
592
+
593
+
594
+
595
+
596
+
597
+
598
+ </div> </div><!-- end #content-sidebar-wrap -->
599
+ </div><!-- end .wrap --></div><!-- end #inner --><div id="footer" class="footer"><div class="wrap"><div class="gototop"><p><a href="#wrap" rel="nofollow">Return to top of page</a></p></div><div class="creds"><p>Copyright &copy; 2013 &middot; <a href="http://www.studiopress.com/" title="Genesis Framework">Genesis Framework</a> &middot; <a href="http://wordpress.org/" title="WordPress">WordPress</a> &middot; <a href="http://hackadaycom.wordpress.com/wp-login.php">Log in</a></p></div></div><!-- end .wrap --></div><!-- end #footer -->
600
+ <script type="text/javascript">
601
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
602
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
603
+ </script>
604
+ <script type="text/javascript">
605
+ var pageTracker = _gat._getTracker("UA-2201445-6");
606
+ pageTracker._trackPageview();
607
+ </script>
608
+ <!-- Start Quantcast tag -->
609
+ <script type="text/javascript">
610
+ _qoptions={
611
+ qacct:"p-cc6zkdHuZwUDM"
612
+ };
613
+ </script>
614
+ <script type="text/javascript"
615
+ src="http://edge.quantserve.com/quant.js"></script>
616
+ <noscript>
617
+ <img src="http://pixel.quantserve.com/pixel/p-cc6zkdHuZwUDM.gif"
618
+ style="display: none;" border="0" height="1" width="1"
619
+ alt="Quantcast"/>
620
+ </noscript></div><!-- end #wrap -->
621
+
622
+ <script type="text/javascript">
623
+ var _qevents = _qevents || [], wpcomQuantcastData = {"qacct":"p-18-mFEk4J448M","labels":",language.en,type.wpcom,vip.hackadaycom"};
624
+ function wpcomQuantcastPixel( labels, options ) {
625
+ var i, defaults = wpcomQuantcastData, data = { event: 'ajax' };
626
+
627
+ labels = labels || '';
628
+ options = options || {};
629
+
630
+ if ( typeof labels != 'string' )
631
+ options = labels;
632
+
633
+ for ( i in defaults ) {
634
+ data[i] = defaults[i];
635
+ }
636
+
637
+ for ( i in options ) {
638
+ data[i] = options[i];
639
+ }
640
+
641
+ if ( data.labels ) {
642
+ data.labels += ',' + labels;
643
+ } else {
644
+ data.labels = labels;
645
+ }
646
+
647
+ _qevents.push( data );
648
+ };
649
+ (function() {var elem = document.createElement('script');elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge") + ".quantserve.com/quant.js";elem.async = true;elem.type = "text/javascript";var scpt = document.getElementsByTagName('script')[0];scpt.parentNode.insertBefore(elem, scpt); })();
650
+ _qevents.push( wpcomQuantcastData );
651
+ </script>
652
+ <noscript><div style="display: none;"><img src="//pixel.quantserve.com/pixel/p-18-mFEk4J448M.gif?labels=%2Clanguage.en%2Ctype.wpcom%2Cvip.hackadaycom" height="1" width="1" alt="" /></div></noscript>
653
+
654
+
655
+ <!-- /// LOAD CHARTBEAT /// -->
656
+ <script type="text/javascript">
657
+ var _sf_async_config={};
658
+ _sf_async_config.uid = 2021;
659
+ _sf_async_config.useCanonical = true;
660
+
661
+ (function(){
662
+ function loadChartbeat() {
663
+ window._sf_endpt=(new Date()).getTime();
664
+ var e = document.createElement('script');
665
+ e.setAttribute('language', 'javascript');
666
+ e.setAttribute('type', 'text/javascript');
667
+ e.setAttribute('src',
668
+ (("https:" == document.location.protocol) ? "https://s3.amazonaws.com/" : "http://") +
669
+ "static.chartbeat.com/js/chartbeat.js");
670
+ document.body.appendChild(e);
671
+ }
672
+ var oldonload = window.onload;
673
+ window.onload = (typeof window.onload != 'function') ?
674
+ loadChartbeat : function() { oldonload(); loadChartbeat(); };
675
+ })();
676
+ </script>
677
+ <div style="display:none">
678
+ </div>
679
+ <script type='text/javascript' src='http://s2.wp.com/_static/??-eJylzMsOREAQRuEXMoqgEwvxLC4/qjPVOl3dZh4fO3vrk+/Qz3+m3UW4SFZpxsET/D+3mtEjxQ0CJR8gnIRWOCgrfXm8lcAl0uQRFtbtlR3Cqtegl66smto0xhStPQEw5Dy+'></script>
680
+ <script type="text/javascript">
681
+ // <![CDATA[
682
+ (function() {
683
+ try{
684
+ if ( window.external &&'msIsSiteMode' in window.external) {
685
+ if (window.external.msIsSiteMode()) {
686
+ var jl = document.createElement('script');
687
+ jl.type='text/javascript';
688
+ jl.async=true;
689
+ jl.src='/wp-content/plugins/ie-sitemode/custom-jumplist.php';
690
+ var s = document.getElementsByTagName('script')[0];
691
+ s.parentNode.insertBefore(jl, s);
692
+ }
693
+ }
694
+ }catch(e){}
695
+ })();
696
+ // ]]>
697
+ </script><script src="http://s.stats.wordpress.com/w.js?21" type="text/javascript"></script>
698
+ <script type="text/javascript">
699
+ st_go({'blog':'4779443','v':'wpcom','tz':'-7','user_id':'0','subd':'hackadaycom'});
700
+ function st_vt() {var x=document.createElement("img");x.src="http://stats.wordpress.com/g.gif?blog=4779443&v=wpcomvt&tz=-7&user_id=0&subd=hackadaycom&rand="+Math.random();}
701
+ ex_go({'crypt':'UE40eW5QN0p8M2Y/RE1BNmNJfGhxNCVxUDExYmtXRThKbHcwXTdETWI1alhvb1oseHImN101ZFpEakVpYjlQYVFLYzBaVHRtPz0wXS9bVlFpZ3c1Qn5KSThLNS9lSHNGOE1IJk9+N3xFNWxyT2x+MUpnR1dJcFYxZG1kNjNSWkVfYURzdzd5bVtmNUhOQWtiYzlFaF1jP0QzQnJUc1AlX1I2ZVk4U2VTcEtCZWRVRkQ0JVhmd0hlLm42OWE/STdBSlU0SXV3QksrZDhGVVldZS9uU2xDM2xPQUxDZ1ppUmtBdDlXLSsvTloyVi5RY3ZDV1AzMVR+ZGosNmNiMQ=='});
702
+ addLoadEvent(function(){linktracker_init('4779443',0);});
703
+ </script>
704
+ <noscript><img src="http://stats.wordpress.com/b.gif?v=noscript" style="height:0px;width:0px;overflow:hidden" alt="" /></noscript>
705
+ <script type="text/javascript">
706
+ // Trigger Quantcast pixel for each Infinite Scroll post load
707
+ if ( 'function' === typeof( jQuery ) ) {
708
+ jQuery( document.body ).on( 'post-load', function() {
709
+ if ( 'function' === typeof( wpcomQuantcastPixel ) )
710
+ wpcomQuantcastPixel();
711
+ } );
712
+ }
713
+ </script>
714
+ </body>
715
+ </html>