<?xml version="1.0" encoding="utf-8" ?>

<rss version="0.91" >
<channel>
<title>Technological Musings</title>
<link>http://blog.godshell.com/blog/</link>
<description>Musings, ramblings, rants ...</description>
<language>en</language>
<image>
        <url>http://blog.godshell.com/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Technological Musings - Musings, ramblings, rants ...</title>
        <link>http://blog.godshell.com/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Pebble Review</title>
    <link>http://blog.godshell.com/blog/archives/318-Pebble-Review.html</link>

    <description>
        &lt;p class=&quot;break&quot;&gt;In April of 2012, a &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.kickstarter.com&#039;]);&quot;  target=&quot;_blank&quot; href=&quot;http://www.kickstarter.com&quot;&gt;Kickstarter&lt;/a&gt; project was launched by a company aiming to create an electronic watch that served as a companion to your smartphone.  A month later, the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.kickstarter.com/projects/597507018/pebble-e-paper-watch-for-iphone-and-android&#039;]);&quot;  href=&quot;http://www.kickstarter.com/projects/597507018/pebble-e-paper-watch-for-iphone-and-android&quot;&gt;project&lt;/a&gt; exceeded it&#039;s funding goal by over 100%, closing at over $10 million in pledges.  Happily, I was one of the over 68,000 people that pledged.  I received my Pebble about a month ago or so and I&#039;ve been wearing it ever since.  &lt;br /&gt;&lt;br /&gt;&lt;img width=&quot;220&quot; border=&quot;0&quot; align=&quot;left&quot; hspace=&quot;5&quot; height=&quot;220&quot; src=&quot;uploads/pebble.jpg&quot; alt=&quot;Pebble&quot; title=&quot;pebble.jpg&quot; style=&quot;float: left;&quot; /&gt;The watch itself is fairly simple, a rectangular unit with an e-ink display, four buttons, and a rubberized plastic strap.  The screen resolution is 144x168, plenty of pixels for some fairly impressive detail.  The watch communicates with your mobile phone (Android or iPhone only) via a bluetooth connection.  All software updates and app installation occurs over the bluetooth connection.  There is a 3-axis accelerometer as well a a pretty standard vibrating motor for silent alerts.&lt;br /&gt;&lt;br /&gt;According to the official Pebble FAQ, battery life is 7+ days on a single charge, but this depends on your overall use of the device.  The more alerts your receive, the more the backlight comes on, and the more apps you use on the device, the shorter your battery life.&lt;br /&gt;&lt;br /&gt;Pebble is still in the process of building the initial run of watches for backers.  Black watches, being the majority of the orders, were built first.  Other colors are coming online in more recent weeks.  Pebble has a &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/ispebbleshipping.com&#039;]);&quot;  target=&quot;_blank&quot; href=&quot;http://ispebbleshipping.com&quot;&gt;website&lt;/a&gt; where interested parties can track how many pebbles have been built and shipped.&lt;br /&gt;&lt;br /&gt;I&#039;ve been pretty impressed with the watch thus far.  Pebble has been fairly responsive to inquiries I&#039;ve made, and they seem dedicated to making sure they have a top quality product.  Of course, as is typical on the Internet, not everyone is happy.  There seem to be a lot of complaints about communication, how long it&#039;s taking to get watches, and about the features themselves.&lt;br /&gt;&lt;br /&gt;It&#039;s hard to say whether these complaints have any merit, though.  For starters, I can&#039;t imagine it&#039;s a simple task to design and build 68,000 watches in a short period of time.  And to complicate matters further, it seems that many backers of Kickstarter projects don&#039;t understand the difference between being a backer and being a customer.&lt;br /&gt;&lt;br /&gt;When you back a Kickstarter project, you&#039;re pledging money to help start the project.  As a &amp;quot;reward&amp;quot; for contributing, if the project is successful, you are entitled to whatever the project owners have designated for your level of contribution.  The key part of this being, if the project is successful.  Some projects take longer than others, and times often slip.  That said, I&#039;ve only been part of one Kickstarter that has failed, and even that one is being resurrected by other interested parties.&lt;br /&gt;&lt;br /&gt;But there are some legitimate complaints, some that can be addressed, and others that likely won&#039;t.  For instance, I&#039;ve noticed that with recent firmware releases, the battery life on my watch had dropped considerably.  Based on communication with the developers, they are aware of this and are actively working to resolve it.  I&#039;m not sure what the problem is, exactly, but I&#039;m confident they&#039;ll have it fixed in the next firmware update.&lt;br /&gt;&lt;br /&gt;The battery indicator is a source of frequent discussion.  Right now, there&#039;s no indicator of battery life until the battery is running low.  And that indicator doesn&#039;t show on the watchface, it only shows when you are in other menus.  This, in my opinion, is a poor UI choice.  I&#039;d much rather see a battery indicator option available for the watchface itself.&lt;br /&gt;&lt;br /&gt;Menu layout was also a frequent source of frustration for users.  In previous firmware releases, you had to actively go to the watchface you wanted.  Recent releases changed this so that the watch was the default view and other screens were chosen as needed.  The behavior of the navigation buttons on the watch were also updated to reflect this new choice.&lt;br /&gt;&lt;br /&gt;So Pebble continues to improve over time.  It&#039;s an iterative process that will take some time to get right.  I&#039;m eager to see what future releases will bring.  Next week, Pebble is scheduled to release the watch SDK, allowing users, for the first time, to start adding their own customizations to the watch.&lt;br /&gt;&lt;br /&gt;The Pebble watch has a lot of potential.  As the platform matures, I&#039;m hoping to see a number of features I&#039;m interested in come to fruition.  Interaction between Pebble and other apps on iPhone devices would be a welcome addition.  I would love to see an &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/en.wikipedia.org/wiki/Actigraphy&#039;]);&quot;  href=&quot;https://en.wikipedia.org/wiki/Actigraphy&quot; target=&quot;_blank&quot;&gt;actigraphy&lt;/a&gt; app that uses the Pebble for sleep monitoring.  From what I&#039;ve read, sleep monitoring is even more accurate when the monitor is placed on the sleeper&#039;s wrist.  Seems like a perfect use for the Pebble.&lt;br /&gt;&lt;br /&gt;I&#039;d also like to see more of an open SDK, allowing users such as myself to write code for the Pebble.  While I&#039;m aware of the closed nature of the iPhone platform itself, it is still possible to add applications to the Pebble itself.  I can&#039;t wait to see what others build for this platform.  Given a bit of time, I think this can grow into something even more amazing.&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Customer Dis-Service</title>
    <link>http://blog.godshell.com/blog/archives/317-Customer-Dis-Service.html</link>

    <description>
        &lt;p class=&quot;whiteline&quot;&gt;In general, I&#039;m a pretty loyal person.  Especially when it comes to material things.  I typically find a vendor I like and stick with them.  Sure, if something new and flashy comes along, I&#039;ll take a look, but unless there&#039;s a compelling reason to change, I&#039;ll stick with what I have.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;But sometimes a change is forced upon me.  Take, for instance, this last week.  I&#039;ve been a loyal Verizon customer for … wow, about 15 years or so.  Not sure I realized it had been that long.  Regardless, I&#039;ve been using Verizon&#039;s services for a long time.  I&#039;ve been relatively happy with them, no major complaints about services being down or getting the runaround on the phone.  In fact, my major gripe with them had always been their online presence which seemed to change from month to month.  I&#039;ve had repeated problems with trying to pay bills, see my services, etc.  But at the end of the day, I&#039;ve always been able to pay the bill and move on.  Since that&#039;s really the only thing I used their online service for, I was content to leave well enough alone.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;In more recent months, we&#039;ve been noticing that the 3M DSL service we had is starting to lack a bit.  Not Verizon&#039;s fault at all, but the fault of an increased strain on the system at our house.  Apparently 3M isn&#039;t nearly enough bandwidth to satisfy our online hunger.  That, coupled with the price we were paying, had me looking around for other services.  Verizon still doesn&#039;t offer anything faster than 3M in the area and, unfortunately, the only other service in the area is from a company that I&#039;d rather not do business with if I could avoid it.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;In the end, I thought perhaps I could make some slight changes and at least reduce the monthly bill by a little until we determined a viable solution.  I was considering adding a second DSL line, connected to a second wireless router, to relieve the tension a bit.  This would allow me to avoid that other company and provide the bandwidth we needed.  My wife and I could enjoy our own private upstream and place the rest of the house on the other line.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Ok, I thought, let&#039;s dig into this a bit.  First things first, I decided to get rid of the home phone, or at least transfer it to a cheaper solution.  My cell provider offered a $10/month plan for home phones.  Simple process, port he number over, install this little box in the house, and poof.  Instant savings.  Best part, that savings would be just about enough to get that second DSL line.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Being cautious, and not wanting to end up without a DSL connection, I contacted Verizon.  Having worked for a telco in the past, I knew that some telcos required that you have a home phone line in order to have DSL service.  This wasn&#039;t a universal truth, however, and it was easy enough to verify.  The first call to Verizon went a little sideways, though.  I ended up in an automated system.  Sure, everyone uses these automated systems nowadays, but I thought this one was particularly condescending.  They added additional sound effects to the prompts so that when you answered a question, the automated voice would acknowledge your request and then type it in.  TYPE IT IN.  I don&#039;t know why, but this drove me absolutely crazy.  Knowing that I was talking to a recorded voice and then having that recorded voice playing sounds like they were typing on a keyboard?  Infuriating.  And, on top of it, I ended up in some ridiculous loop where I couldn&#039;t get an operator unless I explicitly stated why I wanted an operator, but the automated system apparently couldn&#039;t understand my request.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Ok, time out, walk away, try again later.  The second time around, I lied.  I ended up in sales, so it seems to have worked.  I explained to the lady on the phone what I was looking for.  I wanted to cancel my home phone and just keep the DSL.  I also wanted to verify that I was not under contract so I wouldn&#039;t end up with some crazy early termination fee.  She explained that this was perfectly acceptable and that I could make these changes whenever I wanted.  I verified again that I could keep the DSL without issue.  She agreed, no problem.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Excellent!  Off I went to the cell carrier, purchased (free with a contract) the new home phone box, and had them port the number.  The representative cautioned that he saw DSL service listed when he was porting and suggested I contact Verizon to verify that the DSL service would be ok.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I called Verizon again to verify everything would work as intended.  I explained what I had done, asked when the port would go through, and stressed that the DSL service was staying.  The representative verified the port date and said that the DSL service would be fine.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;You can guess where this is going, can&#039;t you.  On the day of the port, the phone line switched as expected.  The new home phone worked perfectly and I made the necessary changes to the home wiring to ensure that the DSL connection was isolated away from the rest of the wiring.  DSl was still up, phone ported, everything was great.  Until the next morning.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I woke up the following morning and started my normal routine.  Get dressed, go exercise, etc.  Except that on the way to exercise, I noticed that the router light was blinking.  Odd, I wonder what was going on.  Perhaps something knocked the system online overnight?  The DSL light on the modem was still on, so I had a connection to the DSLAM.  No problem, reboot the router and we&#039;ll be fine.  So, I rebooted and walked away.  After a few minutes I checked the system and noticed that I was still not able to get online.  I walked through a mental checklist and decided that the username and password for the PPPoE connection must be failing.  Time to call Verizon and see what&#039;s wrong.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I contacted Verizon and first spoke to a sales rep who informed me that my services had been cancelled per my request.  Wonderful.  Al that work and they screw it up anyway.  I explained what I had done and she took a deeper look into the account.  Turns out the account was &quot;being migrated&quot; and she apologized for the mixup.  Since I was no longer bundled, the DSL account had to be migrated.  I talked with her some more about it and she decided to send me to technical support to verify everything was ok.  Off I go to technical support, fully expecting them to ask be to reset my DSL modem.  No such luck, however, the technical support rep explained that I had no DSL service.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;And back to sales I went.  I explained, AGAIN, what was going on.  The representative confirmed my story, verified that the account was being migrated, and asked me to check the service again in a few hours.  All told, I spent roughly an hour on the phone with Verizon and missed out on my morning exercise.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;After rushing through the remainder of my morning routine and explaining to my wife why the Internet wasn&#039;t working, I left for work.  My wife checked in a few hours later to let me know that, no, we still did not have an Internet connection.  So I called Verizon again.  Again I&#039;m told I have no service and that I have cancelled them.  Again I explain the problem and what I had done.  And this time, the representative explains to me that they do not offer unbundled DSL service anymore, they haven&#039;t had that service in about a year.  She goes on to offer me a bundled package with a phone line and explains that I don&#039;t have to use the phone line, I just have to pay for it.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;So all of the careful planning I had done was for naught.  In an effort to make sure this didn&#039;t happen to anyone else, the rep checked back on my account to see who had informed me about the DSL service.  According to the notes, however, I had never called about such a thing.  I called to complain about unsolicited phone calls and they referred me to their fraud and abuse office and explains about the magical phone code I could put in to block calls.  Ugh!  She then went on to detail every aspect of my problem, again so someone else didn&#039;t have this problem.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;This is the sort of situation that will, very rapidly, cause me to look elsewhere for service.  And that&#039;s exactly what I did.  I&#039;ve since cut all ties with Verizon and moved on to a different Internet service provider.  I&#039;m not happy with having to deal with this provider, but it&#039;s the only alternative at the moment.  Assuming I don&#039;t have any major problems with the service, I&#039;ll probably continue with them for a while.  Of course, if I run into problems here, the decision becomes more difficult.  A &quot;lesser of two evils&quot; situation, if you will.  But for now, I&#039;ll deal with what comes up.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Programming Note</title>
    <link>http://blog.godshell.com/blog/archives/316-Programming-Note.html</link>

    <description>
        &lt;p class=&quot;break&quot;&gt;In 2012 I posted a little over a dozen entries to this blog.  I like to think that each entry was well thought out and time well spent.  But only a dozen?  That&#039;s about one entry a month...  I&#039;d really like to do more.&lt;br /&gt;&lt;br /&gt;So, new year, time to make some changes..  I spent a lot of time judging whether each post was &quot;worth the effort&quot; and &quot;long enough to matter.&quot;  I need to get past that.  My goal is to start posting a number of smaller entries.  I definitely want the quality to be there, but I want to avoid agonizing over each and every entry.&lt;br /&gt;&lt;br /&gt;So here&#039;s to a new year and more content!&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Derbycon 2012</title>
    <link>http://blog.godshell.com/blog/archives/315-Derbycon-2012.html</link>

    <description>
        &lt;p class=&quot;break&quot;&gt;I spent this past weekend in Louisville, KY attending a relatively new security conference called &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.derbycon.com&#039;]);&quot;  href=&quot;http://www.derbycon.com&quot;&gt;Derbycon&lt;/a&gt;.  This year was the second year they held the conference and the first year I spoke there.  It was amazing, to say the least.&lt;br /&gt;&lt;br /&gt;I haven&#039;t been to many conventions, and this is the only security-oriented convention I&#039;ve attended.  When I first attended last year, it was with come trepidation.  I knew that some of the attendees I&#039;d be seeing were truly rockstars in the security world.  And, unfortunately, one of the people who was supposed to come with us was unable to attend.  Of course, that person was the one person in our group who was connected within the security world and we were depending on them to introduce us to everyone.&lt;br /&gt;&lt;br /&gt;It went well, nonetheless, and we were able to meet a lot of amazing people while we were there.  Going back this year, we were able to rekindle friendships that started last year, and even make a few new ones.  Derbycon has an absolutely amazing sense of family.  Even the true rockstars of the con are down to earth enough to hang out with the newcomers.&lt;br /&gt;&lt;br /&gt;And this year, I had the opportunity to speak.  I submitted my CFP earlier in the year, not really expecting it to be chosen.  Much to my surprise, though, it was.  And so I spent some time putting together my talk and prepared to stand in front of the very people I looked up to.  It was nerve-wracking to say the least.  You can watch the video over on the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.irongeek.com/i.php?page=videos/derbycon2/3-3-5-jason-frisvold-taming-skynet-using-the-cloud-to-automate-baseline-scanning&#039;]);&quot;  href=&quot;http://www.irongeek.com/i.php?page=videos/derbycon2/3-3-5-jason-frisvold-taming-skynet-using-the-cloud-to-automate-baseline-scanning&quot;&gt;Irongeek site&lt;/a&gt;, and you can find the slides in my &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.godshell.com/presentations&#039;]);&quot;  href=&quot;http://www.godshell.com/presentations&quot;&gt;presentation archive&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But I powered through it.  I delivered my talk and while it may not have been the most amazing talk, it was an accomplishment.  I think it&#039;s given me a bit more confidence in my own abilities and I&#039;m looking forward to giving another.  In fact, I&#039;ve since submitted a talk to &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/bit.ly/BSidesDE&#039;]);&quot;  href=&quot;http://bit.ly/BSidesDE&quot;&gt;BSides Deleware&lt;/a&gt; at the behest of the organizers.  I haven&#039;t heard back yet, but here&#039;s hoping.&lt;br /&gt;&lt;br /&gt;I&#039;m already making plans to attend Derbycon 2013 and I hope to be a permanent fixture there for many years to come.  Derbycon is an amazing place to go and something truly magnificent to experience.  I may not be in the security industry, but they made me feel truly welcome despite my often dumb questions and inane comments.  &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/twitter.com/dave_rel1k&#039;]);&quot;  href=&quot;http://twitter.com/dave_rel1k&quot;&gt;Rel1k&lt;/a&gt;, &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/twitter.com/irongeek_adc&#039;]);&quot;  href=&quot;http://twitter.com/irongeek_adc&quot;&gt;IronGeek&lt;/a&gt;, and &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/twitter.com/purehate_&#039;]);&quot;  href=&quot;http://twitter.com/purehate_&quot;&gt;Purehate&lt;/a&gt; have put together something special and I was proud to be a part of it again.&lt;br /&gt;&lt;/p&gt; 
    </description>
