<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:iweb="http://www.apple.com/iweb" version="2.0">
  <channel>
    <title>HOUSE OF PAYTON</title>
    <link>http://prw.prehiti.net/prw.prehiti.net/Home/Home.html</link>
    <description> </description>
    <generator>iWeb 3.0.4</generator>
    <image>
      <url>http://prw.prehiti.net/prw.prehiti.net/Home/Home_files/IMG_5914.jpg</url>
      <title>HOUSE OF PAYTON</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Home.html</link>
    </image>
    <item>
      <title>Z-Wave Control App</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2015/1/6_Z-Wave_Control_App.html</link>
      <guid isPermaLink="false">4ed6413d-90fa-4835-a313-ad1b9c416f20</guid>
      <pubDate>Tue, 6 Jan 2015 10:27:58 -0800</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2015/1/6_Z-Wave_Control_App_files/IMG_0364-ed.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object177_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;I went all-in on Z-Wave controls when we bought our current house.  We’re up to about 25 total controllable lights, switches, appliances, hvac, and other devices.  After trying a lot of different things, the controller that I’m currently using is a &lt;a href=&quot;http://getvera.com/controllers/veralite/&quot;&gt;Vera Lite&lt;/a&gt;.  It’s pretty good h/w, but the s/w #hurtsmyeyes.&lt;br/&gt;&lt;br/&gt;But the one thing the Vera folks did that was quite nice, was to provide a REST/JSON interface to the system.  Armed with that, I decided to write my own iOS client.&lt;br/&gt;&lt;br/&gt;One of the things that I hate most about the other clients that are out there, is that they generally only show your devices in a scrollable list, sorted by which room they’re in.  This seems far from useful and intuitive to me, so the main interface to devices in my app is through a map view (figure 1).  The traditional scroll views of devices are available too, they’re just not the main interface.&lt;br/&gt;&lt;br/&gt;A map can get crowded though, if you have enough devices.  So, for the map view, I implemented an interactive level-of-detail layer to manage access to devices.  Based on an MRU list, most-used devices will stay full-size and interactive, while less-used devices will be shrunken down and non-interactive.  Intuitively zooming in with a pinch or double tap will get you access to those less-used devices (figure 2).  Device positions on the map can be interactively edited as well.&lt;br/&gt;&lt;br/&gt;Thanks to Kickstarter et al, I’ve amassed a number of BLE devices that I am itching to use.  One, &lt;a href=&quot;https://www.mbientlab.com/product/&quot;&gt;MetaWear&lt;/a&gt;, is particularly easy to mess with, and it has an iBeacon mode.  I decided to put this to use controlling my garage workbench lights, since those lights are “personal”, in that I’m usually the only one that uses them.  This makes them a perfect candidate to control based on proximity to my personal device.&lt;br/&gt;&lt;br/&gt;Adding iBeacon support to the app was pretty straightforward, and the range for activation was easily tunable on the MetaWear device by controlling its transmit strength.  Now, when I come home or pop out into the garage for something, the lights are on automatically, and when I’ve spent enough time away (10-15s), they turn off again automatically.  It’s pretty sweet.  You can see the simple interface for managing beacon associations to the right (figure 3).&lt;br/&gt;&lt;br/&gt;There’s lots more to add to this app... I’ll update as I make progress.&lt;br/&gt;</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2015/1/6_Z-Wave_Control_App_files/IMG_0364-ed.jpg" length="49302" type="image/jpeg"/>
    </item>
    <item>
      <title>GLES SSAO for Mobile</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/10/15_GLES_SSAO_Experiment.html</link>
      <guid isPermaLink="false">f10da064-d67e-4dc4-90e3-47943eaf1308</guid>
      <pubDate>Wed, 15 Oct 2014 19:55:45 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/10/15_GLES_SSAO_Experiment_files/Screen%20Shot%202014-11-20%20at%2012.06.34%20PM%20banner.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/Screen%20Shot%202014-11-20%20at%2012.06.34%20PM%20banner_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;I’m working on an app where the main view is intended to include a very realistic, realtime 3D rendering, specifically for engineering-quality smooth surfaces.  To support this, I’ve been adding features to a rendering engine I’ve been developing, &lt;a href=&quot;https://github.com/prwhite/philibs&quot;&gt;PHILIBS&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Lighting and shading is a key aspect for visual realism, and while there are a million techniques for this, I chose to try out screen space ambient occlusion (SSAO), mostly to see how the technique scales to mobile platforms.&lt;br/&gt;&lt;br/&gt;I riffed off of the technique illustrated at &lt;a href=&quot;http://www.theorangeduck.com/page/pure-depth-ssao&quot;&gt;http://www.theorangeduck.com/page/pure-depth-ssao&lt;/a&gt;.  The key to this technique is the simplicity of only using the existing z-buffer to determine normals for shading, rather than using additional render targets to store the actual normals.  This is then, of course, an approximation.  Part of the fun was to figure out how good/bad of an approximation it would be for my use case. &lt;br/&gt;&lt;br/&gt;My implementation is similar to the one described, and exposes all of the magic numbers as tunable parameters in a debug interface.  The images in the figures are using values for the tunable parameters that, to my eye, give the best possible output for the algorithm.  Other things are tunable as well, such as the size of the framebuffers used for rendering the z channel.  For maximum image quality, the images in the figures use auxiliary framebuffers that match the diffuse channel’s size.&lt;br/&gt;&lt;br/&gt;You can see in the illustrations to the right that for analytically-generated geometry, this technique does not lead to a realistic visual outcome.  In particular:&lt;br/&gt;&lt;br/&gt;Fig 1) The scene without SSAO applied.&lt;br/&gt;&lt;br/&gt;Fig 2) The normal and diffuse channels of the SSAO rendering, showing how the smooth corners of the environment are particularly challenging for the normal re-constitution algorithm and for the occlusion rays to generate a frame-coherent result.  The calculation falls into bands of precision causing occlusion oscillations in what should be areas of smooth shading.&lt;br/&gt;&lt;br/&gt;Fig 3) The overall quality of the shading is related to a noise texture that perturbs the rays.  Regardless of the resolution of the noise texture, it is still introducing a “dirtiness” to the rendering that starkly contrasts with the analytical surfaces.  Used on organic/complex scenes with additional photorealistic texture layers, this issue goes away, but for this style of rendering, it’s a non-starter.  Certainly, one additional step to improve this result would be to do a depth-aware blur of the SSAO framebuffer, but we’re already pushing the fill-rate limits of the h/w.&lt;br/&gt;&lt;br/&gt;So... overall, not good for what I am looking for, but the experiment wasn’t a total loss.  The architecture of the scene graph improved to support this capability, most notably introducing a flexible way of describing a framebuffer dependency graph that ultimately generate the final composition.&lt;br/&gt;&lt;br/&gt;Finally, there’s a lot of good work out there on improvements and alternatives to SSAO... I hope to make some time to try some of those, and I also intend to add some other lighting cues like texture-based soft shadows, etc.</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/10/15_GLES_SSAO_Experiment_files/Screen%20Shot%202014-11-20%20at%2012.06.34%20PM%20banner.jpg" length="21701" type="image/jpeg"/>
    </item>
    <item>
      <title>PREHITI iPhone 6 Dock</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/9/22_PREHITI_iPhone_6_Dock.html</link>
      <guid isPermaLink="false">8a6ca1df-edc6-4caa-907d-3bbfb511fa81</guid>
      <pubDate>Mon, 22 Sep 2014 10:41:13 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/9/22_PREHITI_iPhone_6_Dock_files/IMG_0355.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object014_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;When the iPhone 5 came out, Apple decided not to release a dedicated dock for the phone (but they did when the iPhone 5s came out).&lt;br/&gt;&lt;br/&gt;At the time, I decided to design and 3D print &lt;a href=&quot;Entries/2012/11/11_PREHITI_iPhone_5_Dock.html&quot;&gt;my own iPhone 5 dock&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;It’s deja vu all over again, as Apple has made the same choice with the iPhone 6... no dedicated dock.&lt;br/&gt;&lt;br/&gt;Once again, I’ve jumped in to create one of my own design, with many of the same functional goals, but with a whole new aesthetic that resonates with the new design language of the iPhone 6.&lt;br/&gt;&lt;br/&gt;Behold...&lt;br/&gt;</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/9/22_PREHITI_iPhone_6_Dock_files/IMG_0355.jpg" length="35133" type="image/jpeg"/>
    </item>
    <item>
      <title>GLES Line Rendering</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/6/5_GLES_Line_Rendering.html</link>
      <guid isPermaLink="false">c748ee49-8a0e-4d39-a9c6-942eb83cd7fe</guid>
      <pubDate>Thu, 5 Jun 2014 14:26:14 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/6/5_GLES_Line_Rendering_files/droppedImage.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object001_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;I'm working on an OpenGL app and doing my own rendering layer.  The app, a 3D modeler, needs high-quality line rendering, but standard OpenGL, especially on mobile, does a bad job at that.&lt;br/&gt;&lt;br/&gt;One recurring solution is to extrude quads (pairs of triangles) along the line, doing proper mitering.  On top of this, solutions generally use gradual alpha falloff to simulate anti-aliasing, whether through texture, Gouraud shading, or some other fragment processing technique.&lt;br/&gt;&lt;br/&gt;I did a pretty broad and deep survey of techniques and settled on a combination of things.  Many of the current solutions leverage &lt;a href=&quot;http://en.wikipedia.org/wiki/Geometry_shader#Geometry_shaders&quot;&gt;geometry shaders&lt;/a&gt; to do the geometry extrusion, but this shader stage is not available on my chosen mobile target (iOS) at this time.&lt;br/&gt;&lt;br/&gt;So, I implemented something closely aligned with the JGT paper, &lt;a href=&quot;http://hal.inria.fr/docs/00/90/73/26/PDF/paper.pdf&quot;&gt;Shader-Based Antialiased Dashed Stroked Polylines&lt;/a&gt;.  This approach leads to both really good line quality and flexible cap and dash rendering, which are both goals of my work.  I also figured out a way to get the view-dependent line extrusion to happen solely on the GPU, which means the only CPU overhead is initial VBO setup.  This nicely gets around the general lack of geometry shaders on mobile.&lt;br/&gt;&lt;br/&gt;Some examples of the current line rendering can be seen to the right.  There are some artifacts in some of the screen grabs.  These artifacts are due to the fact that my target frame buffer for the scene is eventually stretched to fill the display size.  This causes some pixel resampling artifacts in the vertical direction in some of the images.  The unscaled off-screen framebuffer (bottom middle) is artifact free though.  This is a tradeoff that I'm comfortable with for now.&lt;br/&gt;&lt;br/&gt;The code is on github, including the &lt;a href=&quot;https://github.com/prwhite/philibs/blob/master/philibs-ex-00/philibs-ex-00/Shaders/gles2-line.vsh&quot;&gt;vertex&lt;/a&gt; and &lt;a href=&quot;https://github.com/prwhite/philibs/blob/master/philibs-ex-00/philibs-ex-00/Shaders/gles2-line.fsh&quot;&gt;fragment&lt;/a&gt; shaders.</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/6/5_GLES_Line_Rendering_files/droppedImage.jpg" length="19911" type="image/jpeg"/>
    </item>
    <item>
      <title>Space Navigator Hand Rest</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/6/4_Space_Navigator_Handrest.html</link>
      <guid isPermaLink="false">8247ab3a-fdd6-4f12-b431-5889833e82ee</guid>
      <pubDate>Wed, 4 Jun 2014 19:44:39 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/6/4_Space_Navigator_Handrest_files/space-nav-base-02b-02-banner.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object024_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;I have a &lt;a href=&quot;http://www.dvhardware.net/news/logitech_dinovo_media_desktop_laser.jpg&quot;&gt;keyboard&lt;/a&gt; that I really, really love.  They don't make it any more, so I even bought a spare off of ebay a while back.&lt;br/&gt;&lt;br/&gt;I have a 3D mouse, the &lt;a href=&quot;http://www.3dconnexion.com/products/spacenavigator.html&quot;&gt;Space Navigator&lt;/a&gt;, which is indispensable for 3D modeling work, which I do a fair amount of. &lt;br/&gt;&lt;br/&gt;What I also have is a big unsightly gap between the keyboard and the 3D mouse.  I similarly need a good means of keeping the 3D mouse from moving around.&lt;br/&gt;&lt;br/&gt;So, to solve this problem, I decided to model up a hand rest that could blend the keyboard with the 3D mouse while making it easier to pin down the 3D mouse.&lt;br/&gt;&lt;br/&gt;I did a few prototypes, which I printed on my Form 1 3D printer to ensure viability of the design.  From that, I submitted the final design to Shapeways and had them print the parts.&lt;br/&gt;&lt;br/&gt;The project was ultimately printed as two parts, the top, printed in &lt;a href=&quot;https://www.shapeways.com/materials/alumide?li=nav&quot;&gt;alumide&lt;/a&gt;, and the bottom, printed in &lt;a href=&quot;https://www.shapeways.com/materials/strong-and-flexible-plastic?li=nav&quot;&gt;strong and flexible&lt;/a&gt; black.&lt;br/&gt;&lt;br/&gt;The final version came out really well, with one notable issue.  The alumide printed &amp;quot;short&amp;quot; in the z axis by about 3-4 mm.  It is still functional and snapped into place with the bottom, but isn't perfectly flush with the keyboard. </description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/6/4_Space_Navigator_Handrest_files/space-nav-base-02b-02-banner.jpg" length="40767" type="image/jpeg"/>
    </item>
    <item>
      <title>Barcelona</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/3/27_Barcelona.html</link>
      <guid isPermaLink="false">a194b3c5-2de2-4773-b517-0468ff9524b2</guid>
      <pubDate>Thu, 27 Mar 2014 13:18:32 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/3/27_Barcelona_files/DSC00746%20banner.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object105_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;We went to Barcelona! &lt;br/&gt;&lt;br/&gt;Kirsten had a two week biz trip in Europe finishing in Barcelona... so we decided to head out and meet up with her.  It was a bit of a challenge dragging the kids through international travel alone, but we did get there in one piece.&lt;br/&gt;&lt;br/&gt;We spent five days visiting all of the places you would expect... with an emphasis on &lt;a href=&quot;https://en.wikipedia.org/wiki/Antoni_Gaud%C3%AD&quot;&gt;Guadí&lt;/a&gt;’s architectural work.  I was also very excited to visit the &lt;a href=&quot;https://en.wikipedia.org/wiki/Joan_Mir%C3%B3&quot;&gt;Joan Miró&lt;/a&gt; Foundation and everyone really enjoyed the &lt;a href=&quot;https://en.wikipedia.org/wiki/Museu_Picasso&quot;&gt;Museo Picasso&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;The weather was rough though.  The rain and wind was so bad one day we just stayed in the hotel... which could be worse... the &lt;a href=&quot;http://www.hotelartsbarcelona.com/en&quot;&gt;Barcelona Arts Hotel&lt;/a&gt; is very nice, and our view of the city was tremendous.&lt;br/&gt;&lt;br/&gt;One of the highlights for the kids was on the last night of our stay.  The hotel staff set up a scavenger hunt for the kids that took them all over the hotel collecting candy at every stop... finishing, thoughtfully, back in our room.&lt;br/&gt;&lt;br/&gt;I highly recommend a trip to Barcelona, but I must admit, the kids and I only ate Italian food for the whole visit.  That says more about us than the city, though.&lt;br/&gt;&lt;br/&gt;There are more pictures &lt;a href=&quot;https://plus.google.com/photos/103037061162917535714/albums/6000044284649756737?authkey=CLuA4bidq-6P5QE&quot;&gt;here&lt;/a&gt;.</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/3/27_Barcelona_files/DSC00746%20banner.jpg" length="58827" type="image/jpeg"/>
    </item>
    <item>
      <title>Form 1 Building1</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/2/20_Form_1_Building1.html</link>
      <guid isPermaLink="false">2ce0096e-343f-44bc-a10e-cff954275f73</guid>
      <pubDate>Thu, 20 Feb 2014 18:43:10 -0800</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/2/20_Form_1_Building1_files/bldg1-00b-form1.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object047_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;While my number one goal for having the Form 1 printer is to build functional parts to go with various electronics and household projects, I am punctuating that with purely aesthetic prints.&lt;br/&gt;&lt;br/&gt;Back in the day, I considered a future as an architect.  So, I have a lot of old drawings of houses and buildings that I thought would be, um... awesome.  &lt;br/&gt;&lt;br/&gt;The first of those that I dusted off is going to officially be known as &amp;quot;building1&amp;quot;.  It's a hastily conceived and realized skyscraper-ish type of building with ill-proportioned neo-classical influences.&lt;br/&gt;&lt;br/&gt;The print came out very well... including the textural element running vertically up the sides.  Even at 0.1 mm, the detail is very good and very precise.  The only really unique thing I had to do for this print to adapt it to the Form 1 was to hollow it out and make sure the marquee off of the back entrance was thick enough (which I was a little off on... so it broke off a bit).</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/2/20_Form_1_Building1_files/bldg1-00b-form1.jpg" length="31078" type="image/jpeg"/>
    </item>
    <item>
      <title>Form 1 Lego-style Bricks</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/2/2_Form_1_Lego-style_Bricks.html</link>
      <guid isPermaLink="false">556a11e6-78b1-4eb7-9f4f-23a41f17845c</guid>
      <pubDate>Sun, 2 Feb 2014 23:04:38 -0800</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/2/2_Form_1_Lego-style_Bricks_files/IMG_7101-banner.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object034_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;As part of exploring the &lt;a href=&quot;http://formlabs.com/products/our-printer&quot;&gt;Form 1&lt;/a&gt; 3D Printer, I wanted to better understand what kind of modeling techniques and tolerances would be effective for something that relies on being able to interlock... such as with a Lego brick.&lt;br/&gt;&lt;br/&gt;So I modeled up handful of bricks based on the &lt;a href=&quot;http://cdn.instructables.com/F65/PI3W/HDYZBK5Y/F65PI3WHDYZBK5Y.LARGE.jpg&quot;&gt;unbelievably good&lt;/a&gt; and &lt;a href=&quot;http://bricks.stackexchange.com/questions/288/what-are-the-dimensions-of-a-lego-brick&quot;&gt;detailed&lt;/a&gt; info on the web about Lego brick sizes.  Armed with that knowledge, and the understanding that tolerances for something like this should be in the 100-200 µm range (I even went a bit farther, generally doing 250 µm throughout), I sent my bricks to the printer.&lt;br/&gt;&lt;br/&gt;The result was a good news / bad news thing...&lt;br/&gt;&lt;br/&gt;The good news was that the bricks did indeed look a lot like Lego bricks.&lt;br/&gt;&lt;br/&gt;But the bad news comes down to the functional part... they simply didn't interlock with each other, or with actual Lego bricks.  Generally, the problem was that things were too &amp;quot;fat&amp;quot;... which means while the parts were generally the right overall dimension, walls were slightly thicker than they should have been, which ultimately means things didn't have enough room to squeeze together.  This could be attributed to using the highest resolution layer thickness... which is somewhat counterintuitive.&lt;br/&gt;&lt;br/&gt;I'll come back to this at some point, but right now I'm not super optimistic about making functional things with the Form 1.  And, even if I did tune the design to work well on the Form 1, I wouldn't have much confidence in moving that to another 3D printing technology which will have its own unique quirks (or lack thereof). </description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/2/2_Form_1_Lego-style_Bricks_files/IMG_7101-banner.jpg" length="58366" type="image/jpeg"/>
    </item>
    <item>
      <title>Form 1 Laser Holder</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/1/3_Form_1_Laser_Holder.html</link>
      <guid isPermaLink="false">811b827f-b029-42e6-882a-9bc8d374d651</guid>
      <pubDate>Fri, 3 Jan 2014 23:21:48 -0800</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/1/3_Form_1_Laser_Holder_files/laser-holder-00c-banner.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object016_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;I started a &lt;a href=&quot;Entries/2012/3/12_Arduino_Stuff_00.html&quot;&gt;project&lt;/a&gt; a while back that included an array of eight line-generator lasers.  Yes, lasers!&lt;br/&gt;&lt;br/&gt;So, I'm still in the middle of this project, which would end up having a beautiful and functional case which i will 3d print.&lt;br/&gt;&lt;br/&gt;But even before printing the final case, I need to manage the lasers in some way so they don't get unruly and pull themselves out of the breadboard while I'm prototyping.&lt;br/&gt;&lt;br/&gt;So, I set out to print a simple object to hold all of the lasers together in some orderly way... if even just temporarily.&lt;br/&gt;&lt;br/&gt;It took a couple revs to get the lasers to snap in just right (and not fall out).  I could probably do one more iteration to get it more perfect.</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2014/1/3_Form_1_Laser_Holder_files/laser-holder-00c-banner.jpg" length="64444" type="image/jpeg"/>
    </item>
    <item>
      <title>Form 1 3D Printer Arrives</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2013/12/24_Form_1_3D_Printer_Arrives.html</link>
      <guid isPermaLink="false">639c217a-656a-4dfa-a252-07088833b1d7</guid>
      <pubDate>Tue, 24 Dec 2013 11:22:33 -0800</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2013/12/24_Form_1_3D_Printer_Arrives_files/IMG_6362-ed.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object000_2.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;I ordered a &lt;a href=&quot;http://formlabs.com/products/our-printer&quot;&gt;Form 1&lt;/a&gt; 3D Printer from &lt;a href=&quot;http://formlabs.com/&quot;&gt;Formlabs&lt;/a&gt; in the first half of last year, shortly after their &lt;a href=&quot;http://www.kickstarter.com/projects/formlabs/form-1-an-affordable-professional-3d-printer&quot;&gt;Kickstarter&lt;/a&gt; closed.  I was happy to have a June delivery time, but as many things Kickstarter go, the project fell behind and shipping went from June to August to dunno to finally settle on December.  Ultimately, the printer showed up a few days before Christmas, and I quickly put the thing to work.&lt;br/&gt;&lt;br/&gt;The Form 1 is an SLA printer, which is short for Stereolithography (they threw the &amp;quot;A&amp;quot; in for fun).  It works by firing a UV laser at a tank of photopolymer resin.  After each layer of the 3D model is cured by the laser, the base is raised a fraction of a millimeter, and then the next layer is printed.  And so on.&lt;br/&gt;&lt;br/&gt;I have a long list of things I intend to print, many of them functional or part of other electronics or household projects.  But, given the timing, the first thing I printed was a Christmas ornament.  Naturally, I consulted my wife and kids for what elements the design should have.  In the end, we have a unique blend of ideas, and a print that worked the first time.</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2013/12/24_Form_1_3D_Printer_Arrives_files/IMG_6362-ed.jpg" length="75049" type="image/jpeg"/>
    </item>
    <item>
      <title>Home Remodel Concepts</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2013/9/18_Home_Remodel_Concepts.html</link>
      <guid isPermaLink="false">644d2f28-1a3b-48c6-ace6-cebf3dd20263</guid>
      <pubDate>Wed, 18 Sep 2013 13:07:42 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2013/9/18_Home_Remodel_Concepts_files/DSC02220.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object134_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;We are planning to do some remodeling to parts of the house.  &lt;a href=&quot;../Home_Remodel_2013.html&quot;&gt;This page&lt;/a&gt; is the kicking-off point for the various projects and related details.</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2013/9/18_Home_Remodel_Concepts_files/DSC02220.jpg" length="132640" type="image/jpeg"/>
    </item>
    <item>
      <title>PREHITI iPhone 5 Dock</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2012/11/11_PREHITI_iPhone_5_Dock.html</link>
      <guid isPermaLink="false">68978339-9a82-4422-abec-6e174e147170</guid>
      <pubDate>Sun, 11 Nov 2012 09:39:52 -0800</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2012/11/11_PREHITI_iPhone_5_Dock_files/droppedImage_1.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object000_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;The iPhone 5 is great, but Apple decided &lt;a href=&quot;http://9to5mac.com/2012/09/18/apple-marketing-svp-phil-schiller-confirms-apple-has-no-iphone-5-dock-in-the-works/&quot;&gt;not to produce&lt;/a&gt; a Lightning dock for it.  :(&lt;br/&gt;&lt;br/&gt;I decided to solve that problem.</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2012/11/11_PREHITI_iPhone_5_Dock_files/droppedImage_1.jpg" length="33298" type="image/jpeg"/>
    </item>
    <item>
      <title>AR.Drone 2.0 Vertical Camera Mod</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2012/8/12_AR.Drone_2.0_Vertical_Camera_Mod.html</link>
      <guid isPermaLink="false">4a482f74-8430-4aee-a8f9-cc66353fd566</guid>
      <pubDate>Sun, 12 Aug 2012 15:29:23 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2012/8/12_AR.Drone_2.0_Vertical_Camera_Mod_files/Untitled.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object111_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;The goal of this project was to be able to use the built-in, front-facing HD camera to record video of what is below the AR.Drone.  The core solution is rather low-tech, in that it involves sticking a mirror in front of the camera facing down at a 45° angle.&lt;br/&gt;&lt;br/&gt;While the approach is low-fi, the implementation was pretty cool.  I modeled up the front of the AR.Drone 2.0 in SketchUp, and then went to work designing a frame and mirror shape that would perfectly fit with the drone's front structure.&lt;br/&gt;&lt;br/&gt;Getting the virtual parts to be real took a few easy steps:  1) I exported the frame component as &lt;a href=&quot;http://www.khronos.org/collada/&quot;&gt;Collada&lt;/a&gt; from &lt;a href=&quot;http://www.sketchup.com/&quot;&gt;SketchUp&lt;/a&gt; and uploaded it to &lt;a href=&quot;http://www.shapeways.com/&quot;&gt;Shapeways&lt;/a&gt;. 2) I exported the mirror face as SVG to merge with a &lt;a href=&quot;http://www.ponoko.com/&quot;&gt;Ponoko&lt;/a&gt; template in &lt;a href=&quot;http://inkscape.org/&quot;&gt;Inkscape&lt;/a&gt; and uploaded it there.  A few clicks later, the parts were in their queues, and the overall cost was around $20.&lt;br/&gt;&lt;br/&gt;After receiving the parts a week or two later, I slapped them together with some glue and friction-fit the assembly on the front of the drone.  It fit perfectly, and you can see the results in the video below.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I did run into a few things during this process.&lt;br/&gt;&lt;br/&gt;	•	 The width of the frame in certain areas is 1mm.  I chose Shapeways to print this part because they have a &lt;a href=&quot;http://www.shapeways.com/materials/strong-flexible&quot;&gt;material&lt;/a&gt; that's good with this constraint.  Ponoko has a &lt;a href=&quot;http://www.ponoko.com/make-and-sell/show-material/237-3d-printed-durable-plastic&quot;&gt;material&lt;/a&gt; that should handle it as well, although I haven't tested it yet and it doesn't come in black.&lt;br/&gt;&lt;br/&gt;	•	 When exporting from SketchUp to Collada the first time, I had an issue with the scale of the part.  It was the wrong dimension in 2 axes, but fine in the other.  Turns out, I had exported a component that had been scaled, which confused Shapeways importer.  I un-componentized the model and then re-grouped it which causes the scale transformation to be applied to the child elements.  When uploading this to Shapeways, everything went perfectly.&lt;br/&gt;&lt;br/&gt;	•	 The AR.Drone's HD camera has a &lt;a href=&quot;http://en.wikipedia.org/wiki/Rolling_shutter&quot;&gt;rolling shutter&lt;/a&gt;.  This creates a jelly-like artifact in the video.  The video taken with this mod clearly has this issue even worse than the forward facing camera does alone.  I haven't given much thought to a practical way to address this.  The amount of rolling shutter artifacting was even too much for software to compensate for.&lt;br/&gt;&lt;br/&gt;	•	 When I made initial measurements of the camera's horizontal and vertical field of view, I made a silly conceptual mistake.  I determined these values by measuring at the midpoint of the top and side of the video frame, but not at the corners.  Naturally, the lens on the camera has a lot of spherical distortion, so I really needed to use the corners as a reference.  The end result of this mistake is that the top margin of the mirror enters into the picture on the top right and left of the video.&lt;br/&gt;&lt;br/&gt;	•	 Because there is a mirror involved, the image in the video needs to be flipped in one dimension to be correct.  I chose to flip it horizontally, leaving the top of the video frame pointing toward the forward direction of the drone.&lt;br/&gt;&lt;br/&gt;	•	 The first time I hooked up a test mirror to a test frame I used super glue.  This didn't come out well because I did it in a hurry, and the mirror was not securely mounted to the frame.  When I put together the final assembly I used &lt;a href=&quot;http://eclecticproducts.com/ag_adhesives.htm&quot;&gt;GOOP&lt;/a&gt;.  This glue is a great all-purpose glue, but it looks like it acts as a solvent for the mirror coating on the acrylic.  This caused the mirror's reflective surface to become uneven in the areas where it contacted the glue.&lt;br/&gt;&lt;br/&gt;	•	 I really wanted to fab all of the parts online, so the custom laser-cut acrylic mirror material from Ponoko was perfect.  Unfortunately, acrylic scratches so easily.  It is next to impossible to keep the mirror in it's original shape.</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2012/8/12_AR.Drone_2.0_Vertical_Camera_Mod_files/Untitled.jpg" length="25310" type="image/jpeg"/>
    </item>
    <item>
      <title>Arduino Laser Stuff</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2012/3/12_Arduino_Stuff_00.html</link>
      <guid isPermaLink="false">47a08cc2-6e00-4717-ad59-6941aaae3799</guid>
      <pubDate>Mon, 12 Mar 2012 07:11:21 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2012/3/12_Arduino_Stuff_00_files/IMG_1466.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object107.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;I've been tinkering with Arduino stuff for a little while.  It's my first go at electronics hacking and it's going rather nicely.&lt;br/&gt;&lt;br/&gt;My first project involves lasers... for no particular practical purpose... it's just that lasers look cool.&lt;br/&gt;&lt;br/&gt;So, the goal is to create a laser light show in my garage that adapts to whether cars are coming in or going out, or, if that's not happening, it responds to music within the garage.&lt;br/&gt;&lt;br/&gt;On the software side, I created an HTML5-based keyframe authoring tool that generates keyframes as code that I can drop into my Arduino project.  The keyframes control how the lasers operate for set sequences like car arrival, etc.&lt;br/&gt;&lt;br/&gt;The project uses &lt;a href=&quot;http://www.amazon.com/Instapark%C2%AE-650nm-Laser-Module-9X22mm/dp/B001B44KDM&quot;&gt;these laser line generators&lt;/a&gt; to get some pretty good coverage around the space.  The lasers are driven by a software PWM routine that runs over SPI to a high-power shift register.&lt;br/&gt;&lt;br/&gt;As a side effect of this work, I ended up with a little bit of reusable code that I've &lt;a href=&quot;https://github.com/prwhite/bham&quot;&gt;dropped at github&lt;/a&gt;.  It's a little library to do PWM via Bresenham modulation.  For my purposes, this has better output than a bit-angle modulation, especially at low update rates.</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2012/3/12_Arduino_Stuff_00_files/IMG_1466.jpg" length="161168" type="image/jpeg"/>
    </item>
    <item>
      <title>Skip's Tiki Grill Skateboard 00</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/8/15_Skips_Tiki_Grill_Skateboard_00.html</link>
      <guid isPermaLink="false">a3b46c1d-be0e-4554-8257-43d3fc929c26</guid>
      <pubDate>Mon, 15 Aug 2011 23:57:58 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/8/15_Skips_Tiki_Grill_Skateboard_00_files/skips-hor-00-filtered.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object000_1.png&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:54px;&quot;/&gt;&lt;/a&gt;I need a new skateboard.  The bushings in my old skateboard literally disintegrated, and the rest of the board isn't in much better shape.  Of course, I don't want any off-the-shelf board.  So, I made a custom &lt;a href=&quot;http://www.zazzle.com/skips_tiki_grill_skateboard_00-186491770552889764?complete=true&amp;view=vert&amp;group=all&amp;lifeStyle=comp_8_18&amp;rf=238744118458849972&quot;&gt;Skip's board on Zazzle&lt;/a&gt;.  The tiki is actually sourced from a 3-foot tall mask/totem we picked up in Tahiti 13 years ago.&lt;br/&gt;&lt;br/&gt;When the skateboard showed up it was a mostly positive experience.  The board materials were high quality, the printing was vibrant... all good stuff.  On the other hand, I didn't expect the sandpaper deck covering to be so utterly abrasive... it's chewed up my legs a couple times.  &lt;br/&gt;&lt;br/&gt;Most unanticipated was that the printing process at Zazzle does not support varying levels of opacity.  I expected from the info on the site and other images I had seen of boards made at Zazzle that variable opacity was going to work.  Instead, anything other than full transparency is printed with a white background first.  So, semi-transparent white becomes fully opaque light gray.  Had I known this, I have all the tools/skills to have done my own tiny half-tone pattern where I wanted partial opacity. </description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/8/15_Skips_Tiki_Grill_Skateboard_00_files/skips-hor-00-filtered.jpg" length="63009" type="image/jpeg"/>
    </item>
    <item>
      <title>Audi S4 Tribute Page</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/8/12_Audi_S4_Tribute_Page.html</link>
      <guid isPermaLink="false">dfb12898-26e8-4252-bf9f-c3bba7cce68b</guid>
      <pubDate>Fri, 12 Aug 2011 00:22:58 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/8/12_Audi_S4_Tribute_Page_files/IMG_5512-filtered.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object035.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;I'm on my third Audi S4 now, and I thought it was time to put together a page reveling in how fun they have all been.  Check it all out &lt;a href=&quot;../S4.html&quot;&gt;here&lt;/a&gt;. </description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/8/12_Audi_S4_Tribute_Page_files/IMG_5512-filtered.jpg" length="52449" type="image/jpeg"/>
    </item>
    <item>
      <title>Long Live the Old Home Page</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/8/7_Long_Live_the_Old_Home_Page.html</link>
      <guid isPermaLink="false">4acd7fec-5a53-4f58-8ee0-f308fe53d3d3</guid>
      <pubDate>Sun, 7 Aug 2011 00:01:07 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/8/7_Long_Live_the_Old_Home_Page_files/droppedImage.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object042.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;I pitched my old home page, which was last updated somewhere around 2004.  Pretty sad.  I have no predictions about how often this one will be updated.  You can see the old home page &lt;a href=&quot;http://prw.prehiti.net/index.old.html&quot;&gt;here&lt;/a&gt; for the sake of posterity.&lt;br/&gt;&lt;br/&gt;I'll be back-dating some posts to point at the good stuff that was on the old home page, and I'll probably add a 'featured' column on the home page to point to the best stuff. </description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/8/7_Long_Live_the_Old_Home_Page_files/droppedImage.jpg" length="35935" type="image/jpeg"/>
    </item>
    <item>
      <title>Back from Europe</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/7/26_Back_from_Europe.html</link>
      <guid isPermaLink="false">09164791-3973-4ff5-9b5f-73b7451af646</guid>
      <pubDate>Tue, 26 Jul 2011 13:53:06 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/7/26_Back_from_Europe_files/IMG_5244-filtered.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object043.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;After 14 days on the road I'm back from my trip.  The journey was to pick up my new Audi S4 in Germany, drive it all over Europe, and finish up on the French Riviera.  It went quite well, and you can find out all about it &lt;a href=&quot;http://prw.prehiti.net/2011s4/S4_European_Delivery/The_Blog/The_Blog.html&quot;&gt;here&lt;/a&gt;. </description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/7/26_Back_from_Europe_files/IMG_5244-filtered.jpg" length="92311" type="image/jpeg"/>
    </item>
    <item>
      <title>Off to Europe</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/7/13_Off_to_Europe.html</link>
      <guid isPermaLink="false">a44206ad-d3e7-4c41-878f-752435b1d17e</guid>
      <pubDate>Wed, 13 Jul 2011 13:57:11 -0700</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/7/13_Off_to_Europe_files/droppedImage.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object044.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;I'll be spending the next two weeks in Europe, driving around my new car.  Check out the trip preview &lt;a href=&quot;http://prw.prehiti.net/2011s4/S4_European_Delivery/The_Plan.html&quot;&gt;here&lt;/a&gt;.</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2011/7/13_Off_to_Europe_files/droppedImage.jpg" length="99046" type="image/jpeg"/>
    </item>
    <item>
      <title>The De-Charminator</title>
      <link>http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2010/2/14_The_De-Charminator.html</link>
      <guid isPermaLink="false">d54a0493-1d98-4608-857f-e6a4eed6a23d</guid>
      <pubDate>Sun, 14 Feb 2010 23:27:45 -0800</pubDate>
      <description>&lt;a href=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2010/2/14_The_De-Charminator_files/SANY2803-1-filtered.jpg&quot;&gt;&lt;img src=&quot;http://prw.prehiti.net/prw.prehiti.net/Home/Media/object001_1.jpg&quot; style=&quot;float:left; padding-right:10px; padding-bottom:10px; width:216px; height:52px;&quot;/&gt;&lt;/a&gt;I've always loved Lucky Charms... but I've also always been nagged by something...&lt;br/&gt;&lt;br/&gt;Nobody in their right mind would consider the little colored pieces of foam to be actual marshmallows.&lt;br/&gt;&lt;br/&gt;So, my daughter and I set out to rectify the situation through automation.&lt;br/&gt;&lt;br/&gt;How did it do?      You'll have to watch the video to find out.</description>
      <enclosure url="http://prw.prehiti.net/prw.prehiti.net/Home/Entries/2010/2/14_The_De-Charminator_files/SANY2803-1-filtered.jpg" length="128286" type="image/jpeg"/>
    </item>
  </channel>
</rss>
