docparser 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +5 -0
  4. data/.travis.yml +3 -0
  5. data/Gemfile +9 -1
  6. data/README.md +11 -4
  7. data/Rakefile +15 -0
  8. data/example.rb +9 -7
  9. data/lib/docparser.rb +1 -0
  10. data/lib/docparser/document.rb +18 -11
  11. data/lib/docparser/output.rb +8 -8
  12. data/lib/docparser/output/html_output.rb +53 -47
  13. data/lib/docparser/output/json_output.rb +8 -3
  14. data/lib/docparser/output/multi_output.rb +4 -8
  15. data/lib/docparser/output/nil_output.rb +21 -0
  16. data/lib/docparser/output/screen_output.rb +2 -1
  17. data/lib/docparser/output/xlsx_output.rb +12 -2
  18. data/lib/docparser/output/yaml_output.rb +6 -1
  19. data/lib/docparser/parser.rb +80 -49
  20. data/lib/docparser/version.rb +1 -1
  21. data/test/lib/docparser/blackbox_test.rb +29 -0
  22. data/test/lib/docparser/document_test.rb +134 -0
  23. data/test/lib/docparser/logging_test.rb +19 -0
  24. data/test/lib/docparser/output/csv_output_test.rb +51 -0
  25. data/test/lib/docparser/output/html_output_test.rb +57 -0
  26. data/test/lib/docparser/output/json_output_test.rb +65 -0
  27. data/test/lib/docparser/output/multi_output_test.rb +80 -0
  28. data/test/lib/docparser/output/nil_output_test.rb +27 -0
  29. data/test/lib/docparser/output/screen_output_test.rb +55 -0
  30. data/test/lib/docparser/output/xlsx_output_test.rb +53 -0
  31. data/test/lib/docparser/output/yaml_output_test.rb +76 -0
  32. data/test/lib/docparser/output_test.rb +85 -0
  33. data/test/lib/docparser/parser_test.rb +197 -0
  34. data/test/lib/docparser/version_test.rb +11 -0
  35. data/test/support/hackaday/dl.rb +4 -0
  36. data/test/support/hackaday/file_1.html +716 -0
  37. data/test/support/hackaday/file_10.html +791 -0
  38. data/test/support/hackaday/file_11.html +787 -0
  39. data/test/support/hackaday/file_12.html +715 -0
  40. data/test/support/hackaday/file_13.html +793 -0
  41. data/test/support/hackaday/file_14.html +718 -0
  42. data/test/support/hackaday/file_15.html +707 -0
  43. data/test/support/hackaday/file_16.html +713 -0
  44. data/test/support/hackaday/file_17.html +715 -0
  45. data/test/support/hackaday/file_18.html +725 -0
  46. data/test/support/hackaday/file_19.html +715 -0
  47. data/test/support/hackaday/file_2.html +793 -0
  48. data/test/support/hackaday/file_20.html +795 -0
  49. data/test/support/hackaday/file_21.html +804 -0
  50. data/test/support/hackaday/file_22.html +722 -0
  51. data/test/support/hackaday/file_23.html +793 -0
  52. data/test/support/hackaday/file_24.html +717 -0
  53. data/test/support/hackaday/file_25.html +715 -0
  54. data/test/support/hackaday/file_26.html +717 -0
  55. data/test/support/hackaday/file_27.html +723 -0
  56. data/test/support/hackaday/file_28.html +711 -0
  57. data/test/support/hackaday/file_29.html +711 -0
  58. data/test/support/hackaday/file_3.html +794 -0
  59. data/test/support/hackaday/file_30.html +715 -0
  60. data/test/support/hackaday/file_31.html +713 -0
  61. data/test/support/hackaday/file_32.html +714 -0
  62. data/test/support/hackaday/file_33.html +716 -0
  63. data/test/support/hackaday/file_34.html +714 -0
  64. data/test/support/hackaday/file_35.html +792 -0
  65. data/test/support/hackaday/file_36.html +719 -0
  66. data/test/support/hackaday/file_37.html +712 -0
  67. data/test/support/hackaday/file_38.html +709 -0
  68. data/test/support/hackaday/file_39.html +808 -0
  69. data/test/support/hackaday/file_4.html +814 -0
  70. data/test/support/hackaday/file_40.html +801 -0
  71. data/test/support/hackaday/file_5.html +715 -0
  72. data/test/support/hackaday/file_6.html +792 -0
  73. data/test/support/hackaday/file_7.html +714 -0
  74. data/test/support/hackaday/file_8.html +717 -0
  75. data/test/support/hackaday/file_9.html +719 -0
  76. data/test/support/test_encoding.html +12 -0
  77. data/test/support/test_encoding2.html +12 -0
  78. data/test/support/test_html.html +16 -0
  79. data/test/support/test_xml.xml +5 -0
  80. data/test/test_helper.rb +14 -0
  81. metadata +126 -3