</item>
<item>
    <title>So you want to talk at a conference</title>
    <link>http://blog.godshell.com/blog/archives/314-So-you-want-to-talk-at-a-conference.html</link>

    <description>
        &lt;p class=&quot;whiteline&quot;&gt;Last year at this time I was attending an absolutely amazing conference known as &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.derbycon.com&#039;]);&quot;  href=&quot;http://www.derbycon.com&quot;&gt;DerbyCon&lt;/a&gt;.  It was an amazing time where I met some absolutely amazing people and learned amazing things.  Believe me, there was a lot of amazing.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I attended one talk that really got me thinking about blue-team security.  That is, defensive security, basically what I&#039;m all about these days.  And I decided that I wanted to help the cause ..  So, I started putting together the pieces in my head and decided I wanted to do a talk at the following DerbyCon ..&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;And so, when the CFP was placed, I submitted my thoughts and ideas.  Honestly, while I hoped it would be accepted, I didn&#039;t think I had a chance in hell given the talent that talked the previous year..  Boy was I wrong..  Talk accepted.  And so I started putting things together, working on the talk itself, pushing forward the design I wanted for this new tool.  I aimed high and came up a little short..&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;As luck would have it, this past summer was a beast.  Just no time to work on anything in-depth .. And time went by.  And before I knew it, DerbyCon was here..  I did a dry-run of my talk to get some feedback and suggestions.  Total talk time?  15 minutes.  Uhh..  That might be an issue..  50 minute talk window and all..&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;So, back to the drawing board.  Fortunately, I received some awesome feedback and expanded my talk a bit.  The revised edition should be a bit longer, I would hope..  I&#039;ll find out tomorrow.  I&#039;m talking at 2pm.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I&#039;m terrified.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;But I&#039;m surrounded by some of the most awesome people I have ever met.  I&#039;ll be fine..  I hope..&lt;/p&gt; 
    </description>
