Jekyll2018-02-04T10:31:34-05:00https://www.excentral.org/ExcentralEx*cen"tral(?), a. [Pref. ex + central.] (Bot.) Out of the center.Matthew SchickRSS Update2014-10-21T19:53:01-04:002014-10-21T19:53:01-04:00https://www.excentral.org/archives/2014/10/21/rss-update<p>I’ve been using FeedBurner for so long I’d forgotten about it, not unlike Google who seems to be letting it die a slow death. I’ve disabled my redirects and if you’re following the feed you’ll need to update your reader app to point <a href="http://www.excentral.org/feed">directly</a> to the site. The FeedBurner url should continue to work for as long as Google keeps it around, but no real point in using it any longer.</p>Matthew SchickI’ve been using FeedBurner for so long I’d forgotten about it, not unlike Google who seems to be letting it die a slow death. I’ve disabled my redirects and if you’re following the feed you’ll need to update your reader app to point directly to the site. The FeedBurner url should continue to work for as long as Google keeps it around, but no real point in using it any longer.Ansible variables2014-04-16T05:46:44-04:002014-04-16T05:46:44-04:00https://www.excentral.org/archives/2014/04/16/ansible-variables<p>Been doing some abstraction refactoring for work and ran into a situation where
I had a task that used the command module in a loop and I needed to be able to
use the stdout value in a template later on. My first thought was to use
dynamic variables (e.g., <code class="highlighter-rouge">register: _output</code>) but Ansible treats
the variable name as a literal string for both register and add_fact so that was
an utter failure. After much doc trawling and searching, I used the debug
module to dump the variable registered and found it was a gnarly (and deeply
nested) dataset consisting of a dictionary of with both lists and more
dictionaries of lists. The upside is that nearly all the data about the task is
there, including the items used in the loop as well as the results I needed.</p>
<p>The task (cleaned up a bit):</p>
<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">record git revision of repositories</span>
<span class="na">local_action</span><span class="pi">:</span>
<span class="s">command git rev-parse HEAD</span>
<span class="s">chdir=""</span>
<span class="na">with_items</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s2">"</span><span class="s">"</span>
<span class="na">sudo</span><span class="pi">:</span> <span class="s">no</span>
<span class="na">register</span><span class="pi">:</span> <span class="s">repo_checkouts</span>
</code></pre></div></div>
<p>The relevant portion of the template:</p>
<div class="language-jinja highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="cp">{%</span> <span class="k">for</span> <span class="nv">checkouts</span> <span class="ow">in</span> <span class="nv">repo_checkouts.results</span> <span class="cp">%}</span>
Repository: <span class="cp">{{</span> <span class="nv">checkouts.item.git_location</span> <span class="cp">}}</span>
Targeted Branch/Tag/Commit: <span class="cp">{{</span> <span class="nv">checkouts.item.git_reference</span> <span class="cp">}}</span>
Actual Revision: <span class="cp">{{</span> <span class="nv">checkouts.stdout</span> <span class="cp">}}</span>
</code></pre></div></div>
<p>Note that the repo_checkouts.results includes a dictionary in each list named
‘item’ that includes all the info passed via with_items, and stdout is the
output from the command. Each list also includes a ‘cmd’ dict with the input to
the command module, an ‘invocation’ dict with the module and params details, and
various other details like return code and time stamps.</p>Matthew SchickBeen doing some abstraction refactoring for work and ran into a situation where I had a task that used the command module in a loop and I needed to be able to use the stdout value in a template later on. My first thought was to use dynamic variables (e.g., register: _output) but Ansible treats the variable name as a literal string for both register and add_fact so that was an utter failure. After much doc trawling and searching, I used the debug module to dump the variable registered and found it was a gnarly (and deeply nested) dataset consisting of a dictionary of with both lists and more dictionaries of lists. The upside is that nearly all the data about the task is there, including the items used in the loop as well as the results I needed.Mendel90 Marlin2014-02-19T06:46:33-05:002014-02-19T06:46:33-05:00https://www.excentral.org/archives/2014/02/19/mendel90-marlin<p>For those looking to run a recent version of Marlin on a Mendel90 from nophead, I track upstream in my own branches on GitHub. There are two versions; <a href="https://github.com/mattsch/Marlin/tree/mendel90_lcd">one</a> for running with the <a href="http://www.think3dprint3d.com/Panelolu2" title="Panelolu2">Panelolu2</a> LCD and the <a href="https://github.com/mattsch/Marlin/tree/mendel90">other</a> without.</p>
<p>A few gotchas to be aware of:</p>
<ul>
<li>The Melzi drivers are included from nophead, they're in ArduinoAddons/Arduino_1.x.x/Melzi and <strong>must</strong> be copied into your sketchbook/hardware/ folder or you will have issues with carriage movement.</li>
<li>If you're using the LCD branch you must have the Panelolu2 attached or it will hang at start. There's some patches floating around that might fix this but I haven't tested yet. If you remove the LCD make sure you disable the panel in Configuration.h.</li>
<li>The LCD requires a recent checkout of the <a href="https://github.com/lincomatic/LiquidTWI2">LiquidTWI2</a> libraries in your sketchbook/libraries/ directory.</li>
</ul>
<p>The README for each of my branches details other changes/features and I’ll keep em updated as I make changes.</p>Matthew SchickFor those looking to run a recent version of Marlin on a Mendel90 from nophead, I track upstream in my own branches on GitHub. There are two versions; one for running with the Panelolu2 LCD and the other without.3D Printing Tips2014-02-07T13:58:00-05:002014-02-07T13:58:00-05:00https://www.excentral.org/archives/2014/02/07/3d-printing-tips<p>Just a few things I’ve learned over the past few weeks:</p>
<ol>
<li>Travel rate matters - On both my Prusa I3 and Mendel90 I had the non-print travel rate ratched up to 250mm/s and thought I was okay since it didn't miss steps. However, it made for odd artifacting and layers not properly lining up due to the momentum of the extruder body (especially bad on the mendel, it's a heavy beast). Shaving it back to 150mm/s on the Mendel90 and 175mm/s on the Prusa made for a HUGE improvement in finish quality.</li>
<li>Firmware retraction is nice - Newer versions of Marlin allow controlling retraction/recovery via firmware (using G10/G11 g-codes) and Slic3r has an option to use it over it's normal g-code generation. Just started playing with it so we'll see how it does quality-wise, but being able to control via M207/M208 during a print makes for much better fine tuning than the old slice/print/repeat route.</li>
<li>Ambient temp matters a LOT - At least for first layer adhesion with PLA. The two most important factors in my experience for proper first layer adhesion are proper Z height calibration (most critical) and temperature. It's gotta be hot enough for the first layer to stick and then drop below PLA glass transition temp so it hardens and holds properly. The trick is that with higher ambient temperatures the time for that drop takes a bit longer, it can stay pliable a bit too long. I've found printing the first layer at 75C and then dropping to 60C seems to work well, but I'll be interested to see if that holds as the weather warms.</li>
</ol>Matthew SchickJust a few things I’ve learned over the past few weeks: Travel rate matters - On both my Prusa I3 and Mendel90 I had the non-print travel rate ratched up to 250mm/s and thought I was okay since it didn't miss steps. However, it made for odd artifacting and layers not properly lining up due to the momentum of the extruder body (especially bad on the mendel, it's a heavy beast). Shaving it back to 150mm/s on the Mendel90 and 175mm/s on the Prusa made for a HUGE improvement in finish quality. Firmware retraction is nice - Newer versions of Marlin allow controlling retraction/recovery via firmware (using G10/G11 g-codes) and Slic3r has an option to use it over it's normal g-code generation. Just started playing with it so we'll see how it does quality-wise, but being able to control via M207/M208 during a print makes for much better fine tuning than the old slice/print/repeat route. Ambient temp matters a LOT - At least for first layer adhesion with PLA. The two most important factors in my experience for proper first layer adhesion are proper Z height calibration (most critical) and temperature. It's gotta be hot enough for the first layer to stick and then drop below PLA glass transition temp so it hardens and holds properly. The trick is that with higher ambient temperatures the time for that drop takes a bit longer, it can stay pliable a bit too long. I've found printing the first layer at 75C and then dropping to 60C seems to work well, but I'll be interested to see if that holds as the weather warms.Mendel90 Build2013-11-10T10:11:00-05:002013-11-10T10:11:00-05:00https://www.excentral.org/archives/2013/11/10/mendel90-build<p>(My name is Matt S., and I’m a practicing 3D printing addict)</p>
<p>My adventures with the MakerFarm I3 has taught me quite a lot, but it’s very much of a learning tool and I’ve ended up spending as much time upgrading/tweaking/breaking as printing with it. The rest of the family hasn’t ended up with nearly as much printing time as they would like so I went looking for a solid kit that would be much closer to user-friendly. I’ll get into more of the specifics around the decision in another post, but I found that in the reprap world the <a href="http://reprap.org/wiki/Mendel90">Mendel90</a> is arguably the most solid of the bunch. I also managed to get Jake interested in 3D printing so we decided to each order a kit and do a mini group build.</p>
<p>Ordering was a breeze, a few emails back and forth with Chris’ SO got us the cost and shipping details sorted. The kits shipped the day after we PayPal’d over the funds and the kits showed up a few days later. Amazingly enough it took less time for UPS to ship the kits from the UK than it does for average ground from the West Coast. Unfortunately that also meant the kits were going to be sitting in my living room taunting me for a little over a week before we started the build…</p>
<p>The kits themselves were an impressive bit of work. They include everything but a few tools and the power supply (tho UK kits include the PS) and are extremely well thought out. The personalized cover letter in each was a nice touch, as was the micro SD card (with USB adapter) that had all the firmware, Chris’ customized version of Skeinforge, and an already sliced android test print. There was also a sample of some green PLA from faberdashery to use once the build was complete. Really quite top-notch.</p>
<p>The build took us roughly 20 or so hours to complete. The PDF manual was an absolute joy to follow, extremely detailed and generally easy to follow. The only real issues were once we got to wiring the power supply, but those were mostly due to my own inexperience and paranoia rather than the instructions. We ended up using the 12v and ground wires from the ATX and CPU connectors for power which gave a nice solid 12v input, and simply wiring the PSON/sense to ground rather than using the resistor.</p>
<p>Initial calibration was a challenge for me, not so much due to difficulty level but because it was very different from what I was used to. The printer uses positive/negative values for X/Y instead of 0-$MAX like the other printers I’ve used. The biggest difference was in calibrating the Z axis since it homes to MAX (printer top) so calibration requires measuring and updating firmware to get a proper 0 position. Once done tho it very rarely should need to be tweaked if the printer is stationary and so far it’s proved to be very accurate.</p>
<p>In the two weeks since the build was done, we’ve been getting extremely impressive prints. It took less than a week to get it dialed in and the prints have been extremely consistent. The printer is significantly louder than our I3 (moving along Z is the worst offender) but not overwhelmingly so. The noise is mostly due to the design and use of a metal panel frame rather than the wood used in the I3.</p>
<p>I would absolutely recommend this kit for anyone looking to do a build. The instructions and kit were great and the support from Chris, Mary, and the community have been excellent.</p>
<p><a href="https://plus.google.com/photos/110678275453348280505/albums/5944706035838671249?authkey=CITYnpae3sPq3gE">Build album.</a></p>Matthew Schick(My name is Matt S., and I’m a practicing 3D printing addict)Adventures in CEC2013-08-23T11:30:18-04:002013-08-23T11:30:18-04:00https://www.excentral.org/archives/2013/08/23/adventures-in-cec<p>Our trusty Harmony 880 has decided to start a somewhat rapid plunge into non-usefulness, started with the light no longer coming on when picked up and buttons are taking progressively more pressure to register. Gotten some good years from this remote and generally good experiences from the Harmony line, but with CEC becoming more prevalent I decided to see if I could forego buying another expensive remote and instead use a “standard” route. It almost, kinda works.</p>
<p>First thing is that all of my hardware is at least a few years old, with the TV being a 2009 model. LG and Onkyo have their own branded CEC implementations (Simplink and RIHD respectively), and neither of em are complete. For XBMC, I used the <a href="http://www.amazon.com/gp/product/B005JU6LWM/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B005JU6LWM&linkCode=as2&tag=excentral-20">Pulse Eight USB-CEC adapter</a> which plugs in to both the USB port on the PC as well as inline on the HDMI output.</p>
<p><strong>Hardware in play:</strong></p>
<ul>
<li>TV - LG 42LH40</li>
<li>Receiver - Onkyo TX-SR608</li>
<li>XBMC - Acer Revo 3700</li>
<li>Gaming/Streaming Video - PS3</li>
</ul>
<p><strong>The Good:</strong></p>
<ul>
<li>XBMC is seen by and talks to both my TV and receiver without issue.</li>
<li>I can control the volume on my receiver from XBMC (meaning I can use Yatse on my Android devices).</li>
<li>Powering XBMC on and resuming from suspend (WOL FTW!) turns the receiver and TV on. Same for the PS3.</li>
<li>Powering off <em>the TV</em> turns everything else off.</li>
<li>Everything can be controlled from my Onkyo remote, XBMC and PS3 via CEC commands.</li>
</ul>
<p><strong>The Bad:</strong></p>
<ul>
<li>Powering XBMC, PS3, or Receiver down doesn't turn off the TV. Saw some reports that LG doesn't (didn't?) implement the power off function.</li>
<li>XBMC control via CEC is somewhat limited, the Onkyo remote implements all the basics and a few extras for a total of roughly 28 commands (including numbers). Not really bad for a universal type remote, but the Harmony has me spoiled here.</li>
<li>Related to above, since the Onkyo remote is universal, the button labels don't always make much sense. Confusing setup is confusing.</li>
</ul>
<p><strong>The Ugly:</strong></p>
<ul>
<li>Receiver can't control the TV via CEC at all. Had to find the proper code for the remote to send IR commands instead. Bad interop!</li>
</ul>
<p>So the usage for controlling everything is much more of a process to be learned. To power everything up with a single button, you have to hit the relevant device button on the Onkyo remote and then the power button. To turn everything off, you have to hit the TV button followed by the power button. When switching inputs, you have to remember to turn off the device you’re no longer watching. Contrast this with using the Harmony route which is a single button push to do any of the above tasks. Adding CEC into the mix does bring some added remote XBMC control features I’ve been wanting, but I can’t see using it as the primary way to manage these devices.</p>
<p>The process has been pretty frustrating to try to sort through overall. My takeaway is that while CEC is an option, vendors tweaking or only partially implementing it can really kill the overall usefulness. I’ll certainly be taking this experience into account whenever I end up purchasing replacement kit and hopefully will find solid hardware with proper standards support.</p>Matthew SchickOur trusty Harmony 880 has decided to start a somewhat rapid plunge into non-usefulness, started with the light no longer coming on when picked up and buttons are taking progressively more pressure to register. Gotten some good years from this remote and generally good experiences from the Harmony line, but with CEC becoming more prevalent I decided to see if I could forego buying another expensive remote and instead use a “standard” route. It almost, kinda works.Maker Farm Prusa I3 Build2013-07-16T14:59:06-04:002013-07-16T14:59:06-04:00https://www.excentral.org/archives/2013/07/16/maker-farm-prusa-i3-build<p>After doing the Wake Robotics build, we got the 3D printer bug pretty bad so I ended up looking for a reasonably priced DIY kit and decided to buy a Maker Farm <a href="http://www.makerfarm.com/index.php/3d-printer-kits/prusa-i3-kit.html">Prusa I3</a>. The I3 offers a simpler build than the previous iteration with better rigidity which translates (in theory at least) to faster and more stable builds.</p>
<p>When I ordered the lead time was a week with roughly a week for shipping (UPS ground from UT), however they managed to get it shipped out within a few days which meant we had a box full of printer bits nearly a week early. Due to Britton and I’s eagerness, we got almost zero pictures of the process, the few we did get are <a href="https://plus.google.com/photos/110678275453348280505/albums/5909561586963860833">here</a>.</p>
<p>The kit as sold with almost everything we needed, just had to pick up a power supply and some glass for the heated bed. I went with the <a href="http://www.amazon.com/gp/product/B004IZN3K2/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B004IZN3K2&linkCode=as2&tag=excentral-20">Antec power supply</a> recommend and a small sheet of glass from Lowe’s which I cut to fit. I also picked up a good soldering gun along with heat shrink tubing and other various useful bits since my supplies were low. Thankfully I’d ordered everything at the same time so we were ready to go when the kit arrived.</p>
<p><rant>The only build instructions are in the form of YouTube videos. There’s a PDF provided with parts needed for each step along with links to the relevant videos and files. The videos aren’t bad, but I would have much preferred written directions with videos to supplement.</rant></p>
<p>Overall the build process was pretty straightforward, however we were fresh off a similar build so most of it was pretty familiar. The videos do assume at least some knowledge of the printer type as well as terminology so we likely would have been a little lost otherwise. The build took us roughly 15 hours over the course of several late nights. It really should have taken us longer. Our haste ended up costing us more time once we started trying to get successful prints, but I’ll get into that more in another post. Britton and I had a blast doing the build, even managed to get Tiff and Blythe involved at a few points.</p>Matthew SchickAfter doing the Wake Robotics build, we got the 3D printer bug pretty bad so I ended up looking for a reasonably priced DIY kit and decided to buy a Maker Farm Prusa I3. The I3 offers a simpler build than the previous iteration with better rigidity which translates (in theory at least) to faster and more stable builds.Fedora 19 Upgrade Gotcha2013-07-08T10:52:44-04:002013-07-08T10:52:44-04:00https://www.excentral.org/archives/2013/07/08/fedora-19-upgrade-gotcha<p>While updating my primary VM server at home, I ran into a problem where dracut failed to mount my partitions when it rebooted into the fedup environment. Turns out dracut changed behavior from f18 > f19 and no longer automatically activates luks/raid/lvm devices at boot. The <a href="https://bugzilla.redhat.com/show_bug.cgi?id=974000" title="Fedora Bug 974000">fix</a> is to edit /etc/default/grub and either add ‘rd.auto=1’ (no longer recommended) or the right combinations of rd.{md,dm,luks.lvm} params (what I did) and all will be well. Hooray for changing defaults that break important stuffs!</p>Matthew SchickWhile updating my primary VM server at home, I ran into a problem where dracut failed to mount my partitions when it rebooted into the fedup environment. Turns out dracut changed behavior from f18 > f19 and no longer automatically activates luks/raid/lvm devices at boot. The fix is to edit /etc/default/grub and either add ‘rd.auto=1’ (no longer recommended) or the right combinations of rd.{md,dm,luks.lvm} params (what I did) and all will be well. Hooray for changing defaults that break important stuffs!OctoPrint Win2013-07-06T17:03:19-04:002013-07-06T17:03:19-04:00https://www.excentral.org/archives/2013/07/06/octoprint-win<p>Just to follow up my <a href="http://www.excentral.org/archives/2013/07/05/wi-fi-3d-printer-prep">previous post</a>, my Raspberry Pi OctoPrint setup worked entirely as advertised. I expected tweaks and problems, but the stack Just Worked and we were able to concentrate on tweaking the various temperature/calibration settings for the printer instead and managed to get some damn good prints for our first real trial. I uploaded timelapse videos generated from OctoPrint to <a href="http://www.youtube.com/playlist?list=PLf-uR2dkNrfzWmmnldQBzUo4oAyAPNZ2z">YouTube</a> for reference.</p>Matthew SchickJust to follow up my previous post, my Raspberry Pi OctoPrint setup worked entirely as advertised. I expected tweaks and problems, but the stack Just Worked and we were able to concentrate on tweaking the various temperature/calibration settings for the printer instead and managed to get some damn good prints for our first real trial. I uploaded timelapse videos generated from OctoPrint to YouTube for reference.Wi-Fi 3D Printer Prep2013-07-04T21:31:49-04:002013-07-04T21:31:49-04:00https://www.excentral.org/archives/2013/07/05/wi-fi-3d-printer-prep<p>With the successful completion of the 3D printer build and the upcoming delivery
of our new <a href="http://www.makerfarm.com/index.php/3d-printer-kits/prusa-i3-kit.html" title="Prusa I3 Kit">3D printer kit</a>, I wanted to find a way to be able to print without
having to keep a full pc connected for the full print. After some research I
found that while Printrun does have a [printrun web ui][web ui], it’s pretty rough still
and a much better option (on the surface) seems to be <a href="http://octoprint.org/">OctoPrint</a>. It’s not just an addon, but rather
a proper full web ui with gcode estimations, camera integration, and pretty
custom command support. It also targets the always excellent <a href="http://www.raspberrypi.org/">Raspberry Pi</a> which makes it pretty much
perfect for our needs.</p>
<p>I tried both <a href="http://pidora.ca/" title="Pidora">Pidora</a> and <a href="http://www.raspbian.org/" title="Raspbian">Raspbian</a> and found the
latter much more to my liking. Unfortunately Pidora insists on including all
the new “helpful” bits from the Fedora desktop builds (firewalld, network
manager, etc.) which make console setup more difficult and waste precious system
memory.</p>
<p>I did the initial setup steps without issue and edited the interfaces file
before popping the sdcard into the Pi and doing the initial boot. Both wifi and
the serial console came up without issue and the official <a href="https://github.com/foosel/OctoPrint/wiki/Setup-on-a-Raspberry-Pi-running-Raspbian" title="OctoPrint Setup">OctoPrint how-to</a> is pretty straightforward. The
only change I made was to install libyaml-dev so the python yaml library would
build against it instead of using it’s python parser. Not really sure if it
makes much difference, but seemed logical that using the library would be more
efficient. Since I had an old Logitech C310 camera, I also set up mjpg-streamer
and enabled integration with OctoPrint without issue.</p>
<p>Added a few init scripts to start OctoPrint and mjpg-streamer, created and
mounted an nfs volume for logs and uploaded gcode, everything looks to be
working as expected. Of course none of this matters if it doesn’t actually
function with a real 3D printer, I’ll be able to do some testing this weekend
with the Wake Robotics printers and hopefully it will all work as it should…</p>
<p><em>Parts List</em></p>
<ul>
<li><a href="http://www.amazon.com/gp/product/B009SQQF9C/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B009SQQF9C&linkCode=as2&tag=excentral-20">Raspberry Pi Model B Revision 2.0 (512MB)</a></li>
<li><a href="http://www.amazon.com/gp/product/B008AGDTA4/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B008AGDTA4&linkCode=as2&tag=excentral-20">PL2303HX USB to TTL to UART RS232 COM Cable module Converter</a></li>
<li><a href="http://www.amazon.com/gp/product/B005P2BY5I/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B005P2BY5I&linkCode=as2&tag=excentral-20">Plugable USB 2.0 4 Port Hub and BC 1.1 Fast Charger with 2.5 Amp Power Adapter, charges Samsung Galaxy S4, iPhone 5, iPad 4, iPad Mini, Nexus 7</a></li>
<li><a href="http://www.amazon.com/gp/product/B003VNKNEG/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B003VNKNEG&linkCode=as2&tag=excentral-20">Transcend 8 GB Class 10 SDHC Flash Memory Card (TS8GSDHC10E)</a></li>
<li><a href="http://www.amazon.com/gp/product/B003LVZO8S/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=B003LVZO8S&linkCode=as2&tag=excentral-20">Logitech HD Webcam C310</a></li>
</ul>Matthew SchickWith the successful completion of the 3D printer build and the upcoming delivery of our new 3D printer kit, I wanted to find a way to be able to print without having to keep a full pc connected for the full print. After some research I found that while Printrun does have a [printrun web ui][web ui], it’s pretty rough still and a much better option (on the surface) seems to be OctoPrint. It’s not just an addon, but rather a proper full web ui with gcode estimations, camera integration, and pretty custom command support. It also targets the always excellent Raspberry Pi which makes it pretty much perfect for our needs.