@@ -0,0 +1,719 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
3
+ <!--
4
+ generated 91 seconds ago
5
+ generated in 0.411 seconds
6
+ served from batcache in 0.002 seconds
7
+ expires in 209 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=1366801063&amp;back=hackaday.com%2Fpage%2F36%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-36 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-95972 post type-post status-publish format-standard hentry category-tool-hacks category-video-hacks tag-camera tag-microscope tag-stereo-microscope tag-video">
197
+
198
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/12/camera-adapter-for-a-microscope/" title="Camera adapter for a&nbsp;microscope" rel="bookmark">Camera adapter for a&nbsp;microscope</a></h2>
199
+
200
+ <div class="post-info"><span class="date published time" title="2013-03-12T04:01:33+00:00">March 12, 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/12/camera-adapter-for-a-microscope/#comments">21 Comments</a></span> </div> <div class="entry-content">
201
+ <p><img class="aligncenter size-large wp-image-95973" alt="camera-adapter-for-stereo-microscope" src="http://hackadaycom.files.wordpress.com/2013/03/camera-adapter-for-stereo-microscope.png?w=580&#038;h=366" width="580" height="366" /></p>
202
+ <p>[Steve] really has a nice microscope setup in his lab now that <a href="http://www.tangentaudio.com/?p=812">he built a video camera adapter for his stereo microscope</a>. The image above shows the magnified view of the circuit board on the LCD screen behind it. This lets him work without needing to be in position to look through the eye pieces. The hack is a perfect complement to <a href="http://hackaday.com/2013/02/20/the-perils-of-buying-a-stereo-microscope-without-a-stand/">the custom stand he fabricated for the scope</a>.</p>
203
+ <p>The camera attachment can be seen attached to the right lens of the scope. It&#8217;s an old security camera which he already had on hand. The stock lens wasn&#8217;t going to bring the picture into focus, but he had some different optics on hand and one of them fit the bill perfectly. The rest of the project involves fabricating the adapter ring on his lathe. It slips perfectly over the eyepiece and even allows him a bit of adjustment to get the focal length right. The best view of this is shown off in the video after the break.</p>
204
+ <p> <a href="http://hackaday.com/2013/03/12/camera-adapter-for-a-microscope/#more-95972" class="more-link">[Read more...]</a></p>
205
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
206
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/tool-hacks/" title="View all posts in tool hacks" rel="category tag">tool hacks</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/camera/" rel="tag">camera</a>, <a href="http://hackaday.com/tag/microscope/" rel="tag">microscope</a>, <a href="http://hackaday.com/tag/stereo-microscope/" rel="tag">stereo microscope</a>, <a href="http://hackaday.com/tag/video/" rel="tag">video</a></span> </div>
207
+ </div><!-- end .postclass -->
208
+ <div class="post-95967 post type-post status-publish format-standard hentry category-microcontrollers tag-595 tag-backpack tag-glcd tag-graphic-lcd tag-serial tag-shift-register">
209
+
210
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/11/two-wire-serial-backpack-for-glcd-screens/" title="Two-wire serial backpack for GLCD&nbsp;screens" rel="bookmark">Two-wire serial backpack for GLCD&nbsp;screens</a></h2>
211
+
212
+ <div class="post-info"><span class="date published time" title="2013-03-11T20:00:26+00:00">March 11, 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/11/two-wire-serial-backpack-for-glcd-screens/#comments">12 Comments</a></span> </div> <div class="entry-content">
213
+ <p><img class="aligncenter size-large wp-image-95968" alt="2-wire-serial-backpack-for-glcd" src="http://hackadaycom.files.wordpress.com/2013/03/2-wire-serial-backpack-for-glcd.jpg?w=580&#038;h=435" width="580" height="435" /></p>
214
+ <p>[Debraj] wrote in about his <a href="https://sites.google.com/site/hobbydebraj/home/2-line-interface-for-graphic-lcd">2-wire serial backpack he developed for a Graphic LCD screen</a>. It&#8217;s build on a hunk of protoboard and uses a pair of 595 shift registers to translate incoming serial data to the parallel interface which is used by the LCD screen. It takes more time to push commands this way, but the interface is still quite snappy as you can see in the clip after the jump.</p>
215
+ <p>The real trick here is how the hardware has been configured to get away without a third wire for latching the shift registers (if you need a primer on 595 chips <a href="http://hackaday.com/2011/11/05/controlling-shift-registers-via-spi/">check out this feature</a>). The idea of using a latch is that all of the data can be shifted in over the serial pin before it appears on the output pins. Otherwise, the GLCD would see each bit as it shifts into the register, wreaking havoc on its communication protocol. [Debraj] gets around this by using a diode AND gate trick he learned <a href="https://code.google.com/p/arduinoshiftreglcd/#With_diode-resistor_AND_gate">from this other serial LCD project</a>.</p>
216
+ <p>One good thing about this method is the 595 chips have a wide range of control voltage that will allow you to drive this with 3.3V or 5V microcontrollers. But you do need to implement the communication protocol and push those commands via serial. For nearly the same cost in chips something like an ATtiny2313 could be substituted to make an even simpler addressing scheme &#8212; or even switch to 1-wire protocol. But you&#8217;d then lose the wide input voltage tolerance.</p>
217
+ <p> <a href="http://hackaday.com/2013/03/11/two-wire-serial-backpack-for-glcd-screens/#more-95967" class="more-link">[Read more...]</a></p>
218
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
219
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/microcontrollers/" title="View all posts in Microcontrollers" rel="category tag">Microcontrollers</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/595/" rel="tag">595</a>, <a href="http://hackaday.com/tag/backpack/" rel="tag">backpack</a>, <a href="http://hackaday.com/tag/glcd/" rel="tag">glcd</a>, <a href="http://hackaday.com/tag/graphic-lcd/" rel="tag">graphic lcd</a>, <a href="http://hackaday.com/tag/serial/" rel="tag">serial</a>, <a href="http://hackaday.com/tag/shift-register/" rel="tag">shift register</a></span> </div>
220
+ </div><!-- end .postclass -->
221
+ <div class="post-95961 post type-post status-publish format-standard hentry category-parts category-teardown tag-fuse tag-thermal-fuse">
222
+
223
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/11/non-resettable-thermal-fuse-teardown/" title="Non-resettable thermal fuse&nbsp;teardown" rel="bookmark">Non-resettable thermal fuse&nbsp;teardown</a></h2>
224
+
225
+ <div class="post-info"><span class="date published time" title="2013-03-11T18:01:14+00:00">March 11, 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/11/non-resettable-thermal-fuse-teardown/#comments">24 Comments</a></span> </div> <div class="entry-content">
226
+ <p><img class="aligncenter size-full wp-image-95962" alt="non-resettable-thermal-fuse" src="http://hackadaycom.files.wordpress.com/2013/03/non-resettable-thermal-fuse.png?w=580&#038;h=300" width="580" height="300" /></p>
227
+ <p>This component is a one-shot thermal fuse. When the body rises above the specified temperature the two leads stop conducting. They&#8217;re useful in applications like motors, where you want to make sure power is cut to an overheating piece of hardware before permanent damage happens. They&#8217;re pretty simple, but we still enjoyed <a href="https://www.youtube.com/watch?v=Wq-R1egVKus">taking a look inside</a> thanks to [Fatkuh's] video.</p>
228
+ <p>The metal housing is lined with a ceramic insulator, which you can see sticking out one end in the shape of a cone. It surrounds a spring which connects to both leads and is under a bit of tension. The alloy making the connections has a low melting point &#8212; in this case it&#8217;s about 70 C &#8212; which will melt, allowing the spring to pull away and break the connection.<em> </em>In the clip after the break [Fatkuh] uses his soldering iron to heat the housing past the melting point, tripping the fuse. He then cracks the ceramic cone to show what&#8217;s inside.<em><br />
229
+ </em></p>
230
+ <p>The only problem with using a fuse like this one is you&#8217;ll need to solder in a new component if it&#8217;s ever tripped. For applications where you need a fuse that protects against over current (rather than heat) <a href="http://en.wikipedia.org/wiki/Resettable_fuse">a resettable polyfuse</a> is the way to go.</p>
231
+ <p> <a href="http://hackaday.com/2013/03/11/non-resettable-thermal-fuse-teardown/#more-95961" class="more-link">[Read more...]</a></p>
232
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
233
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/parts/" title="View all posts in parts" rel="category tag">parts</a>, <a href="http://hackaday.com/category/teardown/" title="View all posts in teardown" rel="category tag">teardown</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/fuse/" rel="tag">fuse</a>, <a href="http://hackaday.com/tag/thermal-fuse/" rel="tag">thermal fuse</a></span> </div>
234
+ </div><!-- end .postclass -->
235
+ <div align="center">
236
+
237
+
238
+
239
+ <script type="text/javascript"><!--
240
+
241
+ google_ad_client = "ca-pub-1812638130783065";
242
+
243
+ /* Hackaday, 300x250, created 4/26/08, MedRect main column */
244
+
245
+ google_ad_slot = "3449215672";
246
+
247
+ google_ad_width = 300;
248
+
249
+ google_ad_height = 250;
250
+
251
+ //-->
252
+
253
+ </script>
254
+
255
+ <script type="text/javascript"
256
+
257
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
258
+
259
+ </script>
260
+
261
+
262
+
263
+ </div> <div class="post-95953 post type-post status-publish format-standard hentry category-tool-hacks tag-sihouette-cameo tag-sihouette-portrait tag-solder-paste tag-solder-stencils tag-vinyl-cutter">
264
+
265
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/11/pcb-stencils-for-200/" title="PCB stencils for&nbsp;$200" rel="bookmark">PCB stencils for&nbsp;$200</a></h2>
266
+
267
+ <div class="post-info"><span class="date published time" title="2013-03-11T16:00:42+00:00">March 11, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/brianbenchoff/" class="fn n" title="Brian Benchoff" rel="author">Brian Benchoff</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/11/pcb-stencils-for-200/#comments">26 Comments</a></span> </div> <div class="entry-content">
268
+ <p><img class="aligncenter size-full wp-image-95954" alt="stencil" src="http://hackadaycom.files.wordpress.com/2013/03/stencil.jpg?w=580&#038;h=232" width="580" height="232" /></p>
269
+ <p>There&#8217;s some really cool stuff to find if you wander around a Michaels craft shop or Hobby Lobby long enough. Recently, [Ben] picked up a craft cutter &#8211; a small vinyl cutter-like device meant for scrapbooking and other crafty endevours. <a href="http://hackeda.com/blog/start-printing-pcb-stencils-for-about-200/">He&#8217;s using this machine to create solder paste stencils</a> that are better than any laser cut stencil he&#8217;s used before.</p>
270
+ <p><a href="http://hackaday.com/2012/12/27/diy-smd-stencils-made-with-a-craft-cutter/">Like a build we&#8217;ve seen before</a>, [Ben] is using a desktop-sized vinyl cutter, the <a href="http://www.silhouetteamerica.com/?page=shop&amp;cat=2">Sihouette Portrait</a>,  with 4 mil Mylar. After converting the relevent layers of a Gerber file into .SVG files, [Ben] loaded up <a href="http://gitorious.org/robocut">Robocut</a> to cut very, very small holes in his solder stencil. The results are great; much better than a laser would cut Mylar, and good enough to apply paste to a few hundred boards at least.</p>
271
+ <p>While [Ben] is using his stencils to apply solder paste, we&#8217;re wondering if a similar process could be used to apply a UV-curing solder mask to home-fabbed boards. That would allow for some very professional-looking boards to be produced with a turnaround time of just a few hours.</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/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/sihouette-cameo/" rel="tag">sihouette cameo</a>, <a href="http://hackaday.com/tag/sihouette-portrait/" rel="tag">Sihouette portrait</a>, <a href="http://hackaday.com/tag/solder-paste/" rel="tag">solder paste</a>, <a href="http://hackaday.com/tag/solder-stencils/" rel="tag">solder stencils</a>, <a href="http://hackaday.com/tag/vinyl-cutter/" rel="tag">vinyl cutter</a></span> </div>
274
+ </div><!-- end .postclass -->
275
+ <div class="post-95947 post type-post status-publish format-standard hentry category-3d-printer-hacks category-weapons-hacks tag-3d-printing tag-crossbow tag-weapons">
276
+
277
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/11/one-piece-3d-printed-crossbow/" title="One piece, 3D printed&nbsp;crossbow" rel="bookmark">One piece, 3D printed&nbsp;crossbow</a></h2>
278
+
279
+ <div class="post-info"><span class="date published time" title="2013-03-11T14:00:59+00:00">March 11, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/brianbenchoff/" class="fn n" title="Brian Benchoff" rel="author">Brian Benchoff</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/11/one-piece-3d-printed-crossbow/#comments">17 Comments</a></span> </div> <div class="entry-content">
280
+ <p><img class="aligncenter size-full wp-image-95949" alt="bow" src="http://hackadaycom.files.wordpress.com/2013/03/bow.jpg?w=580&#038;h=236" width="580" height="236" /></p>
281
+ <p>Centuries ago, craftsmen and smiths of all sort spent hundreds of hours crafting a crossbow. From the fine craftsmanship that went into making the bow to the impeccable smithing a windlass requires, a lot of effort went into building a machine of war. Since [Chris] has a 3D printer, he figured he could do just as well as these long-dead craftsmen and <a href="http://www.trenchphysics.com/?p=131">fabricate a crossbow in under a day</a>.</p>
282
+ <p>What&#8217;s really interesting about [Chris]&#8216; crossbow is that it is only a single piece of plastic. The bow is integrated into the stock, and the trigger works by some creative CAD design that takes advantage of the bendability of plastic. The only thing required to shoot a bolt from this crossbow is a piece of string. That, and a few chopsticks.</p>
283
+ <p>He won&#8217;t be taking part in any sieges, but [Chris]&#8216; weapon is more than capable of shooting a bolt across a room or launching a balsa wood airplane. You can see an example of this after the break.</p>
284
+ <p> <a href="http://hackaday.com/2013/03/11/one-piece-3d-printed-crossbow/#more-95947" class="more-link">[Read more...]</a></p>
285
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
286
+ <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/weapons-hacks/" title="View all posts in weapons hacks" rel="category tag">weapons hacks</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/3d-printing/" rel="tag">3d printing</a>, <a href="http://hackaday.com/tag/crossbow/" rel="tag">crossbow</a>, <a href="http://hackaday.com/tag/weapons/" rel="tag">weapons</a></span> </div>
287
+ </div><!-- end .postclass -->
288
+ <div class="post-95940 post type-post status-publish format-standard hentry category-hackerspaces tag-hackerspace-intro tag-tour">
289
+
290
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/11/hackerspace-intro-heatsync-labs/" title="Hackerspace intro: HeatSync&nbsp;Labs" rel="bookmark">Hackerspace intro: HeatSync&nbsp;Labs</a></h2>
291
+
292
+ <div class="post-info"><span class="date published time" title="2013-03-11T12:01:29+00:00">March 11, 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/11/hackerspace-intro-heatsync-labs/#comments">6 Comments</a></span> </div> <div class="entry-content">
293
+ <p><img class="aligncenter size-large wp-image-95941" alt="heat-sync-labs" src="http://hackadaycom.files.wordpress.com/2013/03/heat-sync-labs.jpg?w=580&#038;h=300" width="580" height="300" /></p>
294
+ <p>[Todd Harrison] wrote in not with a project but with a video tour of his local hackerspace: <a href="http://www.heatsynclabs.org/">HeatSync Labs</a> in Mesa, Arizona. He <a href="http://www.toddfun.com/2013/03/10/heatsync-labs-hacker-space-in-mesa-az/">took a camera along with him</a> over the weekend to record what you can expect when visiting the space. You&#8217;ll find the tour embedded after the break.</p>
295
+ <p>It starts off with something we love to see. The space is being used for a talk and it looks to be quite well attended. The building is one unit in a string of storefronts and this provides a big open space as soon as you walk in the door. Just past this gathering area there are a few rows of electronics work benches which include hardware like bench supplies and scopes, as well as soldering and rework areas. In the back corner they&#8217;ve got a great big laser cutter and [Todd] spends some time with one of the members looking through all the fun stuff they&#8217;ve made with it. The back room keeps the messy projects like wood working, machine tools, and welding separate from the rest.</p>
296
+ <p>The place is remarkably clean and we&#8217;ll organized. Make sure you stop by and check it out for yourself if you&#8217;re in the area.</p>
297
+ <p>This is the second time we&#8217;ve seen HeatSync Labs. <a href="http://hackaday.com/2012/08/09/southwest-tour-heatsync-labs-in-mesa-arizona/">The first tour</a> was hosted by our own [Caleb Kraft]</p>
298
+ <p> <a href="http://hackaday.com/2013/03/11/hackerspace-intro-heatsync-labs/#more-95940" 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/hackerspaces/" title="View all posts in Hackerspaces" rel="category tag">Hackerspaces</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/hackerspace-intro/" rel="tag">hackerspace intro</a>, <a href="http://hackaday.com/tag/tour/" rel="tag">tour</a></span> </div>
301
+ </div><!-- end .postclass -->
302
+ <div class="post-95933 post type-post status-publish format-standard hentry category-hardware tag-address tag-computer-architecture tag-cpu tag-fpga">
303
+
304
+ <h2 class="entry-title"><a href="http://hackaday.com/2013/03/11/building-new-weird-cpus-in-fpgas/" title="Building new, weird CPUs in&nbsp;FPGAs" rel="bookmark">Building new, weird CPUs in&nbsp;FPGAs</a></h2>
305
+
306
+ <div class="post-info"><span class="date published time" title="2013-03-11T10:00:45+00:00">March 11, 2013</span> By <span class="author vcard"><span class="fn"><a href="http://hackaday.com/author/brianbenchoff/" class="fn n" title="Brian Benchoff" rel="author">Brian Benchoff</a></span></span> <span class="post-comments"><a href="http://hackaday.com/2013/03/11/building-new-weird-cpus-in-fpgas/#comments">40 Comments</a></span> </div> <div class="entry-content">
307
+ <p><img class="aligncenter size-full wp-image-95939" alt="CPU" src="http://hackadaycom.files.wordpress.com/2013/03/cpu.png?w=580&#038;h=211" width="580" height="211" /></p>
308
+ <p>The popularization of FPGAs for the hobbyist market means a lot more than custom LED controllers and clones of classic computer systems. FPGAs are also a great tool to experiment with computer architecture, creating new, weird, CPUs that don&#8217;t abide by the conventions the industry has used for 40 years. [Victor]<a href="http://www.fpgarelated.com/showarticle/44.php"> is designing a new CPU</a> that challenges the conventions of how to access different memory locations, and in the process even came up with a bit of example code that runs on an ARM microcontroller.</p>
309
+ <p>Most of the time, the machine code running on your desktop or laptop isn&#8217;t that interesting; it&#8217;s just long strings of instructions to be processed linearly. The magic of a computer comes through comparisons, an if statement or a jump in code, where the CPU can run one of two pieces of code, depending on a value in a register. There is the problem of reach, though: if a piece of code makes a direct call to another piece of code, the address of the new code must fit within an instruction. On an ARM processor, only 24 bits are available to encode the address, meaning a jump in code can only go 16 MB on either side of its call. Going any further requires more instructions, and the performance hit that comes along with that.</p>
310
+ <p>[Victor] decided <a href="http://www.fpgarelated.com/showarticle/45.php">a solution to this problem</a> would be to create a bit of circuitry that would be a sliding window to store address locations. Instead of storing the literal address for jumps in code, every branch in the code is stored as a location relative to whatever is in the program counter. The result is an easy way to JMP to code very far away in memory, with less of a performance hit.</p>
311
+ <p>There&#8217;s an implementation for this sliding window token thing [Victor] whipped up for NXP&#8217;s ARM Cortex M3 microprocessor, and he&#8217;ll be working on an implementation of this concept in a new CPU <a href="https://github.com/stacksmith/sliding-cpu">over on his git</a>.</p>
312
+ <div id="jp-post-flair" class="sharedaddy sd-like-enabled sd-sharing-enabled"></div> </div><!-- end .entry-content -->
313
+ <div class="post-meta"><span class="categories">Filed Under: <a href="http://hackaday.com/category/hardware/" title="View all posts in hardware" rel="category tag">hardware</a></span> <span class="tags">Tagged With: <a href="http://hackaday.com/tag/address/" rel="tag">address</a>, <a href="http://hackaday.com/tag/computer-architecture/" rel="tag">computer architecture</a>, <a href="http://hackaday.com/tag/cpu/" rel="tag">cpu</a>, <a href="http://hackaday.com/tag/fpga/" rel="tag">fpga</a></span> </div>
314
+ </div><!-- end .postclass -->
315
+ <div class="navigation"><div class="alignleft"><a href="http://hackaday.com/page/37/" >&laquo; Older Posts</a></div><div class="alignright"><a href="http://hackaday.com/page/35/" >Newer Posts &raquo;</a></div></div><!-- end .navigation --> </div><!-- end #content -->
316
+ <div id="sidebar" class="sidebar widget-area">
317
+ <div id=tl_ad>
318
+ <script type="text/javascript"><!--
319
+ google_ad_client = "ca-pub-1812638130783065";
320
+ /* Hackaday, 300x250, created 4/26/08, MedRect sidebar */
321
+ google_ad_slot = "7800245928";
322
+ google_ad_width = 300;
323
+ google_ad_height = 250;
324
+ //-->
325
+ </script>
326
+ <script type="text/javascript"
327
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
328
+ </script>
329
+
330
+ </div>
331
+
332
+
333
+
334
+
335
+
336
+
337
+ <div class="widget">
338
+ <h4>Never Miss a Hack</h4>
339
+ <div class="textwidget">
340
+
341
+ <!-- Place this tag where you want the badge to render. -->
342
+ <div class="g-plus" data-width= "280" data-href="https://plus.google.com/114843073658390316652" data-rel="publisher" data-theme="dark"></div>
343
+ <!-- Place this tag after the last badge tag. -->
344
+ <script type="text/javascript">
345
+ (function() {
346
+ var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
347
+ po.src = 'https://apis.google.com/js/plusone.js';
348
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
349
+ })();
350
+ </script>
351
+
352
+ <div class="fb-like" data-href="https://www.facebook.com/pages/Hack-a-Day/136115233068429?ref=hl" data-send="true" data-width="280" data-show-faces="true" data-colorscheme="dark"></div>
353
+
354
+ <a href="https://twitter.com/hackaday" class="twitter-follow-button" data-show-count="true" data-lang="en" data-size="large">Follow @twitter</a>
355
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
356
+
357
+ <a href="http://feeds2.feedburner.com/hackaday/LgoM" target="_blank"><img src="http://hackadaycom.files.wordpress.com/2012/11/orange.png" border="0"/></a>
358
+ <div class="clear"> </div>
359
+ <!-- Begin MailChimp Signup Form -->
360
+ <link href="http://cdn-images.mailchimp.com/embedcode/slim-081711.css" rel="stylesheet" type="text/css">
361
+
362
+ <div id="mc_embed_signup">
363
+ <form action="http://mahalo.us5.list-manage.com/subscribe/post?u=126b2ab712043075d9bd7210e&amp;id=cb1aa8bd16" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
364
+ <label for="mce-EMAIL">Subscribe to our mailing list for sneak previews and behind the scenes info</label>
365
+ <input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="email address" required>
366
+ <div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
367
+ </form>
368
+ </div>
369
+
370
+ <!--End mc_embed_signup-->
371
+ </div>
372
+ </div>
373
+
374
+ <div id="categories-2" class="widget widget_categories"><div class="widget-wrap"><h4 class="widgettitle">Categories</h4>
375
+ <select name='cat' id='cat' class='postform' >
376
+ <option value='-1'>Select Category</option>
377
+ <option class="level-0" value="114554125">3d Printer hacks&nbsp;&nbsp;(116)</option>
378
+ <option class="level-0" value="18020710">android hacks&nbsp;&nbsp;(240)</option>
379
+ <option class="level-0" value="18020705">arduino hacks&nbsp;&nbsp;(1029)</option>
380
+ <option class="level-0" value="27981650">ARM&nbsp;&nbsp;(51)</option>
381
+ <option class="level-0" value="33199679">Ask Hackaday&nbsp;&nbsp;(29)</option>
382
+ <option class="level-0" value="64298109">ATtiny hacks&nbsp;&nbsp;(45)</option>
383
+ <option class="level-0" value="25122024">beer hacks&nbsp;&nbsp;(63)</option>
384
+ <option class="level-0" value="12115263">blackberry hacks&nbsp;&nbsp;(8)</option>
385
+ <option class="level-0" value="10969031">cellphones hacks&nbsp;&nbsp;(337)</option>
386
+ <option class="level-0" value="35745764">chemistry hacks&nbsp;&nbsp;(102)</option>
387
+ <option class="level-0" value="24483654">classic hacks&nbsp;&nbsp;(852)</option>
388
+ <option class="level-0" value="31677810">clock hacks&nbsp;&nbsp;(189)</option>
389
+ <option class="level-0" value="18755632">cnc hacks&nbsp;&nbsp;(341)</option>
390
+ <option class="level-0" value="568165">computer hacks&nbsp;&nbsp;(390)</option>
391
+ <option class="level-0" value="78428">cons&nbsp;&nbsp;(192)</option>
392
+ <option class="level-0" value="5738">contests&nbsp;&nbsp;(136)</option>
393
+ <option class="level-0" value="3923181">cooking hacks&nbsp;&nbsp;(72)</option>
394
+ <option class="level-0" value="10969032">digital audio hacks&nbsp;&nbsp;(422)</option>
395
+ <option class="level-0" value="10969033">digital cameras hacks&nbsp;&nbsp;(415)</option>
396
+ <option class="level-0" value="10969034">downloads hacks&nbsp;&nbsp;(101)</option>
397
+ <option class="level-0" value="107827385">drone hacks&nbsp;&nbsp;(10)</option>
398
+ <option class="level-0" value="63176382">Engine Hacks&nbsp;&nbsp;(31)</option>
399
+ <option class="level-0" value="35890">Featured&nbsp;&nbsp;(72)</option>
400
+ <option class="level-0" value="551890">firefox hacks&nbsp;&nbsp;(23)</option>
401
+ <option class="level-0" value="53446541">FPGA&nbsp;&nbsp;(1)</option>
402
+ <option class="level-0" value="18020562">g1 hacks&nbsp;&nbsp;(26)</option>
403
+ <option class="level-0" value="320557">google hacks&nbsp;&nbsp;(44)</option>
404
+ <option class="level-0" value="10969036">gps hacks&nbsp;&nbsp;(108)</option>
405
+ <option class="level-0" value="24535490">green hacks&nbsp;&nbsp;(152)</option>
406
+ <option class="level-0" value="27311668">Hackaday links&nbsp;&nbsp;(146)</option>
407
+ <option class="level-0" value="21755374">Hackerspaces&nbsp;&nbsp;(93)</option>
408
+ <option class="level-0" value="6310599">HackIt&nbsp;&nbsp;(101)</option>
409
+ <option class="level-0" value="10969037">handhelds hacks&nbsp;&nbsp;(189)</option>
410
+ <option class="level-0" value="79">hardware&nbsp;&nbsp;(249)</option>
411
+ <option class="level-0" value="144422905">High Voltage Hacks&nbsp;&nbsp;(5)</option>
412
+ <option class="level-0" value="66307084">Holiday Hacks&nbsp;&nbsp;(93)</option>
413
+ <option class="level-0" value="10969038">home entertainment hacks&nbsp;&nbsp;(516)</option>
414
+ <option class="level-0" value="5660882">home hacks&nbsp;&nbsp;(705)</option>
415
+ <option class="level-0" value="2708">how-to&nbsp;&nbsp;(135)</option>
416
+ <option class="level-0" value="908478">internet hacks&nbsp;&nbsp;(2)</option>
417
+ <option class="level-0" value="831">Interviews&nbsp;&nbsp;(13)</option>
418
+ <option class="level-0" value="1416772">iphone hacks&nbsp;&nbsp;(176)</option>
419
+ <option class="level-0" value="1275163">ipod hacks&nbsp;&nbsp;(144)</option>
420
+ <option class="level-0" value="344761">kickstarter&nbsp;&nbsp;(29)</option>
421
+ <option class="level-0" value="4157506">Kindle hacks&nbsp;&nbsp;(15)</option>
422
+ <option class="level-0" value="46717088">Kinect hacks&nbsp;&nbsp;(81)</option>
423
+ <option class="level-0" value="10969048">laptops hacks&nbsp;&nbsp;(111)</option>
424
+ <option class="level-0" value="10969055">laser hacks&nbsp;&nbsp;(167)</option>
425
+ <option class="level-0" value="18020716">led hacks&nbsp;&nbsp;(695)</option>
426
+ <option class="level-0" value="10626">lifehacks&nbsp;&nbsp;(54)</option>
427
+ <option class="level-0" value="729674">linux hacks&nbsp;&nbsp;(129)</option>
428
+ <option class="level-0" value="20732807">lockpicking hacks&nbsp;&nbsp;(11)</option>
429
+ <option class="level-0" value="10969060">macs hacks&nbsp;&nbsp;(135)</option>
430
+ <option class="level-0" value="144395979">Marijuana Hacks&nbsp;&nbsp;(2)</option>
431
+ <option class="level-0" value="11284667">Medical hacks&nbsp;&nbsp;(102)</option>
432
+ <option class="level-0" value="139916">Microcontrollers&nbsp;&nbsp;(512)</option>
433
+ <option class="level-0" value="5611793">misc hacks&nbsp;&nbsp;(1747)</option>
434
+ <option class="level-0" value="18020730">multitouch hacks&nbsp;&nbsp;(89)</option>
435
+ <option class="level-0" value="22652725">musical hacks&nbsp;&nbsp;(290)</option>
436
+ <option class="level-0" value="18020722">netbook hacks&nbsp;&nbsp;(50)</option>
437
+ <option class="level-0" value="6166512">Network Hacks&nbsp;&nbsp;(4)</option>
438
+ <option class="level-0" value="103">news&nbsp;&nbsp;(1091)</option>
439
+ <option class="level-0" value="1861880">nintendo ds hacks&nbsp;&nbsp;(34)</option>
440
+ <option class="level-0" value="114555425">nintendo gameboy hacks&nbsp;&nbsp;(90)</option>
441
+ <option class="level-0" value="18020685">nintendo hacks&nbsp;&nbsp;(261)</option>
442
+ <option class="level-0" value="4992726">nintendo wii hacks&nbsp;&nbsp;(78)</option>
443
+ <option class="level-0" value="118011206">Nook Hacks&nbsp;&nbsp;(1)</option>
444
+ <option class="level-0" value="114556430">palm pre hacks&nbsp;&nbsp;(6)</option>
445
+ <option class="level-0" value="245123">parts&nbsp;&nbsp;(72)</option>
446
+ <option class="level-0" value="10969081">peripherals hacks&nbsp;&nbsp;(648)</option>
447
+ <option class="level-0" value="16325149">phone hacks&nbsp;&nbsp;(17)</option>
448
+ <option class="level-0" value="10969088">playstation hacks&nbsp;&nbsp;(120)</option>
449
+ <option class="level-0" value="2060">podcasts&nbsp;&nbsp;(8)</option>
450
+ <option class="level-0" value="10969096">portable audio hacks&nbsp;&nbsp;(66)</option>
451
+ <option class="level-0" value="10969099">portable video hacks&nbsp;&nbsp;(57)</option>
452
+ <option class="level-0" value="588444">psp hacks&nbsp;&nbsp;(47)</option>
453
+ <option class="level-0" value="23971578">radio hacks&nbsp;&nbsp;(137)</option>
454
+ <option class="level-0" value="47">rants&nbsp;&nbsp;(28)</option>
455
+ <option class="level-0" value="69218551">Raspberry Pi&nbsp;&nbsp;(153)</option>
456
+ <option class="level-0" value="21870780">repair hacks&nbsp;&nbsp;(101)</option>
457
+ <option class="level-0" value="309">reviews&nbsp;&nbsp;(19)</option>
458
+ <option class="level-0" value="10969101">robots hacks&nbsp;&nbsp;(874)</option>
459
+ <option class="level-0" value="30302">roundup&nbsp;&nbsp;(35)</option>
460
+ <option class="level-0" value="10969111">security hacks&nbsp;&nbsp;(460)</option>
461
+ <option class="level-0" value="2301">Software Development&nbsp;&nbsp;(91)</option>
462
+ <option class="level-0" value="3796421">software hacks&nbsp;&nbsp;(47)</option>
463
+ <option class="level-0" value="10969116">solar hacks&nbsp;&nbsp;(46)</option>
464
+ <option class="level-0" value="10969121">tablet pcs hacks&nbsp;&nbsp;(40)</option>
465
+ <option class="level-0" value="3075183">teardown&nbsp;&nbsp;(31)</option>
466
+ <option class="level-0" value="10969130">tool hacks&nbsp;&nbsp;(657)</option>
467
+ <option class="level-0" value="25277004">toy hacks&nbsp;&nbsp;(360)</option>
468
+ <option class="level-0" value="10969134">transportation hacks&nbsp;&nbsp;(472)</option>
469
+ <option class="level-0" value="1">Uncategorized&nbsp;&nbsp;(332)</option>
470
+ <option class="level-0" value="3184456">video hacks&nbsp;&nbsp;(211)</option>
471
+ <option class="level-0" value="34942364">Virtual Reality&nbsp;&nbsp;(9)</option>
472
+ <option class="level-0" value="50802420">weapons hacks&nbsp;&nbsp;(63)</option>
473
+ <option class="level-0" value="12552193">wearable hacks&nbsp;&nbsp;(183)</option>
474
+ <option class="level-0" value="39510952">Weekly roundup&nbsp;&nbsp;(18)</option>
475
+ <option class="level-0" value="4891215">wireless hacks&nbsp;&nbsp;(333)</option>
476
+ <option class="level-0" value="7079455">xbox hacks&nbsp;&nbsp;(130)</option>
477
+ </select>
478
+
479
+ <script type='text/javascript'>
480
+ /* <![CDATA[ */
481
+ var dropdown = document.getElementById("cat");
482
+ function onCatChange() {
483
+ if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
484
+ location.href = "http://hackaday.com/?cat="+dropdown.options[dropdown.selectedIndex].value;
485
+ }
486
+ }
487
+ dropdown.onchange = onCatChange;
488
+ /* ]]> */
489
+ </script>
490
+
491
+ </div></div>
492
+ <div id="featured-post-2" class="widget featuredpost"><div class="widget-wrap"><h4 class="widgettitle">In case you missed it</h4>
493
+ <div class="post-97657 post type-post status-publish format-standard hentry category-3d-printer-hacks category-featured tag-algae tag-bioluminescence tag-dinoflagellate tag-glowing tag-phosphorescence"><a href="http://hackaday.com/2013/04/18/living-night-light-with-glowing-algae/" title="Living night light with glowing&nbsp;algae" class="alignleft"><img width="90" height="61" src="http://hackadaycom.files.wordpress.com/2013/04/thumb1.jpg?w=90" class="attachment-thumbnail" alt="thumb" /></a><h2><a href="http://hackaday.com/2013/04/18/living-night-light-with-glowing-algae/" title="Living night light with glowing&nbsp;algae">Living night light with glowing&nbsp;algae</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/18/living-night-light-with-glowing-algae/#comments">67 Comments</a></span></p></div><!--end post_class()-->
494
+
495
+ <div class="post-97648 post type-post status-publish format-standard hentry category-3d-printer-hacks category-featured category-virtual-reality-2 tag-3d-printing tag-lulzbot tag-oculus-rift tag-virtual-reality tag-vr"><a href="http://hackaday.com/2013/04/17/3d-printing-sensor-mounts-for-the-oculus-rift/" title="3D Printing sensor mounts for the Oculus&nbsp;Rift" class="alignleft"><img width="90" height="67" src="http://hackadaycom.files.wordpress.com/2013/04/thumb.jpg?w=90" class="attachment-thumbnail" alt="thumb" /></a><h2><a href="http://hackaday.com/2013/04/17/3d-printing-sensor-mounts-for-the-oculus-rift/" title="3D Printing sensor mounts for the Oculus&nbsp;Rift">3D Printing sensor mounts for the Oculus&nbsp;Rift</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/17/3d-printing-sensor-mounts-for-the-oculus-rift/#comments">7 Comments</a></span></p></div><!--end post_class()-->
496
+
497
+ <div class="post-97564 post type-post status-publish format-standard hentry category-featured category-virtual-reality-2 tag-adaliight tag-ambilight tag-oculus-rift tag-virtual-reality tag-vr"><a href="http://hackaday.com/2013/04/11/hacking-the-oculus-rift-the-oculight/" title="Hacking the Oculus Rift: the&nbsp;Oculight" class="alignleft"><img width="90" height="54" src="http://hackadaycom.files.wordpress.com/2013/04/screen-shot-2013-04-14-at-9-52-43-am.png?w=90" class="attachment-thumbnail" alt="Screen Shot 2013-04-14 at 9.52.43 AM" /></a><h2><a href="http://hackaday.com/2013/04/11/hacking-the-oculus-rift-the-oculight/" title="Hacking the Oculus Rift: the&nbsp;Oculight">Hacking the Oculus Rift: the&nbsp;Oculight</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/11/hacking-the-oculus-rift-the-oculight/#comments">20 Comments</a></span></p></div><!--end post_class()-->
498
+
499
+ <div class="post-97538 post type-post status-publish format-standard hentry category-featured category-news tag-top-10 tag-wins"><a href="http://hackaday.com/2013/04/11/top-10-best-hacking-scenes-in-movies/" title="Top 10 best hacking scenes in&nbsp;movies" class="alignleft"><img width="90" height="55" src="http://hackadaycom.files.wordpress.com/2013/04/screen-shot-2013-04-14-at-9-51-38-am.png?w=90" class="attachment-thumbnail" alt="Screen Shot 2013-04-14 at 9.51.38 AM" /></a><h2><a href="http://hackaday.com/2013/04/11/top-10-best-hacking-scenes-in-movies/" title="Top 10 best hacking scenes in&nbsp;movies">Top 10 best hacking scenes in&nbsp;movies</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/11/top-10-best-hacking-scenes-in-movies/#comments">88 Comments</a></span></p></div><!--end post_class()-->
500
+
501
+ <div class="post-97094 post type-post status-publish format-standard hentry category-featured category-news tag-april-fools"><a href="http://hackaday.com/2013/04/01/hackadays-very-first-kickstarter-campaign/" title="Hackaday&#8217;s very first Kickstarter&nbsp;campaign" class="alignleft"><img width="90" height="54" src="http://hackadaycom.files.wordpress.com/2013/03/hackaday-kickstarter.jpg?w=90" class="attachment-thumbnail" alt="hackaday-kickstarter" /></a><h2><a href="http://hackaday.com/2013/04/01/hackadays-very-first-kickstarter-campaign/" title="Hackaday&#8217;s very first Kickstarter&nbsp;campaign">Hackaday&#8217;s very first Kickstarter&nbsp;campaign</a></h2><p class="byline post-info"><br /> <span class="post-comments"><a href="http://hackaday.com/2013/04/01/hackadays-very-first-kickstarter-campaign/#comments">58 Comments</a></span></p></div><!--end post_class()-->
502
+
503
+ <p class="more-from-category"><a href="http://hackaday.com/category/featured/" title="Featured">More Posts from this Category</a></p></div></div>
504
+ <div id="recent-comments-2" class="widget widget_recent_comments"><div class="widget-wrap"><h4 class="widgettitle">Recent comments</h4>
505
+ <ul id="recentcomments">
506
+ <li class="recentcomments">
507
+ echodelta on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-997083">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
508
+ <li class="recentcomments">
509
+ <a href='http://jsutton.co.uk' rel='external nofollow' class='url'>James</a> on <a href="http://hackaday.com/2013/04/23/console-radio-given-new-life-with-a-wifi-router-retrofit/comment-page-1/#comment-997080">Console radio given new life with a WiFi router&nbsp;retrofit</a> </li>
510
+ <li class="recentcomments">
511
+ nhede on <a href="http://hackaday.com/2013/04/22/20-pounds-and-a-gut-feeling-yields-a-configurable-rubidium-atomic-clock-source/comment-page-1/#comment-997074">20 pounds and a gut feeling yields a configurable Rubidium atomic clock&nbsp;source</a> </li>
512
+ <li class="recentcomments">
513
+ Dax on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-997071">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
514
+ <li class="recentcomments">
515
+ TacticalNinja on <a href="http://hackaday.com/2013/04/23/otm-02-is-a-3d-printed-wristwatch/comment-page-1/#comment-997070">OTM-02 is a 3D printed&nbsp;wristwatch</a> </li>
516
+ <li class="recentcomments">
517
+ Arlet on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-997017">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
518
+ <li class="recentcomments">
519
+ Arlet on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-997016">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
520
+ <li class="recentcomments">
521
+ <a href='http://smonson.com/' rel='external nofollow' class='url'>Smonson</a> on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-996997">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
522
+ <li class="recentcomments">
523
+ <a href='http://twitter.com/admsch' rel='external nofollow' class='url'>Adam Scheuring (@admsch)</a> on <a href="http://hackaday.com/2013/04/23/otm-02-is-a-3d-printed-wristwatch/comment-page-1/#comment-996993">OTM-02 is a 3D printed&nbsp;wristwatch</a> </li>
524
+ <li class="recentcomments">
525
+ JoSSte on <a href="http://hackaday.com/2013/04/23/rattle-generator-is-a-new-type-of-dynamo-for-a-bicycle/comment-page-1/#comment-996990">Rattle generator is a new type of dynamo for a&nbsp;bicycle</a> </li>
526
+ </ul>
527
+ </div></div>
528
+ <div id="calendar-2" class="widget widget_calendar"><div class="widget-wrap"><h4 class="widgettitle">Find Hacks by Date</h4>
529
+ <div id="calendar_wrap"><table id="wp-calendar">
530
+ <caption>April 2013</caption>
531
+ <thead>
532
+ <tr>
533
+ <th scope="col" title="Sunday">S</th>
534
+ <th scope="col" title="Monday">M</th>
535
+ <th scope="col" title="Tuesday">T</th>
536
+ <th scope="col" title="Wednesday">W</th>
537
+ <th scope="col" title="Thursday">T</th>
538
+ <th scope="col" title="Friday">F</th>
539
+ <th scope="col" title="Saturday">S</th>
540
+ </tr>
541
+ </thead>
542
+
543
+ <tfoot>
544
+ <tr>
545
+ <td colspan="3" id="prev"><a href="http://hackaday.com/2013/03/" title="View posts for March 2013">&laquo; Mar</a></td>
546
+ <td class="pad">&nbsp;</td>
547
+ <td colspan="3" id="next" class="pad">&nbsp;</td>
548
+ </tr>
549
+ </tfoot>
550
+
551
+ <tbody>
552
+ <tr>
553
+ <td colspan="1" class="pad">&nbsp;</td><td><a href="http://hackaday.com/2013/04/01/" title="Hackaday&#8217;s very first Kickstarter&nbsp;campaign, Doctor Who-style&nbsp;WiFi, Kindle weather and recycling&nbsp;display, Windmill made from washing machine, 555&nbsp;chip, SNES headphones scream out for Bluetooth&nbsp;control, How-to: turn on a light&nbsp;bulb">1</a></td><td><a href="http://hackaday.com/2013/04/02/" title="An EQ display for a pedal&nbsp;board, Dual displays on a Playstation&nbsp;2, Ask Hackaday: Hacking lingo&nbsp;fails, Cooling a photomultiplier&nbsp;tube, Hackerspace tour: Arch Reactor in St. Louis&nbsp;Missouri, Adafruit launches educational show aimed at&nbsp;kids, CNC Tic Tac&nbsp;Toe, Building a vehicle parking&nbsp;camera, April Fools&#8217; project teaches coworkers not to touch your&nbsp;stuff, SenseLamp automates rooms by replacing light&nbsp;fixtures">2</a></td><td><a href="http://hackaday.com/2013/04/03/" title="Embedded web server is all about clever&nbsp;formatting, Powering the Oculus Rift with&nbsp;USB, Upgrading a router with impeccable soldering&nbsp;skills, Homebuilt Laser Cutter&nbsp;Ideas, Building a&nbsp;Theremincello, Microscope ring light with a number of different&nbsp;features, Hall effect limit switches for a 3D&nbsp;printer, Adding an optical mouse sensor to an autonomous&nbsp;vehicle">3</a></td><td><a href="http://hackaday.com/2013/04/04/" title="Retrotechtacular: The Fourier&nbsp;Series, MP3/USB/Aux hack hidden behind cassette&nbsp;facade, Pranking a hackerspace IRC for April Fool&#8217;s&nbsp;Day, Turning an easter egg hunt into a fox&nbsp;hunt, Wireless Temperature Control for a&nbsp;Microbrewery, Melting Metal with a DIY Foundry&nbsp;Furnace, Top 10 Hacking Failures in movies: part&nbsp;2, Steampunk theremin&nbsp;goggles, High speed circuit design for quantum physics light&nbsp;sensing, Home security hardware makes you the monitoring&nbsp;service">4</a></td><td><a href="http://hackaday.com/2013/04/05/" title="Snowboard goggle HUD displays critical data while falling down a&nbsp;mountain, Electric tricycle build log is like hacker&nbsp;crack, H-bot style 3D printer moves bed for&nbsp;Z-axis, Stapler hack fastens infinitely large sheets of&nbsp;paper, Light Graffiti with Servos and&nbsp;Python">5</a></td><td><a href="http://hackaday.com/2013/04/06/" title="Fixing the worst video game ever: E.T. for Atari&nbsp;2600, Rolling your own minimal USB to serial Arduino&nbsp;programmer, Making PLA stick to a 3D printer build platform by using hairspray or an acetone ABS&nbsp;slurry">6</a></td>
554
+ </tr>
555
+ <tr>
556
+ <td><a href="http://hackaday.com/2013/04/07/" title="Acoustic bass guitar uses water jug and two&nbsp;strings, Solar powered robot mows your lawn while you chill&nbsp;indoors, Hackaday Links: Sunday, April 7th,&nbsp;2013">7</a></td><td><a href="http://hackaday.com/2013/04/08/" title="Another way to look at&nbsp;Charlieplexing, Combo lock uses relays and logic&nbsp;gates, Yamaha SW60XG hack lets you use it as a standalone MIDI&nbsp;device">8</a></td><td><a href="http://hackaday.com/2013/04/09/" title="Synthesizing graphene in your basement&nbsp;laboratory, The RedBull creation contest&nbsp;begins!, Recurve bow make from wood and&nbsp;skis, Wall wart computer&nbsp;mouse">9</a></td><td><a href="http://hackaday.com/2013/04/10/" title="Hacker sends this through the mail to record a video of the&nbsp;process, MIDI pedal project looks as good as it&nbsp;sounds, Perpetual&nbsp;pong">10</a></td><td><a href="http://hackaday.com/2013/04/11/" title="Snowboard propulsion system motors you through the&nbsp;flats, Guitar EQ levels trigger the stage&nbsp;lights, Top 10 best hacking scenes in&nbsp;movies, Automating a mechanical&nbsp;typewriter, Hacking the Oculus Rift: the&nbsp;Oculight">11</a></td><td><a href="http://hackaday.com/2013/04/12/" title="Jeep Wrangler gets pressurized water right out of the&nbsp;bumper, Horribly complicated electric guitar&nbsp;keyboard, Generating electricity from&nbsp;alcohol">12</a></td><td><a href="http://hackaday.com/2013/04/13/" title="Network-controlled fireworks&nbsp;launcher, Working 3D printed stepper&nbsp;motor, SqueezeBerry: a Raspberri Pi powered Squeezebox&nbsp;appliance">13</a></td>
557
+ </tr>
558
+ <tr>
559
+ <td><a href="http://hackaday.com/2013/04/14/" title="Teaching a computer to play Mario&#8230; seemingly through&nbsp;voodoo, Building a replacement for a broken dehumidifier&nbsp;controller, Hackaday Links: Sunday, April 14th,&nbsp;2013">14</a></td><td><a href="http://hackaday.com/2013/04/15/" title="Glowing Easter eggs more fun than a dye&nbsp;job, [FlorianH] shows off MinimaBL, the next generation of his quadcopter&nbsp;project, Original hardware for fifteen consoles jammed into recently completed Project&nbsp;Unity">15</a></td><td><a href="http://hackaday.com/2013/04/16/" title="Tube radio husk gets a web radio&nbsp;transplant, Building a kegerator with visual&nbsp;style, Hacked together Mac isn&#8217;t a&nbsp;hackintosh">16</a></td><td><a href="http://hackaday.com/2013/04/17/" title="Hackerspace security system brings RFID, video feedback, and automatic&nbsp;doors, Apple MagSafe cord&nbsp;repair, 3D Printing sensor mounts for the Oculus&nbsp;Rift, Upgrade a toy keyboard&#8217;s tone&nbsp;production">17</a></td><td><a href="http://hackaday.com/2013/04/18/" title="Hidden servo automates slat-style window&nbsp;blinds, Semi-automatic pick and place&nbsp;machine, Living night light with glowing&nbsp;algae, Pulse Oximeter from LM324, LED, and&nbsp;Photodiode">18</a></td><td><a href="http://hackaday.com/2013/04/19/" title="Measuring the lifespan of&nbsp;LEGO, Replace your project power supplies with recycled Li-Ion cells and a switching&nbsp;regulator, Asynchronous fireflies use few&nbsp;parts">19</a></td><td><a href="http://hackaday.com/2013/04/20/" title="This piggy bank is our stock&nbsp;broker, GUI window manager on an AVR&nbsp;chip, Mood lamp/notifier uses neat modular PCB&nbsp;design">20</a></td>
560
+ </tr>
561
+ <tr>
562
+ <td><a href="http://hackaday.com/2013/04/21/" title="3D printing some sweet&nbsp;music, Drop-in pcb makes Nintendo Four Score a USB&nbsp;joystick, Hackaday Links: Sunday, April 21st,&nbsp;2013">21</a></td><td><a href="http://hackaday.com/2013/04/22/" title="Automatic tubular bells given a MIDI interface&nbsp;too, Connect a Retina display to a regular&nbsp;computer, 20 pounds and a gut feeling yields a configurable Rubidium atomic clock&nbsp;source">22</a></td><td><a href="http://hackaday.com/2013/04/23/" title="Console radio given new life with a WiFi router&nbsp;retrofit, What are the best hacking&nbsp;documentaries?, OTM-02 is a 3D printed&nbsp;wristwatch, Rattle generator is a new type of dynamo for a&nbsp;bicycle">23</a></td><td id="today">24</td><td>25</td><td>26</td><td>27</td>
563
+ </tr>
564
+ <tr>
565
+ <td>28</td><td>29</td><td>30</td>
566
+ <td class="pad" colspan="4">&nbsp;</td>
567
+ </tr>
568
+ </tbody>
569
+ </table></div></div></div>
570
+ <div id=virurl>
571
+ <!-- BEGIN - VIRURL Widget - iFrame Embed Code -->
572
+ <iframe style="border: none; margin: 0; padding: 0; width: 300px; height: 600px;" src="https://www.virurl.com/iframe_widget?t=hackaday&l=5&category=Tech&w=23&u=147555"
573
+ width="300" height="600" scrolling="no" >
574
+ </iframe>
575
+ <!-- END - VIRURL Widget - iFrame Embed Code -->
576
+ </div>
577
+ <br />
578
+ <br />
579
+ <div id=tl_ad_bottom>
580
+ <script type="text/javascript"><!--
581
+ google_ad_client = "ca-pub-1812638130783065";
582
+ /* Hackaday sidebar wide skyscraper */
583
+ google_ad_slot = "1587378096";
584
+ google_ad_width = 160;
585
+ google_ad_height = 600;
586
+ google_ad_region = "test";
587
+ //-->
588
+ </script>
589
+ <script type="text/javascript"
590
+ src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
591
+ </script>
592
+ </div>
593
+
594
+
595
+ <br />
596
+
597
+
598
+
599
+
600
+
601
+
602
+ </div> </div><!-- end #content-sidebar-wrap -->
603
+ </div><!-- end .wrap --></div><!-- end #inner --><div id="footer" class="footer"><div class="wrap"><div class="gototop"><p><a href="#wrap" rel="nofollow">Return to top of page</a></p></div><div class="creds"><p>Copyright &copy; 2013 &middot; <a href="http://www.studiopress.com/" title="Genesis Framework">Genesis Framework</a> &middot; <a href="http://wordpress.org/" title="WordPress">WordPress</a> &middot; <a href="http://hackadaycom.wordpress.com/wp-login.php">Log in</a></p></div></div><!-- end .wrap --></div><!-- end #footer -->
604
+ <script type="text/javascript">
605
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
606
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
607
+ </script>
608
+ <script type="text/javascript">
609
+ var pageTracker = _gat._getTracker("UA-2201445-6");
610
+ pageTracker._trackPageview();
611
+ </script>
612
+ <!-- Start Quantcast tag -->
613
+ <script type="text/javascript">
614
+ _qoptions={
615
+ qacct:"p-cc6zkdHuZwUDM"
616
+ };
617
+ </script>
618
+ <script type="text/javascript"
619
+ src="http://edge.quantserve.com/quant.js"></script>
620
+ <noscript>
621
+ <img src="http://pixel.quantserve.com/pixel/p-cc6zkdHuZwUDM.gif"
622
+ style="display: none;" border="0" height="1" width="1"
623
+ alt="Quantcast"/>
624
+ </noscript></div><!-- end #wrap -->
625
+
626
+ <script type="text/javascript">
627
+ var _qevents = _qevents || [], wpcomQuantcastData = {"qacct":"p-18-mFEk4J448M","labels":",language.en,type.wpcom,vip.hackadaycom"};
628
+ function wpcomQuantcastPixel( labels, options ) {
629
+ var i, defaults = wpcomQuantcastData, data = { event: 'ajax' };
630
+
631
+ labels = labels || '';
632
+ options = options || {};
633
+
634
+ if ( typeof labels != 'string' )
635
+ options = labels;
636
+
637
+ for ( i in defaults ) {
638
+ data[i] = defaults[i];
639
+ }
640
+
641
+ for ( i in options ) {
642
+ data[i] = options[i];
643
+ }
644
+
645
+ if ( data.labels ) {
646
+ data.labels += ',' + labels;
647
+ } else {
648
+ data.labels = labels;
649
+ }
650
+
651
+ _qevents.push( data );
652
+ };
653
+ (function() {var elem = document.createElement('script');elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge") + ".quantserve.com/quant.js";elem.async = true;elem.type = "text/javascript";var scpt = document.getElementsByTagName('script')[0];scpt.parentNode.insertBefore(elem, scpt); })();
654
+ _qevents.push( wpcomQuantcastData );
655
+ </script>
656
+ <noscript><div style="display: none;"><img src="//pixel.quantserve.com/pixel/p-18-mFEk4J448M.gif?labels=%2Clanguage.en%2Ctype.wpcom%2Cvip.hackadaycom" height="1" width="1" alt="" /></div></noscript>
657
+
658
+
659
+ <!-- /// LOAD CHARTBEAT /// -->
660
+ <script type="text/javascript">
661
+ var _sf_async_config={};
662
+ _sf_async_config.uid = 2021;
663
+ _sf_async_config.useCanonical = true;
664
+
665
+ (function(){
666
+ function loadChartbeat() {
667
+ window._sf_endpt=(new Date()).getTime();
668
+ var e = document.createElement('script');
669
+ e.setAttribute('language', 'javascript');
670
+ e.setAttribute('type', 'text/javascript');
671
+ e.setAttribute('src',
672
+ (("https:" == document.location.protocol) ? "https://s3.amazonaws.com/" : "http://") +
673
+ "static.chartbeat.com/js/chartbeat.js");
674
+ document.body.appendChild(e);
675
+ }
676
+ var oldonload = window.onload;
677
+ window.onload = (typeof window.onload != 'function') ?
678
+ loadChartbeat : function() { oldonload(); loadChartbeat(); };
679
+ })();
680
+ </script>
681
+ <div style="display:none">
682
+ </div>
683
+ <script type='text/javascript' src='http://s2.wp.com/_static/??-eJylzMsOREAQRuEXMoqgEwvxLC4/qjPVOl3dZh4fO3vrk+/Qz3+m3UW4SFZpxsET/D+3mtEjxQ0CJR8gnIRWOCgrfXm8lcAl0uQRFtbtlR3Cqtegl66smto0xhStPQEw5Dy+'></script>
684
+ <script type="text/javascript">
685
+ // <![CDATA[
686
+ (function() {
687
+ try{
688
+ if ( window.external &&'msIsSiteMode' in window.external) {
689
+ if (window.external.msIsSiteMode()) {
690
+ var jl = document.createElement('script');
691
+ jl.type='text/javascript';
692
+ jl.async=true;
693
+ jl.src='/wp-content/plugins/ie-sitemode/custom-jumplist.php';
694
+ var s = document.getElementsByTagName('script')[0];
695
+ s.parentNode.insertBefore(jl, s);
696
+ }
697
+ }
698
+ }catch(e){}
699
+ })();
700
+ // ]]>
701
+ </script><script src="http://s.stats.wordpress.com/w.js?21" type="text/javascript"></script>
702
+ <script type="text/javascript">
703
+ st_go({'blog':'4779443','v':'wpcom','tz':'-7','user_id':'0','subd':'hackadaycom'});
704
+ function st_vt() {var x=document.createElement("img");x.src="http://stats.wordpress.com/g.gif?blog=4779443&v=wpcomvt&tz=-7&user_id=0&subd=hackadaycom&rand="+Math.random();}
705
+ ex_go({'crypt':'UE40eW5QN0p8M2Y/RE1BNmNJfGhxNCVxUDExYmtXRThKbHcwXTdETWI1alhvb1oseHImN101ZFpEakVpYjlQYVFLYzBaVHRtPz0wXS9bVlFpZ3c1Qn5KSThLNS9lSHNGOE1IJk9+N3xFNWxyT2x+MUpnR1dJcFZUMjdSfixDOWUmSi8vfkQ/aXIzZVdLMjhHdGlIeG9ZTlQ0djJvVGd4S2I9cE9yWnVzNUdaSlhJUHMlOHFbcm5ubnAzUVdxS3NoYXwlTkh4U3pWSSxXZEhzSlRlaT9xcnxlfjROdFRUP0FMYy9wTVRzP3MwL0VvSE1sakU0eS1aLF83Mnw1XQ=='});
706
+ addLoadEvent(function(){linktracker_init('4779443',0);});
707
+ </script>
708
+ <noscript><img src="http://stats.wordpress.com/b.gif?v=noscript" style="height:0px;width:0px;overflow:hidden" alt="" /></noscript>
709
+ <script type="text/javascript">
710
+ // Trigger Quantcast pixel for each Infinite Scroll post load
711
+ if ( 'function' === typeof( jQuery ) ) {
712
+ jQuery( document.body ).on( 'post-load', function() {
713
+ if ( 'function' === typeof( wpcomQuantcastPixel ) )
714
+ wpcomQuantcastPixel();
715
+ } );
716
+ }
717
+ </script>
718
+ </body>
719
+ </html>