</item>
<item>
    <title>The Future of Personal Computers</title>
    <link>http://blog.godshell.com/blog/archives/297-The-Future-of-Personal-Computers.html</link>

    <description>
        &lt;p class=&quot;whiteline&quot;&gt;The latest version of OS X, Mountain Lion, has been out for a few months and the next release of Windows, Windows 8, will be out very soon.  These operating systems continue the trend of adding new and radical features to a desktop operating system, features we&#039;ve only seen in mobile interfaces.  For instance, OS X has the launchpad, an icon-based menu used for launching applications similar to the interface used on the iPhone and iPad.  Windows 8 has their new Metro interface, a tile-based interface first seen on their Windows Mobile operating system.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;As operating systems evolve and mature, we&#039;ll likely see more of this.  But what will the interface of the future look like?  How will we be expected to interact with the computer, both desktop and mobile, in the future?  There&#039;s a lot out there already about how computers will continue to become an integral part of daily life, how they&#039;ll become so ubiquitous that we won&#039;t know we&#039;re actually using them, etc.  It&#039;s fairly easy to argue that this has already happened, though.  But putting that aside, I&#039;m going to ramble on a bit about what I think the future may hold.  This isn&#039;t a prediction, per se, but more of what I&#039;m thinking we&#039;ll see moving forward.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;So let&#039;s start with today.  Touch-based devices such as IOS and Android based devices have become the standard for mobile phones and tablets.  In fact, the Android operating system is being used for much more than this, appearing in game consoles such as the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.ouya.tv&#039;]);&quot;  target=&quot;_blank&quot; href=&quot;http://www.ouya.tv&quot;&gt;OUYA&lt;/a&gt;, as the operating system behind Google&#039;s &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/plus.google.com/+projectglass&#039;]);&quot;  target=&quot;_blank&quot; href=&quot;https://plus.google.com/+projectglass&quot;&gt;Project Glass&lt;/a&gt; initiative, and more.  It&#039;s not much of a surprise, of course, as Linux has been making these in-roads for years and Android is, at it&#039;s core, an enhanced distribution of Linux designed for mobile and embedded applications.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;The near future looks like it will be filled with more touch-based interfaces as developers iterate and enhance the current state of the art.  I&#039;m sure we&#039;ll see streamlined multi-touch interfaces, novel ways of launching and interacting with applications, and new uses for touch-based computing.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;For desktop and laptop systems, the traditional input methods of keyboards and mice will be enhanced with touch.  We see this happening already with Apple&#039;s Magic Mouse and Magic Pad.  Keyboards will follow suit with enhanced touch pads integrated into them, reducing the need to reach for the mouse.  And while some keyboard exist today with touchpads attached already, I believe we&#039;ll start seeing tighter integrations with multi-touch capabilities.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;We&#039;re also starting to see the beginnings of gesture-based devices such as Microsoft&#039;s Kinect.  Microsoft bet a lot on Kinect as the next big thing in gaming, a direct response to Nintendo&#039;s Wii and Sony&#039;s Move controllers.  And since the launch of Kinect, hobbyists have been hacking away, adding Kinect support to &quot;traditional&quot; computer operating systems.  Microsoft has responded, releasing a development kit for Windows and designing a Kinect intended for use with Dekstop operating systems.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Gesture based interfaces have long been perceived as the ultimate in computer interaction.  Movies such as Minority Report and Iron Man have shown the world what such interfaces may look like.  But life is far different from a movie.  Humans were not designed to hold their arms in a horizontal position for long periods of time, a syndrome known as &quot;&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/catb.org/jargon/html/G/gorilla-arm.html&#039;]);&quot;  target=&quot;_blank&quot; href=&quot;http://catb.org/jargon/html/G/gorilla-arm.html&quot;&gt;Gorilla Arm&lt;/a&gt;.&quot;  Designers will have to adapt the technology in ways that work around these physical limitations.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Tablet computers work well at the moment because most interactions with them are on a horizontal and not vertical plane, thus humans do not need to strain themselves to use them.  Limited applications, such as ATMs, are more tolerant of these limitations since the duration of use is very low.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Right now we&#039;re limited to 2D interfaces for applications.  How will technology adapt when true 3D display exist?  It stands to reason that some sort of gesture interface will come into play, but in what form?  Will we have interfaces like those seen in Iron Man?  For designers, such an interface may provide endless insight into new designs.  Perhaps a merging of 2D and 3D interfaces will allow for this.  We already have 3D renderings in modern design software, but allowing such software to render in true 3D where the designer can move their head instead of their screen to interact?  That is truly a breakthrough.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;What about mobile life?  Will touch-based interfaces continue to dominate?  Or will wearable computing with HUD style displays become the new norm?  I&#039;m quite excited at the prospect of using something such as Google&#039;s Project Glass in the near future.  The cost is still prohibitive for the average user, but it&#039;s still far below the cost of similar cutting edge technologies a mere 5 years ago.  And prices will continue to drop.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;Perhaps in the far future, 20+ years from now, the input device will be our own bodies, ala Kinect, with a display small enough that it&#039;s embedded in our eyes, or inserted as a contact lens.  Maybe in that timeframe, we truly become one with the computer and transform from mere humans into cyborgs.  There will always be those who won&#039;t follow suit, but for those of us with the interest and the drive, those will be interesting times, won&#039;t they.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Jumping The Gap</title>
    <link>http://blog.godshell.com/blog/archives/313-Jumping-The-Gap.html</link>

    <description>
        &lt;p class=&quot;whiteline&quot;&gt;I listened to a news story on NPR&#039;s On The Media recently about &quot;&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.onthemedia.org/2012/aug/10/assessing-true-threat-cyberwar/&#039;]);&quot;  href=&quot;http://www.onthemedia.org/2012/aug/10/assessing-true-threat-cyberwar/&quot;&gt;Cyber Warfare&lt;/a&gt;&quot; and assessing it&#039;s true threat.  On the one hand, it seemed like another misguided report from a clueless news media.  On the other hand, though, it did make me think a bit.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Much of the talk about Cyber Warfare revolves around attacking the various &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/en.wikipedia.org/wiki/SCADA&#039;]);&quot;  href=&quot;https://en.wikipedia.org/wiki/SCADA&quot;&gt;SCADA&lt;/a&gt; systems used to control the nation&#039;s physical infrastructure.  By today&#039;s standards, many of these systems are quite primitive.  Many of these systems are designed for a very specific purpose, rarely upgraded to run on modern operating systems, and very rarely, if ever, designed to be secure.  The state of the art in security for many of these systems is to not allow outside access to the system.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Unfortunately, if numerous reports are to be believed, a good portion of the world&#039;s infrastructure is connected to the Internet in one manner or another.  The number of institutions that truly &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/en.wikipedia.org/wiki/Air_gap_%28networking%29&#039;]);&quot;  href=&quot;https://en.wikipedia.org/wiki/Air_gap_%28networking%29&quot;&gt;air gap&lt;/a&gt; their critical networks is alarmingly low.  A researcher from IO Active, who &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.onthemedia.org/blogs/on-the-media/2012/aug/10/eireann-leverett-and-shodan/&#039;]);&quot;  href=&quot;http://www.onthemedia.org/blogs/on-the-media/2012/aug/10/eireann-leverett-and-shodan/&quot;&gt;provided&lt;/a&gt; some of the information for the aforementioned NPR article, used &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.shodanhq.com/&#039;]);&quot;  href=&quot;http://www.shodanhq.com/&quot;&gt;SHODAN&lt;/a&gt; to scour the Internet for SCADA systems.  Why use SHODAN?  Turns out, the simple act of scanning the Internet for these systems often resulted in the target systems crashing and going offline.  If a simple network scan can kill one of these systems, then what hope do we have?&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;But, air gapping is by no means a guarantee against attacks since users of these systems may regularly switch between connected and non-connected systems and use some form of media to transfer files back and forth.  There is precedence for this with the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/en.wikipedia.org/wiki/Stuxnet&#039;]);&quot;  href=&quot;https://en.wikipedia.org/wiki/Stuxnet&quot;&gt;Stuxnet&lt;/a&gt; virus.  According to &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.ndu.edu/press/stuxnet-and-strategy.html&#039;]);&quot;  href=&quot;http://www.ndu.edu/press/stuxnet-and-strategy.html&quot;&gt;reports&lt;/a&gt;, the Iranian nuclear facility was, in fact, air gapped.  However, Stuxnet was designed to replicate onto USB drives and other media.  Plug an infected USB drive into a targeted SCADA system and poof, instant infection across an air gapped system.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;So what can be done here?  How do we keep our infrastructure safe from attackers?  Yes, even &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.nytimes.com/2012/08/08/us/pacifists-who-broke-into-nuclear-weapon-facility-due-in-court.html?_r=1&#039;]);&quot;  href=&quot;https://www.nytimes.com/2012/08/08/us/pacifists-who-broke-into-nuclear-weapon-facility-due-in-court.html?_r=1&quot;&gt;aging attackers&lt;/a&gt;…&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Personally, I believe this comes down, again, to Defense in Depth.  With the exception of not building it in the first place, I don&#039;t believe that there is a way to prevent attacks.  And any determined attacker will eventually get in, given time.  So the only way to defend against this is to build a layered defense grid with a full monitoring back end.  Expect that attackers will make it through one or two layers before being detected.  Determined attackers may make it even further.  But if you build you defenses with this in mind, you will stand a better chance at detecting and repelling these attacks.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;I don&#039;t believe that air gapping systems is a viable security strategy.  If anything, it can result in a false sense of security for users and administrators.  After all, if the system isn&#039;t connected, how can it possibly be infected?  Instead, start building in security from the start and deploy your defense in monitored layers.  It works.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Multiple Personalities With The Linux Kernel</title>
    <link>http://blog.godshell.com/blog/archives/312-Multiple-Personalities-With-The-Linux-Kernel.html</link>

    <description>
        &lt;p class=&quot;whiteline&quot;&gt;Virtualization is all the rage these days.  Taking a single computer system and installing multiple &quot;guest&quot; operating systems on it.  The benefits are a reduced footprint and better utilization of existing resources.  There is a danger, however, in having many systems dependent on a single piece of hardware.  The solution, of course, is to use multiple pieces of hardware and allow your &quot;guests&quot; to be moved between the individual hardware units, thus making the system more resilient to failure.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I&#039;ve started playing a bit with virtualization, specifically, &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/en.wikipedia.org/wiki/Kernel-based_Virtual_Machine&#039;]);&quot;  href=&quot;https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine&quot;&gt;KVM virtualization&lt;/a&gt;.  For my purposes, I&#039;m using &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.centos.org/&#039;]);&quot;  href=&quot;https://www.centos.org/&quot;&gt;CentOS&lt;/a&gt; 6.x on a 64-bit capable system.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;The hypervisor itself is a standard CentOS base install with the addition of kvm and various management packages.  I installed the hypervisor on a RAID1 LVM, allowing me some room to grow if necessary, and reserving the remainder of the hard drive for virtual hosts.  While you can use binary blobs for virtual disk, I prefer using a raided LVM which gives me the ability to grow the disk if necessary as well as minor bumps in speed.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Using yum, adding KVM to an existing installation is a pretty straightforward process :&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;blockquote&gt;yum install virt-manager libvirt libvirt-python python-virtinst&lt;/blockquote&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;That should take care of any dependencies required to get KVM virtualization up and running.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Next up, we need to tackle networking.  There are many, many different configurations, far too many to go through here.  So, I&#039;m going to keep it simple.  For my purposes, I need a single connection to the outside network, all in the same VLAN, as well as a local NAT for some VMs that I need local access to, but that don&#039;t need to be accessed via the Internet.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Setting this up is brilliantly simple.  First, copy the /etc/sysconfig/network-scripts/ifcfg-eth0 file to /etc/sysconfig/network-scripts/ifcfg-br0.  Next, edit the ifcfg-eth0 file.  You&#039;ll need to remove a bunch of lines and add a BRIDGE line as follows :&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;blockquote&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;DEVICE=&quot;eth0&quot;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;BRIDGE=&quot;br0&quot;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;HWADDR=&quot;00:11:22:33:44:55&quot;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;ONBOOT=&quot;yes&quot;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;/blockquote&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Next, edit the ifcfg-br0 file.  All you really need to do here is change the DEVICE= line to reflect br0.  I also recommend disabling NM_CONTROLLED … NetworkManager shouldn&#039;t be installed anyway since you used a base install, but better safe than sorry. In the end, the ifcfg-br0 file should look something like this :&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;blockquote&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;DEVICE=&quot;br0&quot;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;BOOTPROTO=&quot;static&quot;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;BROADCAST=&quot;204.10.167.63&quot;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;IPADDR=&quot;204.10.167.50&quot;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;NETMASK=&quot;255.255.255.192&quot;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;ONBOOT=&quot;yes&quot;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;TYPE=&quot;Bridge&quot;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;DELAY=&quot;0&quot;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;/blockquote&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Restart networking and you&#039;ll be all set.  The NAT portion of this is handled by KVM itself, so there&#039;s nothing to do there.  And networking should be all ready to go.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Without guests, however, all you have is a basic Linux system with a few extra packages taking up space.  The real magic starts when you create and install your first VM.  My recommendation is to start with creating a template system you can clone later rather than hand-installing every single VM.  To install the template, first decide on the base disk size.  I&#039;m using 15 GB volumes which is more than enough for the base install and leaves room for most basic server configurations.  If you need more space, you can attach additional disks later.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I&#039;m not going to go into how I set up LVM, there are plenty of tutorials out there.  For the purposes of this article, I have a volume group names vg_libvirt where I plan to store all of the virtual machines.  So first we create the disk necessary for the template :&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;blockquote&gt;lvcreate -L15G -n template_base vg_libvirt&lt;/blockquote&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Next we install the OS.  virt-install is essentially a wrapper script that sets all the necessary values within KVM to get you going.  After the settings are configured and the VM is started, girt-installer will automatically attach you to the VM console.  The full command I used to install is as follows :&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;blockquote&gt;virt-install --accelerate --hvm --connect qemu:///system --network bridge:bra --name template --ram 512 --disk=/dev/mapper/vg_libvirt-template_base --vcpus=1 --check-cpu --nographics --extra-args=&quot;console=ttyS0 text&quot; --location=/tmp/CentOS-6.2-x86_64-bin-DVD1.iso&lt;/blockquote&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Since this is effectively a text install, you do run into a bit of a problem.  Namely, you can&#039;t configure the drives the way you want.  There is a way around this, though it takes a bit of work.  Of course, since you&#039;re creating a template, the little bit of work now is easily made up for later.  So, here&#039;s how I handled the drive configuration.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;First, run through a basic install using the above install method.  Once you&#039;re up and running, log into the new VM and head to the root home directory.  In that directory you&#039;ll find a kickstart file called anaconda-ks.cfg.  Make a local copy of that file and shut down the VM.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;The kickstart file gives you the basic parameters that CentOS used to configure the system.  You can edit this file and use it yourself to automatically install and configure systems.  For our purposes, we&#039;re interested in editing the drive configuration and then using the kickstart file to create the template.  So, edit the file and set the parameters as you see fit.  An example is as follows :&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;blockquote&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;# Kickstart file automatically generated by anaconda.&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;#version=DEVEL&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;install&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;cdrom&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;lang en_US.UTF-8&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;keyboard us&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;network --onboot no --device eth0 --noipv4 --noipv6&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;rootpw  --iscrypted somerandomstringthatiwontrevealtoyoubutnicetry&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;firewall --service=ssh&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;authconfig --enableshadow --passalgo=sha512&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;selinux --enforcing&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;timezone --utc America/New_York&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;bootloader --location=mbr --driveorder=vda --append=&quot; console=ttyS0 crashkernel=auto&quot;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;# The following is the partition information you requested&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;# Note that any partitions you deleted are not expressed&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;# here so unless you clear all partitions first, this is&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;# not guaranteed to work&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;clearpart --all --drives=vda&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;part /boot --fstype=ext4 --size=500&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;part swap --size=2048&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;part pv.253002 --grow --size=1&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;volgroup VolGroup --pesize=4096 pv.253002&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --size=4096&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;logvol /tmp --fstype=ext4 --name=lv_tmp --vgname=VolGroup --size=2048&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;logvol /var --fstype=ext4 --name=lv_var --vgname=VolGroup --size=4096&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;logvol /home --fstype=ext4 --name=lv_home --vgname=VolGroup --size=2048&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;#repo --name=&quot;CentOS&quot;  --baseurl=cdrom:sr0 --cost=100&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;%packages --nobase&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;@core&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;%end&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;/blockquote&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Once you have this, you can re-run the girt-install command from above with a slight tweak to make the install use the kickstart file you created (I named it kick1.ks) :&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;blockquote&gt;virt-install --accelerate --hvm --connect qemu:///system --network bridge:bra --name template --ram 512 --disk=/dev/mapper/vg_libvirt-template_base --vcpus=1 --check-cpu --nographics --initrd-inject=/path/to/kick1.ks --extra-args=&quot;ks=file:/kick1.ks console=ttyS0 text&quot; --location=/tmp/CentOS-6.2-x86_64-bin-DVD1.iso&lt;/blockquote&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;This will nuke the existing VM and replace it with one configured with the drive partitions as set in the kickstart file.  And now you almost have a template.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;You could use this new VM as a clone, but if you&#039;ve set an IP on it, you&#039;ll run into duplicate IP problems.  SSH keys on the machine will be cloned, making all of your systems contain the same keys.  And other machine-specific settings will be cloned as well.  This can be worked around, though.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I recommend that you first configure this new template with the basic settings you want on all of your VMs.  For instance, if you&#039;re using Spacewalk for server management, you can install all of the necessary spacewalk binaries.  You can configure a standard iptables template for the system.  Maybe you have some standard security software you use such as OSSEC.  And, of course, create the standard users on the system so you don&#039;t have to create them each time you clone the VM.  Once everything is installed and running how you want it, perform the following actions to make the template :&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;blockquote&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;touch /.unconfigured&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;rm -rf /etc/ssh/ssh_host_*&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;poweroff&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;/blockquote&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;The VM will power down and you&#039;ll have your template.  Cloning this to a new VM is quick and simple.  First, create the new logical volume as we did before.  Next, clone the VM to the new drive :&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;blockquote&gt;virt-clone -o template -n new_vm -f /dev/mapper/vg_libvirt-new_vm_base&lt;/blockquote&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Simple enough, right?  Run this command and when it completed, you can start the VM and connect to the console.  You&#039;ll be greeted with the standard first boot process and then dropped at a login prompt.  Congratulations, you now have a VM.  Set the IP, configure whatever services you need, and you&#039;re off to the races.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;If you need to modify the RAM, number of CPUs, etc., then use the virsh command on the hypervisor.  You&#039;ll need to shut down the VM and restart it in order for these changes to take effect.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;And that&#039;s really all there is to it.  The VMs themselves can be treated as self-contained systems with no special care necessary …  One note, however.  If you reboot the hypervisor, the VMs are paused before rebooting and resumed after reboot.  This leads to an interesting problem in that the uptime on a VM can easily exceed that of the hypervisor.  Be aware of this and don&#039;t depend on a VMs uptime to be accurate.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Who's Problem Is It Anyway?</title>
    <link>http://blog.godshell.com/blog/archives/311-Whos-Problem-Is-It-Anyway.html</link>

    <description>
        &lt;p class=&quot;whiteline&quot;&gt;This week, Adobe &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/blogs.adobe.com/psirt/2012/06/adobe-photoshop-and-illustrator-security-bulletins-updated.html&#039;]);&quot;  href=&quot;https://blogs.adobe.com/psirt/2012/06/adobe-photoshop-and-illustrator-security-bulletins-updated.html&quot;&gt;released&lt;/a&gt; a security patch for their CS5 product line.  While Adobe releasing security patches isn&#039;t really that surprising given their track record with vulnerable products, what is somewhat surprising are the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.macworld.com/article/1166779/adobe_will_issue_free_security_patches_for_high_profile_creative_suite_apps.html&#039;]);&quot;  href=&quot;https://www.macworld.com/article/1166779/adobe_will_issue_free_security_patches_for_high_profile_creative_suite_apps.html&quot;&gt;circumstances&lt;/a&gt; surrounding the patch.  Adobe released the patch somewhat reluctantly.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Sometime in May, possibly earlier, Adobe was made aware of a fairly severe security vulnerability in their CS5 product line.  A specially crafted image file was enough to compromise the victim&#039;s computer.  Obviously this is a pretty severe flaw and should be fixed ASAP, right?  Well, Adobe didn&#039;t really see it that way.  Their initial response to the problem was that users who wanted a fixed version would have to pay to upgrade to the CS6 product line, in which the flaw was patched.  Eventually they decided to backport the patch to the CS5 version.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Adobe&#039;s initial response and their &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/highedwebtech.com/2012/05/12/adobe-reverses-course-on-photoshop-security-patches/&#039;]);&quot;  href=&quot;http://highedwebtech.com/2012/05/12/adobe-reverses-course-on-photoshop-security-patches/&quot;&gt;eventual capitulation&lt;/a&gt; leads to a broader discussion.  Given any security problem, or even any bug in general, who is responsible for fixing it?  The vendor, of course, right?  Well...  Maybe?&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;In a perfect world, there would be no bugs, security or otherwise.  In a slightly less perfect world, all bugs would be resolved before a product is retired.  But neither world exists and bugs seem to prevail.  So, given that, who&#039;s problem is it anyway?&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;There are a lot of justifications vendors make as to when they&#039;ll patch, how they&#039;ll support something, and, of course, excuses.  It&#039;s not an easy problem for vendors, though, and some vendors put a lot of thought into their policies. They don&#039;t always get them right, and there&#039;s never a way to make everyone happy.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Patching generally follows a product lifecycle.  While the product is supported, patching happens as a normal course of business.  When a product is retired, some companies put together a support plan with For instance, when &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.cisco.com/&#039;]);&quot;  href=&quot;https://www.cisco.com/&quot;&gt;Cisco&lt;/a&gt; announces that a product has entered the End-of-Life cycle, they lay out a multi-year plan for support.  Typically this involves regular software maintenance for a year, security releases for 2-3 years, and then hardware maintenance for the remainder.  This gives businesses ample time to deal with finding a suitable replacement.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Unfortunately, not all vendors act responsibly and often customers are left high and dry when a product is suddenly obsoleted.  Depending on the vendor, this sometimes leads to discussions about the possibility of legislation forcing vendors to support products, or to at least address security vulnerabilities.  If something like this were to pass, where does it end?  Are vendors forced to support products forever?  Should they only have to fix severe security problems?  And what constitutes a severe security problem?&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;There are a multitude of reasons that bugs, security or otherwise, are not dealt with.  Some justifiable, others not.  Working in networking, the primary excuse I&#039;ve heard from hardware vendors over the year is that the management interface of their product is not intended to be on a public network where it can be attacked.  Or that the management interfaces should be put behind a firewall where it can&#039;t be attacked.  These excuses are garbage, of course, but some vendors just continue to give them.  And, unfortunately, you&#039;re not always in a position to drop a vendor and move elsewhere.  So, we do what we can to secure the systems and move on.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;And sometimes the problem isn&#039;t the vendor, but the customer.  How long has it been since Microsoft phased out older versions of it&#039;s Windows operating system?  Windows XP is relatively recent, but it&#039;s been a number of years since Windows 2000 was phased out.  Or how about Windows 98, 95, and even Windows NT?  And customers still have these deployed in their networks.  Hell, I know of at least one OS/2 Warp system that&#039;s still deployed in a Telco Central Office!&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;There is a basis for some regulation, however, and it may affect vendors.  When the security of a particular product can significantly impact the public, it can be argued that regulation is necessary.  The poster child for this argument are SCADA systems which seem to be perpetually riddled with security holes, mostly due to outdated operating systems.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/en.wikipedia.org/wiki/SCADA&#039;]);&quot;  href=&quot;https://en.wikipedia.org/wiki/SCADA&quot;&gt;SCADA systems&lt;/a&gt; are what typically control the electrical grid or nuclear power plants.  For obvious reasons, security problems with these systems are a deadly serious problem.  I often hear that these systems should be air gapped from the Internet, but the lure of easy access and control often pushes users to ignore this advice.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;So should SCADA systems be regulated?  It&#039;s obvious that the regulations in place already for the industries they are used in aren&#039;t working, so what makes us think that more regulation will help?  And if we regulate and force vendors to provide patches for security problems, what makes us think that industries will install them?&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;This is a complex problem and there are no easy answers.  The best we can hope for is a competent administrator who knows how to handle security and deal with threats properly.  Until then, let&#039;s hope for incompetent criminals.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Protecting Sources in the 21st Century</title>
    <link>http://blog.godshell.com/blog/archives/310-Protecting-Sources-in-the-21st-Century.html</link>

    <description>
        &lt;p class=&quot;whiteline&quot;&gt;Trust is key in many situations.  This can be especially true for journalists interested in reporting on sensitive matters.  If journalists couldn&#039;t be trusted to protect the identity of their confidential sources, many news items we take for granted would never have been written, or perhaps they wouldn&#039;t have included some of the crucial information they revealed.  For instance, much of the critical information about the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/en.wikipedia.org/wiki/Watergate&#039;]);&quot;  href=&quot;https://en.wikipedia.org/wiki/Watergate&quot;&gt;Watergate scandal&lt;/a&gt; was given to reporters by a confidential source who went by the name of &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/en.wikipedia.org/wiki/Deep_Throat&#039;]);&quot;  href=&quot;https://en.wikipedia.org/wiki/Deep_Throat&quot;&gt;Deep Throat&lt;/a&gt;.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Until recently, reporters made contact with their sources via anonymous phone calls, often from pay phones, secret meetings, and &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/en.wikipedia.org/wiki/Dead_drop&#039;]);&quot;  href=&quot;https://en.wikipedia.org/wiki/Dead_drop&quot;&gt;dead drops&lt;/a&gt;.  The identify of sources could be kept secret fairly easily, especially if the meetings were carefully conducted in such a manner as to leave little or no trail for anyone to follow.  This meant avoiding the use of phones as they were traceable.  Additionally, many journalists were willing to risk jail time instead of revealing their sources.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;With the advent of the Internet, it became possible to contact sources, both local and distant, quickly and conveniently via email or some form of instant messaging.  The ability to reach out to a source and get an almost immediate answer means journalists can quickly deal with rapidly evolving stories.  The anonymity of the Internet means that sources stay anonymous.  It&#039;s a win-win situation.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Or is it…&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I was listening to an On The Media podcast recently and they featured a story about how reporters using the Internet are, in some cases, exposing their contacts without meaning to, often without even knowing it.  You can listen to the story below or read the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.onthemedia.org/2012/apr/27/reporters-unwittingly-exposing-sources/transcript/&#039;]);&quot;  href=&quot;http://www.onthemedia.org/2012/apr/27/reporters-unwittingly-exposing-sources/transcript/&quot;&gt;transcript&lt;/a&gt;.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;iframe width=&quot;474&quot; height=&quot;54&quot; frameborder=&quot;0&quot; src=&quot;http://www.onthemedia.org/widgets/ondemand_player/#file=%2Faudio%2Fxspf%2F204629%2F;containerClass=onthemedia&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Before the Internet, phone conversations were sometimes considered an acceptable risk for contacting sources.  After all, tracing a phone call was something it generally took a court order to accomplish.  The Internet, however, is a completely different beast.  Depending on the communications software used, tracing the owner of an account can be accomplished very easily by just about anyone.  Software such as &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.netglub.org/&#039;]);&quot;  href=&quot;http://www.netglub.org/&quot;&gt;Netglub&lt;/a&gt; or &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.paterva.com/&#039;]);&quot;  href=&quot;http://www.paterva.com/&quot;&gt;Maltego&lt;/a&gt; can be used to quickly gather Intel on someone, starting with something as small and simple as a single email address.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Email accounts are generally accessible from anywhere in the world, protected by only a username and password.  &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/en.wikipedia.org/wiki/Brute-force_search&#039;]);&quot;  href=&quot;https://en.wikipedia.org/wiki/Brute-force_search&quot;&gt;Brute forcing&lt;/a&gt; software can be used to crack a password in a relatively short time allowing someone direct access to the mail stored in the account.  And if the mail is sent in clear text, someone trying to identify the source can easily read email sent between the reporter and their source without anyone being the wiser.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Other accounts can be similarly attacked.  The end result of identifying the source can be mere embarrassment, or perhaps the source losing their job.  Or, as is often the case when foreign news sources are involved, the source can be hunted down and killed.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;For a reporter, protecting a source has always been important, but in some cases, it&#039;s a matter of life and death.  In the past few years, unrest overseas in places such as Iran, Egypt, Syria, and others has shown that secure communication methods are necessary to help save the lives of those fighting for change.  Governments have been ruthless in hunting down and eliminating those who would oppose them.  Using secure methods for communication have become lifelines for opposition forces.  Likewise, reporters and anyone else who interacts with these sorts of contacts should also be using whatever methods of security they can to ensure that their sources are protected.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Towards Building More Secure Networks</title>
    <link>http://blog.godshell.com/blog/archives/309-Towards-Building-More-Secure-Networks.html</link>

    <description>
        &lt;p class=&quot;whiteline&quot;&gt;It is no surprise that security is at the forefront of everyone&#039;s minds these days.  With high profile breaches, to script kiddies wreaking havoc across the Internet, it is obvious that there are some weaknesses that need to be addressed.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;In most cases, complete network redesigns are out of the question.  This can be extremely invasive and costly.  However, it may be possible to augment the existing network in such a manner as to add additional layers of security.  It&#039;s also possible that this may lead to the possibility of being able to make even more changes down the road.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;So what do I mean by this?  Allow me to explain...&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Many networks are fairly simple with only a few subnets, typically a user and a server subnet.  Sometimes there&#039;s a bit of complexity on the user side, creating subnets per department, or subnets per building.  Often this has more to do with manageability of users rather than security.  Regardless, it&#039;s a good practice that can be used to make a network more secure in the long run.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;What is often neglected is the server side of things.  Typically, there are one, maybe two subnets.  Outside users are granted access to the standard web ports.  Sometimes more ports such as ssh and ftp are opened for a variety of reasons.  What administrators don&#039;t realize, or don&#039;t intend is that they&#039;re allowing outsiders direct access to their core servers, without any sort of security in front of it.  Sure, sure, there might be a firewall, but a firewall is there to ensure you only come in on the proper ports, right?  If your traffic is destined for port 80, it doesn&#039;t matter if it&#039;s malicious or not, the firewall lets it through anyway.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;But what&#039;s the alternative?  What can be done instead?  Well, what about sending outside traffic to a separate network where the systems being accessed are less critical, and designed to verify traffic before passing it on to your core servers?  What I&#039;m talking about is creating a DMZ network and forcing all users through a proxy.  Even a simple proxy can help to prevent many attacks by merely dropping illegal traffic and not letting it through to the core server.  Proxies can also be heavily fortified with HIDS and other security software designed to look for suspicious traffic and block it.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;By adding in this DMZ layer, you&#039;ve put a barrier between your server core and the outside world.  This is known as layered defense.  You can add additional layers as time and resources allow.  For instance, I recommend segmenting away database servers as well as identity management servers.  Adding this additional segmentation can be done over time as new servers come online and old servers are retired.  The end goal is to add this additional security without disrupting the network as a whole.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;If you have the luxury of building a new network from the ground up, however, make sure you build this in from the start.  There is, of course, a breaking point.  It makes sense to create networks to segregate servers by security level, but it doesn&#039;t make sense to segregate purely to segregate.  For instance, you may segregate database and identity management servers away from the rest of the servers, but segregating Oracle servers away from MySQL servers may not add much additional security.  There are exceptions, but I suggest you think long and hard before you make such an exception.  Are you sure that the additional management overhead is worth the security?  There&#039;s always a cost/benefit analysis to perform.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Segregating networks is just the beginning.  The purpose here is to enhance security.  By segregating networks, you can significantly reduce the number of clients that need to access a particular server.  The whole world may need to access your proxy servers, but only your proxy servers need to access the actual web application servers.  Likewise, only your web application servers need access to your database servers.  Using this information, you can tighten down your firewall.  But remember, a firewall is just a wall with holes in it.  The purpose is to deflect random attacks, but it does little to nothing to prevent attacks on ports you&#039;ve opened.  For that, there are other tools.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;At the very edge, simplistic fire walling and generally loose HIDS can be used to deflect most attacks.  As you move further within the network, additional security can be used.  For instance, deploying an IPS at the very edge of the network can result in the IPS being quickly overwhelmed.  Of course, you can buy a bigger, better IPS, but to what end?  Instead, you can move the IPS further into the network, placing it where it be more effective.  If you place it between the proxy and the web server, you&#039;ve already ensured that the only traffic hitting the IPS is loosely validated HTTP traffic.  With this knowledge, you can reduce the number of signatures the IPS needs to have, concentrating on high quality HTTP signatures.  Likewise, an IPS between the web servers and database servers can be configured with high quality database signatures.  You can, in general, direct the IPS to block any and all traffic that falls outside of those parameters.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;As the adage goes, there is no silver bullet for security.  Instead, you need to use every weapon in your arsenal and put together a solid defense.  By combining all of these techniques together, you can defend against many attacks.  But remember, there&#039;s always a way in.  You will not be able to stop the most determined attacker, you can only hope to slow him down enough to limit his access.  And remember, securing your network is only one aspect of security.  Don&#039;t forget about the other low hanging fruit such as SQL injection, cross site scripting, and other common application holes.  You may have the most secure network in existence, but a simple SQL injection attack can result in a massive data breach.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Monitoring as a Lifestyle</title>
    <link>http://blog.godshell.com/blog/archives/308-Monitoring-as-a-Lifestyle.html</link>

    <description>
        &lt;p class=&quot;whiteline&quot;&gt;A few years ago, I wrote a &lt;a href=&quot;http://blog.godshell.com/blog/archives/161-Play-with-your-Wii-and-get-Fit!.html&quot;&gt;blog entry&lt;/a&gt; about losing weight using the Wii Fit.  This worked really well for me and I was quite happy with the weight I lost.  But I found, over time, that I put at least some of the weight back on.  Most of this, I believe, was due to not having a full understanding of how much I was eating.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I&#039;ve since switched from using the Wii Fit to using the XBox Kinect for fitness.  I also go to fitness classes outside of home, but that&#039;s a more recent change.  But this blog entry isn&#039;t really about fitness alone.  It&#039;s about monitoring your lifestyle, keeping track of the data you generate on a daily basis.  Right now, I track a lot of personal data about my weight, what I eat, how often I work out, how I sleep, etc.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Allow me to lay out some of the tools I use on a daily basis.  First off, my phone.  I happen to be an iPhone user at the moment, though any modern smartphone has somewhat similar capabilities.  Using my phone, I can view and edit my data whenever I need to, wherever I am.  There are literally thousands of applications that can be used to track data about yourself.  I&#039;m hoping to be able to aggregate all or most of this data in a single location at some point, but for now, it&#039;s spread across a few different services.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I&#039;m typically fairly private about my data and I tend to avoid most cloud services.  However, I have found that it&#039;s virtually impossible to do the type of tracking I want without having to building every single tool myself.  So, instead, I use a few online services and provide them with virtually no personal information about myself beyond what is required to make the service work.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;So what am I using, anyway?  Let&#039;s start with how I track my diet.  I&#039;m using a service called &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.myfitnesspal.com/&#039;]);&quot;  href=&quot;http://www.myfitnesspal.com/&quot;&gt;My Fitness Pal&lt;/a&gt; to track what my daily caloric intake is.  This has significantly helped me redefine my dietary habits and helped me to realize how much I should be eating.  Previously, I would try to reduce my intake by spreading out meals over the course of the day.  While this is a great habit, in the end I believe I was eating more than I should have been, despite my intent.  Using the MyFitnessPal application, I get a clear view of where I stand at any point during the day.  I&#039;ve been able to significantly reduce my intake without having to shun the foods I love.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;On the fitness side of things, I work out every morning before work using &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.xbox.com/en-US/kinect&#039;]);&quot;  href=&quot;http://www.xbox.com/en-US/kinect&quot;&gt;XBox Kinect&lt;/a&gt; and &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/yourshapegame.ubi.com/fitness-evolved-2012/en-US/&#039;]);&quot;  href=&quot;http://yourshapegame.ubi.com/fitness-evolved-2012/en-US/&quot;&gt;Your Shape Fitness&lt;/a&gt;.  I switched over to this when the original Your Shape game came out and I&#039;ve been quite happy.  The Wii Fit is a great tool to start with, and it has the benefit of checking your weight every time you play, something I do miss with Your Shape, but the exercises became far too easy to complete.  Your Shape pushes a bit harder, bringing a higher level of exercise to my daily routine.  And now with the new version, they&#039;ve raised the bar a bit, allowing me to push even harder.  There are a few areas I&#039;d like to see improvements in, but overall, I don&#039;t have many complaints.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Using the Your Shape app on my phone, I get a readout of my exercise for the day, as well as an estimate of the calories I burned.  I take this information and enter it into the My Fitness Pal application.  Doing this allows me to increase my allotment of calories for the day based on how active I have been.  In a way, I guess it works like a reward system, granting me the ability to enjoy a little more each day I spend time to work out.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I also wear a &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/jawbone.com/up&#039;]);&quot;  href=&quot;http://jawbone.com/up&quot;&gt;Jawbone Up&lt;/a&gt;.  The Up is a pretty cool little device that tracks your movement during the day and your sleep patterns at night.  It can also be used to track your food, though the interface for this is a bit lacking, which is why I use MyFitnessPal.  The Up gives me a great view of how active I am during the day, as well as a view of how well I&#039;m sleeping at night.  Jawbone has had a bit of a hard time with this particular product, but my personal experience has been pretty positive thus far.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;I have a few applications on my phone for tracking runs, though I use them for walking instead.. I&#039;m not much of a runner.  These applications are a dime a dozen, and I don&#039;t really have a preference at this point.  As long as the application has feedback on distance and route, it&#039;s typically good enough.  The application for the Up has this capability as well, though I haven&#039;t had a chance to try it out yet.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;And finally, I use an application to track my weight on a daily basis.  One of the first things I do in the morning is weigh myself.  I&#039;m currently using an application called &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.tactiosoft.com/en/products/targetweight&#039;]);&quot;  href=&quot;http://www.tactiosoft.com/en/products/targetweight&quot;&gt;TargetWeight&lt;/a&gt; by Tactio.  Basically, this application tracks your weight over time, offering up a few features to help along the way.  If you enter a target weight, the application will show you the weight left to lose as part of the icon on your phone.  Additionally, it will attempt to predict when you&#039;ll hit your target rate based on the historical date it has collected.  There&#039;s a nice graphical view of your weight over time as well.  Entering your weight is a quick process each morning and is one of the biggest motivators for me.  There&#039;s also an option to use a WiFi enabled &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/shop.withings.com/en_us/products/the-connected-bodyscale-withings-1.html&#039;]);&quot;  href=&quot;http://shop.withings.com/en_us/products/the-connected-bodyscale-withings-1.html&quot;&gt;Withings scale&lt;/a&gt; to wirelessly enter your data.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;All together, these various applications and tools allow me to gain better insight into my daily health.  This is obviously not for everyone, but for myself it has worked wonders.  I&#039;ve lost about 30 pounds or so in the past 2 months, and I&#039;m getting quite close to my current target weight.  To each his own, but this is working wonders for me.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>MAKE : Mass Monitor Rebuild</title>
    <link>http://blog.godshell.com/blog/archives/307-MAKE-Mass-Monitor-Rebuild.html</link>

    <description>
        &lt;p class=&quot;whiteline&quot;&gt;A few years ago, I came across a &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.massedi.com/products/c19/c4q19.htm&#039;]);&quot;  href=&quot;http://www.massedi.com/products/c19/c4q19.htm&quot;&gt;Mass EDI 4-monitor display&lt;/a&gt;.  The computer system I had just happened to have two dual-display video cards, so it was a perfect match.  Last year, one of the displays burned out and had to be replaced.  Unfortunately, Mass wanted upwards of $500 for a new display.  I did have a number of Dell displays available, though, and decided to look into adding one of those to the mix.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;a  class=&quot;image-link&quot;  rel=&quot;lightbox&quot; href=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/Mass Array.jpg&quot;&gt;&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/Mass Array.jpg&quot; alt=&quot;Mass Array&quot; title=&quot;Mass Array.jpg&quot; border=&quot;0&quot; width=&quot;300&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;My initial attempt at adding a Dell to the mix was fairly crude, but it worked.  I decided to rebuild the entire array this past week and remove the remaining three Mass monitors.  There were two main reasons for this.  First, the crude setup I had with the first Dell monitor wasn&#039;t an ideal situation.  The way the new monitor was mounted, it pressed up against the others and was difficult to adjust.  The second reason was that I have a new video card, a &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.newegg.com/Product/Product.aspx?Item=N82E16814162083&#039;]);&quot;  href=&quot;http://www.newegg.com/Product/Product.aspx?Item=N82E16814162083&quot;&gt;Galaxy nVidia GeForce 210&lt;/a&gt;, that requires DVI and not VGA.  The version of the Mass display I had didn&#039;t support DVI.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;a  class=&quot;image-link&quot;  rel=&quot;lightbox&quot; href=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/Galaxy 210.jpg&quot;&gt;&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/Galaxy 210.jpg&quot; alt=&quot;Galaxy 210&quot; title=&quot;Galaxy 210.jpg&quot; border=&quot;0&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;a  class=&quot;image-link&quot;  rel=&quot;lightbox&quot; href=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/Dell 1907FP.JPG&quot;&gt;&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/Dell 1907FP.JPG&quot; alt=&quot;Dell 1907FP&quot; title=&quot;Dell 1907FP.JPG&quot; border=&quot;0&quot; width=&quot;300&quot; height=&quot;322&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;And so I started to look at how to better mount a Dell display on a Mass multi-monitor array.  The Dell monitor I used initially was a 1907FP.  The general size was about right, it just needed to be lifted up away from the lower monitor a bit.  The main problem I had with the current mount was that in order to couple the Mass mounting bracket to the Dell mounting bracket, there was really only one location that it could be placed without adding additional hardware.  The Dell monitor has a small button on the back to remove it from its mounting, and the Mass has a lever of sorts that does the same.  The coupling had to take both of these removal mechanisms into consideration.  I spoke with a colleague about the problem and we came up with a small coupling plate that would raise the dell monitor up, keep both removal mechanisms clear, and allow for much better adjustment of the resulting monitor array.&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;a  class=&quot;image-link&quot;  rel=&quot;lightbox&quot; href=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/coupling plate.JPG&quot;&gt;&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/coupling plate.JPG&quot; alt=&quot;Coupling plate&quot; title=&quot;coupling plate.JPG&quot; border=&quot;0&quot; width=&quot;300&quot; height=&quot;167&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Assembly was pretty straightforward.  In order to attach the coupling plate to the Dell monitor, the Dell mount had to be removed from the original stand, lined up with the coupling plate, and holes were drilled to match.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;a  class=&quot;image-link&quot;  rel=&quot;lightbox&quot; href=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/dell original mount.JPG&quot;&gt;&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/dell original mount.JPG&quot; alt=&quot;Dell original mount&quot; title=&quot;dell original mount.JPG&quot; border=&quot;0&quot; width=&quot;300&quot; height=&quot;433&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;a  class=&quot;image-link&quot;  rel=&quot;lightbox&quot; href=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/coupling plate on dell monitor.JPG&quot;&gt;&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/coupling plate on dell monitor.JPG&quot; alt=&quot;Coupling plate on dell monitor&quot; title=&quot;coupling plate on dell monitor.JPG&quot; border=&quot;0&quot; width=&quot;300&quot; height=&quot;224&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;Once the Dell side was finished, the Mass mount was removed from the original monitor and paired up with the augmented Dell mount.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;a  class=&quot;image-link&quot;  rel=&quot;lightbox&quot; href=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/mass mounting plate.JPG&quot;&gt;&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/mass mounting plate.JPG&quot; alt=&quot;Mass mounting plate&quot; title=&quot;mass mounting plate.JPG&quot; border=&quot;0&quot; width=&quot;300&quot; height=&quot;224&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;a  class=&quot;image-link&quot;  rel=&quot;lightbox&quot; href=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/finished mount 1.JPG&quot;&gt;&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/finished mount 1.JPG&quot; alt=&quot;Finished mount 1&quot; title=&quot;finished mount 1.JPG&quot; border=&quot;0&quot; width=&quot;300&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;And finally, the new augmented mounting brackets are attached to both the Dell monitor and the Mass monitor array.  The dangling VGA cable was for testing prior to the installation of the new video card.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;a  class=&quot;image-link&quot;  rel=&quot;lightbox&quot; href=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/finished display rear.JPG&quot;&gt;&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/finished display rear.JPG&quot; alt=&quot;Finished display rear&quot; title=&quot;finished display rear.JPG&quot; border=&quot;0&quot; width=&quot;300&quot; height=&quot;224&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;&lt;a  class=&quot;image-link&quot;  rel=&quot;lightbox&quot; href=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/finished display.JPG&quot;&gt;&lt;img style=&quot;display:block; margin-left:auto; margin-right:auto;&quot; src=&quot;http://blog.godshell.com/blog/uploads/mass_monitor/finished display.JPG&quot; alt=&quot;Finished display&quot; title=&quot;finished display.JPG&quot; border=&quot;0&quot; width=&quot;300&quot; height=&quot;224&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;whiteline&quot;&gt;All that remains now is general adjustment of the new monitors.  There&#039;s a single Hex screw on the Mass array behind each monitor that can be used to adjust the monitors up and down, as well as some angled movement.  Thi should allow me to adjust the display to exactly what I need.  And it now works with the new video card, which was a breeze to install and get running in Fedora.&lt;/p&gt;&lt;p class=&quot;break&quot;&gt;I love it when a plan comes together.&lt;/p&gt; 
    </description>
