<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>ClearImagery</title>
    <link rel="alternate" type="text/html" href="http://clearimagery.net/blog/" />
    <link rel="self" type="application/atom+xml" href="http://clearimagery.net/blog/atom.xml" />
    <id>tag:clearimagery.net,2009-08-05:/blog//4</id>
    <updated>2011-04-28T13:09:00Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 5.04</generator>

<entry>
    <title>Making Code Reviews Practical</title>
    <link rel="alternate" type="text/html" href="http://clearimagery.net/blog/2011/04/making-code-reviews-practical.html" />
    <id>tag:clearimagery.net,2011:/blog//4.18</id>

    <published>2011-04-28T03:31:57Z</published>
    <updated>2011-04-28T13:09:00Z</updated>

    <summary><![CDATA[Let me preface this by saying I'm not a code review expert. &nbsp;I just happen to have experienced everything from a very formal code review meeting to a very informal peer-review system. &nbsp;And I like code reviews. &nbsp;No, I love...]]></summary>
    <author>
        <name>Doug Kelly</name>
        
    </author>
    
        <category term="IT" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="codereview" label="Code review" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="programming" label="Programming" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-US" xml:base="http://clearimagery.net/blog/">
        <![CDATA[Let me preface this by saying I'm not a code review expert. &nbsp;I just happen to have experienced everything from a very formal code review meeting to a very informal peer-review system. &nbsp;And I like <a class="zem_slink" href="http://en.wikipedia.org/wiki/Code_review" title="Code review" rel="wikipedia">code reviews</a>. &nbsp;No, I love them. &nbsp;They really do help produce better code overall, and also help developers familiarize themselves with the code. &nbsp;Done properly, it will end up saving the company significant amounts of money and developer time by fixing errors before they make it into production.<div><br /></div><div>So, here's what I've seen. &nbsp;Formal reviews that are checklists and formal meetings are time consuming, but are also very thorough--something that's helpful when you have a detailed set of requirements. &nbsp;Slightly less formal peer audits can be useful, but there are a few problems I've noticed. &nbsp;First of all, depending on who reviews the code, different issues tend to be caught. &nbsp;Theoretically, everyone should be working out of the same guidelines, but different reviewers pick up different things. &nbsp;That's human nature. &nbsp;Also, one book on developing code review standards made a very good point: don't sweat the small stuff. Depending on the circumstances, "small stuff" may have different meanings to different people. &nbsp;For one person, spaces vs. tabs may not be relevant, for others, maybe it's eliminating the requirement for <a class="zem_slink" href="http://en.wikipedia.org/wiki/Hungarian_notation" title="Hungarian notation" rel="wikipedia">Hungarian notation</a>. &nbsp;In either case, you need to figure out what works well for you.</div><div><br /></div><div>Now, here are some of the problems I've seen: the fact that reviews are completed by different people means some people will review a change and approve it with no comments, where others will pick the code to the point where there's nothing left. &nbsp;Even more amusingly are getting comments that are completely unhelpful or wrong on working code, while other code is being checked in that won't even compile. &nbsp;This all boils down to the absence of one particularly vital role: the moderator. &nbsp;The moderator is an independent third party whose job it is to check the comments, ensure they are all applicable, and also ensure all concerns are properly addressed before the review passes. &nbsp;By placing all the power in a single reviewer, you have destroyed the system of checks and balances that would exist otherwise. &nbsp;If the reviewer doesn't like your code for some reason, sorry, but not today.</div><div><br /></div><div>The most effective system I have seen so far was a rather informal system using <a class="zem_slink" href="http://www.atlassian.com/" title="Atlassian" rel="homepage">Atlassian</a>&nbsp;Crucible (yes, I really was pleased with their product), but where reviewers were randomly assigned to the review. &nbsp;Then, a few of the reviewers (a minimum of two) would look over for defects and suggestions. &nbsp;Only defects (such as security issues or gross violations of the standards) needed to be corrected, and suggestions for improvement were left up to the discretion of the programmer. &nbsp;A moderator would observe the comments, decide on which ones were actually necessary to fix, and overall steer the discussion in productive ways. &nbsp;After reaching the minimum number of reviews, the review would be closed with a simple pass/fail status, and re-review would be required for failed status. &nbsp;The moderator would then ensure all comments were appropriately addressed in future reviews.</div><div><br /></div><div>Basically, using this method, reviews were both fast and simple, and didn't waste a large amount of time. &nbsp;At the same time, the comments out of a review were, on the whole, helpful, and provided a forum for a developer to make their point if they disagreed with some of the comments. &nbsp;Take this for what you will, but I have found moderated informal pass-arounds to be the most effective reviews.</div><div class="zemanta-pixie" style="margin-top:10px;height:15px"><br /><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>]]>
        
    </content>
</entry>

<entry>
    <title>Two-Factor Auth with pam_google_authenticator</title>
    <link rel="alternate" type="text/html" href="http://clearimagery.net/blog/2011/03/two-factor-auth-with-pam-google-authenticator.html" />
    <id>tag:clearimagery.net,2011:/blog//4.17</id>

    <published>2011-03-24T05:27:51Z</published>
    <updated>2011-03-24T05:51:31Z</updated>

    <summary><![CDATA[So, this is something pretty spiffy, and a lot of people have set it up already, provided nice walkthroughs, etc. &nbsp;Since there are many good walkthroughs already (like&nbsp;here&nbsp;or&nbsp;here), I won't go into too much detail. &nbsp;It's stunningly simple to set...]]></summary>
    <author>
        <name>Doug Kelly</name>
        
    </author>
    
        <category term="IT" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="google" label="Google" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pam" label="PAM" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="pluggableauthenticationmodules" label="Pluggable Authentication Modules" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="twofactorauthentication" label="Two-factor authentication" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-US" xml:base="http://clearimagery.net/blog/">
        <![CDATA[<p>So, this is something pretty spiffy, and a lot of people have set it up already, provided nice walkthroughs, etc. &nbsp;Since there are many good walkthroughs already (like&nbsp;<a href="http://code.google.com/p/google-authenticator/wiki/PamModuleInstructions">here</a>&nbsp;or&nbsp;<a href="http://www.kgarner.com/blog/archives/2011/02/22/google-authenticator-and-implementing-it-on-linux">here</a>), I won't go into too much detail. &nbsp;It's stunningly simple to set up, if you don't mind manually pulling the module's source out of version control and building it yourself.</p><div><br /></div><div>But, one thing struck me as necessary. &nbsp;I have users that don't use two-factor auth right now, and they may not want to. &nbsp;So, how can I make this optional? &nbsp;Well, PAM makes this pretty painless, although it's not built into the module itself:</div><div><pre>auth    [default=ignore success=1]      pam_succeed_if.so quiet user notingroup secure
auth    required        pam_google_authenticator.so
</pre><div><br /></div><div>That's it. &nbsp;Basically, you have a group "secure," that if users are in, they will be required to use two-factor auth. &nbsp;The way it works is by skipping the following rule if users are not in the "secure" group, but ignoring the result of pam<em>succeed</em>if if they are. &nbsp;Otherwise, they aren't. &nbsp;Get it? &nbsp;Now, this does mean that users need to be manually added to this group in order to be graced with two-factor authentication, but it's still better than nothing. &nbsp;If you're curious about a related enhancement, this&nbsp;<a href="http://code.google.com/p/google-authenticator/issues/detail?id=32">bug report</a>&nbsp;details some additional thoughts on transitioning to two-factor auth.</div></div><div class="zemanta-pixie" style="margin-top:10px;height:15px"><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div><p></p>
]]>
        

    </content>
</entry>

<entry>
    <title>Why People Suck at Driving</title>
    <link rel="alternate" type="text/html" href="http://clearimagery.net/blog/2011/02/why-people-suck-at-driving-1.html" />
    <id>tag:clearimagery.net,2011:/blog//4.16</id>

    <published>2011-02-05T04:10:21Z</published>
    <updated>2011-03-24T05:39:05Z</updated>

    <summary><![CDATA[This shouldn't be a revelation. &nbsp;But in some senses, it is. &nbsp;I've noticed a few trends driving here in the winter.Oh shit, white stuff?&nbsp;(And no, not cocaine, kids.) &nbsp;Really. &nbsp;The moment this mysterious "white stuff" appears, people's brains immediately fly...]]></summary>
    <author>
        <name>Doug Kelly</name>
        
    </author>
    
        <category term="Life" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="baddrivers" label="bad drivers" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="snow" label="snow" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-US" xml:base="http://clearimagery.net/blog/">
        <![CDATA[This shouldn't be a revelation. &nbsp;But in some senses, it is. &nbsp;I've noticed a few trends driving here in the winter.<div><br /></div><div><ol><li><b>Oh shit, white stuff?</b>&nbsp;(And no, not cocaine, kids.) &nbsp;Really. &nbsp;The moment this mysterious "white stuff" appears, people's brains immediately fly out the window, and traffic comes to a grinding halt. &nbsp;The roads could be perfectly fine, but it doesn't matter. &nbsp;Top speeds are 45MPH in a 70.</li><li><b>We don't need no stinkin' brakes!</b>&nbsp;Shortly after the snow has been on the ground, people immediately believe the roads will have magically improved. &nbsp;It could be 1 minute or 1 day after the plows go through, but immediately speeds are back up to and BEYOND the speed limit. &nbsp;All this occurs when there is still visible ice on the roads, so any attempt to stop at those speeds would be an exercise in futility. &nbsp;Also, it follows that extreme tailgating becomes a popular passtime in this phase.</li><li><b>Traction? What's that?</b>&nbsp;&nbsp;It really seems that the people committing offenses #1 and #2 are also the people least suited to be in a snowstorm. &nbsp;That's right, giant SUVs and rear-wheel drive trucks. &nbsp;Most trucks haven't even bothered to weight the bed with any type of snow, and it shows as they fishtail their way down the interstate. &nbsp;Also, I see a surprising number of minivans and SUVs along the side of the road, in rather precarious positions from various spins. &nbsp;I guess the pickups manage to find a way to pull themselves out. &nbsp;Hurrah for that, at least.</li></ol><div>Maybe it's just the county's elitist "I'm better than you, so get out of my way" attitude that is to blame, but really, I'm sick of it. &nbsp;If you're going to drive like an idiot, please do it in the driveway of your mansion so you can kill yourself and not me. &nbsp;Thanks.</div></div><div><br /></div><div><b>Update:</b>&nbsp;Another round of this stuff... and sure enough, wrecks immediately. &nbsp;Always fun when you think, "hm, I think I'll turn here" and your car decides, "hm, no you won't." &nbsp;But hey, I managed to control it and not cause any extra problems. &nbsp;Also, remember kids, the (!) light is the "you're driving awesome" light.</div>]]>
        
    </content>
</entry>

<entry>
    <title>Excess of the Electronics Industry?</title>
    <link rel="alternate" type="text/html" href="http://clearimagery.net/blog/2011/02/excess-of-the-electronics-industry-1.html" />
    <id>tag:clearimagery.net,2011:/blog//4.15</id>

    <published>2011-02-05T03:41:20Z</published>
    <updated>2011-03-24T05:37:35Z</updated>

    <summary><![CDATA[So, it's fairly well known that boards that can be made for pennies on the dollar frequently go for ten times that amount, if not more. &nbsp;To some extent, this is understandable, as a lot of engineering time and labor...]]></summary>
    <author>
        <name>Doug Kelly</name>
        
    </author>
    
        <category term="Life" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="arcadetech" label="arcade tech" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="electronics" label="electronics" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-US" xml:base="http://clearimagery.net/blog/">
        <![CDATA[So, it's fairly well known that boards that can be made for pennies on the dollar frequently go for ten times that amount, if not more. &nbsp;To some extent, this is understandable, as a lot of engineering time and labor went into designing and producing the boards. &nbsp;These costs are forgotten when you evaluate the parts cost per-board. &nbsp;But, at what point is this excessive?<div><br /></div><div>Just the other day, I was troubleshooting a relatively simple board. &nbsp;A set of infrared LEDs and photodiodes, resistor network, some diodes and assorted resistors, a transistor, visible LED, and a single IC. &nbsp;All in all, I would estimate the cost of the board at about $40, assuming you didn't want to mass-produce the PCBs and were silly enough to pay for them one-by-one. &nbsp;The vendor, however (and they are quite reputable, too), wanted $120 for a replacement part.</div><div><br /></div><div>The way the board had failed wasn't terribly uncommon--the output was essentially signaling that an IR beam was being broken at all times. &nbsp;The manufacturer gives a relatively good troubleshooting guide for symptoms and their causes, and sure enough, this lined up with what the device was behaving like. &nbsp;They also give a good set of schematics for the mainboard, but curiously enough, omit schematics for some of the subassemblies. &nbsp;The troubleshooting guide stated something along the lines of, "If you see this condition, the sensor board is bad and should be replaced." &nbsp;This was really fishy to me... no way would the entire board be bad.</div><div><br /></div><div>I check all the photodiodes, and sure enough, they're all receiving the IR beam properly. &nbsp;My next thought from tracing this very simplistic two-layer PCB was that either the IC or the transistor was dead. &nbsp;The transistor seemed to be more related to driving the LED as a visual indicator, so I put my money on the IC. &nbsp;Of course, without a parts list or schematic, determining what this IC was from the chip markings proved a little difficult. &nbsp;After misreading one digit, I determined the part was an 8-channel Darlington sink array. &nbsp;The logic diagram on the datasheet showed exactly what was going on: this was essentially being used as a giant NAND gate (really, more like a negative input logic OR, but who's counting?). &nbsp;I place my order with an electronics supplier for a handful of this IC and the transistor and wait for them to show up. &nbsp;Part cost for the IC? &nbsp;$0.80/ea (for singles). &nbsp;The transistor was even less.</div><div><br /></div><div>Once the parts arrive, I go ahead and decide to swap the IC first. &nbsp;After all, it's socketed, and sure beats desoldering the transistor on the board. &nbsp;I go plug it into the unit for a quick test, and no LED lit. &nbsp;Halfway there, so I break the beam, and the LED lights. &nbsp;Yup. &nbsp;Bad IC. &nbsp;So, for $0.80 in parts, I fixed a board that the manufacturer wanted $120 for. &nbsp;Yeah. &nbsp;Totally makes sense why they wouldn't want to release schematics or parts list, huh?</div><div><br /></div><div>In short, when electronics die, it's often not worth troubleshooting. &nbsp;But if the device is simple and expensive enough, it's quite possible you may be able to beat the game and repair your device for far less than a replacement. &nbsp;In this case, there was absolutely no actual hard work required: just diagramming the circuit used mentally and swapping a socketed IC. &nbsp;Just look before you pitch something and start over.</div>]]>
        
    </content>
</entry>

<entry>
    <title>Automated Lighting</title>
    <link rel="alternate" type="text/html" href="http://clearimagery.net/blog/2010/06/automated-lighting.html" />
    <id>tag:clearimagery.net,2010:/blog//1.14</id>

    <published>2010-06-19T00:13:44Z</published>
    <updated>2010-06-19T00:53:12Z</updated>

    <summary><![CDATA[So, as I mentioned earlier today, over the past few days, I had an idea to automate the lighting in my apartment. &nbsp;After talking with some friends of mine, I finally decided on a rather simple implementation, wiring relays in...]]></summary>
    <author>
        <name>Doug Kelly</name>
        
    </author>
    
        <category term="Life" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="apartment" label="apartment" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="engineering" label="engineering" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="plc" label="plc" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-US" xml:base="http://clearimagery.net/blog/">
        <![CDATA[So, as I mentioned earlier today, over the past few days, I had an idea to automate the lighting in my apartment. &nbsp;After talking with some friends of mine, I finally decided on a rather simple implementation, wiring relays in parallel with the existing lightswitches (so all the lightswitches will continue to operate normally). &nbsp;The relays aren't entirely necessary, since the MicroLogix PLC I'm using has relay outputs, but they do provide an extra layer of safety (not to mention all the signalling is low-voltage, 24vdc). &nbsp;Relays themselves were squeezed into the electrical box where the switches are. &nbsp;Also, all the contacts on the relay use crimp-on quick disconnects.<div><br /></div><div>The ladder logic program I'm using is fairly simple: use timers to create a maximum length of time any light can be on, and also provide an automated mode where the lights cycle between on/off periods. &nbsp;Inputs are wired like pushbuttons to toggle each light, as well as the manual/auto mode. &nbsp;The whole thing works as expected, blinking lights and all. &nbsp;Enjoy some pictures after the break.</div>]]>
        <![CDATA[<a href="http://clearimagery.net/blog/assets_c/2010/06/DSC_0002-29.html" onclick="window.open('http://clearimagery.net/blog/assets_c/2010/06/DSC_0002-29.html','popup','width=3031,height=2006,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://clearimagery.net/blog/assets_c/2010/06/DSC_0002-thumb-400x264-29.jpg" width="400" height="264" alt="Lightswitches and Relays" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a><div><div style="text-align: center;"><font class="Apple-style-span" color="#0000EE"><u><a href="http://clearimagery.net/blog/assets_c/2010/06/DSC_0006-32.html" onclick="window.open('http://clearimagery.net/blog/assets_c/2010/06/DSC_0006-32.html','popup','width=1518,height=1012,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://clearimagery.net/blog/assets_c/2010/06/DSC_0006-thumb-400x266-32.jpg" width="400" height="266" alt="PLC and Power Supply" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></u></font></div><div style="text-align: center;"><font class="Apple-style-span" color="#0000EE"><a href="http://clearimagery.net/blog/assets_c/2010/06/DSC_0008-35.html" onclick="window.open('http://clearimagery.net/blog/assets_c/2010/06/DSC_0008-35.html','popup','width=3031,height=2006,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://clearimagery.net/blog/assets_c/2010/06/DSC_0008-thumb-400x264-35.jpg" width="400" height="264" alt="PLC with Light" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></font></div><a href="http://clearimagery.net/blog/assets_c/2010/06/DSC_0002-29.html" onclick="window.open('http://clearimagery.net/blog/assets_c/2010/06/DSC_0002-29.html','popup','width=3031,height=2006,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"></a><div>Also, a copy of the ladder logic used is available&nbsp;<a href="http://clearimagery.net/lightmgr.pdf">here</a>.</div></div><div><br /></div>]]>
    </content>
</entry>

<entry>
    <title>Finally Done</title>
    <link rel="alternate" type="text/html" href="http://clearimagery.net/blog/2010/06/finally-done.html" />
    <id>tag:clearimagery.net,2010:/blog//1.13</id>

    <published>2010-06-18T22:02:10Z</published>
    <updated>2010-06-18T22:06:55Z</updated>

    <summary><![CDATA[Well, it's official. &nbsp;I'm done with my undergraduate career--my official transcript and diploma arrived in the mail the other day. &nbsp;Work starts Monday, so I'm looking forward to that. &nbsp;Also got to spend some time working on a project around...]]></summary>
    <author>
        <name>Doug Kelly</name>
        
    </author>
    
        <category term="School" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://clearimagery.net/blog/">
        <![CDATA[Well, it's official. &nbsp;I'm done with my undergraduate career--my official transcript and diploma arrived in the mail the other day. &nbsp;Work starts Monday, so I'm looking forward to that. &nbsp;Also got to spend some time working on a project around my apartment, so expect a post on that either later this evening or sometime over the weekend. &nbsp;Pretty much been wrapping up as many loose ends as possible before work starts--still got more to do, but things are definitely moving along.]]>
        
    </content>
</entry>

<entry>
    <title>MicroLogix 1000 and Linux (er, Win7)</title>
    <link rel="alternate" type="text/html" href="http://clearimagery.net/blog/2010/04/micrologix-1000-and-linux-er-win7.html" />
    <id>tag:clearimagery.net,2010:/blog//1.10</id>

    <published>2010-04-14T06:33:39Z</published>
    <updated>2010-04-14T06:48:07Z</updated>

    <summary>So, because I&apos;m a geeky guy, and I wanted something fun to play with (and since I&apos;ve been taking a course on Factory Automation), I went over to America&apos;s junkyard and picked up an Allen-Bradley MicroLogix 1000 PLC on the...</summary>
    <author>
        <name>Doug Kelly</name>
        
    </author>
    
        <category term="Life" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="School" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://clearimagery.net/blog/">
        <![CDATA[So, because I'm a geeky guy, and I wanted something fun to play with (and since I've been taking a course on Factory Automation), I went over to America's junkyard and picked up an Allen-Bradley MicroLogix 1000 PLC on the cheap. &nbsp;Good deal, and while not very featured (doesn't even have analog inputs), it's still something to tinker with. &nbsp;Also had to buy a 24V power supply and a cable to program it with (which pretty much doubled my cost), but anyway, on to the fun stuff.<div><br /></div><div>I'm a Linux user. &nbsp;I prefer it, spend the majority of my day working with it, and don't even have a system that will natively boot to Windows anymore. &nbsp;The one version of Windows I use on any regular basis is a VMware image of Windows 7. &nbsp;Well, with this new PLC, I wanted a way to keep this trend going. &nbsp;Maybe the title is misleading (or I cheated), but... it's the best I can do.</div><div><br /></div><div>First hurdle was USB. &nbsp;The drivers for the chipset (CP2102) weren't in Windows 7, and the provided drivers also wouldn't work... so it was off to the vendor to find something compatible with Win7. &nbsp;That didn't take long, and after a quick reboot, that was up and running.</div><div><br /></div><div>Next, I had to get RSLinx Classic running to allow communication. &nbsp;Setting up a DF1 device is pretty simple in RSLinx, and autoconfiguring communications worked great with the PLC, but in Win7, I was getting an odd "Could not create registry" error. &nbsp;Well, I remembered, it's not running privileged, so I shut it down and restarted it, this time running as an administrator. After I did this, it created the registry and started going, so all was happy there. &nbsp;It also seems that on subsequent starts, it doesn't need to be run privileged anymore, since all the communication parameters are present.</div><div><br /></div><div>Third, I just started up RSLogix Micro Starter Lite (I'm poor and it does what I need). &nbsp;Since everything in RSLinx was good, I just tried going online and uploading the program from the processor to see what was on there, and saw there was a pretty simple program. &nbsp;I mucked around with it a little, forced a few inputs, toggled a couple bits, and saw the state changing appropriately. &nbsp;Satisfied all was well, I decided to write this and get some sleep. &nbsp;But, before I go, I leave you with a pretty picture of my accomplishment. &nbsp;Enjoy.</div><div><br /></div><div><a href="http://clearimagery.net/blog/assets_c/2010/04/plcstuff-26.html" onclick="window.open('http://clearimagery.net/blog/assets_c/2010/04/plcstuff-26.html','popup','width=1024,height=768,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://clearimagery.net/blog/assets_c/2010/04/plcstuff-thumb-400x300-26.png" width="400" height="300" alt="PLC Stuff - RSLogix" class="mt-image-none" style="" /></a></div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>New Car and Ham Radio Install</title>
    <link rel="alternate" type="text/html" href="http://clearimagery.net/blog/2010/04/new-car-and-ham-radio-install.html" />
    <id>tag:clearimagery.net,2010:/blog//1.9</id>

    <published>2010-04-11T21:29:05Z</published>
    <updated>2010-04-11T21:48:32Z</updated>

    <summary><![CDATA[Well, switched out cars today--dad took my old Dodge Neon, I get his old Camry. &nbsp;Not a bad trade overall, and while I owe him some money for it, it's a nice deal. &nbsp;Anyway, of course the first thing I...]]></summary>
    <author>
        <name>Doug Kelly</name>
        
    </author>
    
    
    <content type="html" xml:lang="en-US" xml:base="http://clearimagery.net/blog/">
        <![CDATA[Well, switched out cars today--dad took my old Dodge Neon, I get his old Camry. &nbsp;Not a bad trade overall, and while I owe him some money for it, it's a nice deal. &nbsp;Anyway, of course the first thing I want to do as soon as I have it is throw all my radio gear back in. &nbsp;<div><br /></div><div>My last car ('05 Neon) was a pain to install my radio--running the power back to the battery took much work with a coathanger and patience. &nbsp;This time, the story was quite different. &nbsp;Toyota got a couple things right with the Camry. &nbsp;First, the grommet holding the wiring in place was actually very easy to move out of the way, letting me slide my power cable through, and they gave plenty of room to work in the engine compartment. &nbsp;Then, routing the cables inside the car was very friendly, too--only needed a screwdriver to pop off one cover, and the rest of the paneling was toolless removal. &nbsp;They gave plenty of space to route more cables, including clips to hold things in place. &nbsp;Overall result was a very professional-looking install, with only a tiny bit of wire showing.</div><div><br /></div><div>Anyway, enjoy a few pictures of the car, and some of my own handiwork after the break.</div>]]>
        <![CDATA[<a href="http://clearimagery.net/blog/assets_c/2010/04/DSC_0078-8.html" onclick="window.open('http://clearimagery.net/blog/assets_c/2010/04/DSC_0078-8.html','popup','width=3031,height=2006,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://clearimagery.net/blog/assets_c/2010/04/DSC_0078-thumb-400x264-8.jpg" width="400" height="264" alt="Camry" class="mt-image-none" style="" /></a><div><a href="http://clearimagery.net/blog/assets_c/2010/04/DSC_0080-11.html" onclick="window.open('http://clearimagery.net/blog/assets_c/2010/04/DSC_0080-11.html','popup','width=3031,height=2006,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://clearimagery.net/blog/assets_c/2010/04/DSC_0080-thumb-400x264-11.jpg" width="400" height="264" alt="Camry - Front" class="mt-image-none" style="" /></a></div><div><a href="http://clearimagery.net/blog/assets_c/2010/04/DSC_0085-14.html" onclick="window.open('http://clearimagery.net/blog/assets_c/2010/04/DSC_0085-14.html','popup','width=3031,height=2006,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://clearimagery.net/blog/assets_c/2010/04/DSC_0085-thumb-400x264-14.jpg" width="400" height="264" alt="Wiring - See it?" class="mt-image-none" style="" /></a></div><div><a href="http://clearimagery.net/blog/assets_c/2010/04/DSC_0086-17.html" onclick="window.open('http://clearimagery.net/blog/assets_c/2010/04/DSC_0086-17.html','popup','width=3031,height=2006,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://clearimagery.net/blog/assets_c/2010/04/DSC_0086-thumb-400x264-17.jpg" width="400" height="264" alt="Radio Gear" class="mt-image-none" style="" /></a></div><div><a href="http://clearimagery.net/blog/assets_c/2010/04/DSC_0087-20.html" onclick="window.open('http://clearimagery.net/blog/assets_c/2010/04/DSC_0087-20.html','popup','width=3031,height=2006,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://clearimagery.net/blog/assets_c/2010/04/DSC_0087-thumb-400x264-20.jpg" width="400" height="264" alt="Under the Hood" class="mt-image-none" style="" /></a></div><div><a href="http://clearimagery.net/blog/assets_c/2010/04/DSC_0088-23.html" onclick="window.open('http://clearimagery.net/blog/assets_c/2010/04/DSC_0088-23.html','popup','width=3031,height=2006,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://clearimagery.net/blog/assets_c/2010/04/DSC_0088-thumb-400x264-23.jpg" width="400" height="264" alt="Finished Product" class="mt-image-none" style="" /></a></div><div><br /></div>]]>
    </content>
</entry>

<entry>
    <title>A Beginning</title>
    <link rel="alternate" type="text/html" href="http://clearimagery.net/blog/2009/08/a-beginning.html" />
    <id>tag:clearimagery.net,2009:/blog//1.3</id>

    <published>2009-08-05T23:00:00Z</published>
    <updated>2009-08-05T22:49:59Z</updated>

    <summary><![CDATA[Well, after about five years of not touching a single page on my website, I decided it was time for a fresh start.&nbsp; You can read a bit more about me in the "About" section... and a few things you...]]></summary>
    <author>
        <name>Doug Kelly</name>
        
    </author>
    
        <category term="Life" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-US" xml:base="http://clearimagery.net/blog/">
        <![CDATA[Well, after about five years of not touching a single page on my website, I decided it was time for a fresh start.&nbsp; You can read a bit more about me in the "About" section... and a few things you might expect:<br /><ul><li>I ramble</li><li>I change the topic without any warning</li><li>I will probably go into more detail than you ever cared to know</li></ul>Given this, over the next few weeks and months, hopefully I'll be able to give you a glimpse at some of the things I've accomplished.&nbsp; Right now, as summer's winding down, I've been finishing my internship where I've learned anything from how frustrating certain software packages can be to very intriguing things like control systems security.&nbsp; Along the way, I also had time to develop a simple application called "Acceleroid" to capture accelerometer/GPS data in near-realtime.&nbsp; Blame that on my interest in roller coasters.&nbsp; It's been an experience.<br /><br />Where it goes from here?&nbsp; Who knows, but the journey has to start from somewhere.<br /> ]]>
        
    </content>
</entry>

</feed>