</item>
<item>
    <title>Contemplating the Future</title>
    <link>http://blog.godshell.com/blog/archives/306-Contemplating-the-Future.html</link>

    <description>
        In 2005 I obtained a job at a regional &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/en.wikipedia.org/wiki/ILEC&#039;]);&quot;  href=&quot;https://en.wikipedia.org/wiki/ILEC&quot;&gt;ILEC&lt;/a&gt; as a Data Operations Technician.  As part of this job, I took over development of one of the tools we used to diagnose customer DSL connections.  Problem was, this tool was written in PHP, a programming language I was, as yet, unfamiliar with.&lt;br /&gt;
&lt;br /&gt;
At the same time, I was also looking for a web-based tool I could use to keep track of various tasks.  While there were a few open-source tools I could use, none had the features I was looking for.  So I decided to write one myself, and to write it in PHP so I could learn the language better.  In the end, I&#039;m glad I did as PHP has become indispensable for writing web-based tools.&lt;br /&gt;
&lt;br /&gt;
The tool I wrote was a web-based todo manager called &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/phptodo.godshell.com/&#039;]);&quot;  href=&quot;http://phptodo.godshell.com/&quot;&gt;phpTodo&lt;/a&gt;.  Since the alpha release in 2005, I have released 7 more versions.  Work on phpTodo has ebbed and lowed with time, often interrupted by work and life in general.  In fact, the last formal release was made almost 5 years ago, bringing the current version up to 0.8.1.  In 2009, I &lt;a href=&quot;http://blog.godshell.com/blog/archives/199-phpTodo-...-In-Fedora!!.html&quot;&gt;found out&lt;/a&gt; that phpTodo was being packaged and released with Fedora as well.&lt;br /&gt;
&lt;br /&gt;
After releasing 0.8.1, I decided to switch from using categories to using tags, similar to how the blogging system I use, &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/s9y.org/&#039;]);&quot;  href=&quot;http://s9y.org/&quot;&gt;Serendipity&lt;/a&gt;, uses them.  This required rewriting a good deal of the back end of the system, as well as making extensive changes to the front end.  I also started using the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.prototypejs.org/&#039;]);&quot;  href=&quot;http://www.prototypejs.org/&quot;&gt;Prototype&lt;/a&gt; and &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/script.aculo.us/&#039;]);&quot;  href=&quot;http://script.aculo.us/&quot;&gt;Scriptaculous&lt;/a&gt; Javascript frameworks, and then later switched to &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/jquery.com/&#039;]);&quot;  href=&quot;http://jquery.com/&quot;&gt;jQuery&lt;/a&gt;.  In all, a great deal of code has been rewritten.&lt;br /&gt;
&lt;br /&gt;
I&#039;m quite happy with the general feel of the new version I&#039;ve been working on.  While there is a good deal more code to be written, I&#039;m confident there will be a code release soon enough.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve been thinking a lot about the future of phpTodo and where I want to take it.  When I originally started, I wrote the system such that I could see my todo list items via an RSS feed.  At the time, I had a Blackberry phone and this worked brilliantly.  Of course, this was purely a one-way feed with no way to update any todo items on the go.  Since that time, I started working on a mobile view for the system, but stopped quickly after I realized how horrible working with &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/en.wikipedia.org/wiki/Wireless_Application_Protocol&#039;]);&quot;  href=&quot;https://en.wikipedia.org/wiki/Wireless_Application_Protocol&quot;&gt;WAP&lt;/a&gt; was.  Fortunately, technology has progressed quickly since that time and WAP is no longer necessary.  So, I&#039;m considering working on a mobile version again.&lt;br /&gt;
&lt;br /&gt;
A mobile version brings new challenges, however.  It should be trivial to develop a mobile view that can be used while online, but my hope was to have an offline version as well that can be synchronized with the online version.  One possibility is to develop an app that can be loaded onto a phone.  That, of course, severely limits the platforms it can be run on.  Another possibility is an HTML5 version, though that brings challenges of its own.&lt;br /&gt;
&lt;br /&gt;
Another thought was to build a web service into phpTodo.  The basic premise is an XML generator that, given a set of parameters, can supply an XML feed for external systems to use as input.  And an XML parser that can receive data from external systems in order to update phpTodo data.  I believe this can be used as the interface for the mobile view.&lt;br /&gt;
&lt;br /&gt;
A web service can also be used to power another idea I had.  I stumbled across the website of &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/brettterpstra.com&#039;]);&quot;  href=&quot;http://brettterpstra.com&quot;&gt;Brett Terpstra&lt;/a&gt; a while back and found a treasure trove of interesting ideas and useful code snippets.  Among these is an obsession for recording notes to keep track of projects, interesting ideas, and helpful code snippets.  Brett uses a number of custom scripts and software packages, most of which are exclusive to his platform of choice, OS X.  To be honest, I find this incredibly intriguing, and potentially useful.  So, I&#039;ve been thinking about developing a command-line tool I can use to interact with phpTodo.  A web service could make this a great deal easier.&lt;br /&gt;
&lt;br /&gt;
I have no plans to stop working on the project, and, in fact, I&#039;m eager to keep moving forward.  As I continue to rely on phpTodo itself for my daily work, I rely on improvements I can make to the system.  So overall, the future of phpTodo is bright. 
    </description>
</item>
<item>
    <title>Mega Fail</title>
    <link>http://blog.godshell.com/blog/archives/305-Mega-Fail.html</link>

    <description>
        So… this happened :&lt;br /&gt;
&lt;br /&gt;
&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.usatoday.com/tech/news/story/2012-01-19/megaupload-feds-shutdown/52678528/1&#039;]);&quot;  href=&quot;http://www.usatoday.com/tech/news/story/2012-01-19/megaupload-feds-shutdown/52678528/1&quot;&gt;Popular file-sharing website Megaupload shut down&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/arstechnica.com/tech-policy/news/2012/01/megaupload-shut-down-by-feds-seven-charged-four-arrested.ars&#039;]);&quot;  href=&quot;http://arstechnica.com/tech-policy/news/2012/01/megaupload-shut-down-by-feds-seven-charged-four-arrested.ars&quot;&gt;Megaupload shut down by feds, seven charged, four arrested&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/news.cnet.com/8301-31001_3-57362609-261/megaupload-assembles-worldwide-criminal-defense/&#039;]);&quot;  href=&quot;http://news.cnet.com/8301-31001_3-57362609-261/megaupload-assembles-worldwide-criminal-defense/&quot;&gt;Megaupload assembles worldwide criminal defense&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/venturebeat.com/2012/01/20/department-of-justice-doj-dept-of-justice-megaupload-piracy-sopa-pipa/&#039;]);&quot;  href=&quot;http://venturebeat.com/2012/01/20/department-of-justice-doj-dept-of-justice-megaupload-piracy-sopa-pipa/&quot;&gt;Department of Justice shutdown of rogue site MegaUpload shows SOPA is unnecessary&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
And then..  This happened :&lt;br /&gt;
&lt;br /&gt;
&lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.cbsnews.com/8301-501465_162-57362764-501465/megaupload-anonymous-hacker-retaliation-nobody-wins/&#039;]);&quot;  href=&quot;http://www.cbsnews.com/8301-501465_162-57362764-501465/megaupload-anonymous-hacker-retaliation-nobody-wins/&quot;&gt;Megaupload Anonymous hacker retaliation, nobody wins&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And, of course, the day before all of this happened was the &lt;a href=&quot;http://blog.godshell.com/blog/archives/304-Who-turned-the-lights-out.html&quot;&gt;SOPA/PIPA protest&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Wow..  The government, right?  SOPA/PIPA isn&#039;t even on the books, people are up in arms over it, and then they go and seize one of the largest file sharing websites on the planet!  We should all band together and immediately protest this illegal seizure!&lt;br /&gt;
&lt;br /&gt;
But wait..  hang on..  Since when does jumping to conclusions help?  Let&#039;s take a look and see what exactly is going on here..  According to the &lt;a onclick=&quot;_gaq.push([&#039;_trackPageview&#039;, &#039;/extlink/www.justice.gov/opa/pr/2012/January/12-crm-074.html&#039;]);&quot;  href=&quot;http://www.justice.gov/opa/pr/2012/January/12-crm-074.html&quot;&gt;indictment&lt;/a&gt;, this case went before a grand jury before any takedown was performed.  Additionally, this wasn&#039;t an all-of-a-sudden thing.  Megaupload had been contacted in the past about copyright violations and failed to deal with them as per established law.&lt;br /&gt;
&lt;br /&gt;
There are a lot of people who are against this action.  In fact, the hacktivist group, Anonymous, decided to display their dictate by performing DDoS attacks against high profile sites such as the US DoJ, MPAA, and RIAA.  This doesn&#039;t help things and may actually hurt the SOPA/PIPA protest in the long run.&lt;br /&gt;
&lt;br /&gt;
Now I&#039;m not going to say that the takedown was right and just, there&#039;s just not enough information as of yet, and it may turn out that the government was dead wrong with this action.  But at the moment, I have to disagree with those that point at this as an example of an illegal takedown.  As a friend of mine put it, if the corner market is selling illegal bootleg videos, when they finally get raided, the store gets closed.  Yes, there were legal uses of the services on the site, but the corner store sold milk too.&lt;br /&gt;
&lt;br /&gt;
There are still many, many copyright and piracy issues to deal with.  And it&#039;s going to take a long time to deal with them.  We need to be vigilant, and protesting when necessary does work.  But jumping to conclusions like this, and then attacking sites such as the DoJ are not going to help the cause.  There&#039;s a time and a place for that, and I don&#039;t believe we&#039;re there yet. 
    </description>
</item>

</channel>
</rss>
