<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6856642012808287701</id><updated>2012-01-23T18:50:30.539-08:00</updated><category term='ruby'/><category term='space'/><category term='virtualization'/><category term='technology'/><category term='Microsoft'/><category term='Freedom'/><category term='sysadmin'/><category term='explanation'/><category term='news'/><category term='movies'/><category term='Idiocy'/><category term='renovations'/><category term='Dicom'/><category term='test'/><category term='python'/><category term='printer'/><category term='doodles'/><category term='thoughts'/><category term='internet'/><category term='DRM'/><category term='Mono'/><category term='PNI'/><category term='xbox'/><category term='review'/><category term='Mint.com'/><category term='customization'/><category term='driver'/><category term='wikileaks'/><category term='QT'/><category term='WT'/><category term='Net Neutrality'/><category term='boredom'/><category term='BSA'/><category term='programming'/><category term='Ravens'/><category term='home improvement'/><category term='notebooks'/><category term='wowtalk'/><category term='Nagios'/><category term='Boy Scouts'/><category term='gaming'/><category term='networking'/><category term='Konica Minolta'/><category term='drivers'/><category term='software'/><category term='dropbox'/><category term='Seperation of Church and State'/><category term='design'/><category term='WxWidgets'/><category term='printers'/><title type='text'>The Red Pill</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>55</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8616496132881392843</id><published>2012-01-03T11:04:00.000-08:00</published><updated>2012-01-03T11:04:36.001-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>A letter to my cousins: A Suggested Route for Learning Python and Game Programming</title><content type='html'>So a new year, and a new resolution to write some more articles on this blog. &amp;nbsp;I thought I would start off by sharing a letter I sent off to a few of my&amp;nbsp;middle school&amp;nbsp;grade cousins who approached me about learning to program games over the holiday week. &amp;nbsp;I'm the first to admit I've never written a game, but I have written a considerable amount of code and am aware that game programming is no small feat of coding. &amp;nbsp;Without further blabbering this is what I pulled together for them (and a link to a &lt;a href="https://docs.google.com/document/d/1xq5iS3TeGVmrDJ_ak8MFNrlFTwfdsllfRQtVkcCwQuc/edit"&gt;google docs version for easier reading&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Hey there cousins :)&lt;br /&gt;    So I've been puzzling over the best way to present this information    to you and give you some direction in the mean time.&amp;nbsp; I've pretty    much just opted for the stream of consciousness approach (or, type    as I think).&lt;br /&gt;    First your going to need some tools.&lt;br /&gt;    An archive manager, this will let you open files zipped up in zip,    rar, or other formats.&amp;nbsp; I prefer 7zip for windows, you can get it    here:&amp;nbsp; &lt;a class="moz-txt-link-freetext" href="http://downloads.sourceforge.net/sevenzip/7z920.msi"&gt;http://downloads.sourceforge.net/sevenzip/7z920.msi&lt;/a&gt;&lt;br /&gt;    Next you will eventually need a version control package so you may    as well get that, for home projects I'd recommend Mercurial: &lt;a href="http://tortoisehg.bitbucket.org/"&gt;http://tortoisehg.bitbucket.org/&lt;/a&gt;    Make sure you are downloading the 32-bit version of the program.&amp;nbsp; I    would also add the command line program from &lt;a href="http://mercurial.selenic.com/wiki/"&gt;http://mercurial.selenic.com/wiki/&lt;/a&gt;,    just grab the latest version and install it(32-bit windows).&lt;br /&gt;    It's an installer and free, just run it and your in good shape.&lt;br /&gt;    Then I would recommend downloading Python(x,y) which is also free    like the above two pieces.&amp;nbsp; The direct link is:    &lt;a class="moz-txt-link-freetext" href="http://ftp.ntua.gr/pub/devel/pythonxy/Python%28x,y%29-2.7.2.1.exe"&gt;http://ftp.ntua.gr/pub/devel/pythonxy/Python(x,y)-2.7.2.1.exe&lt;/a&gt; and    you can get more information on the package at: &lt;a href="http://code.google.com/p/pythonxy/"&gt;http://code.google.com/p/pythonxy/&lt;/a&gt;&amp;nbsp;    It's a package for making scientific applications in python, however    it has a full editor suite and includes all the base software you    will need to get rolling except pygame itself.&lt;br /&gt;    Finally you will need pygame, your going to want this link:    &lt;a class="moz-txt-link-freetext" href="http://pygame.org/ftp/pygame-1.9.2a0.win32-py2.7.msi"&gt;http://pygame.org/ftp/pygame-1.9.2a0.win32-py2.7.msi&lt;/a&gt; The version of    python included with Python(x,y) is version 2.7.2 so this will give    you the correct version of this library.&amp;nbsp; For more information and    example projects you can find extra information at &lt;a href="http://www.pygame.org/news.html"&gt;http://www.pygame.org/news.html&lt;/a&gt;    this is the main site of the pygame team.&amp;nbsp; Once you've developed    your skill set the 'cookbook' section of this website will prove    invaluable as will the tutorials area.&lt;br /&gt;    Now the hard part.&lt;br /&gt;    Once you've installed all that stuff, you are ready to go but you    have a significant number of hills to climb before you are ready to    start writing game engines, game content or things of that nature.&amp;nbsp;    However using python these barriers should be less painful than they    could be in other languages and systems.&lt;br /&gt;    You have a number of things to learn, and the first among them is    how to use your tools.&amp;nbsp; If you've installed python(x,y) successfully    you should find a program called 'spyder2' in your program list.&amp;nbsp;    This is an editor you can use to easily edit python with large    amounts of feed back on your code.&amp;nbsp; It's documentation can be found    at &lt;a href="http://packages.python.org/spyder/"&gt;http://packages.python.org/spyder/&lt;/a&gt;    I would recommend reading at least the overview and the editor    sections for now.&amp;nbsp; You'll also need to know how the consoles work    but that's more of an experimentation learning experience.&lt;br /&gt;    After you have learned how to open and close files in the spyder    editing environment you will be ready to start teaching yourself    python.&amp;nbsp; To this end I'm going to direct you to the book 'learn    python the hard way'.&amp;nbsp; This is not fundamentally more difficult than    other ways of learning python, however it is a more classical    approach that requires you to type in every line of code in every    program you make.&amp;nbsp; Following through the book and completing all the    exercises will go a long way towards teaching you both programming    and python.&amp;nbsp; The HTML (web browser) version of the book can be found    here &lt;a href="http://learnpythonthehardway.org/book/"&gt;http://learnpythonthehardway.org/book/&lt;/a&gt;    or you can buy a copy of the epub book (for reading on a kindle) for    2.99 off the top of the website.&amp;nbsp; Follow through &lt;b&gt;EVERY&lt;/b&gt;    lesson, and make sure to read diligently (you can however skip    exercise 0 as this tells you how to get python, it may be    informative however).&amp;nbsp; I also strongly recommend you make an honest    effort to do any of the 'extra credit' pieces at the end of each    example.&amp;nbsp; This will allow you to explore the functionality the book    is teaching you before you move on.&amp;nbsp; If you do not understand a word    in the book, you can find it's definition by going to &lt;a class="moz-txt-link-abbreviated" href="http://www.google.com/"&gt;www.google.com&lt;/a&gt;    and typing 'define: word you don't know'.&amp;nbsp; By the end of the book    you will be able to generate webpages in python, and make small web    based python games.&amp;nbsp; This is a significant step towards where you    need to get to.&lt;br /&gt;    After you've completed those exercises and spent sometime    manipulating them to change their behavior I would recommend the    following articles on a number of topics.&amp;nbsp; I recommend reading each    thoroughly and trying to combine them with some of your developed    knowledge of python.&amp;nbsp; These links are just to get you started but    they should be good leaping off points to discover which sections of    programming you don't just 'get'.&amp;nbsp; These are areas you should spend    more time researching using tools like &lt;a class="moz-txt-link-abbreviated" href="http://www.google.com/"&gt;www.google.com&lt;/a&gt;, &lt;a href="http://stackexchange.com/"&gt;http://stackexchange.com/&lt;/a&gt; and    Wikipedia.&lt;br /&gt;    Version Control Basics (how to use mercurial and why): &lt;a href="http://hginit.com/01.html"&gt;http://hginit.com/01.html&lt;/a&gt;&amp;nbsp;    Start here and go thru the examples, they are excellent.&lt;br /&gt;    The Python Style Guide:&lt;a href="http://en.wikipedia.org/wiki/Python_syntax_and_semantics"&gt;http://en.wikipedia.org/wiki/Python_syntax_and_semantics&lt;/a&gt;    and &lt;a href="http://www.python.org/dev/peps/pep-0008/"&gt;http://www.python.org/dev/peps/pep-0008/&lt;/a&gt;&amp;nbsp;    Following this will help make sure your code is readable and    correctly commented so others can read it as well&lt;br /&gt;    Conditional Statements: &lt;a href="http://en.wikipedia.org/wiki/Conditional_%28programming%29"&gt;http://en.wikipedia.org/wiki/Conditional_(programming)&lt;/a&gt;&lt;br /&gt;    Boolean Algebra and Logic: &lt;a href="http://en.wikipedia.org/wiki/Boolean_algebra_%28logic%29"&gt;http://en.wikipedia.org/wiki/Boolean_algebra_(logic)&lt;/a&gt;&lt;br /&gt;    Big O Notation: &lt;a href="http://en.wikipedia.org/wiki/Big_O_notation"&gt;http://en.wikipedia.org/wiki/Big_O_notation&lt;/a&gt;&lt;br /&gt;    Sorting: &lt;a href="http://www.codeproject.com/KB/recipes/SortVisualization.aspx"&gt;http://www.codeproject.com/KB/recipes/SortVisualization.aspx&lt;/a&gt;&amp;nbsp;    This provides visualizations into a number of different sort    algorithms that will be critical to understand.&amp;nbsp; I recommend looking    up the wikipedia page of each sort type and reading through those    articles as well.&amp;nbsp; Wikipedia is invaluable for this sort of things    (IE, &lt;a href="http://en.wikipedia.org/wiki/Bubble_sort"&gt;http://en.wikipedia.org/wiki/Bubble_sort&lt;/a&gt;,    &lt;a href="http://en.wikipedia.org/wiki/Insertion_sort"&gt;http://en.wikipedia.org/wiki/Insertion_sort&lt;/a&gt;).&lt;br /&gt;    &lt;br /&gt;    Object Oriented Programming and Software Architecture: &lt;a href="http://www.codeproject.com/KB/architecture/OOP_Concepts_and_manymore.aspx"&gt;http://www.codeproject.com/KB/architecture/OOP_Concepts_and_manymore.aspx&lt;/a&gt;&lt;br /&gt;    Software Design Patterns: &lt;a href="http://en.wikipedia.org/wiki/Software_design_pattern"&gt;http://en.wikipedia.org/wiki/Software_design_pattern&lt;/a&gt;    and specific patterns implemented in python: &lt;a href="http://www.python.org/workshops/1997-10/proceedings/savikko.html"&gt;http://www.python.org/workshops/1997-10/proceedings/savikko.html&lt;/a&gt;&lt;br /&gt;    Python too executable conversion: &lt;a href="http://www.py2exe.org/"&gt;http://www.py2exe.org/&lt;/a&gt;&amp;nbsp;    and a basic tutorial in it's use &lt;a href="http://www.py2exe.org/index.cgi/Tutorial"&gt;http://www.py2exe.org/index.cgi/Tutorial&lt;/a&gt;.&amp;nbsp;    This will let you turn your python program into a .exe file you can    send to your friends more easily than teaching them how to use and    run python.&lt;br /&gt;    And finally you'll want to read a book that covers end to end game    design, this will include a large amount of math as well as subjects    like animating objects and rendering to the screen.&amp;nbsp; A highly    recommended book based on python is Invent Your Own Games With    Python.&amp;nbsp; It can be read online here &lt;a href="http://inventwithpython.com/chapters/"&gt;http://inventwithpython.com/chapters/&lt;/a&gt;    or you can purchase it off of amazon here &lt;a href="http://www.amazon.com/gp/product/0982106017?ie=UTF8&amp;amp;tag=playwithpyth-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0982106017"&gt;http://www.amazon.com/gp/product/0982106017?ie=UTF8&amp;amp;tag=playwithpyth-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0982106017&lt;/a&gt;.&amp;nbsp;    NOTE: While this book can be used in place of the 'learn python the    hard way' book, it will lack some of the substance and fine detail    that book discusses in teaching you individual lessons.&amp;nbsp; All that    aside it is however an excellent beginning programming book as well.&lt;br /&gt;    I wish you the best of luck learning programming/python/game    writing/computers and hope this turns out useful for you,&lt;br /&gt;    -Garrett&lt;br /&gt;    ps. Don't forget, working together will not double your learning,    but it will help you both develop much faster.&amp;nbsp; Also, you should    probably print this so you don't lose it.&lt;/blockquote&gt;So to the community at large: &amp;nbsp;Is this helpful / the right direction to go? &amp;nbsp;What would you suggest or change about this to gear it more at the target audience (middle-school&amp;nbsp;boys that know they want to write games but don't yet appreciate the scope of what they are getting into).&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8616496132881392843?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8616496132881392843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8616496132881392843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8616496132881392843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8616496132881392843'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2012/01/letter-to-my-cousins-suggested-route.html' title='A letter to my cousins: A Suggested Route for Learning Python and Game Programming'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8842017625263623987</id><published>2011-06-02T13:13:00.000-07:00</published><updated>2011-06-02T13:13:50.025-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='printers'/><category scheme='http://www.blogger.com/atom/ns#' term='printer'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='Konica Minolta'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='drivers'/><category scheme='http://www.blogger.com/atom/ns#' term='driver'/><title type='text'>Making a Konica Minolta DI-5510 work in Windows 7 x64</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Up until recently I've considered myself relatively lucky on the hardware compatibility front when it came to working with older hardware on newer OS's. &amp;nbsp;However that ended the other day when I had to get a KM DI-5510 working on a Windows 7 64bit system. &amp;nbsp;The reason being that the looking for drivers that would appear to be related to the printer will return a bunch of drivers from 2002 to 2004. &amp;nbsp;This is all well and good if your installing in Windows XP, but hits a very hard fast wall trying to add one of these to a modern computer (and yes, a computer from 2002 is no longer modern).&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;My&amp;nbsp;Google&amp;nbsp;searches unfortunately didn't&amp;nbsp;yield&amp;nbsp;any real fruit for quite some time while looking for these drivers, other than a bunch of junk listings to some 'free driver download' sites. &amp;nbsp;I eventually had somewhat of an&amp;nbsp;epiphany&amp;nbsp;while reading the not terribly helpful &lt;a href="http://kmbs.konicaminolta.us/content/support/vistasupport.html"&gt;Windows Vista Drivers&lt;/a&gt; list on the KM site. &amp;nbsp;Specifically the controller drivers weren't following their actual name for driver info. &amp;nbsp;So, while our local DI-5510 uses a Fiery x3e 7255BW-KM, searching for this will not return anything of meaningful use. &amp;nbsp;However if you search for '&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 15px;"&gt;Pi7200e' you'll find exactly what your looking for. &amp;nbsp;Namely, you'll find the &lt;a href="http://onyxftp.mykonicaminolta.com/download/SearchResults.aspx?productname=Pi7200e%20%20"&gt;driver page&lt;/a&gt; that actually supports the x3e 7255BW-KM controller, which has drivers for basically anything you could ever want. &amp;nbsp;And to make things more interesting when these drivers install they do in fact say 'x3e &lt;etc&gt;' despite not being labelled as such anywhere on the individual site you arrive on.&lt;/etc&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 15px;"&gt;As you may have guessed I'm writing this here so that I don't lose it myself, however I figured I would post it publicly so others can refer to it if need be. &amp;nbsp;So I hope I save somebody time with this little writeup.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 15px;"&gt;The Blue Pill:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 15px;"&gt;Use &lt;a href="http://onyxftp.mykonicaminolta.com/download/SearchResults.aspx?productname=Pi7200e%20%20"&gt;this link&lt;/a&gt; and you'll find the right driver for your OS in the list somewhere.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 15px;"&gt;The Red Pill:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; line-height: 15px;"&gt;I'm not sure how KM excuses this&amp;nbsp;abysmal&amp;nbsp;relation system between their products, controllers, the alternate names for these devices and the labeling on the systems. &amp;nbsp;But the drivers at least do exist, they just take forever to actually find. &amp;nbsp;In the course of my search I also came across a variety of what appear to be abandon KM web properties with ancient versions of this and similar drivers on them. &amp;nbsp;They are under the same or similar domains and should&amp;nbsp;probably&amp;nbsp;be cleaned up for the sanity of everyone involved.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8842017625263623987?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8842017625263623987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8842017625263623987' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8842017625263623987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8842017625263623987'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2011/06/making-konica-minolta-di-5510-work-in.html' title='Making a Konica Minolta DI-5510 work in Windows 7 x64'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-7385027103411875079</id><published>2011-03-12T12:00:00.000-08:00</published><updated>2011-06-07T07:47:21.827-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Idiocy'/><category scheme='http://www.blogger.com/atom/ns#' term='Boy Scouts'/><category scheme='http://www.blogger.com/atom/ns#' term='Ravens'/><category scheme='http://www.blogger.com/atom/ns#' term='Freedom'/><category scheme='http://www.blogger.com/atom/ns#' term='BSA'/><title type='text'>Ravens among Eagles in the BSA</title><content type='html'>Hopefully Modesitt won't take swiping that too personally (also, you should all read 'Octagonal Raven', it's a great book.  Whoever 'you all' actually are.).  The following post was inspired by an article I read and was disgusted by over at &lt;a href="http://articles.cnn.com/2010-10-19/us/texas.scouts.gay.dad_1_boy-scouts-gay-leader-scout-executive?_s=PM:US"&gt;CNN&lt;/a&gt; a fair while back.  It wasn't until recently that I decided to spend sometime learning Inkscape enough to actually generate this image however.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://www.cafepress.com/RavensAmongEagles" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="400" id=":current_picnik_image" src="http://3.bp.blogspot.com/-KotPwz2EFds/Te44VtI8ghI/AAAAAAAAAHc/KqZxDSzg6wk/s1600/14488781674_XZKPv.jpg" width="323" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Raven Among Eagles Replacement Logo (all rights reserved)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Anyone that's read some of my non technical postings on here will know my sentiments towards homophobics and zealots tends to lean in the 'burn in hell' level of sympathy.  What I don't believe I've mentioned before is that I'm also an Eagle Scout.  Which of course means I'm a horrible Eagle Scout as I directly fail the tenant to be 'Reverent'.  With a mild secondary failing in the 'Cheerful' category since lets face it, I'm cynical, jaded and mildly sardonic.  For the curious, both of those appear as requirements in the BSA 'Law' and are reinforced in the oath.  I can't argue with the idea that you want all of your scouts to be cheerful, that's a given, a downer is a downer if they are 8 or 28.  What I do take issue with is the arrogance of believing that not having a religion or desiring to sleep with men instead of women inherently makes you less good than your counterparts.&lt;br /&gt;&lt;br /&gt;To this end I've created the above logo to stand in protest and replacement of the standard Eagle Scout Badge / Logo as represented below.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.troop401.com/advancement/eagle_badge_clip_color.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://www.troop401.com/advancement/eagle_badge_clip_color.gif" width="323" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;To some this may be regarded as an offense against the concept of being an Eagle Scout, basing this claim on the argument that to be an Eagle Scout you must fulfill the Oath and Law.  Anyone who believes this is missing the point of being an Eagle Scout.  I'm unclear if this is different in other regions of the country, but the God requirements in the northeast are given as much reverence in the Law as it is on our money.  It's an incidental hold over, not a fundamental requirement for being an exemplary Scout.  These holdovers are to be noted for what they are, bygones of an era where America was considerably less diverse.  In much the same way as the concept of God in scouts has been dialed out to accommodate non Christian beliefs, it must also dial out to accept the ever changing landscape of the American public.  &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Being a scout is about community, friendship, social and life skills as well as the basic core values of patriotism and individualism.  Being an Eagle Scout is about leading people in such a way that they can learn those afore mentioned skills and traits.  These are not traits that are unique or specific only to prescribed sub branches of the American public.  If your starting off that education saying a large segment of the modern American public is 'not good enough', your teaching those same scouts a very specific lesson about equality.  Namely, that despite our the Declaration of Independence, we are not in fact all equal but some of us are better than others and those others should be marginalized as a threat.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;To put it bluntly, this approach is pathetic.  The mentality required to take that position is so juvenile that if that is the true goal of scouting these days, I no longer wish to be associated with it.  The world is changing and I'd rather be looked upon as a Raven than an Eagle if the Eagle is going to be used to represent homophobia, religious bigotry and fear.  To the Council in charge of the BSA, you are cowards that use your position to marginalize those you are afraid of.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;- A Raven Among Eagles&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;PS. For anyone who wants to pick a passive aggressive fight on the topic, I've made a &lt;a href="http://www.cafepress.com/RavensAmongEagles"&gt;CafePress shop&lt;/a&gt;.  It includes the original image as well as a 'Reverent' and 'Morally Straight' subset for those that wish to take that extra leap.  Personally I find the water-bottles the most appealing and appropriate form for this protest to take.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-7385027103411875079?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/7385027103411875079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=7385027103411875079' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7385027103411875079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7385027103411875079'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2011/03/ravens-among-eagles-in-bsa.html' title='Ravens among Eagles in the BSA'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-KotPwz2EFds/Te44VtI8ghI/AAAAAAAAAHc/KqZxDSzg6wk/s72-c/14488781674_XZKPv.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-3292643278038017302</id><published>2011-01-24T19:47:00.000-08:00</published><updated>2011-01-24T19:47:54.857-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='explanation'/><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='dropbox'/><title type='text'>Using Dropbox in Windows to Automatically Sync Fixed Folders</title><content type='html'>Or, How to&amp;nbsp;Seamlessly&amp;nbsp;Backup All your Save Game Files&lt;br /&gt;&lt;br /&gt;I thought I'd pass this on in the midst of everything else I'm doing as it hit me in an epiphany earlier this week. &amp;nbsp;In this demonstration I'm going to use my 'My Games' folder inside My Documents area for an example but this will work with any Directory you want to sync anywhere on your hard drive.&lt;br /&gt;&lt;br /&gt;This is done using Vista/7's support for 'symbolic links', a feature that has been available for eons in the unix world. &amp;nbsp;This feature has some caveats in windows that are not present in the unix world however. &amp;nbsp;You can only create symbolic links to folders, not files. &amp;nbsp;Shortcuts to files work similarly, but I'm not sure they can be invoked&amp;nbsp;seamlessly&amp;nbsp;like a symbolic link (thou the help does claim it can make file symbolic links so there is something to it). &amp;nbsp;Also, you can not create symbolic links to or from network shares, even if they are mapped as a network drive, so what I'm discussing here would not work for backing things up to a&amp;nbsp;SharePoint&amp;nbsp;or Samba share for instance. &amp;nbsp;I'm not sure you would want to anyway, if you did, then this data would be unavailable when you are not on the correct network (or a network at all for that matter).&lt;br /&gt;&lt;br /&gt;From here I'm going to assume you have DropBox installed already, and you've got a folder you want to exist everywhere, so lets get rolling. &amp;nbsp;First copy the folder you want to keep everywhere to a sensible location inside your DropBox area. &amp;nbsp;In my case I'm backing up my gaming information in the 'My Documents/My Games' folder for demonstration purposes. &amp;nbsp;In my DropBox area I added a 'Gaming' folder to my DropBox and copied the 'My Games' folder in it's entirety copied over to this location. &amp;nbsp;After this move the non DropBox folder&amp;nbsp;aside&amp;nbsp;(do not delete it until you've confirmed your in good shape, if at all). &amp;nbsp;I would also write out the 'Target' folder path and the full path for this location in your DropBox folder on a piece of paper for&amp;nbsp;reference, you will need both full paths shortly.&lt;br /&gt;&lt;br /&gt;After this you've got to bring up a standard old administrative empowered command line prompt (hit the windows key then type CMD and right click on 'cmd.exe' selecting 'Run as Administrator'). &amp;nbsp;From here on you'll need to utilize the '&lt;a href="http://technet.microsoft.com/en-us/library/cc753194(WS.10).aspx"&gt;mklink&lt;/a&gt;' command provided in the path, this command is administrative&amp;nbsp;privileged&amp;nbsp;so please make sure you do start it up correctly to save some grief. &amp;nbsp;You can get a rundown of the function using 'mklink /?' as well as in the provided link. &amp;nbsp;After this you can run from anywhere the following (adjusted as appropriate for what you wish to make a link from and to):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;mklink /D "c:/users/&lt;username&gt;/My Documents/My Games/" "c:/users/&lt;username&gt;/My Documents/My Dropbox/Gaming/My Games/"&lt;/username&gt;&lt;/username&gt;&lt;/blockquote&gt;&lt;br /&gt;Now if you go back to your My Documents folder you'll see a folder icon with a shortcut type sub icon on it. &amp;nbsp;This indicates your in good shape and it should work fine at this point.&lt;br /&gt;&lt;br /&gt;Blue Pill:&lt;br /&gt;&lt;br /&gt;This works surprisingly well with very little effort on your part individually. &amp;nbsp;Effectively it's doing exactly what you'd expect it to do without any massaging, which is awesome and pretty rare these days. &amp;nbsp;Now all you have to do is replicate this configuration on each computer with DropBox installed and your in good shape generally speaking. &amp;nbsp;I do notice a large number of files get updated when I play video games, and I'm not clear what the implications of this are for systems with drastically different capabilities (for say your games config files). &amp;nbsp;But all in all it works.&lt;br /&gt;&lt;br /&gt;Red Pill:&lt;br /&gt;&lt;br /&gt;As to the caveat above in the 'generally speaking' comment, I&amp;nbsp;haven't&amp;nbsp;tested this&amp;nbsp;extensively&amp;nbsp;for video games and the like. &amp;nbsp;I have&amp;nbsp;read that there are some implications with rapidly updating files and DropBox on the forums (I seem to have lost the link). &amp;nbsp;However DropBox seems to be of the opinion that corruption is impossible based on their open service logs so to each their own. &amp;nbsp;Also&amp;nbsp;remember&amp;nbsp;that DropBox is NOT a backup service, it is a sync service (an&amp;nbsp;extremely&amp;nbsp;chatty one from a networking standpoint). &amp;nbsp;You should still make sure you've got a backup of anything you put on there in case of some sort of corruption caused by either your own hardware or the service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-3292643278038017302?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/3292643278038017302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=3292643278038017302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3292643278038017302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3292643278038017302'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2011/01/using-dropbox-in-windows-to.html' title='Using Dropbox in Windows to Automatically Sync Fixed Folders'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-6015201430545965244</id><published>2011-01-07T15:02:00.000-08:00</published><updated>2011-01-07T15:05:20.489-08:00</updated><title type='text'>Dicom Server Rundown</title><content type='html'>A few weeks ago (ok.. 'weeks may no longer be accurate..) I noted that I was starting a new project to get a Dicom server up and running, here I present the results of all my reading and poking and prodding.&amp;nbsp; The first thing to know is there is no silver bullet, none of these represented the ideal solution in my eyes and they are all clearly driven by their individual groups needs.&amp;nbsp; That said some turned out to be more practical than others in the long run.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="ftp://ftp.erl.wustl.edu/pub/dicom/software/ctn/"&gt;CTN&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;This is the package we've been running up till now.&amp;nbsp; It's biggest appeal is that exact legacy, we know it and it's idiocyncrosies.&amp;nbsp; Sorta kinda at least, we don't know it well enough to clean out the associated MySQL database for instance.&amp;nbsp; A bigger downside is that it hasn't been maintained since 2003, and this leads to some nuissances in getting it built on a Centos 5 install, but these problems are by no means deal breakers. &amp;nbsp;The bigger problem is the configuration which involves a combination of both compiler flags, MySQL tweaks and environmental variables that need to be configured just right for the house of cards to start up without throwing a fit. &amp;nbsp;It also requires our users to utilize some helper scripts that I'd like to excise if possible from our overall&amp;nbsp;tool-chain.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.laurelbridge.com/pdf/DCF-Product-Description.pdf"&gt;DCF - Dicom Connectivity Framework&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;A fairly powerful package if you have the time and inclination to do it yourself. &amp;nbsp;Manufacturing tools that deal with Dicom files and protocols in C#.NET, Java or C++. &amp;nbsp;However, this is an SDK. &amp;nbsp;There doesn't appear to be any official quick tools for setting up a default environment that you can just tweak. &amp;nbsp;It may be there but the advertisement page doesn't discuss it. &amp;nbsp;The 'Compass' package from the associated company seems more inline with what I was looking for but it's a pay for product and that breaks the goal of my project by being pay for.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dicom.offis.de/index.php.en"&gt;Dicom.offis&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;Sadly this software seems like it could fit the bill very well. &amp;nbsp;In their listing of 'Dicom Software' they even have a program called 'DCMSTCOM' which appears to be a storage application built off their free toolkit DCMTK. &amp;nbsp;It however is not free and as such is off the list of options for the purposes of this project. &amp;nbsp;That said, DCMTK could be used to build a new storage system for free (as it itself is free) but this isn't the pre built / tested land we are looking for here. &amp;nbsp;An&amp;nbsp;extremely&amp;nbsp;bare-bone&amp;nbsp;server is included in DCMTK called '&lt;a href="http://support.dcmtk.org/docs/storescp.html"&gt;storescp&lt;/a&gt;', however I'm not sure how one is supposed to know it exists since there's no way to get to the documentation without a google search (and prior knowledge).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dcm4che.org/confluence/display/ee2/Home"&gt;Dcm4che&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;All I can say is I found this package.&amp;nbsp; Beyond that.. I can't offer much, the documentation on what it does is effectively non&amp;nbsp;existent, however there's an &lt;a href="http://www.dcm4che.org/confluence/display/ee2/Installation"&gt;extensive page on how to install it&lt;/a&gt;. &amp;nbsp;There's some man pages and --help dumps you can get from individual tools but no overall documentation to show you how to use the package, which program does what or the really useful stuff like 'configs for typical use scenarios'.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xnat.org/"&gt;XNAT&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;This is an&amp;nbsp;enormous&amp;nbsp;'do everything' package that's actually free. &amp;nbsp;Or at least it appears to be, I left the page a bit fuzzy on that part. &amp;nbsp;However it actually does too much (yes that's possible) as it's a storage system and an entire workflow / processing engine. &amp;nbsp;If we wanted to uproot the entire way we do everything from project creation, to patient registration and introduce the ability to audit and QA all these different points simultaneously this package could do that happily. &amp;nbsp;It'll even act as the 'send to' target for scanners through it's &lt;a href="http://nrg.wustl.edu/projects/DICOM/DicomServer.jsp"&gt;DicomServer&lt;/a&gt; package but it appears you have to buy into the whole XNAT system to utilize this piece. &amp;nbsp;You can't just use it as a storage system, you also have to use the project / subject management sections of the code as they are all interlinked. &amp;nbsp;This is again, great for a hospital and fairly unhelpful in our present research setting even if it is a very clean looking piece of software.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xs4all.nl/~ingenium/dicom.html"&gt;Conquest&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;Conquest is a free solution that seems to be fairly&amp;nbsp;tweak able, down to the way you want your file names stored. &amp;nbsp;Like many of the systems here the documentation is a bit slap dash but it gets you there with a little plugging. &amp;nbsp;On top of this there is a community that appears to have the active participation of the developers behind it so that's promising. &amp;nbsp;It can also be back ended by a number of different database systems and used as a dicom router for people looking to build larger more complex configurations than what we are doing, or simple no database required configurations (exactly what we want). &amp;nbsp;A nice touch is that none of this is done at compile time, make sure everything is there, build, and the edit the &lt;i&gt;ini&lt;/i&gt; file to do what you want. &amp;nbsp;This is the big sell against the CTN system we are using at the moment, ease of configuration and reconfiguration.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pacsone.net/index.htm?"&gt;PacsOne Server&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;PacsOne is one of those packages you look at and on the surface appears to be perfect. &amp;nbsp;Until you read the fine print and realize that the 'basic' version is deliberately stripped of all the features you'd actually want and the Premium Edition has all the major features people would be looking for to not actually go mad setting up their servers. &amp;nbsp;It's also the only one that's completely up to date as the basic system doesn't work with MySQL past version 4.0.x and is only available for windows. &amp;nbsp;Needless to say this was abandon early on in the search for a possible solution.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.clearcanvas.ca/dnn/"&gt;ClearCanvas&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;Like the PacsOne Basic server ClearCanvas is Windows only, which isn't very helpful when all your servers run CentOS. &amp;nbsp;However if we were running a windows server somewhere this is most likely the package we would run. &amp;nbsp;It's open source, has a clean front end, supports plugins, is available in both x86 and x64 flavors, a support community and has clear documentation on how to install. &amp;nbsp;However it requires MS SQL server and there doesn't seem to be a way around this, and that could be considered a major problem depending on what your trying to do (like how we would rather not run that..).&lt;br /&gt;&lt;br /&gt;Blue Pill:&lt;br /&gt;&lt;br /&gt;It should be considered generally unsurprising that there are a large number of payfor professional solutions to this problem, that tends to be the case with solving most problems. &amp;nbsp;What was surprising was how few workable solutions we found for making things work for free. &amp;nbsp;That said the CTN worked for us for many years quite faithfully, and it appears that Conquest will present us with a path forward as the underlying OS changes (since CTN is no longer seeing updates). &amp;nbsp;We have also found that bringing CTN forward requires&amp;nbsp;relatively&amp;nbsp;few tweaks and is more of a problem of making sure the correct packages are installed than anything else. &amp;nbsp;I will be posting my&amp;nbsp;bosses&amp;nbsp;notes on how we got this to compile once I've compiled them and confirmed them. &amp;nbsp;Conquest is also a capable system and we got it up in very little time, and are tweaking configs now to set it up to our liking. &amp;nbsp;I'll post this as well after we've completed the configuration and testing.&lt;br /&gt;&lt;br /&gt;Red Pill:&lt;br /&gt;&lt;br /&gt;While I've found a solution that seems to do exactly what I want it to do the overall field of choice seems to suffer from the fact that this is a rather niche service requirement. &amp;nbsp;The professional systems seem nice a sleek but feel like they suffer from being the root of an&amp;nbsp;up-sell&amp;nbsp;to the companies other products. &amp;nbsp;On the other hand the free stuff tends to be tool chests commercial software was built upon or a pile of code drawn together by one or two individuals to suit their specific needs. &amp;nbsp;This isn't necessarily bad but it makes the approaches very environment specific and the maintenance path somewhat shaky. &amp;nbsp;On the other hand, I have what I want and need and I can go about my work without writing too much code, so who am I to complain?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-6015201430545965244?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/6015201430545965244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=6015201430545965244' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/6015201430545965244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/6015201430545965244'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2011/01/dicom-server-rundown.html' title='Dicom Server Rundown'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8882414968767045929</id><published>2010-12-08T19:33:00.000-08:00</published><updated>2010-12-08T19:33:33.956-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='Idiocy'/><category scheme='http://www.blogger.com/atom/ns#' term='Freedom'/><category scheme='http://www.blogger.com/atom/ns#' term='wikileaks'/><title type='text'>Wikileaks Revisited</title><content type='html'>The most recent round of leaks&amp;nbsp;provided by Wikileaks, labeled 'cablegate,' seems to have raised the ire of the American Government in a way previous leaks were apparently incapable of. &amp;nbsp;I find this odd when you consider that earlier this year they leaked a video detailing our massacre of a bunch of unarmed men and two reporters. &amp;nbsp;In contrast, the current controversy doesn't hold anything more damning than allowing us to discover that our diplomats behave like a bunch of twelve year olds behind closed doors. &amp;nbsp;This shouldn't be terribly surprising to the people of the country when our representatives in the US Senate act like four year olds. &amp;nbsp;Actually this should&amp;nbsp;probably&amp;nbsp;be considered good in comparison. &amp;nbsp;To go further we are&amp;nbsp;of course&amp;nbsp;ignoring the fact that if this had happened to another country we would be highly entertained and still only marginally interested in what they said about us. &amp;nbsp;It&amp;nbsp;probably&amp;nbsp;wouldn't even engender much of a mention from our local news organizations.&lt;br /&gt;&lt;br /&gt;The big 'damning' allegation is that this release is a &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2010/11/28/AR2010112804139.html"&gt;critique of American 'exceptional-ism', which is then touted around as an AH HA moment by the people that say it&lt;/a&gt;. &amp;nbsp;I can't express how much this&amp;nbsp;argument&amp;nbsp;is crap. &amp;nbsp;Exceptional is a label applied to a person or group by an outside person or group for&amp;nbsp;consistently&amp;nbsp;doing something&amp;nbsp;amazing. &amp;nbsp;We are no longer doing anything amazing, and we no longer deserve that title; there's even rumors we are considering eliminating &lt;a href="http://www.businessweek.com/ap/financialnews/D9JRBHN00.htm"&gt;NSF funds that help keep us from drowning completely&lt;/a&gt;. &amp;nbsp;In the past we've been considered exceptional for a number of reasons, for example spanning our mastery of science to roundly crushing the single greatest evil humanity ever&amp;nbsp;perpetuated&amp;nbsp;upon itself. &amp;nbsp;Mixed in the middle was a corporate culture that put America first, built among the best of everything it manufactured and a research culture of doing the best work even when that involved expensive 'mad science' projects. &amp;nbsp;In general this bought us a ton of leeway as we were held up as the thing all other countries wanted to be. &amp;nbsp;A goal they took very seriously and we ignored entirely, to our detriment. &amp;nbsp;Instead we farmed out &lt;a href="http://cupofcha.com/2008/03/27/how-big-a-problem-is-outsourcing.html"&gt;those things that made us larger than life&lt;/a&gt; to the&amp;nbsp;cheapest&amp;nbsp;bidder, engineering tax laws that encouraged an exodus from our soil of &lt;a href="http://www.investmentu.com/2010/October/big-pharma-outsourcing-research-and-development.html"&gt;all the major tasks of our biggest companies&lt;/a&gt;. &amp;nbsp;On top of this we allowed them to suck up huge quantities of our countries capitol in the form of addressing our debt, as we dug a hole that will take decades to climb out of. &amp;nbsp;In short, we are no longer exceptional and we gain considerably in learning some humility at Wikileaks hands as it may help us start putting our feet in the direction towards being truly exceptional again instead of just insisting that we are.&lt;br /&gt;&lt;br /&gt;A good start would be to acknowledge Wikileaks for what it is, a news organization built on the principles of a free and open press. &amp;nbsp;This puts them squarely under the roof we built for press organizations in the First Amendment to our constitution. &amp;nbsp;We as a nation have waged war on our own First Amendment but it has so far stood against the best&amp;nbsp;battering&amp;nbsp;we could come up with. &amp;nbsp;It can survive Wikileaks as well, as&amp;nbsp;inconvenient&amp;nbsp;as the organization may be to those in control. &amp;nbsp;In appreciation for our First, stop for a moment and consider what Wikileaks has said to those that feel the need or duty to release something others would rather not be public. &amp;nbsp;They've come forward with a simple&amp;nbsp;premise&amp;nbsp;of "Come to us and we'll release those things you&amp;nbsp;aren't&amp;nbsp;safe releasing yourself." &amp;nbsp;That is HUGE, I can't underscore how important that is, especially in the climate we find our-selves in with our standard media. &amp;nbsp;The fear of losing access to high powered politicians drives them away from doing anything more than barely scratching the surface of controversial topics, let alone dropping a bomb on the entire government in the form of&amp;nbsp;embarrassing&amp;nbsp;comments made by our foreign representatives. &amp;nbsp;Wikileaks doesn't have any such concern for access as it doesn't attempt to interview people for their opinions, it uses their deeds instead.&lt;br /&gt;&lt;br /&gt;You don't have to go back terribly far to find an example of this being a massively important tool for the world. &amp;nbsp;Mentioned only as a footnote by much of our local media beyond a footnote, but it happened despite the blinders we allow to be place upon us, in 2007 a &lt;a href="http://www.marsgroupkenya.org/pdfs/2009/03/KNCHR_crimes-against-humanity-extra-judicial-killings-by-kenya-police-exposed.pdf"&gt;76 page report describing 'extra judicial' executions of five hundred individuals&lt;/a&gt;(pdf link)&amp;nbsp;by Kenyan police forces was released. &amp;nbsp;The executions were performed in such grotesque fashion that they could possibly qualify as a crime against humanity. &amp;nbsp;Reporters in the country were incapable of releasing the information without jeopardizing their own safety, as there was a strong chance of retaliation by the police. &amp;nbsp;Instead it was released to the world by Wikileaks, protecting the identity of the leaker to this day, making the Kenyan press feel safe enough to run the story themselves, which were done for an extended period of time before the general election. &amp;nbsp;The result being that all politicians named in the document were swept out of office in altering the course of an entire country. &amp;nbsp;The only people that would consider this an act of terrorism are those that are afraid of something similar happening to themselves and their careers, yet we have politicians calling on the US to classify this organization, a media outlet, as a terrorist organization.&lt;br /&gt;&lt;br /&gt;This charge of terrorism is as flawed as it is fascinating. &amp;nbsp;To start, it's&amp;nbsp;apparently&amp;nbsp;begun to evolve into '&lt;a href="http://www.youtube.com/watch?v=1DIW1ELm_ZA"&gt;Information Terrorism&lt;/a&gt;' by those who initially bandied around Wikileaks being a terrorist organization in the same&amp;nbsp;vein&amp;nbsp;as Al Qaeda. &amp;nbsp;This&amp;nbsp;re-branding&amp;nbsp;effort highlights how bankrupt this position is to begin with, and represents a total failure to acknowledge two key points. &amp;nbsp;First, words have meanings. &amp;nbsp;And second, words have consequences. &amp;nbsp;Terrorism has a very specific meaning, especially in the hearts and minds of the American public. &amp;nbsp;It summons up images of two of our largest buildings and the thousands of people they housed daily plummeting to their doom or the explosive horrors visited on innocents by the likes of the UnaBomber and McVeigh or the Beltway Sniper random highway executions. &amp;nbsp;These are examples of terrorism, attacks on the public designed to alter policy decisions through the killing of innocents, to simply make a grotesque point, or, in the case of Al Qaeda, make a rallying call for the death of America. &amp;nbsp;This is not what Wikileaks is doing. &amp;nbsp;They are a press group that&amp;nbsp;received&amp;nbsp;documents from a leak source inside the US Government and are exposing those documents in editorialized format to the world. &amp;nbsp;It may be inconvenient or even annoying, but what it is at it's heart is a form of criticism. &amp;nbsp;And they have every right to&amp;nbsp;criticize&amp;nbsp;the US Government just like &lt;a href="http://www.politicususa.com/en/palin-obama-america"&gt;US Citizens&lt;/a&gt;, Press &lt;a href="http://www.washingtontimes.com/news/2010/jan/29/critics-blast-us-silence-over-drone-strikes/"&gt;Local&lt;/a&gt; and &lt;a href="http://www.swissinfo.ch/eng/politics/foreign_affairs/Swiss_join_in_criticism_of_US_entry_fee.html?cid=23075788"&gt;Foreign&lt;/a&gt;, and citizens of other countries do every day.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;Wikileaks is an organization &lt;a href="http://www.state.gov/r/pa/prs/ps/2010/12/152465.htm"&gt;dedicated to ideals Americans claim to hold in high regard&lt;/a&gt;. Instead Americans are&amp;nbsp;vilifying Wikileaks because it managed to&amp;nbsp;embarrass&amp;nbsp;us. &amp;nbsp;It is in many ways, quite&amp;nbsp;literally&amp;nbsp;the exemplar of an open and free press, even when the truth may be inconvenient for those it places in it's crosshairs. &amp;nbsp;We all need to wrap ourselves in some of that thick skin we use to deal with a thousand other sleights every day of the week both&amp;nbsp;perceived&amp;nbsp;and real. &amp;nbsp;The damage is done from the perspective of Wikileaks, so, if we want to fix things, we need to address it at the source.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;The real root of this is, of course, a bit more complex. &amp;nbsp;Wikileaks is a&amp;nbsp;demonstrable&amp;nbsp;engine for good and openness in government and corporate worlds (&lt;a href="http://en.wikipedia.org/wiki/Bank_Julius_Baer_vs._Wikileaks_lawsuit"&gt;they have ousted a number of fairly horrible corporations as well&lt;/a&gt;). &amp;nbsp;They are also simply the messenger of the truth, to really address this we need to address the source. &amp;nbsp;In this case, PFC Bradly Manning of the US Army stands accused of releasing the information in the cables as well as the information in the 'Collateral Murder' video earlier this year. &amp;nbsp;If you've stopped to think about what that video told us about the our war in Iraq (specifically that we had butchered 2 Reuters reporters, we knew we had done so and we denied it&amp;nbsp;vigorously), then you can&amp;nbsp;probably&amp;nbsp;appreciate that we are better off for knowing this, as the deeds were carried out in our name. &amp;nbsp;Were the cables really necessary to leak? Probably&amp;nbsp;not. &amp;nbsp;It would have been more appropriate to leak the details of the events leading to his disillusionment, for example&lt;a href="http://www.wired.com/threatlevel/2010/06/conscience/"&gt; the full details of the Iraqi citizens being arrested for effectively sedition&lt;/a&gt; after writing an expose asking where a bunch of money that was supposed to be used for improving the country went (since it apparently didn't go to improving the country).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8882414968767045929?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8882414968767045929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8882414968767045929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8882414968767045929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8882414968767045929'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2010/12/wikileaks-revisited.html' title='Wikileaks Revisited'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-6210685501374105132</id><published>2010-10-14T09:36:00.000-07:00</published><updated>2010-10-14T09:36:04.316-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicom'/><title type='text'>Framing the Problem: Building a Dicom Storage Server with Open Source / Free Software</title><content type='html'>I should state at the outset that our needs for a Dicom Server are a different than most use cases for the system. &amp;nbsp;In a standard system you configure a Central Test Node / PAC server to store all of your images. &amp;nbsp;These systems can typically store images by study ID, patient ID, test administer ID or several other permutations of this information. &amp;nbsp;Then any device that implements the network standard can directly connect to the server and request based on this meta data and it pops up on their screen. &amp;nbsp;This is a fantastic approach if your in a hospital or doctors office / medical center as it allows you to retrieve data in remote locations and poke at it pretty easily. &lt;br /&gt;&lt;br /&gt;However this very convenient system is not at all convenient if you want to be able to extract the Dicom files out onto a NAS for processing on a cluster. &amp;nbsp;Specifically we need to be able to farm images out into their respective labs storage area (at the labs will, not ours). &amp;nbsp;Presently this is done via manual intervention on the parts of the labs by running a command we've labeled 'dicom rename' which accepts a subject ID and a few other flags, then dumps the related files into a specified destination folder with 'pretty' names. &amp;nbsp;From here they can run conversion scripts on these renamed files to make them friendlier to the myriad analysis programs our labs use in their individual&amp;nbsp;tool-chains.&lt;br /&gt;&lt;br /&gt;Up until now we've been running a program simply called CTN (Central Test Node) which has served us 'ok'. &amp;nbsp;This package was originally written to&amp;nbsp;demonstrate&amp;nbsp;the ideas presented in the Dicom spec so that there was a test to run against for what appears to have amounted&amp;nbsp;to a vendor fair. &amp;nbsp;It's fairly thin and doesn't implement much, other than a Dicom Storage interface keeping the files in huge mangled directory names with a lookup in a MySQL database. &amp;nbsp;This system has worked fine as noted with a few fixes here and there to make it work with newer versions of MySQL.&lt;br /&gt;&lt;br /&gt;Be that as it may, this system is a dead end with no development being done on it. &amp;nbsp;On the heels of this fact we are also bringing a new system online that&amp;nbsp;probably&amp;nbsp;will not work with our old server system or if we can even configure the old system to accept simultaneous transfers from two sources. &amp;nbsp;In lieu of finding out the hard way we are moving on to a new system. &amp;nbsp;However what form that system will take has yet to be determined and we are currently attempting to evaluate our options (attempting because finding this information is proving less trivial than expected). &amp;nbsp;The challenge being: &amp;nbsp;Find a new software package that is flexible enough to allow us to slot it into our current workflow but stable enough to handle large data transfers from multiple hosts simultaneously. &amp;nbsp;It would be nice to be able to add extensions and automation features to it as well (like say.. auto rename scripts, cutting out the need for a database entirely).&lt;br /&gt;&lt;br /&gt;If anyone knows anything that fits the bill feel free to post it in the comments. &amp;nbsp;For my part I'll be writing at least one more post on this discussing the packages we've looked at and evaluated as well as a post about how we finally got it setup.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;Finding Dicom Servers is less easy than expected, but I'm going to do the legwork for you. &amp;nbsp;Any helper functions we write will eventually make it into the pni-toolbox repository (free code!).&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;I will&amp;nbsp;probably&amp;nbsp;get sick of doing this at some point and simply pick the best option of what's currently been tested instead of evaluating every possible option / permutation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-6210685501374105132?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/6210685501374105132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=6210685501374105132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/6210685501374105132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/6210685501374105132'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2010/10/framing-problem-building-dicom-storage.html' title='Framing the Problem: Building a Dicom Storage Server with Open Source / Free Software'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-2514147427695221918</id><published>2010-10-07T12:15:00.000-07:00</published><updated>2010-10-07T13:21:03.760-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='WT'/><title type='text'>A Small Update</title><content type='html'>I figured I should provide a small update to the this to say a few things.&lt;br /&gt;&lt;br /&gt;1) I am not dead.  I'm not sure whether there were any rumors to that effect, but that makes it no less true.  I'm still here, and I'm not a zombie (yet..).&lt;br /&gt;&lt;br /&gt;2) I've got a few things I'm working on right now and will be posting an extensive review of one of those project tangents at sometime in the near future (I hope....).&lt;br /&gt;&lt;br /&gt;3) I've got some other things unrelated to the things above that I will now proceed to write a rambling blurb about.  Fun!&lt;br /&gt;&lt;br /&gt;First a few things I'm experimenting with now in the land of programming!  I've recently discovered a package called '&lt;a href="http://www.webtoolkit.eu/wt"&gt;Wt&lt;/a&gt;' (apparently pronounced Witty?), that allows you to implement an entire web application in C++ and wrap it in CSS instead of your traditional PHP/python/ruby/.net based web programming implementations.  Why is this a good thing?  I'm not sure, but it is neat and I like C++ so I'm a fan.  The main page doesn't have much information on it asside from some sample applications and links to the source code for downloading and building.  However there's a Wt Wiki that has additional information for the curious at &lt;a href="http://redmine.webtoolkit.eu/wiki/wt"&gt;the community wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The system is built around a few different concepts and models.  For instance it provides an MVC based structure if you want to go that way.  Alternatively you can assemble programs just using widgets directly for displaying content and generating ajax on the fly, that can gracefully degrade all the way down to a form based interaction (with some tweaking and help here and there).  That's the claim at least, I havn't played with the feature much.&lt;br /&gt;&lt;br /&gt;A second interesting side project I've been plying with is LVM, CLang and CMake mixed together.  I have succeeded in getting Clang to run when you invite CMake on a small project (I think...) and may post a quick how to as it's pretty easy.&lt;br /&gt;&lt;br /&gt;Anyway that wraps up my assurance that I'm not dead and there will be more to come now that I'm working on things worth writing about again!&lt;br /&gt;&lt;br /&gt;Also, no blue pill on this one, sorry it just doesn't fit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-2514147427695221918?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/2514147427695221918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=2514147427695221918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/2514147427695221918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/2514147427695221918'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2010/10/small-update.html' title='A Small Update'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-2121482520137357131</id><published>2010-07-21T16:03:00.000-07:00</published><updated>2010-07-21T16:03:48.569-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Nagios'/><title type='text'>Nagios: IPMI Monitoring</title><content type='html'>Anyone that's familiar with Nagios knows that there are certain things it can do very well and other things it tends to be.. lacking on.&amp;nbsp; IPMI is one of those ones that gets a bit complicated, there are a few different packages out there for doing it but none of them really do what you want them to do for integrating into the way Nagios 'thinks'.&lt;br /&gt;&lt;br /&gt;There are a few reasons for this, mostly tied to the way that traditional IPMI software interfaces 'think'.&amp;nbsp; They are configured for direct monitoring and notification instead of integration into bigger systems.&amp;nbsp; This poses a major problem for the nagios integration which is direct querry based.&amp;nbsp; However there's a newish toolbox with a few commands that turn that on it's head.&amp;nbsp; This package is the FreeIPMI package which provides the command ipmi-sensors which allows the dumping of all sensors and the ability to ask for specific sensor numbers.&amp;nbsp; Based on this information we wrote a new IPMI handler for Nagios that lets us request the status of specific sensors and import that status straight into Nagios.&amp;nbsp; This file is 'check_ipmi.py' (cleverly named, i know) and is available on the PNI toolbox repository here: &lt;a href="http://code.google.com/p/pni-toolbox/source/browse/trunk/Nagios/plugins/check_ipmi.py"&gt;http://code.google.com/p/pni-toolbox/source/browse/trunk/Nagios/plugins/check_ipmi.py&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Other than python the only thing this command needs to work is for FreeIPMI to be installed.&amp;nbsp; This doesn't however get you all the way done, you need a bit of information before you can jump into the configuration of Nagios itself.&amp;nbsp; Specifically you need a list of the ID's and sensor names so you know what your monitoring.&amp;nbsp; You can dump this information by using the command.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;impi-sensors -h &lt;em&gt;hostname&lt;/em&gt;&amp;nbsp;&lt;ip address=""&gt;&lt;hostname&gt;-u &lt;em&gt;username&lt;/em&gt; &lt;user name=""&gt;&lt;username&gt;-p &lt;em&gt;password&lt;/em&gt;&lt;password&gt;&lt;password&gt;&lt;/blockquote&gt;&lt;br /&gt;This will dump a large amount of information onto your screen that should look like.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;# (this is a partial sensor list for a Sunfire X2200)&lt;br /&gt;# 640: CPU 0 Temp (Temperature): 40.00 C (NA/95.00): [OK]&lt;br /&gt;# 704: CPU 1 Temp (Temperature): 41.00 C (NA/95.00): [OK]&lt;br /&gt;# 768: Ambient Temp0 (Temperature): 36.00 C (NA/75.00): [OK]&lt;br /&gt;# 832: Ambient Temp1 (Temperature): 41.00 C (NA/75.00): [OK]&lt;br /&gt;# 1632: CPU0 DIMM0 (Memory): [OK]&lt;br /&gt;# 1680: CPU0 DIMM1 (Memory): [OK]&lt;br /&gt;# 1728: CPU0 DIMM2 (Memory): [OK]&lt;br /&gt;# 2400: POST Error (System Firmware): [Unknown]&lt;br /&gt;# 2448: Eventlog (Event Logging Disabled): [OK]&lt;br /&gt;# 2496: System Event (System Event): [OK]&lt;br /&gt;# 2544: Critical INT (Critical Interrupt): [OK]&lt;br /&gt;# 2592: Watchdog (Watchdog 2): [OK]&lt;/blockquote&gt;&lt;br /&gt;By default the command will assume the 'good' result for any given sensor is '[OK]'.&amp;nbsp; This can be overridden however.&amp;nbsp; You can also request several sensors simultaneously if you so choose.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;So, all that's left is to configure your host listings, services and commands to set everything up now.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Here's my command configurations (a bit stripped&amp;nbsp;down looking as I've lifted them from the 'configuration' pane on the nagios front end):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;check_ipmi $USER1$/check_ipmi.py -n $_HOSTIPMIADDRESS$ -s $ARG1$&lt;br /&gt;check_ipmi_with_expect $USER1$/check_ipmi.py -n $_HOSTIPMIADDRESS$ -s $ARG1$ -e $ARG2$&lt;/blockquote&gt;&lt;br /&gt;There are two things to note, one two commands have been specified, you could do a single command I supose but this seemed cleaner to me.&amp;nbsp; The $_HOSTIPMIADDRESS$ is a variabe defined in the host's definition to allow a second IP address to be associated with the host (see the &lt;a href="http://nagios.sourceforge.net/docs/3_0/customobjectvars.html"&gt;nagios documentation&lt;/a&gt; for how to do this).&lt;br /&gt;&lt;br /&gt;Followed by the service definitions (also lifted from the configuration pane):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Node0 CPU 2 Overtemp check_ipmi!122 &lt;br /&gt;&lt;br /&gt;Node0 CPU 2 Status check_ipmi_with_expect!41!'[Processor Presence detected]' &lt;/blockquote&gt;&lt;br /&gt;These are lifted from Node0 of a storage cluster of IBM servers, the magic numbers here are derived from a dump of those machines ipmi-sensors output.&amp;nbsp; Note the second one provides the expected 'good' responce for that particular sensor, anything besides that value being returned is treated as a failure.&amp;nbsp; These could easily be made to be treated as warning instead of critical alerts with a tweak to the python script being called.&lt;br /&gt;&lt;br /&gt;Blue Pill:&lt;br /&gt;This system will allow you to directly collect stats on your hardware's built in sensors (assuming you have hardware sensors).&amp;nbsp; The sensors function tends to give you alot of the critical information you would need to have on your computer including device faults temperature issues and things of that nature.&lt;br /&gt;&lt;br /&gt;Red Pill:&lt;br /&gt;I've run into two problems with the script so far.&amp;nbsp; The more annoying one is that sometimes the IPMI / BMC board sometimes goes out to lunch and stops responding for a few minutes and this will generate errors that are effectively meaningless.&amp;nbsp; The second is that it currently doesn't support the ipmi-chassis command which is entirely my fault as a result of time and other projects.&amp;nbsp; The ipmi-chassis system provides information on the current power status for the system so you could use Nagios's dependant services feature to prevent Nagios from generating errors for services from a server if that server is currently powered down (it would help if I could figure out how to use the dependant service feature of course...).&amp;nbsp; Due to the nature of IPMI it will still happily respond as long as there is wall power to the chassis as it runs even if the computer is not 'on' in the classic sense.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-2121482520137357131?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/2121482520137357131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=2121482520137357131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/2121482520137357131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/2121482520137357131'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2010/07/nagios-ipmi-monitoring.html' title='Nagios: IPMI Monitoring'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-6283761142877720994</id><published>2010-06-26T17:18:00.000-07:00</published><updated>2010-06-26T17:18:11.944-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Windows 7 Workstation Configuration using Group Policies</title><content type='html'>As some of you may be aware, the old Beta's of Windows 7 had a feature included for user profiles called 'Guest Mode'. This was a sand boxing technology based on the 'Windows Steady State' software that has been available for a while for XP and Vista. Sadly, it was removed from the RC and RTM versions of the OS with no clear reason why and to the disappointment of a number of users (there is also no idication that Steady State is slated to make a Win 7 appearance). The main reason it was unfortunate to see it go was that this sand boxing allowed you to construct a workstation that behaved like a dynamic kiosk effectively. The idea being any changes made to the OS were never actually committed to the OS so even if your users did 'Very Bad Things' (TM) the log-off action would undo those bad things. This is great, it gives your users a wide range of freedom and you the peace of mind to know you won't have to unfuck a workstation every three days. But sadly, it's gone, which means we need to walk a grittier path to get the result we want (and really, we still won't get there...).&lt;br /&gt;&lt;br /&gt;At first glance it would appear that what we are looking for is the Local Group Policy editor. This is not necessarily the case. This tool, invoked by typing&lt;b&gt; gpedit.msc&lt;/b&gt; into the start menu has all the settings we could ever want to manipulate.&amp;nbsp; However, it applies those manipulations to everyone on the computer, which isn't terribly helpful when all of a sudden you've incapacitated yourself (and possibly disabled your machine in the 'now you need to wipe the OS' sort of way).&amp;nbsp; While this isn't good for a workstation it does let you install some handy tweaks on your system (quickbar anyone?).&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_UbKGXWsXt9w/TBfwXVbcqBI/AAAAAAAAAG4/qiMrw2U9who/s1600/gpedit.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="117" src="http://3.bp.blogspot.com/_UbKGXWsXt9w/TBfwXVbcqBI/AAAAAAAAAG4/qiMrw2U9who/s320/gpedit.PNG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;gpedit.msc, this is what you don't want.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;So how do we setup group policies on a computer without incapacitating ourselves in the process? Instead use 'Run' and type in 'mmc', this brings up the Microsoft Management Console, a customizable interface for tweaking well... everything.&amp;nbsp; In this case we are interested in adding two items to the console for working with.&amp;nbsp; To do this just hit 'Ctrl+M', or use the add command in the 'File' menu.&amp;nbsp; This will bring up the 'Add or Remove Snap-ins' window where you can bring in the editors we are interested in here.&amp;nbsp; Under the 'Available snap-ins' find the 'Group Policy Object Editor', highlight it and select 'Add'.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_UbKGXWsXt9w/TBf1YEyfHZI/AAAAAAAAAHA/y9G1_zEC4tk/s1600/gpoeditor.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="275" src="http://2.bp.blogspot.com/_UbKGXWsXt9w/TBf1YEyfHZI/AAAAAAAAAHA/y9G1_zEC4tk/s320/gpoeditor.PNG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Group Policy Object Editor Wizard&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Select 'Browse' and change 'Local Computer' to the 'Non-Administrators' group under the 'Users' tab in the resultant menu.&amp;nbsp; Do this again but selecting 'Administrators' this time.&amp;nbsp; If you've done it right you should have a window like the following.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_UbKGXWsXt9w/TBf6wcMQtYI/AAAAAAAAAHE/9zjICEH-Oqg/s1600/mmc-final.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="80" src="http://4.bp.blogspot.com/_UbKGXWsXt9w/TBf6wcMQtYI/AAAAAAAAAHE/9zjICEH-Oqg/s320/mmc-final.PNG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;MMC with Addins Configured&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;At this point any changes made to the 'Non-Administrators' entry will change settings for anyone without Admin privileges associated with their ID.&amp;nbsp; This isn't a perfect solution but it will let you lock down some of the more annoying habits of the average user.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;This works pretty well for locking a system down.&amp;nbsp; It can even do things like blocking a system from allowing USB memory sticks if your concerned about that level of security.&amp;nbsp; You can impose pasword update / lockout requirements for the system to tighten it down even further.&amp;nbsp; It also lets you replace 'explorer.exe' with alternative gui environments which is useful if you want to make a console of some nature (a custom Rainmeter interface perhaps?).&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;The big fail that I see in this setup is that it's restricted to only Administrator / Non-Administrator sub divisions.&amp;nbsp; You can't make a smaller group of users that are really locked down, some high level users and then a full access option.&amp;nbsp; Asside from that the fact that there is no proper way to import / export the policies is problematic (even getting a printable log of the policies requires logging in as the given user and using a command line tool).&amp;nbsp; I believe you can just copy the policy file that is generated but this is fairly clunky, this means setting up several computers with restricitions can become a chore quickly.&amp;nbsp; My understading is that a full fledged active directory server can fix these complaints&amp;nbsp;but I'm not intimately familiar with that technology so I won't speak to it here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-6283761142877720994?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/6283761142877720994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=6283761142877720994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/6283761142877720994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/6283761142877720994'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2010/06/windows-7-workstation-configuration.html' title='Windows 7 Workstation Configuration using Group Policies'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_UbKGXWsXt9w/TBfwXVbcqBI/AAAAAAAAAG4/qiMrw2U9who/s72-c/gpedit.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8133362608583713967</id><published>2010-05-23T12:22:00.000-07:00</published><updated>2011-09-07T14:56:42.374-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='Nagios'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Distributed Nagios</title><content type='html'>&lt;span id="goog_652900083"&gt;&lt;/span&gt;&lt;span id="goog_652900084"&gt;&lt;/span&gt;&lt;span id="goog_652900085"&gt;&lt;/span&gt;&lt;span id="goog_652900086"&gt;&lt;/span&gt;&lt;br /&gt;The blog isn't dead, I swear!&amp;nbsp; I've been working on this article for a long time trying to work out how to word it.&amp;nbsp; I've probobly failed to make it as clear as it should be but I think it conveys the ideas at least adequately.&lt;br /&gt;&lt;br /&gt;This is going to be the first of what will probably be several&amp;nbsp; posts (that will most likely eschew my whole format ::gasp::, ok.. maybe not&amp;nbsp;) describing the Nagios monitoring system I have been working on for what feels like a century.&amp;nbsp; For now I'm going to discuss the goals of the system and the variety of devices that need to be watched and what the different pieces of relevant information for these devices.&amp;nbsp; It should be noted that 'devices' in this context may in fact refer to an entire system, for example we have a set of storage systems that consists of multiple computers, raid arrays, networks and etc.&lt;br /&gt;&lt;br /&gt;To Start we'll label the Internet as Network 0.&lt;br /&gt;&lt;br /&gt;Our primary storage device has connectivity to Network 0, as well as a connection to a 10 Gbps Ethernet connection for our cluster, we'll call this Network 1.&amp;nbsp; Finally it has a backend management network we will label Network 2.&lt;br /&gt;&lt;br /&gt;Our next device of primary concern is the computational cluster.&amp;nbsp; This has 3 network links as well.&amp;nbsp; The first being to Network 0.&amp;nbsp; The second being to Network 1 in the form of an infiniband to 10 Gbps switch and Twinax 10 Gbps cables connecting to the 10 Gbps communication switch.&amp;nbsp; Finally it has a 1 Gbps management network we will label Network 3.&lt;br /&gt;&lt;br /&gt;The final 'major' device is very similar to the first one as it's task is to mirror the primary storage.&amp;nbsp; It has a connection to Network 0, which is used for keeping the devices linked and synced asynchronously.&amp;nbsp; It also has a management network which we will label Network 4.&lt;br /&gt;&lt;br /&gt;Each of these devices also has a server situated near it with access to the rear end private networks of the individual systems.&amp;nbsp; This is required due to the fact that these networks have no pathway to the internet.&amp;nbsp; Among the myriad tasks of these server is to serve up a set of virtual machines running CentOS and Nagios.&amp;nbsp; This allows us to keep an eye on the devices without exposing the nagios traffic to the internet.&lt;br /&gt;&lt;br /&gt;However this a&lt;span id="goog_652900081"&gt;&lt;/span&gt;&lt;span id="goog_652900082"&gt;&lt;/span&gt;lso means we have&amp;nbsp;three seperate locations to keep an eye on and review if there is a problem being reported.&amp;nbsp; This doesn't necessarily have to be the case thou, thanks to some industrious coding on the part of some of the nagios contributors you can use the NSCA tool to forward these status updates to a central location.&amp;nbsp; Alternatively you could use the (still listed as experimental) MySQL data storage system to store all the information is a single area, but this has several caveats like not being able to use the default nagios display system and rellying on your MySQL server not dying to keep an eye on what's going on.&amp;nbsp; Due to these caveats, as well as the desire to have an issolated implimentation that isn't dependant on outside systems (these systems don't even mount an NFS mount), we went with NSCA.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://farm5.static.flickr.com/4007/4632814431_5201eb6f7a_o.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" gu="true" height="225" src="http://farm5.static.flickr.com/4007/4632814431_5201eb6f7a_o.jpg" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This of course is only part of the puzzle, anyone that's explored Nagios in even a cursory manner will know that the backbone of the system is the config files used to tell it about the different systems it is required to keep an eye on.&amp;nbsp; However you can't just use the same config files on each of the systems and call it a day.&amp;nbsp; This is a short path to a truly massive headache since then you'll have copies of nagios without the capacity to reach a given host that is listed in their config file.&amp;nbsp; Also your aggragator will be hammering on phantoms it has no way to reach all around (or just making people around the world with the same IP's very very confused).&lt;br /&gt;&lt;br /&gt;So now that we know we can do it but there are some problems, how to fix them?&amp;nbsp; I decided to kill as many birds with as few stones as possible.&amp;nbsp; It does make configuration a bit trickier but I personnally find it easier to configure and maintain than the alternatives.&amp;nbsp; In this case that required a few steps.&amp;nbsp; First there is 1 master list of configuration files, and these when pushed ou will overwrite any changes made on the outlying systems.&amp;nbsp; I've placed this master set on the aggragator 'head' for nagios.&amp;nbsp; To make this work the aggragator has sub folders of config files that are important to each of the gatherer systems, a central set of config files that everything needs for things like templates and command definitions and a head folder with special config information for the head (hostgroups that need to exist but arn't important from the gatherers point of view).&amp;nbsp; The head then imports this main folder while the gatherers import the folder labeled as theirs and the 'central' folder to get their command and template definitions.&lt;br /&gt;&lt;br /&gt;This is all well and good to say but it doesn't say how those configs are given to the gatherers and the like.&amp;nbsp; To handle this first I made it so that you can't just SSH into the gatherers with an ALL operator in their hosts.deny files, then added a special exception for the nagios head so while nobody else can SSH into these hosts, the head can.&amp;nbsp; Eventually the head's mirror will be allowed as well, however I can still get a desktop on these hosts at will due to the fact that they are VM's run on vmware server 2.&amp;nbsp; After this I configured an SSH key from the head to the gatherers, currently it's a root cert but I'm trying to find a way around this, this allows the head to SCP the config files to the clients and give the nagios service a 'reload' command.&amp;nbsp; After that I can modify the config files on the head and simply execute a command called 'update_minions.sh' to push those updates out to the gatherers.&lt;br /&gt;&lt;br /&gt;For a quick but less granular setup you'll want to disable active host and active service checks on the head.&amp;nbsp; This has the side effect of not allowing it to test the availability of the gatherers, but also won't create spurious requests and false failures from systems the head simply can't reach (or false positives for IP's on the internet that have the same IP as the hidden host).&lt;br /&gt;&lt;br /&gt;The next articles will discuss how to file out some of the caveats from this article, how to monitor some specific types of systems using SNMP (Well supported in nagios), IPMI (a few unreliable plugins available, the PNI has published our own to hopefully solve this) and NRPE a client side monitoring and request program provided by the nagios dev team.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;&lt;br /&gt;It works.&amp;nbsp; Nagios is almost infinetely flexible so you can mold it to any of a variety of behaviors that you might wish to see and it will do it with a little massaging.&amp;nbsp; On top of that writing plugins to make it handle data that it doesn't have previously exsisting handlers for is very straight forward and probobly the least painful part ofthe whole thing.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;&lt;br /&gt;Configuration is a BEAST.&amp;nbsp; The vast majority of the time I've spent on this project has been working out how to properly configure everything so as not to have duplicate configs / phantom configs and still keeping everything talking happily.&amp;nbsp; A graphical config system would be helpful but would have to be incredibly sophisticated to properly handle the layout I'm using as the network isn't flat and the gatherers and head are issolated systems using the internet as their common communcation path.&amp;nbsp; That said I've been very happy with it thus far, it helped us catch some things already that our systems should have been notifying us about and were not (like failed disks in&amp;nbsp;a storage system and a few cluster nodes that have dead BMC monitors).&lt;br /&gt;&lt;br /&gt;I covered a bit more ground in this post than I had originally intended but it seemed relevant to explain how these systems have to talk to each other so that I can get to the nitty gritty next time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8133362608583713967?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8133362608583713967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8133362608583713967' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8133362608583713967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8133362608583713967'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2010/05/distributed-nagios.html' title='Distributed Nagios'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-6209391691971559447</id><published>2010-03-24T14:49:00.000-07:00</published><updated>2010-03-24T14:50:54.785-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='PNI'/><title type='text'>PNI Toolbox Announcement</title><content type='html'>Just a quick announcement.&lt;br /&gt;The PNI is creating a small utility toolbox repository using Google code.  We'll be loading in any of our little helper scripts and functions from our various projects in an out of band manner.  They won't have much context, and some won't work without some very specific configuration choices but they could prove useful and tweak-able for anyone looking to use them in your own environments.  For now I've added a copy of the 'svn_verify.py' script that I wrote about in a previous post and two utility files for nagios, a Python script for checking IPMI interfaces using 'freeipmi' and a small scp/ssh script that we use to propagate updates from our monitoring head out to the gatherers and tell them to reload after they have been updated.&lt;br /&gt;&lt;br /&gt;The code project and repository can be found &lt;a href="http://code.google.com/p/pni-toolbox/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;Hey, they may be useful.  We will be trying to add more, this repository is as much for our own reference / security as it is to let others take a look at how we do some of our arcane little tricks here and there.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;They aren't that well documented and may require some very specific configs (ssh key authentication for instance) to work correctly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-6209391691971559447?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/6209391691971559447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=6209391691971559447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/6209391691971559447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/6209391691971559447'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2010/03/pni-toolbox-announcement.html' title='PNI Toolbox Announcement'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8442360526963358446</id><published>2010-02-21T11:26:00.000-08:00</published><updated>2010-02-21T11:26:29.148-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='explanation'/><category scheme='http://www.blogger.com/atom/ns#' term='Mint.com'/><title type='text'>Mint.com TDbank mess and how to fix it</title><content type='html'>I've been using the service 'Mint.com' for a while now to keep an eye on my finances and expenses as well as to enforce my budgets upon myself.&amp;nbsp; Up until recently it's run relatively flawlessly, however two weeks ago my TDbank account (formerly a Commerce Account) gave up syncing with the rest of my system.&amp;nbsp; Needless to say this was not good as I could no longer reliably check my finances at a glance (or on the go with the Mint Iphone app).&lt;br /&gt;&lt;br /&gt;However this problem proved to be correctable, but not in a manner I would have defined as the easiest or most comfortable solution ever.&amp;nbsp; Basically, the connection to the old 'TDBank' link is dead, but that doesn't mean you should delete it.&amp;nbsp; First get the link back up and running, this requires creating a new account listing under the 'TD Banknorth' account listing.&amp;nbsp; Your authorization information will be the same as the original account information.&amp;nbsp; This should import the last month or so's history, if your far enough out that the transactions don't overlap you've only got one more step.&amp;nbsp; If you like me you've got overlapping transactions then you'll have two more steps and your done.&lt;br /&gt;&lt;br /&gt;At this point your 'cash' and other account information will look a bit wrong due to the fact that you have your checking account being accounted for twice.&amp;nbsp; Sadly there's no way to simply merge account 1 and 2 and have them treated as one account going forward, but this isn't as big of a problem as you might expect.&amp;nbsp; To make the cash levels and such return to their correct settings and values, go into your accounts pane, accessed in the top right of the page under 'Your Accounts'.&amp;nbsp; In here locate your old TD Bank account and show the 'detail' pane that scrolls down on the account.&amp;nbsp; Under the details area change the account status to 'Closed'.&amp;nbsp; This will bring up a warning saying this account will no longer by synced and etc.&amp;nbsp; However your transaction history is intact, and it's no longer used to calculate your account totals.&amp;nbsp; This is in my opinion preferable to deleting the account as that would destroy all your transaction history and mess with your trending, budgeting and etc.&lt;br /&gt;&lt;br /&gt;If you have no overlapping transactions, congratulations your done.&amp;nbsp; For those of us that caught this early enough to have duplicate transactions this problem is solvable, the trick is identifying the duplicates.&amp;nbsp; Unfortunately there's no tools in the Mint suite for merging purchases or isolating duplicates.&amp;nbsp; On the upside there should only be a few days of purchases overlapping so just look for the last transactions on your old account (by filter to show only the old account).&amp;nbsp; Then locate those transactions on the new account.&amp;nbsp; For each of the mirror transactions on the new system, select the 'Edit Details' tab on the bottom of the transaction.&amp;nbsp; At the bottom of this details pane is an option to flag the purchases as a duplicate.&amp;nbsp; Setting this flag will effectively mute the transaction so that it's not used for anything, however it won't be deleted so you can always refer to it latter.&lt;br /&gt;&lt;br /&gt;Now you should be completely done and your accounts should all reflect the current correct information with all your transactions in tact, unless you wind up with a time gap between the old one dying and the new one being added.&amp;nbsp; Sadly there is no way to manually enter transactions to fill in the gap so you'll have to suffer with a gap in your data till this oversight is fixed.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;The good news, this works and it's a pretty quick fix.&amp;nbsp; Once I went back and forth with mint's support system once or twice I had the whole 'how-to' of it figured out.&amp;nbsp; The final fix took me about 10-20 minutes to work out.&amp;nbsp; Now I'm running forward again and everything looks good.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;This could have been alot easier if the tools were there for fixing data import errors, which are sadly the major lacking feature of the Mint.com system.&amp;nbsp; I would have welcomed the ability to merge the two accounts into one listing with a tool for merging duplicate transactions.&amp;nbsp; The 'duplicate' and 'closed' commands do however seem to do the job however so these are small complaints to an otherwise easy process.&amp;nbsp; The lack of ability to insert old / missing data is a bigger hole that needs to be filled and I'm surprised that this hasn't been added as a feature yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8442360526963358446?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8442360526963358446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8442360526963358446' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8442360526963358446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8442360526963358446'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2010/02/mintcom-tdbank-mess-and-how-to-fix-it.html' title='Mint.com TDbank mess and how to fix it'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-5793220953940177123</id><published>2010-01-15T20:17:00.000-08:00</published><updated>2010-01-15T20:17:52.058-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Windows 7 Customizations and Software Replacements</title><content type='html'>Hello and Happy Holidays! (OK, well I started this before the holidays...)&lt;br /&gt;&lt;br /&gt;Anyway.&amp;nbsp; I've been playing with Windows 7 for a bit now and I've got a few little tools that people may find useful depending on what you do with your computer.&lt;br /&gt;&lt;br /&gt;The first is one I love for it's ease of use.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.julien-manici.com/windows_7_logon_background_changer/"&gt;The Windows 7 Logon Background Changer&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.julien-manici.com/content/img/win7bg.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://www.julien-manici.com/content/img/win7bg.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;This tool allows you to as it's name says, change the background on your Windows 7 logon screen.&amp;nbsp; It exploits a set of features included in the OS for OEM installs (Dell, HP, etc.) to make their systems stand out.&amp;nbsp; It can also be used for branding by companies, and now with this tool anyone with a picture and 20 seconds.&amp;nbsp; For the curious you can grab the source code to see how it all works.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.realtimesoft.com/ultramon/"&gt;Ultramon&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.realtimesoft.com/ultramon/tour/wallpaper_desert.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://www.realtimesoft.com/ultramon/tour/wallpaper_desert.png" width="347" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;This program is still in beta for Vista and 7.&amp;nbsp; It's also a pay for application.&amp;nbsp; However it works, really really well.&amp;nbsp; What it does do is allow you to manage multiple monitors easily.&amp;nbsp; These management properties include generating wallpapers that can include different images on each screen of the system and allowing you to configure screen savers that span multiple screens.&amp;nbsp; It also allows you to specify hotkeys for managing multiple monitors, like a quick key to toggle off/on all screens except the primary screen (exceedingly important for playing video games). &amp;nbsp; Another interesting feature is that it can mirror one monitor onto another monitor as long as they are the same resolution, yes this can be done usually anyway but not always and this will happily do it for you.&amp;nbsp; I've been using it since XP, and it's progressed pretty well since then. The release candidate for the latest version was just put out which is a plus.&amp;nbsp; A competing option to this program is the package &lt;a href="http://www.binaryfortress.com/displayfusion/"&gt;Display Fusion&lt;/a&gt;, the feature sets are not entirely the same but the basic stuff is all the same, plus it has a free version.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.johnsadventures.com/software/backgroundswitcher/"&gt;John's Background Switcher&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://s.johnsadventures.com/pictures/2009/09/jbs4-settings-dialog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="297" src="http://s.johnsadventures.com/pictures/2009/09/jbs4-settings-dialog.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;For anyone just looking for a straight forward background management package instead of the whole kit and kaboodle that is Ultramon, we have John's Background Switcher.&amp;nbsp; It allows you to setup a set of images to be rotated in as your background and also enables and number of composting features like a postcard pile display.&amp;nbsp; You can select either local picture folders or image streams and sites like flickr or deviantart, as well as a whole slew of tweaking options for the truly obsessed.&amp;nbsp; It also features the ability to configure each monitor seperately (assuming you have separate monitors).&amp;nbsp; O yea, and it's FREE.&amp;nbsp; It should be noted however you can't create background profiles like you can in Ultramon, it's entirely dynamic in the way it's presented.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.getpaint.net/"&gt;Paint .NET&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.getpaint.net/screenshots/pdn30_camaroB.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="295" src="http://www.getpaint.net/screenshots/pdn30_camaroB.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;I've used this number of times now and have loved it every time I've used it.&amp;nbsp; I'm no photoshop guru but I've been pleasantly surprised how easy this has been to use so far.&amp;nbsp; Basically it's a free photoshop esq photo editing software package and it's pretty powerful.&amp;nbsp; On top of that it supports plugins for real power users that want to get just that little bit more out of the software. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://notepad-plus.sourceforge.net/uk/site.htm"&gt;Notepad ++&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://notepad-plus.sourceforge.net/commun/screenshots/scrsh_multiView.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://notepad-plus.sourceforge.net/commun/screenshots/scrsh_multiView.gif" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;For those of you who use notepad as more than just a scratch space when IMing people, this is a rock solid piece of software.&amp;nbsp; If you've ever used 'Crimson Editor' you'll love this piece of software.&amp;nbsp; It has support for syntax highlighting on a truly amazing number of programming languages.&amp;nbsp; As well you can expand it's default list with user published highlighting rules, as well as plug-ins to expand it's feature set to include things like HEX editors, change trackers and spell checkers.&amp;nbsp; It's open source (and thus free), and has the option to automatically replace the notepad shortcuts with ones to itself during installation.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://members.westnet.com.au/elpamyelhsa/elpamsoft/SSDTweaker.zip"&gt;SSD Tweak Utility&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.ocztechnologyforum.com/forum/attachment.php?attachmentid=10738&amp;amp;d=1245397519" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="http://www.ocztechnologyforum.com/forum/attachment.php?attachmentid=10738&amp;amp;d=1245397519" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;For all the SSD early adopters out there you've probably read that Windows 7 support for the technology is better than both XP and Vista's, and this is (apparently) true.&amp;nbsp; However there's still more you can do if you so choose.&amp;nbsp; And now you don't even have to think about it, the user &lt;a class="bigusername" href="http://www.ocztechnologyforum.com/forum/member.php?s=0dd1cff4b98cdb4d8ffad560d3d77fd3&amp;amp;u=43152"&gt;elpamyelhsa&lt;/a&gt; on the OCZ forums has produced a tweaking utility designed to squeeze the maximum life time out of those precious little drives.&amp;nbsp; A full rundown of the work, what each tweak means and how it affects you can be located &lt;a href="http://www.ocztechnologyforum.com/forum/showthread.php?t=49779"&gt;here&lt;/a&gt;.&amp;nbsp; O yes, it's also free.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.thewindowsclub.com/ultimate-windows-tweaker-v2-a-tweak-ui-for-windows-7-vista#more-1957"&gt;Ultimate Windows Tweaker&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.thewindowsclub.com/wp-content/uploads/2009/07/ultimate-windows-tweaker-v2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://www.thewindowsclub.com/wp-content/uploads/2009/07/ultimate-windows-tweaker-v2.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Finally, for the nitty gritty settings junkies out there, this package condenses 100+ of the most popular and useful tweaks into an itty bitty download.&amp;nbsp; The best part is you don't even have to install it, just run it and tweak whatever you want.&lt;br /&gt;&lt;br /&gt;Sorry folks, no red pill blue pill on this one, it just doesn't fit the format.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-5793220953940177123?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/5793220953940177123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=5793220953940177123' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/5793220953940177123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/5793220953940177123'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2010/01/windows-7-customizations-and-software.html' title='Windows 7 Customizations and Software Replacements'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-4542048975236966981</id><published>2009-12-19T16:14:00.000-08:00</published><updated>2009-12-19T16:14:12.612-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QT'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Updated Dancing Instructions for QT and MSVC 2008</title><content type='html'>So, anyone that's tried to follow my instructions for compiling QT for use with MSVC 2008 (which incidentally should work for 2005 as well) will notice that for 4.6 (and I believe 4.5) they don't work.  Instead everything will go smoothly until you get some sort of webkit linking error error 0x2 on command 'cd' and etc.&lt;br /&gt;&lt;br /&gt;This is a fixable error, and actually the fix is pretty simple.  You have to remove four files before you begin the compile that cause some sort of issue with the build process.  Don't worry they are all temporary files, and appear to be artifacts of the MinGW build's MOC process.  I can not take credit for discovering this, it just took alot of Googling to figure out what's up.  The best run down I've found is at the &lt;a href="http://www.ffuts.org/blog/compile-qt-45-for-visual-studio-using-your-multi-core-processor/"&gt;ffuts.org blog&lt;/a&gt;, which also provides a way to optimize your QT compile for people that want to explore multi processor compilation.&lt;br /&gt;&lt;br /&gt;The files that need to be removed from each copy you wish to build into an MSVC version are:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;.\qt\src\3rdparty\webkit\WebCore\tmp\moc\debug_shared\mocinclude.tmp&lt;br /&gt;.\qt\src\3rdparty\webkit\WebCore\tmp\moc\release_shared\mocinclude.tmp&lt;br /&gt;.\qt\src\script\tmp\moc\debug_shared\mocinclude.tmp&lt;br /&gt;.\qt\src\script\tmp\moc\release_shared\mocinclude.tmp&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;The good news is, this works and it's fairly straight forward.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;This was not easy to find by any stretch.  It would be nice to just be able to grab a 'tools and source' setup so you can cut out a few steps, like fighting with these files that will kill your compilation several hours in.&amp;nbsp; That said, the fix is easy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-4542048975236966981?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/4542048975236966981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=4542048975236966981' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/4542048975236966981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/4542048975236966981'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2009/12/updated-dancing-instructions-for-qt-and.html' title='Updated Dancing Instructions for QT and MSVC 2008'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-5364577810692229485</id><published>2009-11-19T14:42:00.000-08:00</published><updated>2010-03-24T14:16:43.575-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>SVN Verify Crond Monitor Script, Born From Misery.</title><content type='html'>Over the last few weeks I've had the displeasure of dealing with an imploded SVN FSFS repository.  In the process of learning what was wrong and how to go about fixing it (or working around the problem) I discovered that I could have mitigated some of this problem by monitoring my svn repositories for problems with 'svnadmin verify'.&lt;br /&gt;&lt;br /&gt;This wouldn't of course help me fix the problem, but it would have identified it long before I did, making the overall data loss that occurred far smaller.&amp;nbsp; As it stands we lost about 25 revisions from one of our major SVN repositories, as we had to remove everything at and after the damaged repository and recommit it on top of the undamaged remnants.&amp;nbsp; This means we lost alot of history but not necessarily alot of code.&amp;nbsp; Still it was an extremely time consuming fix that would have been better simply avoided.&lt;br /&gt;&lt;br /&gt;As such I've written a little python script that's simply designed to catch any errors generated by the verify command that is meant to be inserted into a crontab for execution.  As such there are a number of things you'll have to edit before it'll be truly useful to you.  It's been written this way to avoid many of the major pitfalls associated with running scripts from cron, which has a severely restricted execution environment.&lt;br /&gt;&lt;br /&gt;Specifically you must update a few variables to reflect what you would like them to do or point at.&lt;br /&gt;&lt;br /&gt;The first and most obvious is updating the &lt;b&gt;/usr/bin/python&lt;/b&gt;, to point at your actual version of python.  I strongly recommend typing 'which python' and just pasting the results in the place of the above string, if you just put 'python' in there instead your beholden to the path available to crond.&lt;br /&gt;&lt;br /&gt;After that it's a simple matter of updating the variables under the 'Setup' comment.  I will list each one and explain what you need to put in that position.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;svnadmin_path:&lt;/b&gt; this is the string returned from 'which svnadmin', this should be an absolute path, and the line under it will make it into such for good measure.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;repository_path:&lt;/b&gt; this value serves one of two functions, either it's the location of the repository (singular) that you wish to keep an eye on.&amp;nbsp; Or it's the location of the root of several repositories you wish to keep an eye on.&amp;nbsp; In either case the path should be absolute.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;recursive_path:&lt;/b&gt; this is a bool flag with possible values of True or False, if it is set to True the program will treat the repository path as the root of a group of repositories instead of as the target repository itself.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;verbose:&lt;/b&gt; this is another bool flag with the same possible values.&amp;nbsp; If set to True it will output short status notes at specific segments throughout the program.&lt;br /&gt;&lt;br /&gt;I recommend running the program every day, more often is possible but seems like overkill unless your committing at a rapid pace.&amp;nbsp; As such, my crontab entry:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;0 0  * * * /root/verify_svn.py&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Blue Pill:&lt;/b&gt;&lt;br /&gt;First and foremost, this is by no means a 'perfect' piece of software.&amp;nbsp; First, it has no error checking what so ever, so it doesn't fail gracefully, on the other hand the worst its going to do is attempt to do comparisons on things that make no sense and generate some nonsense output.&amp;nbsp; Second, it relies on the fact that if you generate stdout output in a crond execution that output is captured and emailed to the owner of the crontab (in my case root, who also owns SVN and the repositories).&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Red Pill:&lt;/b&gt;&lt;br /&gt;That all said, it works and pretty well if a bit slow.&amp;nbsp; The svnadmin verify command is by no means a quick command even on a small repository.&amp;nbsp; On a large one it takes as long as ten minutes to execute.&amp;nbsp; However it does it's job which is to run a verify on all of our repositories every night and notify us if there are any issues (of a nature that verify can detect).&amp;nbsp; Two possible areas of improvement that I've considered up till now but haven't done anything with is allowing command line arguments and making it work with Nagios somehow.&amp;nbsp; Command line arguments are pretty easy to get up and running, but undo the whole compact one place to find all the info feature I like about the current implementation.&amp;nbsp; On the other hand it will be a must if I want Nagios support.&amp;nbsp; Nagios on the other hand is no nearly so easy, I'm not sure how I would even go about it, but it would prove supremely useful in our overall monitoring strategy where I work.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Entire code: (this code can be downloaded &lt;a href="http://code.google.com/p/pni-toolbox/source/browse/trunk/Maintenance-scripts/verify_svn.py"&gt;here&lt;/a&gt;.)&lt;/b&gt;&lt;br /&gt;&lt;style&gt;.code .hll { background-color: #ffffcc }.code  { background: #f8f8f8; }.code .c { color: #408080; font-style: italic } /* Comment */.code .err { border: 1px solid #FF0000 } /* Error */.code .k { color: #008000; font-weight: bold } /* Keyword */.code .o { color: #666666 } /* Operator */.code .cm { color: #408080; font-style: italic } /* Comment.Multiline */.code .cp { color: #BC7A00 } /* Comment.Preproc */.code .c1 { color: #408080; font-style: italic } /* Comment.Single */.code .cs { color: #408080; font-style: italic } /* Comment.Special */.code .gd { color: #A00000 } /* Generic.Deleted */.code .ge { font-style: italic } /* Generic.Emph */.code .gr { color: #FF0000 } /* Generic.Error */.code .gh { color: #000080; font-weight: bold } /* Generic.Heading */.code .gi { color: #00A000 } /* Generic.Inserted */.code .go { color: #808080 } /* Generic.Output */.code .gp { color: #000080; font-weight: bold } /* Generic.Prompt */.code .gs { font-weight: bold } /* Generic.Strong */.code .gu { color: #800080; font-weight: bold } /* Generic.Subheading */.code .gt { color: #0040D0 } /* Generic.Traceback */.code .kc { color: #008000; font-weight: bold } /* Keyword.Constant */.code .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */.code .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */.code .kp { color: #008000 } /* Keyword.Pseudo */.code .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */.code .kt { color: #B00040 } /* Keyword.Type */.code .m { color: #666666 } /* Literal.Number */.code .s { color: #BA2121 } /* Literal.String */.code .na { color: #7D9029 } /* Name.Attribute */.code .nb { color: #008000 } /* Name.Builtin */.code .nc { color: #0000FF; font-weight: bold } /* Name.Class */.code .no { color: #880000 } /* Name.Constant */.code .nd { color: #AA22FF } /* Name.Decorator */.code .ni { color: #999999; font-weight: bold } /* Name.Entity */.code .ne { color: #D2413A; font-weight: bold } /* Name.Exception */.code .nf { color: #0000FF } /* Name.Function */.code .nl { color: #A0A000 } /* Name.Label */.code .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */.code .nt { color: #008000; font-weight: bold } /* Name.Tag */.code .nv { color: #19177C } /* Name.Variable */.code .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */.code .w { color: #bbbbbb } /* Text.Whitespace */.code .mf { color: #666666 } /* Literal.Number.Float */.code .mh { color: #666666 } /* Literal.Number.Hex */.code .mi { color: #666666 } /* Literal.Number.Integer */.code .mo { color: #666666 } /* Literal.Number.Oct */.code .sb { color: #BA2121 } /* Literal.String.Backtick */.code .sc { color: #BA2121 } /* Literal.String.Char */.code .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */.code .s2 { color: #BA2121 } /* Literal.String.Double */.code .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */.code .sh { color: #BA2121 } /* Literal.String.Heredoc */.code .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */.code .sx { color: #008000 } /* Literal.String.Other */.code .sr { color: #BB6688 } /* Literal.String.Regex */.code .s1 { color: #BA2121 } /* Literal.String.Single */.code .ss { color: #19177C } /* Literal.String.Symbol */.code .bp { color: #008000 } /* Name.Builtin.Pseudo */.code .vc { color: #19177C } /* Name.Variable.Class */.code .vg { color: #19177C } /* Name.Variable.Global */.code .vi { color: #19177C } /* Name.Variable.Instance */.code .il { color: #666666 } /* Literal.Number.Integer.Long */&lt;/style&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code"&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/usr/bin/python&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#SVN Repository Verify.&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#The script is released under the MIT License, because I really don't care what &lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#you do with it, so long as you don't claim you wrote it.  This code is released&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#with no warrantee, and free to use under the license at the bottom of the file.&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#It should be further noted that I probobly will not spend a huge amount of time updating&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#this script unless I get a compulsion to add some sort of Nagios support to it, &lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#or find a tragic bug in need of fixing.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="c"&gt;#This script was written under the shadow of a fairly severe and irrecoverable &lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#error that one of the SVN repo's I'm responible for experienced&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#this error, one of the many 'line length' errors, is detected by the svnadmin &lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#verify command.  But goes undetected between commits until you hit&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#the issue again.  So I've just put together a short script to run every night (or whenever)&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#using the svnadmin verify command and reporting the any errors.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt; &lt;span class="c"&gt;#import os tools.&lt;/span&gt;&lt;br /&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;platform&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;python_version&lt;/span&gt; &lt;span class="c"&gt;#get the python version tool&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="c"&gt;#this part is messy due to the fact that 'getoutput' is moved from 'commands' to 'subprocess' in python 3.0&lt;/span&gt;&lt;br /&gt;&lt;span class="c"&gt;#as such I test for the version of python, and adjust the import of 'getoutput' accordingly.&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;pyversion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;python_version&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;pyversion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pyversion&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'.'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;eval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pyversion&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;#check major version&lt;/span&gt;&lt;br /&gt; &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;commands&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;getoutput&lt;/span&gt; &lt;span class="c"&gt;#retrieve getoutput from commands if py version less than 3.&lt;/span&gt;&lt;br /&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt; &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;subprocess&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;getoutput&lt;/span&gt; &lt;span class="c"&gt;#retrieve getoutput from subprocess if py version 3 or greater.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# Setup&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# -The paths asked for below should NOT be relative.&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt; &lt;span class="c"&gt;#Provide the path for svnadmin ( this could be replaced with a 'which' command &lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# but i'd rather leave nothing to chance with 'cron', which never behaves well assuming paths.)&lt;/span&gt;&lt;br /&gt; &lt;span class="n"&gt;svnadmin_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;'/usr/local/bin/svnadmin'&lt;/span&gt;&lt;br /&gt; &lt;span class="n"&gt;svnadmin_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;abspath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;svnadmin_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;#path cleanup&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span class="c"&gt;#This is either your single repository path, or the root of multiple repositories.&lt;/span&gt;&lt;br /&gt; &lt;span class="n"&gt;repository_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;'/location/of/repository/'&lt;/span&gt; &lt;br /&gt; &lt;span class="n"&gt;repository_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;abspath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;repository_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;#path cleanup&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span class="c"&gt;#would you like to use the repo path as a recursive repository root with subdir repositories or as a single repository&lt;/span&gt;&lt;br /&gt; &lt;span class="n"&gt;recursive_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span class="c"&gt;#Do you want lots of useful output, or just a bit at the end?&lt;/span&gt;&lt;br /&gt; &lt;span class="n"&gt;verbose&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span class="n"&gt;paths&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="c"&gt;#establish the empty array of path strings.&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span class="c"&gt;#if the path is recursive, generate a list of the paths to be verified.&lt;/span&gt;&lt;br /&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;recursive_path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;verbose&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;'Recursive Mode Directories:'&lt;/span&gt; &lt;span class="c"&gt;#if verbose, output recursive mode notification&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;span class="n"&gt;ls_of_repo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;getoutput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'ls '&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;repository_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;#dump contents into a local string&lt;/span&gt;&lt;br /&gt;  &lt;span class="n"&gt;ls_of_repo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ls_of_repo&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;splitlines&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c"&gt;#split the string into an array of strings.&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;ls_of_repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span class="n"&gt;temp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;repository_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;#generate an actual path for every item in the repository root&lt;/span&gt;&lt;br /&gt;   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;temp&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="c"&gt;#if the item is a directory add it to the list of paths.&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;paths&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;temp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;verbose&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;     &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="n"&gt;temp&lt;/span&gt; &lt;span class="c"&gt;#if verbose, output path&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="c"&gt;#else use the repository path on it's own.&lt;/span&gt;&lt;br /&gt; &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;span class="n"&gt;paths&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;repository_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;verbose&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;'Single Directory Mode: '&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;repository_path&lt;/span&gt; &lt;span class="c"&gt;#if verbose, output repository path&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="c"&gt;#create a basic array to hold errors.&lt;/span&gt;&lt;br /&gt; &lt;span class="n"&gt;errors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;paths&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;verbose&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;'Currently running svnadmin verify on: '&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="c"&gt;# if verbose, output current verify target&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;span class="n"&gt;log&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;getoutput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;svnadmin_path&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;' verify '&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;#run svnadmin verify on the path&lt;/span&gt;&lt;br /&gt;  &lt;span class="n"&gt;log&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;splitlines&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;  &lt;span class="c"&gt;#errors.append(process_log(path, log, verbose))&lt;/span&gt;&lt;br /&gt;  &lt;span class="n"&gt;errors&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;process_log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;verbose&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;span class="c"&gt;#I'm using this as a cron job, so all I actually have to do is print to stdout and &lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#the owner of the cron job will get an output email.&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;errors&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="p"&gt;[]:&lt;/span&gt;&lt;br /&gt;  &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;'Current SVN Verification Errors'&lt;/span&gt;&lt;br /&gt;  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;verbose&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#this functions entire job is to return a list of error strings from a provided log.&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;#the path value is simply a header it could be anything&lt;/span&gt;&lt;br /&gt; &lt;span class="n"&gt;errors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;br /&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;#process log line by line&lt;/span&gt;&lt;br /&gt;  &lt;span class="n"&gt;temp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;" "&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;#split each line to test for the normal 'verified' responce&lt;/span&gt;&lt;br /&gt;  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;temp&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s"&gt;'*'&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;temp&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s"&gt;'Verified'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;": "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;# append the path and error message to the error log if it fails.&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;errors&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;'__main__'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span class="c"&gt;# Copyright (c) &amp;lt;2009&amp;gt; &amp;lt;Garrett McGrath&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="c"&gt;# Permission is hereby granted, free of charge, to any person&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# obtaining a copy of this software and associated documentation&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# files (the "Software"), to deal in the Software without&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# restriction, including without limitation the rights to use,&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# copies of the Software, and to permit persons to whom the&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# Software is furnished to do so, subject to the following&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# conditions:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="c"&gt;# The above copyright notice and this permission notice shall be&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# included in all copies or substantial portions of the Software.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="c"&gt;# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR&lt;/span&gt;&lt;br /&gt; &lt;span class="c"&gt;# OTHER DEALINGS IN THE SOFTWARE.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-5364577810692229485?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/5364577810692229485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=5364577810692229485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/5364577810692229485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/5364577810692229485'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2009/11/svn-verify-crond-monitor-script-born.html' title='SVN Verify Crond Monitor Script, Born From Misery.'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-7307275876780549828</id><published>2009-09-15T00:00:00.000-07:00</published><updated>2009-09-15T13:33:04.934-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Utilize the Swarm: An approach for rolling out web apps with Virtual Machines and a bit less pain</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a href="http://en.wikipedia.org/wiki/File:Dyson_Swarm.GIF" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" src="http://upload.wikimedia.org/wikipedia/commons/a/ab/Dyson_Swarm.GIF" style="margin: 0px auto 10px; cursor: pointer; display: block; height: 240px; text-align: center; width: 320px;" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;(Picture of a simplified Dyson swarm)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;To be clear, I'm still working out the kinks in this particular plan and it may work better for people in a configuration similar to the one we have at the university I work at. The reason being we can change which computer (or in this case VM) a host name points to by simply changing the MAC address of the host in a central database, or by moving an alias as we so choose. This makes changing targets pretty straight forward, but should still be pretty easy with a little help and co-operation from your local network admins if you don't have a similar system in place.&lt;br /&gt;&lt;br /&gt;This will take a bit of setup before your ready to roll, and may simply not work in some environments dependent on your specific IT infrastructure. This article will be written around using VMware's esx/server 2 technology + VMware Workstation. The idea in general that I'm alluding to here as 'the swarm' is to create a central (easily replaceable) system that simply points at your 'swarm' of virtual machine applications.&lt;br /&gt;&lt;br /&gt;This dodges a few sticky points of rolling out a new service, or alternatively updating older services as it eliminates the chance of differences between the development server and the production server for a given application.&lt;br /&gt;&lt;br /&gt;Depending on your environment and work method the initial setup is going to be a bit different. Our group tends to have individual projects that are end to end developed, documented and rolled out by a single author. As such we can publish new VM's using VMWare Workstation and having it stored locally on our system while we set it up and tune it. If you are in a collaborative environment either a 'development' server that holds current VM's or just your VM server will do nicely for this portion of the task.  You can also use some of the more extensive tools available from VMWare like VM Motion to make things even easier.&lt;br /&gt;&lt;br /&gt;The next thing you are going to need is a way to proxy your internal servers.  We utilize Apache’s proxy system for this purpose, but you could use any of a number of solutions including a hardware load balancer I would imagine.  You can even use apache to perform a load balanced proxy which is incredibly useful for serving out a horde processes of the same type to the wider world seamlessly.  For instance you can have a group of ruby server processes stored on 3 separate systems all pointed too by the web path &lt;domain&gt;/ruby-site/.  However I’ve run into some issues with delivery of public resources (images and css for example) as they are referred to by relative pathing in many applications and this will no longer work. That relative pathing is broken unless your mapping between the apache proxy and your internal server’s configs is done extremely carefully.  An easy out for this is to utilize resource servers that serve out that information separately and refer to the resources by their resource servers’ direct paths (this resource server could even be the same underlying server, accessed via its own name instead of the proxy).  Configuring around host names and IP addresses each has its own advantages in my opinion, but it really only matters where / how you’re given IT structure manages IP addresses.  In our climate we can use hostnames and alias host names, so it’s trivial to simply use an alias as the target host.  Then all you have to do is a simple database update as to where that alias points and your done, nothing ever gets touched on the front end, one minute it was pointing at box X, then it’s pointing at box Y.&lt;br /&gt;&lt;br /&gt;Once the proxy system is configured you need to point it at the appropriate application servers for the portions of your website you wish to publish currently.  This is where this approach tends to be more helpful than the standard rollout method as you don’t have to actually make any changes on your ‘front end’ server.  Instead as stated above once the new version of the page is up and running satisfactorily and executing in production mode instead of development / testing mode you can simply change your alias target and the new page is ‘published’.  This also means that if it turns out that you have to roll back to a previous version of the website you simply bring up that VM and move the alias back.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;&lt;br /&gt;There are several major pitfalls to this current version of the idea, as this is just a rough outline of an overall infrastructure plan I’ve been kicking around that’s not terribly surprising.  The most annoying issue I can think of is the resource handling; this method introduces a necessary level of indirection for the public resources to keep everything clean.  This doesn’t have to be bad, especially if you have some sort of mega parallel system for delivering resources, then you’re probably doing this already for that portion of the site.  Also, setting up a two way proxy that passes things like java script session data thru to the underlying web servers is not as trivial as it really should be (at least in apache).&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;&lt;br /&gt;There are a number of good things to say about this as well, but it is important to remember that even this idea which would arguably make it much easier to roll out new versions of a website can’t be done without at least a little bit of careful planning.  That said this beats the hell out of waking up at 2 am to copy files over to the server when nobody is (in theory) using it so as to do a rollout under the radar of the user base.  Instead you can have it up and confirmed well before hand, and simply toggle the alias during your downtime window (then clean up anything you may have forgotten).  It also lets you store a snapshot of your entire web server including its full operating environment if you need to debug it on a large scale or work on it out of band of the executing environment (to do performance tuning for example).&lt;br /&gt;&lt;br /&gt;As always, opinions and critiques are highly welcome and appreciated.&lt;br /&gt;&lt;/domain&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-7307275876780549828?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/7307275876780549828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=7307275876780549828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7307275876780549828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7307275876780549828'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2009/09/utilize-swarm-approach-for-rolling-out.html' title='Utilize the Swarm: An approach for rolling out web apps with Virtual Machines and a bit less pain'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-3192989056318544486</id><published>2009-05-26T16:00:00.000-07:00</published><updated>2009-05-27T07:17:23.649-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QT'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Making QT and MSVC 2K8 dance, part 2</title><content type='html'>So the last time I ran thru pretty much everything you needed to get QT built against the MSVC systems.  However that article didn't include anything on how to actually get QT to play nice with visual studio in the context of project management and compilation across multiple platforms.  In the pre-QT 4.5 world this was allowed only by those that had paid the (which are completely ridiculous, even if your an academic institution) commercial licensing fees.  Since then, a new project has started and become available on the qtsoftware.com site called 'vsaddin'.  This plug in made it's 1.0.0 debut late last month and I've gotten a few chances to work with it.&lt;br /&gt;&lt;br /&gt;Before I continue on with how to use this addin, I'll give you the link for those that are just looking for that: &lt;a href="http://get.qtsoftware.com/vsaddin/"&gt;VSAddin&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On to the main discussion, the vsaddin doesn't do everything for you, this simply isn't possible.  Visual Studio and the QT system think distinctly differently, so it can't be assumed that it will do everything, but it will make life much much easier.&lt;br /&gt;&lt;br /&gt;There isn't much to do for 'configuring' the VSaddin program.  Really you just shut down visual studio, install the addin and reboot.  Once you've done that you have a new button on your toolbar simply labeled 'QT'.  This menu will give you access to a variety of functions useful for different angles of development, like quick lauch buttons for QT Designer and QT Linguist.  It also includes a few project import/export options and last but not least the QT Project Settings (grayed out if your not in a QT project) and the QT Options button.  QT Options is where you want to be for general configuration, in here you can add pointers and names for each compiled copy of QT on your system.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_UbKGXWsXt9w/ShxdkyfyjmI/AAAAAAAAAF4/pPxTK3pVvhM/s1600-h/QToptionsMenu.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 259px;" src="http://4.bp.blogspot.com/_UbKGXWsXt9w/ShxdkyfyjmI/AAAAAAAAAF4/pPxTK3pVvhM/s320/QToptionsMenu.jpg" alt="" id="BLOGGER_PHOTO_ID_5340246144766348898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see, you can include connections to both standard Windows and Win CE versions of QT builds.  I'm not sure what the difference is, but I don't develop WinCE applications.  That said it, if you know how to compile one of those (and know what the difference between a standard compile and a WinCE compile is), you can use them as well.  The other tab 'QT Default Settings' allows you to modify the relative paths of things like the 'Generated Files' (ie, files generated by the QT framework for your sanity's sake) and controlling what options are delivered to MOC by default.&lt;br /&gt;&lt;br /&gt;The rest of the program integrates into the Visual Studio tool chain directly, showing up as a project selection when you make new projects.  That QT Project Settings allows you to among other things change the version of QT your currently using to compile.  My big complaint here is you can't set separate ones for x64 and x32 instructions and have to go in and change it manually.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_UbKGXWsXt9w/ShxfkYfPRyI/AAAAAAAAAGA/VmnIpTvHQ7A/s1600-h/QTnewprojectMenu.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://3.bp.blogspot.com/_UbKGXWsXt9w/ShxfkYfPRyI/AAAAAAAAAGA/VmnIpTvHQ7A/s400/QTnewprojectMenu.jpg" alt="" id="BLOGGER_PHOTO_ID_5340248336807970594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once you start a new project using the QT new project the magic starts happening.  The big differences are the access to .ui files as part of the project, access to a few key words (signals and slots show up in nice blue text), and a folder of 'Generated Files' that allows you to review on the fly generated files that have come up as a result of the files you've added and manipulated in your project.  I'm unclear what the ramifications of these files are for things like AnkhSVN as my current QT work is un SVN'd basic programs, but I'll find out soon.&lt;br /&gt;&lt;br /&gt;Another mark of primary interest is the ability to import QT projects into the VS environment and manage them directly, avoiding makefile based project management which avoids the annoying side effects that break things like intellisense.  This allows you to build these projects using the 'build' or 'debug' commands inside visual studio without doing anything special including MOCing files for you.  The 1.0 version came out recently and seems to be pretty well rounded.  I have gotten a previous version a bit confused with some files that I had the plugin MOC and compile then gone back and modified heavily.  This would result in an error indicating the object doesn't exist or something of that nature, running a project 'clean' then compiling worked.  This solution is messy but effective if you have any problems.&lt;br /&gt;&lt;br /&gt;It also adds integration for the .ui file format into Visual Studio without alot of finagling.  It still loads the QT UI editor, but they are now clearly labeled and double clicking them instantly boots the editor with the appropriate dialog / menu displayed.  While this isn't 'perfect' UI integration, I'm not convinced perfect integration is worth it.  There are semantics and thought processes in QT that don't necessarily make sense inside the visual studio drag and drop editor.  So isolation is helpful in my view, as the domain specific application for gui development is far more feature complete than a kludge to make visual studio integration 'perfect'.&lt;br /&gt;&lt;br /&gt;As with all things, the project integration isn't perfect.  While you can import a project with little difficulty and almost no issues (from the few tests I've done), the project export certainly isn't everything one would want to see.  Mostly the project export consists of building a series of template qmake files with all the basic information filled in, but it doesn't provide any rules for adding custom segments to the make files.  For instance if you want to use CUDA with a QT project you could, but you'd have to go into the relevant make files for all files that use CUDA and add the proper script (or add it to the head file, depending on how your implementing your project).&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;The long and the short is, version 1.0 of a pretty solid QT - Visual Studio integration tool is out.  It's rough around the edges but generally gets the job done.  For anyone fully familiar with QT development that just wants to take advantage of what Visual Studio has to offer this is a huge help.  If your just starting out with QT and you know visual studio this will also be a big help for getting projects written and running under Visual Studio but will require a learning curve to get those projects published across QT's variety of target-able platforms.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;That said there's a few things that hard core developers will probably gripe about, the lack of ability to add preset custom rules to project files is the big one I can think of.  And Microsoft purists I'm sure will be offended that the system doesn't offer full UI design integration, but as I stated above I don't consider this a bad thing.  A few of the errors the system throws when it encounters a problem MOCing or Compiling could use some improvement as well as they suffer from 'mystery error syndrome', a problem becoming all the more painful these days.  Also I get some weird errors building x64 code against x64 copies of QT, that seem to indicate it's belief that the QT version I've selected doesn't exist (and is a lie, kinda of like cake); however it still happily compiles using said library.  It would be nice to be able to specify separate library paths for x64 and x32 versions of QT so that you were always compiling against the correct one, but it takes all of a second to change in the project menu.  All that said, it works, which is better than the end of my last QT post.  Back then it didn't exist.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-3192989056318544486?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/3192989056318544486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=3192989056318544486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3192989056318544486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3192989056318544486'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2009/05/making-qt-and-msvc-2k8-dance-part-2.html' title='Making QT and MSVC 2K8 dance, part 2'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_UbKGXWsXt9w/ShxdkyfyjmI/AAAAAAAAAF4/pPxTK3pVvhM/s72-c/QToptionsMenu.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-348307516274550161</id><published>2009-05-02T15:00:00.000-07:00</published><updated>2009-05-02T15:00:00.226-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='explanation'/><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Decoding the 10 Gb Switching World</title><content type='html'>I've had the pleasure and frustration over the past month or so to read up and explore a number of different switching systems available for high performance computing.  Specifically in the realm of 10 GbE connectivity.  It's finally winding down now as we finally begin to start filling out our PO's and having our shiny new computers so I thought it was an appropriate time to share the funness I've had to absorb in learning about this world of what can be called anything but 'standard' for Ethernet connectivity.&lt;br /&gt;&lt;br /&gt;I may seem a bit facetious to say that there's something non standard about anything involving the word 'Ethernet' but in the 10 Gb realm it seems the standard suffers somewhat from flavor of the month syndrome.  To qualify that there are in the market now a number of competing standards that involve a variety of both copper and fiber solutions.&lt;br /&gt;&lt;br /&gt;There's a few different types of 10 GbE available these days.  General copper connections, fibers connections and a connection format known as SFP+ that can use both copper and fiber.&lt;br /&gt;&lt;br /&gt;The copper connections typically boil down to CX-4 an infiniban 'like' connection that's generally exclusive to itself.  While it's prevalent throughout the industry it appears to be rather exclusive to it self, as very few of the switches allow for connectivity to other types of 10 GbE at all, and those that do typically provide very few connections for other types of connectivity.  An alternative that will allow for a smoother upgrade path for existing architectures is on the horizon in 10GBaseT and is compatible with earlier BaseT links in some cases but not all.  This is  dependant on the switches ability to step down, the one we've been working with has a standard 1GBaseT link that can not step down to a 10/100 connection.  The good thing about these copper solutions is that they are relatively cheep (compared to a fiber system) and generally well understood.  They are also more robust than a simple fiber connections making them more preferrable in a rough environment.&lt;br /&gt;&lt;br /&gt;The second vien of connectivity is the general fiber connectivity.  These fiber systems in the 10 GbE realm can be utilized for both long distance communication over single mode fibers for connectivity of up to 10-40 km depending on the lasers used (fibers in the range of 8 micro meters thick) and shorter distance multi mode fibers (in the 50 - 65 micro meter thickness, 50 being the newer more versatile cables).  It should be noted that there are long range multi mode fibers but their 'long range' is over 2 and a half orders of magnitude shorter than a single mode fiber.  Regardless of the details involved the big killer for this technology is how expensive the module connector construction is coupled with the cost of the cable and it's termination.  These connectors are expensive mostly because they recieve the packets of data from the switch itself and must generate an analog signal of that packet then run it thru a conversion to make it into a light transmission, these modules also include all of the hardware required to make the process go in reverse as well making individual port price relatively expensive for many of these systems.&lt;br /&gt;&lt;br /&gt;In the above systems for 10 GbE connectivity I've left what is the latest implementation of the standard known as SFP+.  This was left out because it spans both copper and fiber connectivity in the same modules instead of being exclusive to a given type of connectivity.  It's based off the same technology as fiberchannel switches with the major differences being that instead of each module having to do the conversion to a 'transmission' signal, the switches generate those signals.  The modules just implement the transmission to light conversion and vice versa.  This modular system allows for the creation of copper connectivity thru cables know as 'twin-ax' cabling, where the 'connector' instead of being a module with a jack in it that an infiniban esc cable connects to is simply built onto the end of the cable.  This allows for a far more robust cable connection than the connectors you would see in a CX-4 / infiniban / BaseT link, however the twin-ax specification also has a severely limited range on the order of 5-10 meters (many systems are not certified for 10 meters and max out at 5).  In contrast the fiber connections are modules with fiber plugs available for connecting to the standard fiber cables of their particular specification (including &lt;a href="http://en.wikipedia.org/wiki/10_GbE#Fiber_.2810GBASE-R.29"&gt;SR, SRL, LR, and LRM connectivity based on the device support I've seen recently&lt;/a&gt;).  In my view, the best thing about this solution is that you don't need a bladed switch with different connectivity frameworks to enable you to transmit and receive on different fiber and copper mediums by simply changing the module in a given slot.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;While there are a myriad of different choices out there the trick seems to be picking a back end and sticking with it.  Going for CX-4 on your servers? Great, make sure your storage vendors understand they will be obligated to give you a CX-4 connection (assuming you have a desire for a flat network).  The good thing is many of these technologies are already supported by companies, and if your using a third party vendor, they can typically get you a card that will work and is certified for your servers.  We recently acquired a sun system with an SPF+ card from Chelsio due to the fact that we have standardized on the SFP+ network architecture and sun doesn't produce 10GbE connectors for SFP+ itself.  Our storage cluster also uses Chelsio cards to provide SFP+ based fiber connectivity from our high speed disk to both the world and our computation cluster. &lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;The big problem isn't typicaly finding options, it's using the options you have at your disposal.  If your company has a deal with HP, your getting HP servers, and depending on your restrictions you may be getting HP switches as well.  Knowing that you had better make sure your storage vendor can connect the the 10 GbE system your using.  The switch vendors we have been dealing with have told use that the fiber connections utilized by some other systems (XFP for instance) will work with the appropriate SFP+ modules but the last thing you need is something going awry because your mixing connection types in this way.  As such we've decided that for our purposes we will skip using alternative optical media connectors when we can use an SFP+ system to guarantee we are always using the same interfaces thou they do use the same technical specification for their transmission (that said our uplink to the rest of the world is not in fact an SFP+ link on the other end).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-348307516274550161?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/348307516274550161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=348307516274550161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/348307516274550161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/348307516274550161'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2009/05/decoding-10-gb-switching-world.html' title='Decoding the 10 Gb Switching World'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-3034585115943311390</id><published>2009-04-16T17:00:00.000-07:00</published><updated>2010-08-10T11:48:00.189-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='Idiocy'/><category scheme='http://www.blogger.com/atom/ns#' term='Net Neutrality'/><category scheme='http://www.blogger.com/atom/ns#' term='Freedom'/><title type='text'>TWC expects broadband stimulus, without stimulus strings attached</title><content type='html'>Time Warner Cable (TWC from this point forward) sent a letter to the FCC earl yesterday stating:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;"Now is not the time, nor is this the appropriate proceeding, to engage in a debate about the need for net neutrality obligations. The clear, overarching purpose of the ARRA (&lt;a href="http://www.whitehouse.gov/the_press_office/arra_public_review/"&gt;American Recovery and Reinvestment Act&lt;/a&gt;) is to jump start the deployment of broadband facilities in unserved areas and to expand broadband availability generally, thereby creating jobs immediately and extending the near-term economic, educational, social, and other benefits of broadband services. Debates in this proceeding about new net neutrality regulations would only divert attention from these important goals, delaying the distribution of funds while generating considerable contention when the Commission should instead be fostering a spirit of collaboration. That delay would be exacerbated by the need to comply with the requirements of the Administrative Procedure Act in connection with the adoption of any new nondiscrimination rules."&lt;/blockquote&gt;This is all well and good, but the idea of the stimulus money (in my mind, and I may be delusional; hey you never know), is to help create a network for the people. As it happens it's a network WE are paying for. Stimulus money doesn't come from a sock under Obama's bed, it comes from tax payers. In consideration of that, should we be forced to pay for an infrastructure used to abuse it's customers?&lt;br /&gt;&lt;br /&gt;For those wondering if I'm baselessly accusing TWC of abusing it's customers or not, take a gander at a few of the latest articles from around the tech world concerning TWC. Here's a few quick ones from &lt;a href="http://arstechnica.com/tech-policy/news/2009/04/get-ready-for-metered-broadband-texas.ars"&gt;Ars&lt;/a&gt;, &lt;a href="http://blog.wired.com/business/2009/04/time-warner-cab.html"&gt;Wired &lt;/a&gt;and &lt;a href="http://www.businessinsider.com/2009/2/time-warner-cable-bandwidth-caps"&gt;The Business Insider&lt;/a&gt;. Basically the math works out like this. If you are charging some one for both the speed at which they access the data and the amount of data they can use, except in cases where that data comes from the ISP you can guarantee your loyal customers are happy with their low rates. Where as your disloyal customers using other vendors solutions on your network pay a premium as they chew away at their bandwidth caps and are dinged to raise their cap for that period of time. This effectively allows them to punish heavy users of services that compete with their own in a way other than Comcast's earlier attempts to manage the 'problem' by throttling competing businesses. Different thou it may be, it gets to the same ending, abusing what is effectively a monopoly position because your consumers have no choice but to acquiesce to your demands. On top of this it allows you to abuse your competitors by simply making them less appealing than your own offerings, not by reasonable competition but by effectively taxing their services. It wouldn't surprise me if this is treated as anti-competitive practices instead of even worrying about the net neutrality issues, your allowed and expected&amp;nbsp;to compete in this country but sabotaging your competition is going a few steps to far.&lt;br /&gt;&lt;br /&gt;These caps may not be so painful if they were at least reasonable sizes. Comcast does in theory cap their bandwidth but it's a number I have never succeeded in hitting (it's in the 30-250Gb range). TWC starts at 1 Gb. If your using their lowest tier and streaming an HD Hulu movie, you will cross that limit in an hour and twenty minutes (or there abouts) meaning you can't even watch an entire movie without getting dinged for more bandwidth. Whereas you can watch as many on demand movies from TWC's collection as you would like without impacting your bandwidth cap, assuming your impressed with their system (I don't have road runner, so I can't speak to it's quality first hand; but it was a much derided service during my time in Philadelphia).&lt;br /&gt;&lt;br /&gt;Regardless of the drive, the whole thing is rather warped by the fact that we the people will be the ones paying for this is&amp;nbsp;us, the tax payers. What I'm speaking of specifically is the so called 'Broadband Stimulus Bill' meant to provide money for building broadband infrastructure in areas that are either not served or are underserved. One major danger with allowing behavior like this to go forward in these areas is that these users may never know anything else, in all likelyhood a single provider will develop a broadband pressence for a given under / unserved user base. In these cases especially, it isn't unreasonable to demand a respectable level of net neutrality as we would effectively be gifting these companies a monopoly pressence in these regions. Making the TWC stance of give us money but don't even think about trying to put those Net Neutrality strings on 'our' money stance all the more disconcerting. &lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;The upside is that these plans have caused quite the uproar both on the blog world and in the public sphere leading to one Congressman beginning the process of writing a bill to ban the bandwidth caps completely. This however for the time being will now not be necessary as TWC has announced this evening that they will shelve the plans while 'customer education process continues' (as noted on &lt;a href="http://arstechnica.com/tech-policy/news/2009/04/theyre-gone-after-outcry-time-warner-uncaps-the-tubes.ars"&gt;Ars&lt;/a&gt;). So for now it's a bit moot, but in the near future may rear it's head again.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;The line '...while the customer education process continues...' indicates that while we don't have to worry about these issues for the next week and probably the next few months this will not be the last time we see this. Remember that Comcast does in fact have a usage caps but they are high enough that even heavier users are a hard time hitting them. While that may not continue as the web gets steadily more complex requiring signifigantly more data transfer power if the caps keep up with the complexity it won't cause any huge problems (I still don't like it, but I doubt I'll hit it any time soon). Regardless, among those I know your ISP is the least loved of the bills you pay so making your image worse doesn't seem to be a good idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-3034585115943311390?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/3034585115943311390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=3034585115943311390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3034585115943311390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3034585115943311390'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2009/04/twc-expects-broadband-stimulus-without.html' title='TWC expects broadband stimulus, without stimulus strings attached'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8074765206109257605</id><published>2009-04-05T12:00:00.000-07:00</published><updated>2009-07-06T13:43:59.651-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>Games that Deserve to be Remade: Shattered Lands</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_UbKGXWsXt9w/ScvW9k8MtDI/AAAAAAAAAE4/D6eE7Al1hHc/s1600-h/shatlanF.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 340px; height: 400px;" src="http://4.bp.blogspot.com/_UbKGXWsXt9w/ScvW9k8MtDI/AAAAAAAAAE4/D6eE7Al1hHc/s400/shatlanF.jpg" alt="" id="BLOGGER_PHOTO_ID_5317580138417534002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is an article I've been wanting to type up for a while now, because it's about a game that I can say was easily one of the best games I have ever played.  Or at the very least it's one of the few games I have thoroughly enjoyed playing thru more than once or twice, of course this could just be childhood nostalgia talking if I hadn't played it again somewhat recently.&lt;br /&gt;&lt;br /&gt;I guess it would help if I made some justification for this opinion other than the tidbit above and the picture of whoever that is supposed to be on the box art (seriously... I don't think anyone like that is actually in the game; in fact I'm pretty sure that box art is the same one being used more modernly for a character named Rickus that I've read a republished book on recently.).&lt;br /&gt;&lt;br /&gt;Shattered Lands and then later Wake of the Ravager introduce us to the game world known as 'Dark Sun'.  This world isn't what you would expect if you've played pretty much any other DnD game I've ever had the fun of coming across (and I'm pretty sure I've played most of them to some capacity or another...).  This is a world where in a desperate attempt to simply survive the humanoid (and humanoid insect species) have developed Psionic powers simply to remain competitive with the predators of the wasteland they live in, the land is almost entirely a parched desert (aside from an oasis and lava field, the game is entirely desert the world on the other hand does have a forest or two).&lt;br /&gt;&lt;br /&gt;In game the psionics feature of the game world is expressed in two ways.  First each an every character that you create is allowed to pick up a single Psionic ability and grants the owner enough power points to utilize that skill at least once.  The second approach allows you to pickup a generic 'psionicist' class, that while not as fleshed out in 2nd Edition Revised and Expanded as it is in say, 3.0-3.5/pathfinder still has an impressive array of skills that progress over time.  This single feature brings the number of magical or super natural ability types up to 3 distinct sets of powers.  This is a huge leap over other games of this genre that at times struggled to seperate out the types of magic at all.&lt;br /&gt;&lt;br /&gt;To allow further customization of your parties characters the game enabled the (completely broken) multi classing rules available under the 2.0 RnE rule system.  So as long as you didn't play a 'gladiator' (the closest thing that Darksun had to a paladin in rule requirements and the like) you could combine up to three character classes to form a slow progressing but generally gestalt in latter life character.&lt;br /&gt;&lt;br /&gt;Shattered Lands also presented an interesting actions and consequences system, while it didn't implicitly implement a reputation system it did make your actions in the individual towns matter rather significantly.  The game culminates in a multi wave battle between your party and piles of fairly dangerous magic casting enemies.  If you've played your cards right in the towns around the world you'll have allies from the respective towns available to help you out when the time comes.  Alternatively if your a mass murdering psycho, you'll have tons of money and crappy equipment but no alies.&lt;br /&gt;&lt;br /&gt;Aside from these interesting functional features of the game it was also far less linear than other DND games of the era, Menzoberanzan or Stone Prophet for example.  Other than escaping the arena and the sewers in the beginning of the game, you can technically do everything else in the game in almost any order you choose, even modern games struggle with this particular feature.  This non linearity also makes it so that you can miss huge portions of the game and still be able to finish it (thou it would be incredibly difficult to do so), adding to the overall replayability of the game.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;The long and short of the game is that it was fairly fantastic.  The base game was simple enough for a kid to figure out, given a basic knowledge of the fundamentals of DnD.  That being said there were a number of puzzles, areas and features that required a more in depth level of thinking that keeps the replay ability up.  The one major bonus was also it's major failing, in that the use of a party made it so that there was no reason to play another class the next time thru, as you could hit all the classes in one go.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;The unfortunate thing is that this game doesn't fit into the format that most RPG games are going these days, where most don't even let you create your main character this game allowed you to craft an entire party.  The fact that it even uses a party is considered fairly evil in current gaming standards.  This introduces some problems with any enthusiasts ambitious enough to make a port of the game into something like Oblivion or Never Winter Nights 2.  While Oblivion had a companion actor and NWN2 has a party that you can exert moderate control over, neither provides the level of detailed control that being able to treat your party as your player character grants.  It's a pity that this style of game play seems to have faded after Baulders Gate, Torment and the Icewind Dale series ran their respective courses as it provided a much different gameplay style involving some of the best elements of playing an RPG and an RTS in one game.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8074765206109257605?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8074765206109257605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8074765206109257605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8074765206109257605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8074765206109257605'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2009/04/games-that-deserve-to-be-remade.html' title='Games that Deserve to be Remade: Shattered Lands'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_UbKGXWsXt9w/ScvW9k8MtDI/AAAAAAAAAE4/D6eE7Al1hHc/s72-c/shatlanF.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-1746835114800506231</id><published>2009-03-20T11:00:00.000-07:00</published><updated>2009-03-20T11:00:03.714-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='Idiocy'/><category scheme='http://www.blogger.com/atom/ns#' term='Net Neutrality'/><title type='text'>ESPN Online, Powered By Stupid.</title><content type='html'>ESPN360 has recently discussed their plan to avoid facing the possibility that consumers do not in fact want to pay for their crappy programming.&lt;br /&gt;&lt;br /&gt;Their overall goal is actually pretty simple.  Make the ISP's pay a fee to even get to the website, selling it as a competitive advantage over other ISP's.  This cost would then be transferred down to ISP users as effectively a hidden (or not so hidden) fee.  This sort of approach bypasses entirely the pesky business of finding out that users do not infact give a damn about your website.  It also transmits the cost to every single user of that ISP, because obviously everyone wants to go to the ESPN website, so you should all pay for it.&lt;br /&gt;&lt;br /&gt;This argument falls apart pretty quickly, unfortunately instead thinking and telling ESPN to shove off a number of ISPs have made agreements of this nature.  This will eventually become a serious problem for them, as ESPN's apparent success encourages more companies to travel this path.  Which of course means higher costs for consumers regardless of whether they want the services or not.  Eventually the only option will be a form of tiered servicing allowing access to specific sites, which would effectively foist this business model completely off the likes of ESPN and get back the network neutrality issues at the heart of all this garbage.&lt;br /&gt;&lt;br /&gt;The strangest thing about this business model is it seems to miss the whole point of the way the internet allows data to move around.  It relies on black mailing the ISP's into buying a service that you could simply ram down their throats via consumer uptake.  Of course, this makes total sense if you don't in fact think your service will be that popular and want to get money out of it regardless but the days of allowing a fixture company exist because it always has is quickly coming to an end.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;The upside (or downside) is you only have about a 60/40 chance of getting ESPN online today (only about 40% of you do, and only in America according to the &lt;a href="http://blog.wired.com/business/2009/02/espn-stands-fir.html"&gt;Wired Article&lt;/a&gt; on this topic).  If you value ESPN as a sports news source (does anyone? really?) than well, I hope your ISP has sold out for your sake.  For the rest of you out there at least your not funding this insanity.  I've yet to check my work and home connections for this feature due to the ESPN site requiring a special plug in that I elected to not install but will probably do so soon.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;In the end we can all hope that the ISP's realize they are going collectively mad with this approach to doing business.  If they do, maybe ESPN will actually get it's head connected properly and stop trying make an end run around the people that actually watch their television shows and instead find a way to properly monetize their viewing public.  Until then, the most you can do is check to see if you have access, and if you do, and don't want to be subsidizing somone elses entertainment write an angry letter to your ISP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-1746835114800506231?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/1746835114800506231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=1746835114800506231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/1746835114800506231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/1746835114800506231'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2009/03/espn-online-powered-by-stupid.html' title='ESPN Online, Powered By Stupid.'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-3334913154973129155</id><published>2009-02-27T11:00:00.000-08:00</published><updated>2009-02-27T11:00:00.361-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>Why My Wii Gathers more Dust than Play Time, and why that's unacceptable.</title><content type='html'>It occurs to me that my Wii despite being on of my favorite objects actually does not get used as much as I'd like to see it get used.  I consider this to be a general unfortunate fact but not terribly surprising due to the nature of the games produced for the system and the nature of the system itself.&lt;br /&gt;&lt;br /&gt;Firstly while the controller system involved in the Wiimotes is unique and interesting, it's not completely appropriate for all games you can play on the Wii and in more than a few case it causes more problems than it solves.  For instance Looney Tunes: Acme Arsenal, fun game for the genre.  However it's feels highly crippled on the Wii due to the awkward way the finishing moves must be executed.  The sad fact of this is that some of the best games for the system only utilize the Wii mote in a somewhat limited context, Mario Galaxy for example integrates the controls well by simply cherry picking the few features it actually needs.  Smash Brothers on the other hand completely eschews the features of the Wiimote and makes itself a stand-up game for doing so.  Mario Kart on the other hand allows you to drive very intuitively but popping a wheelie on a motorcycle is a less than reliable prospect with the Wiimotes motion sensor.  These are all first party examples as well (with the exemption of Looney Tunes), third party games tend to be even more hackish with the controls.&lt;br /&gt;&lt;br /&gt;The main problem here is the compulsion to use just because you have it.  Instead of capitalizing on the strengths of the controls relative to the actual game your writing (or alternatively writing a game that is specifically designed for the controls) developers seem to have decided that shoehorning new and old paradigms together is instead the preferable direction to go.  This is rather disappointing since the Wiimote system offers some intriguing possibilities for new control systems. &lt;br /&gt;&lt;br /&gt;Second ties into the once lauded (well at least I liked it) but now massively aging web browser.  The fact that you can access Youtube is great, and would be better if Youtube had any real capacity to compete with Hulu for shows people actually want to watch.  Sadly Hulu doesn't run on the Wii due to the Wii's lack of an upgraded flash engine.  Using the browser for any length of time will show other weaknesses as well, like typing with a Wiimote which is a miserable experience in what could otherwise be a very good if somewhat simple browsing experience.  It would also get me to turn on the Wii more often which would lead me to using it for other things.&lt;br /&gt;&lt;br /&gt;Finally, the systems 'Friend' behavior is abysmal.  It's reportedly improved in some of the more recent games to come out for the system but the underlying framework is the real problem.  As has been stated many times, it would have been 'ok' in 1995, but in the Era of Steam and Xbox Live, it's garbage at best.  The idea that anyone would find it convenient to type in a 25+ character string using a Wiimote for every friend they want to be able to interact with is up surd.  And to add insult to injury, individual games still require you to plug in a second pin (again this is supposedly not the case with some newer games).  Even after that, actual interaction with the other players is strictly on screen as there is no voice communication available on the system.  The big problem here is this could all be encapsulated in an actual useful buddy system and the problem would be fixed, but there hasn't been an investment in that wrinkle of the system so far, so don't expect it to improve.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;The only silver lining here is that I just got my hands on a Wii Fit (in the span of time it took me to start and finish this post, no it wasn't easy to find, but yes I do write these that slow).  While that involves it's own list of complaints on the technical failings of the Wii Fit software, the program actually gets me turning the Wii on again.  Which is great since I no longer feel like my signifigant other has wasted a huge amount of money buying something for me that doesn't get used.  That being said it's still a great party system, and the controllers get pulled out at a moments notice to play a few rounds of smash brothers or Mario Kart. &lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;Not all is as dark as I paint it and there have in fact been a number of great games out for the Wii and I'm sure there are more to come in the future, an example being Boom Blox which I've been told is rather excellent.  That being said, there's alot of work to be done if people want to tap the full potential of this system.  In the mean time it would be nice if the shoehorned wiimote controls could be disabled and pushed over to an a classic controller for games where it doesn't really fit (I'm looking at you Zelda).  It's also still easily the most family friendly of the gaming systems, this is a side effect of both the games made for the system and the fact that there isn't any form of high quality online system for griefers like there is on the Xbox (live) and the PS3 (Home) to hurl their abussive, offensive and annonymous opinions around with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-3334913154973129155?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/3334913154973129155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=3334913154973129155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3334913154973129155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3334913154973129155'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2009/02/why-my-wii-gathers-more-dust-than-play.html' title='Why My Wii Gathers more Dust than Play Time, and why that&apos;s unacceptable.'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-3867351751194068048</id><published>2009-01-19T10:00:00.000-08:00</published><updated>2009-01-19T10:00:01.537-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>Games that actually Deserve to be remade: Tie Fighter</title><content type='html'>Ok, It's time for a new type of blog article, does that mean I'm going to stop doing the red/blue pill, no.  But it does mean I'll be writing a few more of these particular articles!&lt;br /&gt;&lt;br /&gt;So, On to Tie Fighter!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_UbKGXWsXt9w/SXC8BHF3API/AAAAAAAAAEI/K_TDHZb4T8w/s1600-h/Star_Wars_Tie_Fighter_game_box.jpg"&gt;&lt;img style="cursor: pointer; width: 456px; height: 592px;" src="http://2.bp.blogspot.com/_UbKGXWsXt9w/SXC8BHF3API/AAAAAAAAAEI/K_TDHZb4T8w/s200/Star_Wars_Tie_Fighter_game_box.jpg" alt="" id="BLOGGER_PHOTO_ID_5291936289429848306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This game was one of the most complex games I think I ever played on Dos, sure you had the descent series which was cool but extremely confined.  This game offered space naval battles on the scale seen in more recently in Project Slypheed, which while a cool game (well.. sorta) it just doesn't tickle the imagination like the experience of crushing the rebellion one fighter ship at a time.&lt;br /&gt;&lt;br /&gt;There were a few things that made this game worth playing all the way thru.  As you progressed thru the game you acquired a number of different missile weapons you could setup in the fighters missile bay, however these weapons didn't dictate whether or not a given board was possible to defeat.  On the other hand they allowed the boards to be played in drastically different ways depending so it tended to be better to select missiles that compensated for your particular weaknesses (or if you had god mode on, which ever ones were the most fun ;)).&lt;br /&gt;&lt;br /&gt;Another bonus to the game was that there are a number of different ships you can play throughout the game each divided into it's own set of campaign missions.  While the different ships were on a general level relatively similar each iteration had slight advantages and disadvantages (and some simply outclassed others much latter in the game.)  What's more you could play thru missions you've already completed with any ship you've unlocked (in modern terms this could be a great source of achievement points).&lt;br /&gt;&lt;br /&gt;This is all great but without at least a fun storyline the game, and while this one wasn't perfect it was at least engaging and the individual quests were varied enough to the game enjoyable from start to finish.  The quests also were not overtly formulaic so it was not too painful to play any individual map, even if escort quests did crop up now and then (I hate escort quests.).&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;While this game didn't receive the attention of the descent series (which I'm convinced received most of it's acclaim for just being weird) it certainly trounced all of the other Star Wars branded flight sims of the day (and handily rocked most of the next generation of games as well, but they were terrible).  On top of that it pushed the limit of what we could consider possible on less than 10 3.5" floppy disks providing 76 total missions, a number that's unheard of even by today's standards, and we use DVD's to distribute games now.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;The game is great but a remake / republish coupled with updates provides the opportunity to do more than say Rez HD did with just providing new graphics.  The newer systems and technologies that didn't even exist when this game was around could provide for anything from co-op missions to multiplayer space flight death matches (you'd probobly want to consider blocking the use of the Missile Boat or Tie Defender however as those ships are just rediculous, at least compared to a standard tie fighter or an interceptor).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-3867351751194068048?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/3867351751194068048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=3867351751194068048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3867351751194068048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3867351751194068048'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2009/01/games-that-actually-deserve-to-be.html' title='Games that actually Deserve to be remade: Tie Fighter'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_UbKGXWsXt9w/SXC8BHF3API/AAAAAAAAAEI/K_TDHZb4T8w/s72-c/Star_Wars_Tie_Fighter_game_box.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-4918026849596741935</id><published>2009-01-15T15:00:00.000-08:00</published><updated>2009-01-24T21:04:56.843-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>The boat Microsoft missed</title><content type='html'>I'll preface what I'm about to say by noting that I've been using Windows since 3.11 and Microsoft products since MS-DOS 5.  That being said, I've never considered MS infallible (ME demonstrated that handily enough).&lt;br /&gt;&lt;br /&gt;Back when those were the prevalent OS's you had to go to a store to buy software, or use a magazine to purchase it (anyone else here remember Egghead?).  This however hasn't really been necessary for years however, a fact readily demonstrated by the likes Steam, ITunes, Amazon, Good Old Games and Digital River (the people behind a number of download systems including EA's direct download).  You'll notice a name missing from this listing, Microsoft.  This is not to say that Microsoft doesn't have a download server with the ability to purchase stuff (and some of the fastest servers I've ever downloaded from), it's just that the service is terrible and barely qualifies as service when held against the likes of Steam and ITunes.  It's somewhat closer to GOG.com's system but without the high quality organization and sense of coherency.&lt;br /&gt;&lt;br /&gt;The big problem here is I can't think of any truly justifiable reason for this, linux solved this seven ways to Sunday, none of them monetize able but all more or less effective.  Having looked a few times they've actually torn down their original shop (introduced as a feature of Vista's Add/Remove Programs functionality) and replaced with with 'Microsoft Store'.  Problem is the new store, much like the old store is still terrible, and now offers even less down loadable software than it did before (now it's mostly, buy and ship stuff like game pads and boxed software).  It's also web based instead of cleanly integrated into an application on the desktop (like say... Steam), missing the point entirely.  It would be great to see a nice clean application that I could load up and log onto on a new PC and simply hit 'install' to recover all of my applications from my older system without having to worry about CD's / DVD's, CD-Key's and the like.  Adding the possibility of offering up free programs, or a demo / full program stylized after the Xbox Live Arcade distribution model wouldn't hurt software sales either I don't think.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;While Microsoft may have totally failed to pay this particular ferry man, there's a number of other companies out there that have solved the problem quite handily.  Of them I'd list Steam and Good Old Games as my favorites.  This is due mostly to the fact that many (if not all) of the Digital River powered systems have a hard limit on how long you can re download the game for, and go so far as to charge you extra for the right to download it for an extended period of time (but still not 'forever'), where as both GOG and Steam guarantee download access for the life of the companies (which I hope to be a long time in both cases).  It doesn't hurt that the level of DRM on Steam is fairly pain free and on GoG simply doesn't exist.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;While other companies may have solved this problem they have done so for a very particular market segment, namely gaming and they've done it very very well.  There's still an opportunity there to be able to provide a single point of access to any number of individual applications or application groups (like say an app with related mobile software?) to provide a service for.  It would certainly help if the app sales system was smart enough to make sure you don't buy stuff you can't use on your system and the like.  But based on the meandering path Microsoft has walked so far on this particular trail, I wouldn't hold my breath for anything huge in the future either.&lt;br /&gt;&lt;br /&gt;edit: It appears Microsoft may actually 'get' this based on this &lt;a href="http://arstechnica.com/journals/microsoft.ars/2009/01/21/is-microsoft-working-on-a-software-center-for-windows"&gt;Ars article&lt;/a&gt;.  Now lets hope they don't just scrap it and reopen in 3 times like the have for their media store.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-4918026849596741935?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/4918026849596741935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=4918026849596741935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/4918026849596741935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/4918026849596741935'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2009/01/boat-microsoft-missed.html' title='The boat Microsoft missed'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-2549264389680142728</id><published>2009-01-12T09:46:00.000-08:00</published><updated>2009-01-12T10:08:20.522-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><title type='text'>I've been Stumbled!</title><content type='html'>So apparently over the weekend someone linked one of my blogs on www.StumbleUpon.com.  Which was pretty awesome, my article &lt;a href="http://blog.shadowgears.com/2008/08/lost-feature-set-local-multiplayer-and.html"&gt;The Lost Feature Set...&lt;/a&gt; was placed on StumbleUpon and within a day shot up to be the most popular article I've written (by viewer readership).&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;Someone thought it was worth posting me into the crazy world of referred articles for which I'm rather flattered.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;I can't for the life of me figure out how to find my own article on stumble upon to see what the 300 some odd people had to say about it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-2549264389680142728?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/2549264389680142728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=2549264389680142728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/2549264389680142728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/2549264389680142728'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2009/01/ive-been-stumbled.html' title='I&apos;ve been Stumbled!'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-1529592961112192058</id><published>2008-12-15T10:00:00.000-08:00</published><updated>2008-12-15T10:00:00.199-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>Statcounter, wonderchild of website usage mapping.</title><content type='html'>A while back I got curious about the kind of traffic I've been receiving on this blog as Blogger has nothing constructed to make it in anyway clear if your blog is getting traffic of any kind at all.  So I decided to research a few different ways to do it and finally came to the title package.&lt;br /&gt;&lt;br /&gt;Stat Counter as noted above was my the choice I eventually rested upon and I'm pleased I went with this solution.  The system solved a unique problem I had with tracking this blog.  Specifically the articles and resources for this blog, as well as it's delivery server are all remote systems that I simply submit content to.  As such I can't add any sort of monitoring to the system or implement any form of logging (or even access the logs that are invariably generated).  So I needed something that could be added directly to the pages code and would utilize an external source to make the magic happen.&lt;br /&gt;&lt;br /&gt;Stat Counter pulls this off by inserting a small block of java script into your page.  This does have a few failings, specifically in that I am still unable to track usage from the ultra paranoid (not that I disagree with their caution, even if i consider it somewhat unwarranted in this case).  Stat Counter also provides a number of different ways this java script code can manifest on the page.  I've chosen the simple button that will take you to the stat counter website but there's also a number of counter options, including a page by page counter or a main page only counter (total visits vs. page visits).  Alternatively you can use an invisible counter, but I'd rather support a company with the button than hide the system all together.&lt;br /&gt;&lt;br /&gt;After the data is collected there's a fantastic number of ways you can look at it thru the Stat Counter website.  I've made the data of my blog entirely public, while you can't manage it, you can review all the stats of the page if your curious.  Some fun features (fun more than useful) are a geographic locator of the people visiting your site powered by google maps.  My strongest reader showings are in the US, Canada and the UK, with smaller showings in at least two dozen other countries.  A more useful feature would be the keyword analysis which gives you a nice percentage based representation of the search terms used to reach your pages.  There's also a most popular pages feature making it easy to figure out what you should write about more often (which I clearly ignore since I've yet to write anything else about QT4, despite it being my hands down most popular article).&lt;br /&gt;&lt;br /&gt;To feed the curious and ego driven there's also a drill down tool that lets you look get more information about nearly anything on the site.  This single semantic works across the whole site to provide more detailed information to the curious.  It will go so far as to present a single visitor (with handy google map indicating where they connected from), what URL's they used to get to your site (for example a google search or cross site link).&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;For those that need to feed their ego, track the stats of the site, or just curious where your users are coming from this plugin does the trick in spades.  It's easy to setup, just drop the code into your page template and your up and running.  It will also provide enough information for even the most discerning free service user.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;One of the disadvantages of this system is the limited amount of overall data it allows you to store at 500 total entries.  However this doesn't seem to play as much hard ball as you'd think, it allows 500 entries of full fidelity data, but all entries are considered for general counting and statistics.  If you need more slots you can pay for them, but I've yet to figure out a reason why I would need them for a single page.  For multiple pages I could see it being a great thing to invest in thou (as you can split your total alotment across all your projects however you please).  Also this system is broken by people using things like google reader (as the stream has no java script capacity), and there are far more efficient ways to do this same functionality if you have access to the server the pages are being served from.  That being said for a drop-in solution where you can't use a more efficient tracking method this works fantastic, and is generally accurate despite it's specific failings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-1529592961112192058?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/1529592961112192058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=1529592961112192058' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/1529592961112192058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/1529592961112192058'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/12/statcounter-wonderchild-of-website.html' title='Statcounter, wonderchild of website usage mapping.'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-7596614356293028310</id><published>2008-12-01T12:30:00.000-08:00</published><updated>2008-12-01T12:30:00.658-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><category scheme='http://www.blogger.com/atom/ns#' term='xbox'/><title type='text'>Xbox's new NXE interface</title><content type='html'>Ok, this has been sitting in my que of 'crap I need to write' for a while so I'm finally forcing it out the door.&lt;br /&gt;&lt;br /&gt;I've gotten to spend a bit of time tooling around with the new (and much needed) Xbox 360 interface upgrade over the last weekend and last week.  Anyone out there with a 360 is probably already aware of the now rather old Xbox 'Blade' interface.  While a fairly simple and somewhat effective the analogy is starting to wear thing due mostly to the fact that over the years both the number of features available on the Xbox and the amount of down loadable content available through the Xbox live system.&lt;br /&gt;&lt;br /&gt;Some out there have been relatively luke-warm to the new NXE UI and I sympathize with many of their grievances.  The blade system in many ways worked just fine, however actually getting to content you wanted to see could be a bit tricky as the interface was far slower than it should have been.  In this area I will applaud NXE, it's light years faster than the blade system ever was, and even when a page isn't entirely populated yet the information is generally usable if a bit diminished as the data catches up with the user.&lt;br /&gt;&lt;br /&gt;The avatar system (or mii60's as I've taken to referring to them) are interesting if entirely useless.  I spent a little time on mine for the hell of it, it was fun putting the character together but I can't see myself spending any money to actually personalize the character in any way.  The avatars are far better than the ones you can get for the Wii in many ways, but then again the Xbox is pumping out at 1080i (I don't have an HDMI model :( ) so the picture had better look good in comparison.&lt;br /&gt;&lt;br /&gt;My new 360 persona:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://avatar.xboxlive.com/avatar/Wildcarde/avatar-body.png"&gt;&lt;img style="cursor: pointer; width: 150px; height: 300px;" src="http://avatar.xboxlive.com/avatar/Wildcarde/avatar-body.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The other major area of interest for me was the NetFlix streaming and this is actually what pushed me over the edge in getting a gold account for Xbox Live.  So I guess from Microsoft's perspective it did what they were hoping it would do.  I actually just signed up for NetFlix because of this feature as well.  I'd considered using a Roku box to do the same thing the 360 does when I initially looked into this.  A few of my friends have the Roku device and it seems to work wonderfully for them.  However I already have a 360 and it can stream HD unlike every other NetFlix device out there, making it a better option in my opinion (thou reportedly the Roku will have HD streaming shortly).  The major downside being, the Roku uses 5 Watts of power on or off, the 360 uses more than that, probably in either state.  I've had a number of times where it's paused my video and re buffered at a lower resolution due to connection speed issues (thank you Comcast...) and it's crashed my console twice but nothing too horrid has happened so far.&lt;br /&gt;&lt;br /&gt;This brings me to my single biggest gripe with the interface revamp.  Advertisements.  There's a channel literally dedicated to them called 'spotlight' which doesn't seem to function until you log into Xbox live.  After which, whenever you return to the main screen area it dumps you into spotlight requiring you to re-navigate to the area of the system you actually wanted to be in.  This would be slightly less shocking if I wasn't paying for a gold subscription (as for instance an alternative way to be allowed to play games online), however this is the place you are dumped regardless of your membership status.  It's the one major issue I have, and I find it more than a bit offensive that a console I've bought and paid for (and continue to pay for through games, Xbox live purchases and my gold account) would have to have advertisements as well.  I've got a number of friends with PS3's and I've got a Wii.  Neither of those systems feel the need to add advertisements to anything they are doing online.  The fact that MS can get away with this without much public outcry either speaks to the fact that they are still pretty well crushing the competition in overall console desirability or the general complacency of American consumers.&lt;br /&gt;&lt;br /&gt;The feature I haven't tested yet is the installing a piece of software to the hard drive due to the fact that I've only got a 20 Gb drive and the feature seems somewhat useless to me.  The only time I'd find it to be truly useful for is when I go out and rent a game, write it to the console, return the game and play.  Then delete the game when I'm done with it and don't want it on my system any more.  The systems even with the 120 Gb hard drive really don't have enough space to leave a ton of games permanently installed on the system; at least not if they are anywhere near the capacity of the disks that are sold on (like say... Mass Effect).&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;Overall the NXE dashboard update is a great step in the right direction for the 360 console, there's a few things that need to be done yet but from a general usability angle it appears to work great.  NetFlix streaming also works great overall so if you like the movie selection on the streaming site it's worth the investment.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;While the NetFlix streaming works great Sony's Columbia Pictures has pulled all of it's content from being available for streaming to the 360 (and only the 360).  Why they've done this is more likely to be anti - competitive than any legitimate licensing issues, but I'm sure it's not going to last too terribly long.  The software has also crashed my 360 twice, which is up from never crashing before the software update.  While this isn't too terrible it's rather annoying especially when it looses my spot in the playback.  Another nuisance spot is that some series make a single dvd's worth of episodes DVD only even thou they allow you to add them to the instant streaming system so they show up as 'DVD only' when you try to play them :: awesome ::.  Another continuing gripe (from the day the system came out) is that they still are making you use their drive chassis with the system despite the fact they are nothing more than laptop sized SATA drives, grow up Microsoft and stop monetizing the storage like it's the 1990's.  One last thing to bare in mind for better or worse, the Spotlight channel.  May it burn in hell.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-7596614356293028310?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/7596614356293028310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=7596614356293028310' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7596614356293028310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7596614356293028310'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/12/xboxs-new-nxe-interface.html' title='Xbox&apos;s new NXE interface'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8882764329599178032</id><published>2008-12-01T12:00:00.001-08:00</published><updated>2008-12-01T12:09:54.403-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='doodles'/><title type='text'>The automated Shopright (yes it's supposed to be spelled wrong) of robotic doom</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i129.photobucket.com/albums/p215/wildcarde2/torn_shopright2.jpg"&gt;&lt;img style="cursor: pointer; width: 425px; height: 327px;" src="http://i129.photobucket.com/albums/p215/wildcarde2/torn_shopright2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It's another doodle, but it's huge.  I apologize in advance.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i129.photobucket.com/albums/p215/wildcarde2/torn_shopright2.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8882764329599178032?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8882764329599178032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8882764329599178032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8882764329599178032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8882764329599178032'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/12/automated-shopright-yes-its-supposed-to.html' title='The automated Shopright (yes it&apos;s supposed to be spelled wrong) of robotic doom'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8548066974993545579</id><published>2008-11-06T00:00:00.000-08:00</published><updated>2008-11-06T00:00:01.036-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='review'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>I don't want to set the world on fire....</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://fallout.bethsoft.com/index.html"&gt;&lt;img style="cursor: pointer; width: 352px; height: 500px;" src="http://img.grrr.pl/images/gabor/2008.01/fallout_3_box_art.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(sorry, you need to enter your age if you want to get to the Fallout 3 main site.)&lt;br /&gt;&lt;br /&gt;I picked up a collectors edition box of Fallout 3 (here forward referred to as FO3) yesterday afternoon at my local Best Buy.  I've been waiting for this game for a little over a decade, so to say that I was excited to see it in true published form is a bit of an understatement.  I was also nervous as FO3 has a ton to live up to after a decade away, for those of you that haven't played 1 or 2 yet GOG.com just opened it's public beta period and has both of them for purchase thru their site (I've purchased 1 since I've lost my disk copy, works as well as the disk did).&lt;br /&gt;&lt;br /&gt;I've gotten to play for about 10 hours at this point and have been pleasantly surprised with the quality of the game throughout.  There's a great many elements of the previous games incorporated into this one in positive ways.  The failings that are present are partially an effect of the scope of the game and the method of presentation compared to previous titles more than anything else.&lt;br /&gt;&lt;br /&gt;For example, super mutants are still scary (thou oddly less so than I had expected thus far...), irradiated insects are still as tenacious as ever and raiders are still psychotic.  The wastes are still well.. Wastes; albeit highly detailed.  They've even gained some new fun details, like somewhat more destructive environments (for kicks cars explode now and then), and enemies with actual tactics.  The Talon Company Mercs have most notably thus far been quite accomplished at burring bullets in my skin, as well as missiles; the police batons they carry don't pack much of a punch, but that doesn't matter when your forced to melee one while another pounds on you with rifle fire.&lt;br /&gt;&lt;br /&gt;A few things have left, some good some bad.  The time based story props from 1 and 2 have been dropped, with it now being an 'O shit, get out before you die' instead of a 'leave to save everyone else's sorry ass'.  However the mount (in this case a car) and main map travel have been a bit altered.  In that you have lost the car entirely (and it's overly valuable trunk) and main map travel has been replaced with Oblivion style instant travel.&lt;br /&gt;&lt;br /&gt;This brings me to one of the greatest failings the game has but it's one I understand fully.  The main map system with the car worked great when the towns and exterior areas were distinct and separate game props.  However in FO3 these two devices are inseparably linked, which sadly means it no longer makes sense for random encounter Easter Eggs (a favorite feature of the previous games for me).  It also kills the possibility of a viable mount, and random encounters in transit because there's not practical way of predicting where exactly you would have to travel moving from pt A to pt B.  For instance once I had stepped thru the one way exit to Three Dogs little radio station I was capable of fast traveling where ever I wanted, despite the fact that the door behind me was a one way device.&lt;br /&gt;&lt;br /&gt;That is my only major complaint.  The score is great.  The look and feel of the world is spot on.  Many (but not all) of the buildings are fully explorable.  Re-playability is high if for no other reason than choosing certain skills will invariably lock you off from pursuing certain regions of the game(It's replayable for other reasons as well, but these choices will make you want to come back latter with a different character to access that information).  Pretty much everything that is to be expected from a fallout game (even if it appears to be a bit dry in the Easter Egg area).&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;This game is NOT Oblivion set in Fallout, but it has some features that harken back to that style of game.  It is in fact far more true to the original series of games than I had suspected was possible at all.  If you loved the original games, you'll adore this one as well.  If you loved Oblivion and / or Morrowind you'll probably love this game as well.  If you love RPG's and can accept the idea of a 1st Person game (or if your feeling the need, third person over the shoulder cam) you'll probably enjoy this game.  Definitely worth picking up if your an RPG fan.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;For people expecting oblivion, you're going to be a bit disappointed, but the lack of scaling enemies (at least evenly scaling ones) will allow you to get a more powerful feeling character than that game allowed which isn't always a bad thing.  Also this game doesn't have anything like magic, enchanted items or potions so no mini-maxing in that manner, however perks do fill that gap in some ways.  All that being said there's been a few things so far that have struck me as 'off' from both a story canon perspective and non-canon time line (for those that doesn't think tactics is a 'real' fallout game).  I can't put my finger on it, and the gameplay / look and feel of the game are so amasing it hasn't troubled me more than a tickle here and there.  Definitely worth buying.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8548066974993545579?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8548066974993545579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8548066974993545579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8548066974993545579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8548066974993545579'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/11/i-dont-want-to-set-world-on-fire.html' title='I don&apos;t want to set the world on fire....'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-6575956664523395118</id><published>2008-10-25T10:00:00.000-07:00</published><updated>2008-11-21T13:46:47.229-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>Mega Man 9, good game?</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://megaman.capcom.com/"&gt;&lt;img style="cursor: pointer; width: 260px; height: 346px;" src="http://upload.wikimedia.org/wikipedia/en/6/63/MegaMan9PromoArt.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've played Mega Man 9 on and off over the last few days in an attempt to make some sort of headway in the game.  To this end I've finally beaten A boss, not a few bosses, a single boss.  Notably here, while I'm not in the class of 'Professional' games, I'm pretty good at video games, and this one is exceptionally hard.  Being hard isn't necessarily a bad thing, unless it's hard because it's abusing worn out props that were correctly abandon years ago.  This is sadly the case in MM9.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;My first encounter with this was the fact that Mega Man can't jump, at least not very well.  This isn't a problem if your just hoping up a staircase, it becomes a major problem when your trying to leap over a pit of spikes.  This same issue rears it's ugly head latter when they introduce an enemy loosely based on a sky crane.  I say that because it falls from the sky straight thru the board and lands on your head.  At which point it starts dragging you to the right at top speed, typically into a hole full of spikes are a wall of spikes.  There is no way to escape these devices thou you can jump to attempt to avoid the holes w/ spikes (the walls, your out of luck for).  This crap gets old fast, and while yes you can avoid the cranes that requires knowing where they are going to come from, which means dying repeatedly.&lt;br /&gt;&lt;br /&gt;While death holes and death spikes (or lava or whatever) have yet to meet their demise entirely they typically get relegated to charging the player a reasonable tax for their screw up.  MM9 instead seems to have decided that these experiences should be thrust upon the player thru use of poor jump control and inescapable mobs.&lt;br /&gt;&lt;br /&gt;This brings me to my next point.  Mega Man is flimsy, he supposed to be the most advanced robot on earth (and if the teaser art above is to be believed, quite the badass).  But he's neither of those things.  The bosses in the game can pretty much crush you like a bug.  This is largely due to the total lack of mobility on Mega Mans part, he moves slow, jumps shallow and reaches the point of no return on mistakes with a startling level of cruelty.&lt;br /&gt;&lt;br /&gt;Gone also are the advantages the Mega Man framework acquired in the years since MM8 was published (1996), these include the ability to dash, crouch and otherwise behave like a super human robot instead of a dude wrapped in sheet metal.  This all adds up to making boss fights less something awesome to look forward too and more something to be dreaded because you probably don't have the HP or lives to fight anyway, a sad deviation from Mega Man X and Zero where boss fights were fun and interesting due in fact to the diverse environments and skill sets of the characters.&lt;br /&gt;&lt;br /&gt;The game also looks like... crap.  I'm all for nostalgia gaming, and I appreciate that MM 9 is tuned to look 'right' on an HDTV, but mega man 9 went so far back that I find myself more annoyed by the graphics than titillated by them.  I've played a majority of the original Mega Man games and the X series, as well as the zero series (and even the ZX series).  Hands down the X, Zero and ZX series beet this throw back graphically.  Something that bothers me more than the 8-bit game look and physics defying enemies (in that they ignore rules your bound to in the game) is the fact that Mega Man looks like a like a little baby faced kid from what little detail you can discern from his character model.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;Mega Man 9 is an incredibly difficult nostalgia game that some will enjoy and some won't.  It exsists in the same realm of play style as MM 1 and 2.  I've been told it's even beetable in both it's standard mode and proto-man mode (you can play him if you pay to do so).  It's also relatively cheep pulling in around 10 bucks for the whole game (core game + proto man + endless attack map).  For platformer junkies it's a definite must buy as they'll relish the challenge and map designs (from what I've gotten to actually see).  Also the fact that Capcom keeps publishing downloadable content for the game means it'll have some decent replayability (if you are willing to pay for the DLCs).&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;For the rest of humanity I'd pass on this game, the number of times you'll be screaming at the screen for a death unearned far outweigh any nostalgic fun you'll derive from this game.  The abuse of long dead props (mostly derived from the arcade game era) will further inhibit enjoyment of this game for the vast majority of the human species.  Poor character control and a side issue of upwards scrolling lagging slightly will also help drain the joy out of this game quickly making you kick yourself for spending the cash on it.  That being said I'll probably still play the game now that I've payed for it in an attempt to at least beet the game once (the 5 game clears in 1 day achievement can kiss my ass.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-6575956664523395118?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/6575956664523395118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=6575956664523395118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/6575956664523395118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/6575956664523395118'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/10/mega-man-9-good-game.html' title='Mega Man 9, good game?'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-39675356885823697</id><published>2008-10-16T12:00:00.000-07:00</published><updated>2009-12-19T16:15:39.120-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='explanation'/><category scheme='http://www.blogger.com/atom/ns#' term='QT'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Making QT4 dance with MSVC 2008</title><content type='html'>Anyone who's read my previous blog post will know that I've become keenly interested in cross platform development, not so much for my own benefit but to guarantee my software doesn't just sit around and stagnate because there's an arbitrary stigma applied to it.&lt;br /&gt;&lt;br /&gt;As such, I've elected to use QT4OS (open-source) for my projects here at work.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://trolltech.com/products"&gt;&lt;img style="cursor: pointer; width: 200px;" src="http://trolltech.com/logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One thing I can say is, QT4OS does work in MSVC2008.  However I have not figure out a way to generate proper make files for the QT Qmake system.  So the whole 'cross-platform' thing is still stuck in a bit of a rut on my end.  However you can generate Visual studio projects from the Qmake compatible make files and compile / modify those projects in Visual Studio.  Intellisense also works with the QT4 packages if you have the header files configured properly.&lt;br /&gt;&lt;br /&gt;First, lets go with getting a copy of QT4 so that we can start moving forward.  There's a few places to do this.&lt;br /&gt;&lt;br /&gt;The default download for windows is located here(note this link will take you to the download page, I suggest downloading the MinGW included version).  This version will also include all the demo's, including the demo explorer, which are really helpful for showcasing particular technologies and behaviors.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://trolltech.com/downloads/opensource/appdev/windows-cpp"&gt;&lt;img style="cursor: pointer; width: 200px;" src="http://trolltech.com/products/images/template/downloadqt.png/image_preview" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you'd like the latest greatest published version, the development versions are available here.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="ftp://ftp.trolltech.com/qt/snapshots/"&gt;&lt;img style="cursor: pointer; width: 29px; height: 35px;" src="http://trolltech.com/images/template/icon-download" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OK, after you have the system downloaded, pick a location and install it.  I installed mine at D:\QT\&lt;version&gt;&lt;br /&gt;&lt;br /&gt;I should preface everything that follows by saying what I'm about to tell you to do will take a massive amount of room up.  My QT folder takes up 8.9GB due to the fact that I have the MinGW build, 32-bit MSVC build and 64-bit MSVC builds all co-exsisting in sub folders.  Depending on your OS and hardware configuration this will be smaller (if for example you don't need the 64-bit build like I do).&lt;br /&gt;&lt;br /&gt;After the &lt;version&gt; directory is fully installed it's time to start making copies so we can compile the versions we are interested in.  I'm working with version 4.4.3 so I copied the original version naming one folder 4.4.3x86 and a second folder 4.4.3x64 just to keep everything clear.  This also allows you to build both of them without having to rebuild (something you really really don't want to do).&lt;br /&gt;&lt;br /&gt;Next you must setup the environmental variables to reflect the settings that are necessary.&lt;br /&gt;&lt;br /&gt;Specifically the the location of the new QT folders /bin must be added to the system PATH variable.  This can be done in two ways either in the 'User Variables' or the 'System Variables'.  I tend towards setting it in the user variables for clarity.&lt;br /&gt;&lt;br /&gt;The location of the environmental variables is generally the same if your in XP or Vista.  Open the control panel and go to the 'System' program.  In System access the 'Advanced' tab and select 'Environmental Variables' at the bottom of the screen.&lt;br /&gt;&lt;br /&gt;After that, restart the system.  This needs to be done so that the Environmental Variables are all in play, if anyone knows another way to do this in windows let me know please, having to do this is maddening.&lt;br /&gt;&lt;br /&gt;Ok, now that the files are all where you want them and the env vars are all setup.  It's time to break out those good 'ole Dos skills, you know, dir, cd, the 2 everyone should know.&lt;br /&gt;&lt;br /&gt;If you've never used it before your going to open up the 'Visual Studio 2008 Command Prompt'.  This can be found in the Visual Studio folder in your start menu under 'Visual Studio Tools'.  For those of you on an 64-bit machine you will have two separate consoles you can start, start one of each.  The bit rate of the console dictates how QT is built so navigate the 64-bit version of the console to the root folder of your QT 64-bit build, and the 32-bit version to the location of your 32-bit build.&lt;br /&gt;&lt;br /&gt;After you've navigated to the root of each of the build sites you'd like to setup the following command will get you started.&lt;br /&gt;&lt;br /&gt;configure -platform win32-msvc2008&lt;br /&gt;&lt;br /&gt;This is correct for both the 32-bit and 64-bit versions, it's a legacy thing.  Stupid, but a legacy thing.&lt;br /&gt;&lt;br /&gt;This command is going to take some time to run (like 10 minutes or so).&lt;br /&gt;&lt;br /&gt;Afterwards in each console type the command 'nmake'.  This runs Microsofts make function, yes even MS has one.&lt;br /&gt;&lt;br /&gt;This will take hours, go watch a movie, take a somone to dinner or go exercising.  If anybody complains, show them this from the ever hilarious XKCD.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://xkcd.com/303/"&gt;&lt;img style="cursor: pointer; width: 268px; height: 233px;" src="http://imgs.xkcd.com/comics/compiling.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once this is all done your going to need to actually configure visual studio to make it all come together.  This is going to require a few quick configurations and compiling should be setup.&lt;br /&gt;&lt;br /&gt;These configuration options can be found by loading up Visual Studio and navigating to Tools-&gt;Options.&lt;br /&gt;&lt;br /&gt;In here you'll want to navigate to 'Projects and Solutions' then on to the 'VC++ Directories' sub heading.&lt;br /&gt;&lt;br /&gt;From here there's a few things you need to do.  Specifically you must configure the locations of the \bin, \include, \lib, \src. (include,lib and src pictured below).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_UbKGXWsXt9w/SPeExTP4UrI/AAAAAAAAADY/ZGSOxVWCVwE/s1600-h/include.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_UbKGXWsXt9w/SPeExTP4UrI/AAAAAAAAADY/ZGSOxVWCVwE/s400/include.JPG" alt="" id="BLOGGER_PHOTO_ID_5257817072493679282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A few things to catch here, I've highlighted three things.  One the location all this setup starts at 'VC++ Directories'.  After that there's the platform listing.  If your using a 64-bit system you'll have to set this up twice, once for the Win32 Platform, and a second time x64 Platform.  All that must be configured is an entry in the 'include' area pointing to the appropriate include folder on your hard drives.  For the more advanced users you could substitute the very definite D:\QT\ with an environmental variable (storing much the same value), or even separate ones for each platform so it's easier to replace them with newer versions latter.  Don't forget to make sure your putting the x86 includes and such under the Win32 Platform listing and the x86-64 (x64) under the x64 platform listing.  If you don't get this right, your programs will compile but when attempting to link will fail (you can't link a 32-bit app to a 64-bit library).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_UbKGXWsXt9w/SPeExa6qezI/AAAAAAAAADg/yay7xfFDwYY/s1600-h/library.JPG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_UbKGXWsXt9w/SPeExa6qezI/AAAAAAAAADg/yay7xfFDwYY/s400/library.JPG" alt="" id="BLOGGER_PHOTO_ID_5257817074552175410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Don't forget to add the Library Files as well, this will let VC++ linking work properly for projects being built inside the studio IDE.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_UbKGXWsXt9w/SPeExidosRI/AAAAAAAAADo/EtHXlS3pXcw/s1600-h/source.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_UbKGXWsXt9w/SPeExidosRI/AAAAAAAAADo/EtHXlS3pXcw/s400/source.JPG" alt="" id="BLOGGER_PHOTO_ID_5257817076577906962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally configure the \src directory, this will make sure you have access to the actual functiono definitions your working with.  This is important for when you do things like right clicking on a function or object and selecting the 'browse to definition' option to review the actual implementation code.&lt;br /&gt;&lt;br /&gt;At this point if you try to build a project it may or may not work depending on how you attempt to build it.&lt;br /&gt;&lt;br /&gt;For a quick example, I created a completely empty C++ project using the 'New Project' command and simply selecting to make a empty project.  After that I dumped a little example code into it:&lt;br /&gt;&lt;br /&gt;This probably will not run if you try to run it right now.  This is because your missing one final piece of the puzzle that brings it all together (however at this point intellisense should work).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_UbKGXWsXt9w/SPeOUzeCzuI/AAAAAAAAADw/B40jOg0Mr0E/s1600-h/code.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_UbKGXWsXt9w/SPeOUzeCzuI/AAAAAAAAADw/B40jOg0Mr0E/s400/code.JPG" alt="" id="BLOGGER_PHOTO_ID_5257827578043092706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This last piece is to tell the project's linker you need the specific lib files in question.  The ones I'm going to list here is what I've been using for all my testing because it seems to cover the full gamut of things that are being used for the example programs.  You'll have to decide which ones are appropriate for your project on a project by project basis but these will get most if not all of the examples up and running.  Remember the below listing is my 'Cover All Bases / Quick and Dirty' approach for the examples, and shouldn't be used for anything more than getting you rolling, after which take out the ones you don't need so as not to bloat the linking on system.&lt;br /&gt;&lt;br /&gt;To modify the linker right click on your projects title and select "Properties".  This will open the Project properties page, at which point you need to navigate to "Configuration Properties -&gt; Linker -&gt; Input".  Once here you must modify the additional dependencies, which you can either do as a space separated list or my preferred way by opening the dialog box and editing them as line items.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_UbKGXWsXt9w/SPeRvcwsjiI/AAAAAAAAAEA/f9yehS5G2yI/s1600-h/project_linker.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_UbKGXWsXt9w/SPeRvcwsjiI/AAAAAAAAAEA/f9yehS5G2yI/s400/project_linker.JPG" alt="" id="BLOGGER_PHOTO_ID_5257831334338661922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My listings for the win32 (Debug) platform are as follows:&lt;br /&gt;opengl32.lib&lt;br /&gt;glu32.lib&lt;br /&gt;gdi32.lib&lt;br /&gt;user32.lib&lt;br /&gt;D:\Qt\4.4.3x86\lib\Qtmain.lib&lt;br /&gt;D:\Qt\4.4.3x86\lib\QtSvg4.lib&lt;br /&gt;D:\Qt\4.4.3x86\lib\QtOpenGL4.lib&lt;br /&gt;D:\Qt\4.4.3x86\lib\QtGui4.lib&lt;br /&gt;D:\Qt\4.4.3x86\lib\QtCore4.lib&lt;br /&gt;&lt;br /&gt;It is important to not you have a number of choices on how to populate these lists, including using separate lib files for each platform (recommended if you want it to work).  As well as separate libs for Debug and Release builds (or any other builds you care to use).  This allows a significant level of flexibility, but also introduces a rather large level of overhead in managing the lib connections.  If anyone knows a better way to do this, again PLEASE let me know I hate doing all this stuff in 12-step format.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;For people looking to toy with QT this is all you should need to do to get up and running.  You'll be able to build MSVC projects against QT and compile the example programs form their project files (these project files are generated by running the command 'qmake -tp vc -spec win32-msvc2008' in the root of the demo of interest (using the visual studio console).  And that's all you have to do.  It's a bit time consuming but it gets QT4 up and running happily native to MSVC.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;This of course has a few holes in it.  First QT4 like all versions of QT likes using it's own make system called qmake, so that you don't have to write multiple make files for each you wish to work on.  Also it doesn't allow you to design UI's inside the Visual Studio system, instead requiring you to use the QT Designer program to generate the .ui files.  These caveats aren't terribly huge problems until programs get larger or are building on many different systems.  I'm currently trying to locate a solid reliable way to generate make files either directly via Visual Studio, or from the Visual Studio project files so that I can build in Mac and Linux environments.  The 'makefile project' file give me some hope as you can even tell it to use the qmake command when building, but I've yet to track down how everything there is supposed to work.  Once I've solved that, it will be posted here as well.&lt;br /&gt;&lt;br /&gt;Update: If you use the 'QT' label to show all articles pertaining the QT programming, you will see a new '&lt;a href="http://blog.shadowgears.com/2009/05/making-qt-and-msvc-2k8-dance-part-2.html"&gt;Part 2&lt;/a&gt;' article.  This article discusses the VSaddin that allows you to more easily integrate QT and Visual Studio.  You will still need the above instructions for building against the MSVC compilers however.&lt;br /&gt;&lt;br /&gt;Update 2: Anyone that has tried to use these instructions for 4.5 or 4.6 will notice they do not work due to a compilation error.  I've written a new blog update that explains what to do located &lt;a href="http://blog.shadowgears.com/2009/12/updated-dancing-instructions-for-qt-and.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/version&gt;&lt;/version&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-39675356885823697?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/39675356885823697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=39675356885823697' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/39675356885823697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/39675356885823697'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/10/making-qt4-dance-with-msvc-2008.html' title='Making QT4 dance with MSVC 2008'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_UbKGXWsXt9w/SPeExTP4UrI/AAAAAAAAADY/ZGSOxVWCVwE/s72-c/include.JPG' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-3117847798367902953</id><published>2008-10-13T17:00:00.000-07:00</published><updated>2008-10-16T10:28:47.134-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='explanation'/><category scheme='http://www.blogger.com/atom/ns#' term='QT'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='WxWidgets'/><title type='text'>Adventures in Cross Platform Development</title><content type='html'>I've been trying to find a solid way to do cross platform development for a while (with the prerequisite of it being capable of fairly high performance).  With an interest in a single solid solution to the underlying framework.&lt;br /&gt;&lt;br /&gt;The high performance requirement eliminates a few options off the bat including the vast majority of scripting languages and Java.  Even the nicer scripting languages aren't going to give the performance of a bare metal system.&lt;br /&gt;&lt;br /&gt;Bare metal systems would be the ideal solution for the types of code I'd like to be able to run, but the idea of writing an encapsulation system / re implementing everything from threads on up in the C/C++ stack makes that a horrifying proposition at best.  Not to mention interfacing with each of the disparate screen drawing systems.&lt;br /&gt;&lt;br /&gt;That being said, I've got three 'real' options to work with at least one of which is kinda of a weird one.  Lets start with the oldest first.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.wxwidgets.org/"&gt;&lt;img style="cursor: pointer; width: 200px;" src="http://www.wxwidgets.org/logo9.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wx is a pretty solid system for a large variety of systems, unfortunately building it in Windows is not quite so trivial.  The most obvious path for building the system is to open the (ancient) visual studio project files and use 'batch build'.  This works (mostly) if you run it like 5 or 6 times, but that's not a terribly good way to go.  Pile on top of the the fact that there is no clear way to make wxWidgets work in a 64bit system and you have somewhat of a problem.  I had some remarkable success converting the 32bit apps to 64bit and the simply building them in visual studio.  However this generates a pile of 'size_t' to 'long' conversions that indicate a possible loss of data.  Not something I want to have to work with hanging over my head.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://trolltech.com/products"&gt;&lt;img style="cursor: pointer; width: 200px;" src="http://trolltech.com/logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;QT on the other hand has a significantly larger amount of polish than WxWidgets (at least with the release of QT4).  It also introduces some new features to the system that are nice to have, like a fully functioning signal system without the need for a secondary framework like sigC++.  However its open source version does not come with any form of useful interaction with visual studio and takes quite a bit of effort to get up and running as such.  That work is nowhere near as trying and frustrating as WxWidgets however, as while the documentation on it is sparse it's not nearly as bad as WxWidgets.  I've noticed a few pitfalls in the way it works on my development system (mostly connected to getting programs to link) that I'll be documenting in a separate post.&lt;br /&gt;&lt;br /&gt;These pitfalls aside, the latest versions of QT can be built anywhere.  You won't get an form of 'integration' with visual studio from a project generation perspective but compiling against the MSVC compiler and intelli-sense work just fine if the system is configured properly.  It will also happily compile x86 and x86-64 versions (they will both be huge).  A bridge to cross however is solving the visual studio development to unix build tool problem, and will require some further investigation.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.mono-project.com/Main_Page"&gt;&lt;img style="cursor: pointer; width: 200px;" src="http://mono-project.com/skins/Mono2/images/header-logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The last and most controversial is the 'Mono' project.  This system allows you to transport C# or VB 8 code from a Windows environment to a Unix / Mac environment.  It also provides a number of extensions to these languages for use in Unix (it's not clear whether these extensions can be used in Windows).  The goal of the system being two fold, first introducing write once run everywhere code and secondly lowering the barrier of entry for Windows programmers moving to the Unix/Mac world.  It also gives a consistent set of available functions (mostly due to it's own dependencies) that ensure you have a fairly robust minimum operating environment.  However I'm concerned about attempting to integrate something like the nvidia CUDA libraries into this system.  There's currently no first or third party integration with the original .NET framework, let alone the Mono modified environment.  This and a few other issues (some fairly pointed out by PeterB of Ars fame) make the enviroment not as attractive for me.&lt;br /&gt;&lt;br /&gt;Coupled with this is a general stigma in my work environment of anything seen to be supporting windows in any way shape or form.  I'd have to balance anything I wanted to do against the amount of fighting it would take to convince people to even install the latest and greatest invasion of the MS mentallity onto their systems.  On top of that the Novell / MS joint patent protection surrounding it would probobly deter a large number of people who are hard core FOSS users.&lt;br /&gt;&lt;br /&gt;That being said Mono appears to be gaining some rather signifigant moment and coupled with many of the technologies the .NET framework makes available should be a fantastic development environment for many domains.  That being said, I suspect for HPC code it's not going to turn out to be the most appropriate system use.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;Of the three, Mono appears to be the least painful way to write software cross platform software and it probobly has the most technical merits in the 'write once use everywhere' bin.  It would be interesting to see the Power Shell get ported to that system as well as it would give you a quick and dirty template to work on more indepth C# code with.  It also has the posibility of introducing IronPython and IronRuby support increasing the pool of available developers signifigantly.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;That being said, the local stygma and general controversies surrounding it make it unattractive in a University setting such as mine.  The truly practical runner up to that on an ease of use side is QT4 (as of this writing 4.4.3).  It has a few odd restrictions and the generally question of how do you use the build system hanging over it but overall it's a solid system.  It's been trial by fired on a number of occasions and actually forms the basis of the latest version of KDE(4.x), which is a pretty slick Linux Desktop environment.  Having wasted a good two days of my life trying to get 'something' to happen in WxWidgets only to find that they unsupported 64bit build seemed to behave better (or at least build more reliably) than the 32bit version has made me vote that that particular framework can go die in a fire.  Leaving me only with QT4 as a practical solution for the particular projects I'm looking to work on in the near future.&lt;br /&gt;&lt;br /&gt;Some of the reference articles that inspired this post:&lt;br /&gt;&lt;br /&gt;http://tom.paschenda.org/blog/?p=28&lt;br /&gt;&lt;br /&gt;http://www.telldus.se/qt/tutorial.pdf (sorry for the PDF link but it is helpful if your interested in QT)&lt;br /&gt;&lt;br /&gt;Had any luck developing anything cross platform, or random input, post a comment!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-3117847798367902953?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/3117847798367902953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=3117847798367902953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3117847798367902953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3117847798367902953'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/10/adventures-in-cross-platform.html' title='Adventures in Cross Platform Development'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-5054777226310595049</id><published>2008-09-26T08:58:00.000-07:00</published><updated>2008-10-20T08:07:09.443-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='movies'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Hulu'n Frustration</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.hulu.com/"&gt;&lt;img style="cursor: pointer; width: 314px; height: 136px;" src="http://static.hulu.com/images/logo.jpg?1222333449" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I started using Hulu more often recently as a way to catch up on a bunch of shows I don't' usually bother to DVR.  As my exposure to the service increases my disappointment in the content providers has been generally capable of keeping pace.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.hulu.com/bones"&gt;&lt;img style="cursor: pointer; width: 314px; height: 136px;" src="http://assets.hulu.com/shows/key_art_bones.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As much as I appreciate the ability to simply select a show, wait a few seconds and viola it's running the lack of coherent content isn't just confusing it's down right bizarre.  Many of the shows I would like to catch up on have smatterings of 'value added' content like interviews and bloopers with and very few actual episodes to watch.  When they do it's generally inconsistent &lt;a href="http://www.hulu.com/bones"&gt;Bones&lt;/a&gt; happens to have a smattering of episodes from last season and episodes 2 through 4 of the current season.  &lt;a href="http://www.hulu.com/burn-notice"&gt;Burn Notice&lt;/a&gt; on the other hand has all of season 1 and only 2 episodes from season 2 (and they aren't the last two).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.hulu.com/burn-notice"&gt;&lt;img style="cursor: pointer; width: 314px; height: 136px;" src="http://assets.hulu.com/shows/key_art_burn_notice.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This seems to have taken the whole point of digital distribution and sent it sailing up river without a map (or a paddle).  There are some exceptions to this however, for instance pretty much anything produced by the channel 'MOJO' is available in it's entirety to be viewed at any time.  This has helped me catch up greatly with the show '&lt;a href="http://www.hulu.com/three-sheets"&gt;Three Sheets&lt;/a&gt;' which I love.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.hulu.com/three-sheets"&gt;&lt;img style="cursor: pointer; width: 314px; height: 136px;" src="http://assets.hulu.com/shows/key_art_three_sheets.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Blue Pill:&lt;br /&gt;Hulu is a really solid platform that could make for enjoyable viewing on a computer monitor or smaller HDTV (via it's 480p video option).  The span of shows is fairly incredible, covering many of the most popular shows out there today.  It's also 'kid safe' in that no form of smut seems to have penetrated the service thus far (I'm not sure how advertising supported porn would go over...).  All in all it's a solid free service for consumers with fairly limited commercial interruptions (for now).&lt;br /&gt;&lt;br /&gt;Red Pill:&lt;br /&gt;Hulu's problems sadly aren't Hulu's fault, which is good for the company but means they probably won't be fixed anytime soon.  Major content distributors are clearly still trying to feel out how best to present their media on the site and it's going to take some time for them to get used to and comfortable with the new technology.  When they do the system will be far more compelling for people looking for a cheep way to watch some decent TV shows.  If the resolution were bumped up a slight bit more and the audio capacity expanded to be a little deeper it would make a great target for media center PC's connected to a home TV.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-5054777226310595049?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/5054777226310595049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=5054777226310595049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/5054777226310595049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/5054777226310595049'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/09/hulu-and-frustration.html' title='Hulu&apos;n Frustration'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-4981263549477997533</id><published>2008-09-25T01:30:00.000-07:00</published><updated>2008-09-25T01:30:00.645-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DRM'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>EA changes spore DRM, misses point entirely</title><content type='html'>Anybody interested in gaming that hasn't spent the last two weeks (give or take) under a rock will by now be familiar with the fact that the game Spore has come out.  And if you've been reading gaming news sites your probably also aware that 1) it's nowhere near as fun as it was supposed to be and 2) the DRM on the game is insanely restrictive.&lt;br /&gt;&lt;br /&gt;EA has now seen fit to loosen the DRM configuration it originally put in place.  Originally you were allowed 3 re-activations of the software on 3 separate computers after which the game went into the aether unless you called tech support at EA and could talk them into giving you a new CD-Key. This has now been expanded to a total of 5 activations on 5 separate computers, with the added guarantee that if the servers ever go off line a patch will be released.  Feel patronized yet?  Well at least they let you deauthorize computers you don't plan to use anymore, assuming your computer gave you that option.  If your like me you probobly didn't have tha option because the compter just self destructed.&lt;br /&gt;&lt;br /&gt;I will grant, 5 activations will allow but the most destructive users to continue gaming for the conceivable future.  However I (like many) still have misgivings about the very idea of being required to have Secu-ROM on my computer.  The company doesn't have a reputation for reliable behavior and makes a business out of crippling computers and telling you how you can and can't use the computer at a given point in time.  This isn't terribly surprising since that's pretty much what they advertise, it's basically the point.  The whole idea is to prevent you from running virtual disk drives while the Secu-ROM protected software is running as well as interferring with the ability of other software to run with it (trainers, no-CD hacks and the like).  The problem is when it bleeds out to the rest of the system, which happens more often then I'd like.&lt;br /&gt;&lt;br /&gt;Blue Pill:&lt;br /&gt;As I've said before, for many people the DRM will never be a problem.  This is made further true by the fact that EA doesn't make games you want to come back and play again in 6 years, by then they've replaced it with the program it should have been when it came out initially.  Then they've usually gone and gutted the whole concept and beaten the IP to death with it's own innards.  So in reality this probobly won't be as much of a problem as people are making it out to be since in a few years we will all look back, realize the game has been butchered and it's just not worth thinking about it.&lt;br /&gt;&lt;br /&gt;Red Pill:&lt;br /&gt;For the rest of us this a generally principaled arguement.  We'd rather not have to dig thru the individual game sites for Secu-Rom unistall utilities or how-to guides online once we've unistalled a peice of software from the system (Secu-ROM doesn't go out the door with spore if you uninstall spore for example).  It's a pretty straight forward complaint, people don't want to be told how or what they can run on their computer or when they can do it.  People also like owning their software, consumers unlike businesses aren't particularly thrilled with the idea of 'Software as a Service'.  My take is that they shouldn't be either, businesses pay crazy amounts of money to solve very specific problems with SaS solutions, consumers on the other hand are using up disposible income on something and don't like being told what to do with it once it's in their hands.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-4981263549477997533?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/4981263549477997533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=4981263549477997533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/4981263549477997533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/4981263549477997533'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/09/ea-changes-spore-drm-misses-point.html' title='EA changes spore DRM, misses point entirely'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8214451526339886610</id><published>2008-09-02T22:30:00.000-07:00</published><updated>2008-09-02T22:30:00.536-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>The Illusion of high speed broad-band</title><content type='html'>I thought I'd take today to address an Illusion about getting what you pay for.  Specifically getting what you pay for (or not as it were).&lt;br /&gt;&lt;br /&gt;For people who have been sitting in a dark room staring at a wall, the news that Comcast (among other providers, but Comcast most of all) has been throttling certain types of networking traffic to make sure it doesn't disrupt their other users.  In an ideal world they wouldn't need to do this, we pay for 2, 3 or 4 MBps and we are guaranteed individual access at that rate.  In reality, we pay for a claimed speed, but in the fine print it's clear this speed while possible is highly unlikely. &lt;br /&gt;&lt;br /&gt;In even newer news (ho ho ho!) Comcast has also announced that it will limit users to 250 GB which you would think would be unnecessary considering you are getting a very specific allotment of speed.&lt;br /&gt;&lt;br /&gt;ie. If I receive 4 Mbps (I theory I do...) I should hit a hard cap at around 1300 GB (or 1.3 TB) meaning if I run my fairly low speed connection for a week straight at full tilt I should hit that 250 GB cap.  Decidedly not what I'm paying for.&lt;br /&gt;&lt;br /&gt;And this strikes at the heart of the problem.  Getting what you pay for isn't what it used to be.  At least when you were using a phone modem the difference in speed between 14.4 kbps and 53.3 kbps (the actual maximum) is so minimal that nobody really noticed.  It has been proposed to reverse the way that bandwidth is advertised so that we at least have a clue what we are paying for.  For example if we were to advertise a connection that hits the mark of the 250 GB cap in Mbps (mega bits per second) it would be advertised at 746 kbps, not too shabby... for 1998.  And this really gets to the other portion of the problem, over advertising.  The reason a bandwidth cap has been implemented is that people who have been told 'you have a pipe X big' are attempting to actually use it, not something ISP's expected.  This creates problems for other users because that 4,6,8,16 Mbps connection is infact shared with all of your neighbors in a geographic area.  So if they decide to use most or all of the connection guess what you get? zilch. &lt;br /&gt;&lt;br /&gt;An alternative would be to admit that they massively over sold their systems and scale back to saying user Y gets X speed per second, guaranteed.  This approach however would require signifigant consumer backing as well as judicial backing as the advertised numbers would be much lower discouraging ISP's from advertising the numbers and a tough pill to swallow for consumers used to thinking they are getting what they are paying for.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;If it makes you feel any better you'll probobly never get to the 250 GB maximum but that's because your connection to the internet is terrible.  Well it is if it's anything like mine, which having used Comcast in three seperate locations is fairly typical of the last two, I get huge bursts of speed around 3 am (yes I'm still up sometimes...) and I run at anywhere between 756 Kbps and 2 Mbps the rest of the time.  This isn't all the surprising and is reported to be quite normal with people at http://comcastmustdie.com/ (yes comcast is so hated they've managed to spawn a blog lauding their death).&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;The problem is the economics of the whole thing, it would be advertising suicide for Comcast to admit that even their best connections give you the maximum transfer rate of 746 Kbps before they hit the ceiling regardless of the fact that you can now purchase a 16 Mbps internet connection.  This is because competing services are advertising up to and over 20 Mbps, indicating that Comcast will be incapable of even keeping up with their lower speeds for much longer.  This should not assume however that they are performing any different of a slieight of hand with their speeds, just that their maximum speed is much much higher.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8214451526339886610?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8214451526339886610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8214451526339886610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8214451526339886610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8214451526339886610'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/09/illusion-of-high-speed-broad-band.html' title='The Illusion of high speed broad-band'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8680243962710021887</id><published>2008-08-29T07:00:00.000-07:00</published><updated>2010-12-06T08:28:11.936-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='wikileaks'/><title type='text'>Wikileaks eyes becoming 'The Shadow Broker'</title><content type='html'>For those who have had the pleasure of playing Mass Effect the above reference won't be lost on you.  For those of you starved of such an experience the Shadow Broker is a game character regarded as politically annoying but at the same time incredibly useful (at least enough so not to start an interstellar man hunt when you can just pay him for dirt on your enemies).  Things are a bit different here as we can very easily look up who works for Wikileaks and you don't even know if the Shadow Broker from the game is one person or hundreds.  Those differences aside their goal seems to have fallen relatively in line with one another.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://images.wikia.com/masseffect/images//f/fd/Barla_Von.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px;" src="http://images.wikia.com/masseffect/images//f/fd/Barla_Von.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://masseffect.wikia.com/wiki/Barla_Von"&gt;Barla Von, Agent of the Shadow Broker.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For those not familure with http://wikileaks.org/ it's a site where people can post well... 'leaks'.  These could be anything from secret government documents (the currently contentious items) to documents showing a &lt;a href="http://arstechnica.com/news.ars/post/20080303-wikileaks-restraining-order-a-failure-judge-says.html"&gt;chain of corruption in a prominent Swiss bank's Cayman Islands branch&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Basically, Wikileaks has decided the auction off 'first rights' to a pile of emails from Hugo Chavez's aide.  This is not to say they won't be published on the site, they would just like someone to read them first and actually do something with them.  The logic being, if someone is willing to pay for it they are going to invest the time to actually write a story about the emails.&lt;br /&gt;&lt;br /&gt;Critics of this approach however observe that most of our 'venerable' news stations have a strict policy of not paying informants.  This is done in the fear that paying them will encourage them to game the system by making things up, not an entirely crazy way of thinking.  This of course isn't the case in the tabloid world but I can't imagine that's the target audience of this particular auction as it would hardly prove a net gain for wikileaks on the credibility end.&lt;br /&gt;&lt;br /&gt;One area that peoples seem to have ignored entirely is the possible interest groups like say... the NSA would have in such information.  I mean come on, how could use an an intellegence opperative not want access to the email of the Presidents Aide in a hostile foreign country?&lt;br /&gt;&lt;br /&gt;Source articles:&lt;br /&gt;&lt;a href="http://blog.wired.com/27bstroke6/2008/08/wikileaks-aucti.html"&gt;http://blog.wired.com/27bstroke6/2008/08/wikileaks-aucti.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://arstechnica.com/news.ars/post/20080828-wikileaks-to-auction-hugo-chavez-aides-e-mail-trove.html"&gt;http://arstechnica.com/news.ars/post/20080828-wikileaks-to-auction-hugo-chavez-aides-e-mail-trove.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://arstechnica.com/news.ars/post/20080303-wikileaks-restraining-order-a-failure-judge-says.html"&gt;http://arstechnica.com/news.ars/post/20080303-wikileaks-restraining-order-a-failure-judge-says.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://arstechnica.com/news.ars/post/20080514-mormons-scientologists-face-uphill-battle-against-wikileaks.html"&gt;http://arstechnica.com/news.ars/post/20080514-mormons-scientologists-face-uphill-battle-against-wikileaks.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;Anyone afraid that their company or personal secrets may wind up on wikileaks shouldn't be too terribly concerned as in all likelyness it's not going to be around for much longer.  They've already admitted that this is an experiment to help fix their ailing funds (and hopefully their fairly terrible servers which have been down for the entirety of writing this post).  The fact that they are even considering this (especially considering the fact that the comments on the above sections seem to reflect an opinion that this is a betrayal of the sites basic principals) indicates that this type of experiment is an attempt to stay afloat instead of getting a functional economic model up and running. &lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;Despite it's criticisms and the fact that it hasn't broken any particularly ground breaking revelations so far it provides an alternative way of approaching information that's invaluable to experimenting with the new medium the internet has presented to us.  However it shouldn't be preserved just for being novel so the most certainly need to find a workable business model if they wish to continue on the way they have been going.  Turning into an information broker may not be the best way to engeander the trust and faith of the general public, however useful a service it would be to world governments and news organizations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8680243962710021887?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8680243962710021887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8680243962710021887' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8680243962710021887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8680243962710021887'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/08/wikileaks-eyes-becoming-shadow-broker.html' title='Wikileaks eyes becoming &apos;The Shadow Broker&apos;'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-7098643955170583572</id><published>2008-08-22T13:00:00.000-07:00</published><updated>2008-08-22T13:37:54.713-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='space'/><title type='text'>Cool Robots of the... now.</title><content type='html'>Recently I wound up watching the 'Science of Star Wars' show on HD theater.  This particular program showcased robotics, some of which I thought I'd share because they are awesome ( cool enough to stimulate anybodies 'me want' response).  It was also presented in a much more glib manner than the episode of Eureka I just watched, which was lets face it, just depressing.  I mean come on, killing Stark on his wedding day? wtf.&lt;br /&gt;&lt;br /&gt;But onto the awesome.&lt;br /&gt;&lt;br /&gt;First, lets go with the robotic Boba Fett.  Well that's what he looks like anyway.  It's a new robot being designed for the international space station and NASA know as Robonaut.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cache.gizmodo.com/archives/images/robonaut.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://cache.gizmodo.com/archives/images/robonaut.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mojoart.mixnmojo.com/original-art/galaxies/wallpapers/galaxies_bobafett_1024x768.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: right; cursor: pointer; width: 320px;" src="http://mojoart.mixnmojo.com/original-art/galaxies/wallpapers/galaxies_bobafett_1024x768.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See?&lt;br /&gt;&lt;br /&gt;Anyway, this handy machine is being designed as a robotic extension for setting up work areas and doing emergency repairs that's forever present on the outside of the space station.  The reasoning being this thing can be booted up and ready to use in a matter of minutes where as a dude in a space suit is stuck inside for a few hours getting prepped.  He's basically a human upper torso linked to a tele-presence rig similar to what a doctor would use to perform remote surgery.  The demonstrations thus far have indicated it will be able to retrieve tools to setup remote work areas indicating it will have some way to traverse the exterior of the station.  One could also surmise from the extensive number of pictures of it mounted on what looks like a mars rover that it could land a job as general / emergency assistant on future Moon and Mars missions.  In these environments a wheeled base would be far more useful than having it mounted inside a box, allowing for local and remote field assistance.&lt;br /&gt;&lt;br /&gt;The second one I'd like to talk about is the Personal Satellite Assistant.  Or personal orbiting death star.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ti.arc.nasa.gov/projects/psa/psadesription.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 250px;" src="http://ti.arc.nasa.gov/projects/psa/psadesription.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://nirahlee.com/iswwr/evidence/DeathStar1.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 250px;" src="http://nirahlee.com/iswwr/evidence/DeathStar1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Or my new favorite:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blogs.techrepublic.com.com/geekend/images/Deathstar.jpg"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://blogs.techrepublic.com.com/geekend/images/Deathstar.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Found At: http://blogs.techrepublic.com.com/geekend/?p=590&lt;br /&gt;Yes, that is in fact a steam punk death star.&lt;br /&gt;&lt;br /&gt;This little orbiting sphere of doom, is actually meant to be a helpful tool for astronauts inside the ship and includes equipment to let it be propelled around the cabin.  It's totally reliant on the micro gravity conditions present in space and is similar in concept to the Gilliam bots from the anime 'Outlaw Star' (pictured below).  It's being designed as a remote monitor slave device as that NASA central command can take over (for instance to monitor a situation directly) as well as to full fill assistant rolls for the astronauts it will serve along side.  Some of the stated goal behaviors is to be able to ask it to retrieve temperature readings from devices in other segments of the ship and return them to it's associated astronaut.  Thou one wonders why that isn't already available on a wireless pda the astronaut can just look at.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.projectbag.com/outlaw_star/pics/gilliam02.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px;" src="http://www.projectbag.com/outlaw_star/pics/gilliam02.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;While the Robonaut may look almost human there's no worry that it will ever rise up against it's human oppressors.  The device lacks even a rudimentary intelligence so far as I've seen indicated and appears to have been exclusively designed for use with tele-presence technology instead of automated emergency handling.  The PSA on the other hand appears to be designed from the ground up to have some form of intelligent automation systems built into it.  However the fact that it needs a zero-G environment to operate, and it's relatively small size relegates this device to the realm of giving astronauts a headache when it bumps into them at even it's highest speeds.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;These robotics coupled with the giant grappler style arm built by the Canadian Space Agency installed a few years ago rounds out a solid compliment of scientific, service and emergency tasks to keep the International Space Station on the forefront of a number of robotics endeavors.  What's more these new tools being added to the space station push forward a number of other fields we can expect to see blossoming in the coming years.  Including (but not just these) the realm of actual functional digital assistants both robotic and virtual, human computer interaction and interfacing, virtual reality and tele-presence abilities and techniques.  I don't see the personal Satellite Assistants replacing astronauts entirely but it will let NASA and other international space agencies put more 'feet' in space (virtually at least) and give them a very 'Descent' style virtual eye into the environment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-7098643955170583572?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/7098643955170583572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=7098643955170583572' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7098643955170583572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7098643955170583572'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/08/cool-robots-of-now.html' title='Cool Robots of the... now.'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-1591718214079048937</id><published>2008-08-13T09:24:00.000-07:00</published><updated>2008-08-13T14:18:53.615-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><category scheme='http://www.blogger.com/atom/ns#' term='xbox'/><title type='text'>The Lost Feature Set: Local Multiplayer and Local Co-Op</title><content type='html'>I've been browsing new (and older) games to purchase for the 360 recently and I've stumbled on a trend that bothers me on a number of levels.  A large number of Xbox titles are eschewing local multi-player for reasons unexplained.  You'd this the advent of HDTV's and the massive amount of screen space that comes with them would allow for more local multi-player not less but that doesn't seem to be the case.&lt;br /&gt;&lt;br /&gt;Some examples:&lt;br /&gt;&lt;br /&gt;Too Human, it comes out in a week or so.  It's will feature Single-Player, Online Co-Op and Online Multiplayer.&lt;br /&gt;&lt;br /&gt;Sid Meir's Civilization Revolution, this came out in June, while local multi-player would have been awkward or impractical this game is begging for a local co-op game utilizing the alliance system to establish a permanent alliance between the two players.  Alternatively hot seat style play has been done in vs. games before and worked or they could have implemented a simultaneous turn so players are occupied performing tasks for their own civilization and will be distracted from the work their enemy is doing.&lt;br /&gt;&lt;br /&gt;Lost Planet, ok this is an oldie but the point is still valid.  The multi-player component is built out but relies entirely on the internet, despite the fact that it could be just as easily played Golden Eye style with four players on the same screen (and possibly some bots?)&lt;br /&gt;&lt;br /&gt;Chromehounds, why didn't this have a local co-op or vs. mode?  It had a neet looking world multiplayer but nothing you could do locally other than the horrid 'campaign' mode.&lt;br /&gt;&lt;br /&gt;Mass Effect, first may I say, this game is amasing.  Second, why the hell didn't this game have a jump in jump out co-op mode?  I don't care if the co-op mode is similar to playing Tails in the old Sonic and Tails game, it would have been more than worth the effort to add the feature.&lt;br /&gt;&lt;br /&gt;Ok, fine, that last one is a pipe dream.  And these probably aren't the greatest examples but that doesn't remove the perception that the gaming industry is trying to get us to all buy these things sit at home and talk to each other thru headsets instead of actually getting to hang out with your friends and play games with them.  It's feels like a grand deviation from when video games were something you could do with your friend or friends, and I'm not talking about party games.  Rockband, Guitar Hero and Boom Blox aren't the targets of this article, instead the old style co-op games, Mario Bros, Sonic and Tales, Double Dragon and the Ninja Turtles games come to mind.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;As the gaming community ages the advent of online co-op and multi-player is a must, you can't very well justify going to your friends house for 8 hours of gaming once you hit 26+.  At least not without a lot of effort to justify it to the significant other, your sub conscious and your ToDo list.  This being the case, being able to wrack up and hour or two of online play at night is a convenient solution and one that works relatively well barring connection blackouts and scheduled server downtime.  All things considered even if you have to pay to play online the fees are reasonable and many have no fees at all.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;Just because the average age of a gamer is going up, that doesn't mean we don't still have ridiculous numbers of college students playing video games that wouldn't mind being able to use 2 of those fancy remotes they've bought at the same time.  Especially considering most of the systems support 4 or more controllers.  The extra remotes used to be a tool used to draw in a new angle on the way the game is played but now that extra angle is relying totally on the internet, a trend that probably isn't an accident.  To play games on the internet both players have to own their own copy of the game, increasing revenue for the game publisher ;in the case of the 360 you need to pay for online pay access which certainly isn't hurting Microsoft's pocketbook.&lt;br /&gt;&lt;br /&gt;Another thing this throws a wrench into a sharing a system, if the game supports local multi-player siblings can share a single system and TV which is cheaper on the parents.  However with online only multi-player the family now has to field and extra machine, game and TV for each player that would like to play.&lt;br /&gt;&lt;br /&gt;ps. yes I broke the one paragraph / pill thing but I'm not well versed enough in the grammar laws to make that all look correct as a single paragraph.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-1591718214079048937?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/1591718214079048937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=1591718214079048937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/1591718214079048937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/1591718214079048937'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/08/lost-feature-set-local-multiplayer-and.html' title='The Lost Feature Set: Local Multiplayer and Local Co-Op'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-676419168582109436</id><published>2008-08-11T20:37:00.000-07:00</published><updated>2008-08-11T22:04:34.746-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='Seperation of Church and State'/><category scheme='http://www.blogger.com/atom/ns#' term='Freedom'/><title type='text'>A Gift for Oppression</title><content type='html'>This is targeted at the gifted writer Orson Scott Card, and this &lt;a href="http://www.boxturtlebulletin.com/2008/08/01/2478"&gt;little diddy&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;First, let me get this out of the way, Enders Game is a Fantastic book.&lt;br /&gt;&lt;br /&gt;That being said, sadly his gift for writing stories involving oppression seems to have bled into his philosophy on life.  He is actually arguing that we should start a revolution to stop the marriage of gay people.  I'm not gay, but I have a thing for anti-oppression, it runs part and parcel with being an atheist.  The idea that someone else can tell you how to think is a horrifying idea, and legislating it is a good way to cause nothing but infighting.  The might of a government is it's ability to give everyone a voice, telling people they aren't people because of who they sleep with isn't a far stretch from telling people that have no faith in someone's god makes them less human.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;Luckily O.S.C.'s status as a sci-fi writer is happily marginalized by a majority of the public.  His way of thinking is likely to go just about the same way.  This should be considered good by most of us (even me, thou I really do like his books).&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;Propositions like this are horribly dangerous, calling the public to violence over who marries who is patently upsurd.  It's the modern day equivalent of calling for inquisitions and witch hunts because you don't agree with a small group.  What's more it's no more than a transparent attempt to marginalize a group smaller than yourself in an attempt to garner a political edge.  The worst part of this proposition is that it plays into reconstructionist dogma, a group even O.S.C. would probably think twice about jumping into bed with (&lt;a href="http://atheism.about.com/b/2003/11/06/christian-reconstructionist-agenda-roy-moore.htm"&gt;some quick background information on the movement&lt;/a&gt;), and one that would do some fantastic damage to this country and planet given the opportunity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-676419168582109436?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/676419168582109436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=676419168582109436' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/676419168582109436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/676419168582109436'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/08/gift-for-oppresion.html' title='A Gift for Oppression'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-7980184121272116713</id><published>2008-08-07T01:15:00.000-07:00</published><updated>2008-08-07T01:15:13.372-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='explanation'/><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Wiring Design Rules of Engagement</title><content type='html'>First to set the tone.&lt;br /&gt;Bad:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2353/2219131561_31feee1745.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px;" src="http://farm3.static.flickr.com/2353/2219131561_31feee1745.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.vibrant.com/images/cables/lopsa/do-not-touch.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px;" src="http://www.vibrant.com/images/cables/lopsa/do-not-touch.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Good:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i.techrepublic.com.com/gallery/6149-336-448.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px;" src="http://i.techrepublic.com.com/gallery/6149-336-448.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These are just a few of the networking images floating around on the internet at the moment.  As you can see there is a stark difference between both the types of bad (arguably most situations aren't as bad as those above) and the good example I have provided.  However getting from the bad images to the good image isn't as hard as you might imagine it is if you do it right.  There's a price to doing it right thou, and that's down time.&lt;br /&gt;&lt;br /&gt;There's some rules to follow to get it all right the first time and keep it manageable for those times when you do have to change something (thou the idea here really is that you don't change the wires once they are installed).&lt;br /&gt;&lt;br /&gt;For those not starting from scratch(ie preforming a redo), you should probably start here.  Everyone else should probobly start at step 5.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Identify all the devices you need to connect&lt;/li&gt;&lt;li&gt;Map out exactly how each device has to be connected&lt;/li&gt;&lt;li&gt;After you've identified how things are to be connected, figure out a layout for the devices that is physically appropriate for the tasks at hand.  This layout should also consider the minimization of the overall distances of wires between devices.  This will do a few things for you, including saving money, simplifying the actual wiring and making wire traces much simpler.  For the green hearts, shorter wires will also mean lower overall environmental impact.&lt;/li&gt;&lt;li&gt;Repeat steps 1-3.  I'm not kidding.&lt;/li&gt;&lt;li&gt;Calculate the required distances to wire your devices together based on how you would like to organize your cables.  If you look at the good example above, some of the devices could be wired up with a 3 inch wire, however due to the way they've elected to organize a 3 or 4 foot cable was required.  This isn't necessarily bad since it helps with handling clutter and the overall flow.  Remember to give yourself a little wiggle room so that you can handle unforeseen events, using standardized lengths will make ordering the cables much easier (custom lengths are really expensive compared to mass manufactured cables).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Visit a site that sells wiring and order everything on the list above.  I recommend &lt;a href="http://www.monoprice.com/home/index.asp"&gt;Monoprice&lt;/a&gt;.  They've treated me well each time I've ordered from them, and beating their prices is pretty hard especially as the number of wires you have to order grows in magnitude.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;(This is of course only applicable for people who have wires to actually remove)Remove the wires and place them in bins based on function (remember that 'down-time' issue I mentioned earlier?).  Recycle and re purpose these wires (unless your pulling something like... infiniban, at which point just cry yourself to sleep because whoever designed the setup initially screwed you).&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Ok, so how do you get all this stuff you have wired up in a way that's pleasing to the eye, flows well and keeps you sane?&lt;br /&gt;&lt;br /&gt;You use cable organization tools and layering.&lt;br /&gt;&lt;br /&gt;First lets discuss layering.  This is more important if your doing a rack installation that say... trimming up the setup on your desk.  However it can still be useful especially if your building a tech station for fixing computers.&lt;br /&gt;&lt;br /&gt;Layering is basically taking the cables most likely to change or fail and placing a higher order value on them.  Basically if a cable is more likely to change, either due to failure or upgrades it should be put in latter in the wiring layout.  I generally use the following order as a rule of thumb based on my own experiences, if yours differ use those instead.  Note: the list is order from least likely to break to most likely to break (as that's the priority I use).&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Power Cables&lt;/li&gt;&lt;li&gt;Firewire Cables (does anyone even use these things anymore?)&lt;/li&gt;&lt;li&gt;Audio Cables (including speaker wires)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;USB Cables (a trick here is to use a USB hub that sits closer to your devices so only a single wire has to be run to the back of your system) and other keyboard / mouse cables.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Monitor Cables&lt;/li&gt;&lt;li&gt;Network Cables (these buggers break constantly...)&lt;/li&gt;&lt;/ol&gt;Again, that's my priority order, and it's probably missing wires used for a variety of specific tasks (cables used if you say, are setting up a an audio processing console).  I could have included a 'misc' listing but that would be misleading since I don't actually have a priority for those cable types.  It's also important to note that some of these categories can be broken into sub categories, for instance networking cables could be split into 'trunk' and 'node' cabling, which would make a huge difference in how your wire up your system (if you make the assumption that trunk cables are more reliable or need to be shorter runs for instance).&lt;br /&gt;&lt;br /&gt;Cable organization tools:&lt;br /&gt;For those with an unlimited budget you may want to just take a quick tour of http://cableorganizer.com/ as they will have everything you could ever possibly need but your going to pay a premium for it.&lt;br /&gt;&lt;br /&gt;For the rest of us, I recommend heading to Lowes to pick up some of these &lt;a href="http://www.lowes.com/lowes/lkn?action=productDetail&amp;amp;productId=172729-388-93924FDL&amp;amp;lpage=none"&gt;velcro ties&lt;/a&gt;, among other things that will make your life significantly easier for about 1/100th the price.&lt;br /&gt;&lt;br /&gt;Depending on what your actually constructing or wiring up there's a few other things you might want to consider picking up that can be found in the electrical section of the store.  These include wire channels, plastic tubing, double sided foam tape based wire mounts and zip ties.&lt;br /&gt;&lt;br /&gt;Now then, the actual rewiring (or wiring) of your devices from this point forward is a bit task specific.  If you've got a rack like the one pictured above, you'll have rails you can use to attach those handy velcro ties to then great, if you don't those double sided foam tape mounting strips will come in handy (assuming you feel like gluing things to the surface of whatever it is your using).  To turn the foam tape pieces into handy tie off locations place them on the point you'd like to install a tie wrap at and use the included zip tie equal to the direction the wires should travel.  After that wrap one of the velcro ties thru this zip tie and viola you've got a velcro mounting point that can hold a few lbs before you have to worry about it.  After that, it's a simple matter of actually doing the wiring.  I recommend following the priority list above as much as possible, finish up a step.  Clean it up and make sure it's as good and clean as you can make it then move onto the next one, all excess wire should be bundled up near but not actually at one of the two ends of the wire.  Make sure the loops are long enough to actually occupy the cable your working with and don't hesitate to use plenty of velcro straps to keep things the way you want them (it's $4.79 for 50, you can afford to go a little overboard).  Don't forget to leave a little give even in systems that don't move.  In systems that do move, give alot of give, you may want the items coming into the back of the system to have up to 3 ft of give just to make it easier to work on in the future, but this does lead to the usage of more cable length and a bit more clutter that you'll have to deal with somehow.&lt;br /&gt;&lt;br /&gt;With a little practice you can get a method down pat making the process painless in the future.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;These are just guidelines, and anal retentive ones at that.  For most projects simply making sure you occupy the slack in your cables and making sure all your cables reach where they are supposed to go will suffice to make it look neat.  This goes for most home DIY types as well as most office neat freaks.  So for you, take as little or as much as you'd like away from this as it's probobly overkill for what you want to do.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;These are by no means a comprehensive guideline that you could base say... a wiring spec around, but they will get the job done for anyone that doesn't have say... 1" constraints or less placed upon them (I wouldn't build a space shuttle on these tips for instance).  That being said there's a few things people who wish to take it up a notch can do to improve this.  First pick up a label maker that can print cable labels.  Then determine a coding system so you can always tell which cable is which based on the information from affore mentioned cable maker.  I recommend a coding system that indicates the cables ID number and a few characters indicating it's end point types, this will let you build a thurough map of all the cables in your system for diagramming, change tracking and system additions.&lt;br /&gt;&lt;br /&gt;Got any suggestions or comments, leave it at the bottom.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-7980184121272116713?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/7980184121272116713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=7980184121272116713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7980184121272116713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7980184121272116713'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/08/wiring-design-rules-of-engagement.html' title='Wiring Design Rules of Engagement'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2353/2219131561_31feee1745_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-3799232647969187775</id><published>2008-07-22T13:43:00.000-07:00</published><updated>2008-07-22T13:50:06.242-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='doodles'/><category scheme='http://www.blogger.com/atom/ns#' term='boredom'/><title type='text'>Doodles: evil monitor man and sword weilding apple thing...</title><content type='html'>So I had some time at work recently to do some doodles (ie I was in meetings that did not require my full undivided attention).  The first one is the result of a sit down talk with a rising star storage group.  The second one's influence should be obvious, if only for the fact that I sourced the basic shape of their business cards.&lt;br /&gt;&lt;br /&gt;note: this post will entirely violate the red/blue rule, how on earth can you red blue a couple doodles?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i129.photobucket.com/albums/p215/wildcarde2/demonmonitor.jpg"&gt;&lt;img style="cursor: pointer; width: 400px;" src="http://i129.photobucket.com/albums/p215/wildcarde2/demonmonitor.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i129.photobucket.com/albums/p215/wildcarde2/appleman.jpg"&gt;&lt;img style="cursor: pointer; width: 400px;" src="http://i129.photobucket.com/albums/p215/wildcarde2/appleman.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Both are done in my big black sketchbook (you know, one of those ones I don't bother to organize...) using a single pen for the sketch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-3799232647969187775?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/3799232647969187775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=3799232647969187775' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3799232647969187775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3799232647969187775'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/07/doodles-evil-monitor-man-and-sword.html' title='Doodles: evil monitor man and sword weilding apple thing...'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-6285726612828492242</id><published>2008-07-21T20:41:00.001-07:00</published><updated>2008-07-21T20:58:55.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DRM'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>Follow up: Mass Effect DRM evilness</title><content type='html'>I thought I'd write a quick follow-up to my last DRM post based on a new scuffle in the ring.&lt;br /&gt;Source: &lt;a href="http://arstechnica.com/news.ars/post/20080720-ubisoft-drm-snafu-reminds-us-whats-wrong-with-pc-gaming.html"&gt;Another wonderful Arstechnica article&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The jist of the article is that Ubisoft screwed up big time when patching Rainbow Six Vegas 2 recently, breaking the game for anyone who had decided to do a direct to disk download (or similar solution).  The new patch reinstated the CD-Check requirement, which was of course impossible since they had downloaded the game, albeit from a legitimate channel.  Their solution was to post a 'third party bypass' (you know... software from those evil people that steal their games?) as it were, without bothering to tell people it wasn't even written by them.&lt;br /&gt;&lt;br /&gt;Needless to say this caused a huge snafu all around with people angry on all sides (unless you were on the outside laughing like me).  Some were angry they had to crack their game, some were angry their crack was stolen by a company.  Others were angry the issue ever came up to begin with (this is where I would have sat had I not been on the outside looking in).&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;   Sadly, there isn't one.  There's no laymans, put your head in the sand answer this time around.  This issue affects every gamer that plays the game, even if you bought the cd/dvd version of the game.  Because now most of your opponents can't login to the game, and if they can who's to say Punkbuster or a similar technology won't punt them back out when they go online?  Pretty much this is a total mess, and it's doubtful a proper resolution can be brought to bare before the death of the community kills the games replay value entirely.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;   Ubisoft screwed up, not once but twice.  First by botching their patch and breaking their game because of DRM but also by stealing the hard work of a cracker and claiming it as their own.  It's somewhat surprising the first half hasn't happened more often than this really but I guess that's something to be more grateful about than anything else.  Hopefully this incident will resonate in the minds of people deciding how to protect their titles in the future but it's not something I'll hold my breath for.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-6285726612828492242?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/6285726612828492242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=6285726612828492242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/6285726612828492242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/6285726612828492242'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/07/follow-up-mass-effect-drm-evilness.html' title='Follow up: Mass Effect DRM evilness'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-5161760187139250853</id><published>2008-07-15T07:07:00.000-07:00</published><updated>2011-01-25T11:21:50.306-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='notebooks'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Engineering Notebook Rules of Engagement</title><content type='html'>So a few days ago my Makers Notebook showed up.&lt;br /&gt;&lt;br /&gt;Displayed here:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.makezine.com/upload/2008/05/notebookwsticks.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://blog.makezine.com/upload/2008/05/notebookwsticks.JPG" alt="" border="0" /&gt;&lt;/a&gt;All in all as for the design of the notebook, it's fantastic.  While some of the information in the back of the book may seem obtuse or just silly it's all there in either good fun or because it really is important.  In fact it pretty much fills the requirements of what I'd want in an engineering notebook to a T with a few nice little extras (sticker swag anyone?)&lt;br /&gt;&lt;br /&gt;So first a list of things I look for in a note book.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hard bound book with impossible to remove pages&lt;/li&gt;&lt;li&gt;Grid paper&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Isaac Asimov's three laws of robot behavior (ok... I admit that ones new)&lt;/li&gt;&lt;li&gt;A place marker&lt;/li&gt;&lt;li&gt;Relatively portable size (I'm looking at you, giant ass staples engineering notebooks...)&lt;/li&gt;&lt;li&gt;A good way to keep it closed (in this case a giant rubber band did the trick)&lt;/li&gt;&lt;li&gt;Page Numbers&lt;/li&gt;&lt;li&gt;Space for a Table of Contents (this isn't required but it is pretty handy, alternatively you can sacrifice the first 2 pages to this and get the same effect)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The reasoning behind this should be pretty easy to figure out.  But I'll fill in the blanks anyway after I address the few simple rules that I follow when working with an engineering notebook.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Never attempt to remove a page from the note book.  That's your hard work your attempting to destroy, if it doesn't work make a few notes why and move to the next page.&lt;/li&gt;&lt;li&gt;Never scribble or white out anything, if it's spelled wrong cross it out with 1 line and rewrite it.  On the other hand if it's just incorrect, make a note that it is and where in the note book the correct information can be found.&lt;/li&gt;&lt;li&gt;Make sure you sign and date every page you do work on.  This is especially important for shared notebooks but it's also applicable to ones stored in company vaults.  In that case you typically leave an area for you and a quartermaster to sign and date it.  This can save your but in case of things like patent disputes so don't shirk the responsibility.&lt;/li&gt;&lt;li&gt;Place a note at the top of every page noting which project or sub-project (if the whole notebook is for a single project) that page is dedicated to.&lt;/li&gt;&lt;li&gt;Do not use one page for more than one subject.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;For a personal notebook it's not usually necessary but if your performing intricate math steps, write them down.  This may be your notebook but it's also a map of your ideas in solving a problem, if nobody else can read it then it's kinda useless.&lt;/li&gt;&lt;li&gt;When using a notebook for multiple projects note the last page that project was worked on and if you can remember to do so, note the next one.  This will let you traverse your notebook in a more sane manner.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Now this is all pretty straight forward but there's a few things that might need some explaining.  First why use a hard bound book instead of one of the build your own notebooks where you can freely add or remove pages punched with a special hole punch.  Because you can remove the pages, it may seem convenient to be able to keep all of your notes in order by adding them to the back of the section they are in but this isn't always a good thing.  For explanation by example I'll give you a few scenarios where this would be bad.  First, the addition and subtraction of pages from the notebook immediately disqualify it from being used as a running record of your work as it can no longer be used in patent cases and the like.  This is because it's now to easy to doctor (by a significant margin).  Second, pages can fall out; how awful would it be to solve a problem on the train and lose the brilliant solution on the way from the station to the office?&lt;br /&gt;&lt;br /&gt;Why would you want a relatively portable size? you may ask.  But if anyone has ever owned a really big engineering notebook (or say... the NSA Red Book) you already know the answer to that.  It fits in nothing, the books are about the size of a 17" laptop and nowhere near as useful.  They are as likely or more to get in your way as they are to be useful for actually storing a brain dump of info.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;For the vast majority of people these measures for a notebook will appear to be overkill, and... they are.  If you don't have a need for a solid replicable and provable notebook you can happily write the post off as the ramblings of a mad man and you' be acting pretty fair.  If you need a notebook I recommend visiting your local staples or book store.  They will undoubtedly have a wide swath of wonderful notebooks that you don't need to apply any of the above requirements or rules to and be perfectly happy.  I actually have a few notebooks of this nature storing things like meeting notes that I plan to digitize or process and chuck.  My sketch book is a bit more robust but is just a big bound pack of blank paper so not much more helpful.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;For dyed in the wool note takers these measures probably aren't nearly enough and I should have covered suggestions and rules for creating volumes of work and proper guidelines for digitally backing up your notebooks with a scanner.  If your requirements are this high or strict, you don't need my advice, keep on trucking.  For people who are just trying to find some sane and easy to follow rules for a technical notebook (or any notebook really, but I don't go thru this much effort unless I'm trying to build something) then these rules will get you most of the way if not all the way to where you need to go.  Take what you need for this blog and discard the rest, like any set of guidelines not everything here will cover all of your requirements and may infact get in the way depending on what your trying to do.&lt;br /&gt;&lt;br /&gt;Got any opinions on the topic or helpful suggestions?  Throw them in the comments!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-5161760187139250853?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/5161760187139250853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=5161760187139250853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/5161760187139250853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/5161760187139250853'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/07/engineering-notebook-rules-of.html' title='Engineering Notebook Rules of Engagement'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-1518218743467181446</id><published>2008-07-14T19:13:00.000-07:00</published><updated>2008-07-16T11:33:47.869-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DRM'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>Re: Mass Effect for PC: Why do people hate DRM?</title><content type='html'>&lt;p class="MsoNormal"&gt;I've been meaning to write this blog since I read about the issues on ARSTechnica last week (that's where I started, and finally ended at the below articles). I am finally getting around to putting it together now. Edit: This was a week ago when I started writing this, now, I have no idea when I started so… whenever I started.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;This blog is a direct response to &lt;a href="http://www.gamecritics.com/mass-effect-for-pc-why-do-people-hate-drm"&gt;Mass Effect for PC: Why do people hate DRM? By Mike Doolittle&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'll also try to address some of his second article here: &lt;a href="http://www.gamecritics.com/mass-effect-piracy-and-drm-part-2"&gt;Part 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'll also be referring to this &lt;a href="http://en.wikipedia.org/wiki/Eula"&gt;Wikipedia page on EULA's&lt;/a&gt;. Not the most reliable source on the internet, I'll admit that in advance. However it is fairly well researched and referenced so I'm feeling comfortable with it seeing as this is a blog not a scientifically published research paper.&lt;br /&gt;&lt;br /&gt;Starting from this it should be simple to surmise I don't agree with his opinions relating to both DRM and the theoretical ownership of a license versus a copy of the software (in binary form or otherwise). I don't agree with his opinions on DRM either, but I think the difference in opinion there is because he's had the fortune to never be burned by the issue.&lt;br /&gt;&lt;br /&gt;The single greatest issue I have with Doolittle's arguments is that they are in fact a fully admitted argument from ignorance. The fact that you've been doing something for two years makes you an expert when that something is flipping burgers or managing the fry machine; video games are an entirely different beast, PC games especially. Basically 2.5 years means you've gotten to play a pile of mostly to completely polished games that probably lacked a significant swath of what people label as 'draconian DRM restrictions'. This is somewhat less true if you've played Bioshock on your PC as that has restrictions landing comfortably inside the listing of draconian.&lt;br /&gt;&lt;br /&gt;I think the problem may be tackling what we define as draconian however. Your typical (i.e. non MMO) game includes a CD-key and a requirement to dial home when you’re connecting to online games to make sure the CD-key isn't stolen. The highly strict ones allow a single copy of the CD-key to be used at a time and provide the ability to revoke CD-keys for software being utilized on a diverse number of IP addresses. Looser or more 'user friendly' games simply require a valid CD-key to install and two people using the same CD-key can only join a single game (e.g. star crafts 'spawn' feature).&lt;br /&gt;&lt;br /&gt;However the Mass Effect DRM goes stripes beyond what I would list as 'high' restriction DRM, seen in games like the Battlefield series (a necessity considering they are basically online only games). Mass Effect certainly doesn't even qualify for these requirements considering the game is single player only. A simple CD-key that dials home on first activation would solve the problem, a secondary check whenever updates are made or downloadable content is added would be considered reasonable by most. This is in fact exactly how Office 2k7 works, if you decide to use something like a template file it makes sure you’re credible then downloads the file. This is also how the newest latest and greatest DRM plan for Mass Effect works as well, but dial home and CD-key policies are only half the story, and really the icing on the cake for most people who have actually had issues with DRM.&lt;br /&gt;&lt;br /&gt;These other problems are rooted in our friends (unmitigated scum) at SecuROM and their competitors. I single SecuROM out here for gems like &lt;a href="http://www.gamingbob.com/2007/08/23/bioshock-installs-rootkit-including-demo/"&gt;this&lt;/a&gt;. Granted 2k has now &lt;a href="http://www.tomsgames.com/us/2008/06/20/bioshockdrm_dropped/"&gt;removed all SecuROM DRM from its product&lt;/a&gt;. This is due in part because SecuROM was nice enough to install a Rootkit on the users’ computers and because in some cases the system lets you install a program and then prevents you from actually running it. This is a core problem of the way DRM has worked for years, one of my favorite experiences with the issue relates back to System Shock 2 (hmm.. a trend?). SS2 would happily install on my system but completely refuse to run, after dropping in a hacked executable (simple no CD crack) and voilà! It works. This problem was also magically fixed by adding a DVD player into my system that lacked burning capacity as a master for that IDE connection. These sorts of issues, while fun to reminisce about are exactly the sorts of things people remember when they think about DRM, and the kind of small joys Mr. Doolittle missed out on.&lt;span style=""&gt;  &lt;/span&gt;I can’t think of many users who would appreciate being told their machine has the possibility of infringing someone’s copyright so they simply aren’t allowed the play the game.&lt;span style=""&gt;  &lt;/span&gt;However this is effectively the crux of this approach to DRM.&lt;br /&gt;&lt;br /&gt;These systems introduce a second issue, one that people who took a look at steam and went 'hrmm... no.' thought about as well (unless they were busy screaming because steam was awful when it first came out). When a computer game needs to dial home simply to run people become uncomfortable, especially people who own old games and thank their lucky stars those games physically can't dial home. For example, I have a swath of old DOS games I like to play in FreeDOS (when I can make it work). Most of these games are from companies that don't exist anymore, like say.... SSI. Great games, I still play them, they are at least... 15 years old. In 15 years, if I get the fancy to play Mass Effect, it had better work. This is something that is impossible to guarantee with a system like Steam, or SecuROM, who’s to say they won’t have been replaced with some new later and greater system and simply shut down.&lt;span style=""&gt;  &lt;/span&gt;This is a problem currently facing MSN Music subscribers.&lt;span style=""&gt;  &lt;/span&gt;They were lucky enough to get a &lt;a href="http://www.last100.com/2008/06/20/msn-music-drm-servers-get-three-year-stay-of-execution/"&gt;stay of execution&lt;/a&gt; but it’s only for 3 years, after that what happens?&lt;span style=""&gt;  &lt;/span&gt;Now if they proposed to post a patch say... a year after the release of the original game (ok... maybe 2?) that removes the restrictions and cracks the problem like an egg I'd be game. The problem there being in 2 years will somebody actually remember to post said file? I’ll hold my breath, I swear.&lt;br /&gt;&lt;br /&gt;Now, Doolittle basically does little (sorry) for these arguments, instead pointing to the EULA and claiming you simply have a license to use the software effectively at the IP owners fancy. This claim has had a number of holes fired thru it, involving small shots and cannon shells. The wiki EULA link above has a number of such cases in its reference listings. A few key features of the problems are 1) you’re asking (mostly) a bunch of kids to sign a contract they can't even read, which lands on the far side of completely illegal (to my understanding, but I'm no lawyer) and 2) shrink wrapped EULA's have effectively no hope of standing up in court as you can't claim that people don't own the physical CD they purchased from you. These claims hold more water when purchased through a service like Steam where you don’t' actually own a copy of the CD.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;A final note on the awe inspiring, completely miss guided set of articles Doolittle wrote is his complete dismissal of Stardocks ‘Sins of a Solar Empire’.&lt;span style=""&gt;  &lt;/span&gt;He mentions them in passing claiming they are totally irrelevant edge cases because they are from a small shop that expects to sell a few hundred thousand copies of a game instead of millions of copies.&lt;span style=""&gt;  &lt;/span&gt;After this he feels they are just getting icing on their cake so it’s not surprising that they would embrace the model of no DRM.&lt;span style=""&gt;  &lt;/span&gt;What he failed to mention is that while it’s not the highest grossing game of 2008, it’s &lt;a href="http://www.betanews.com/article/Stardocks_Sins_of_a_Solar_Empire_leads_PC_game_sales/1204658606"&gt;one of the best selling games&lt;/a&gt; of 2008.&lt;span style=""&gt;  &lt;/span&gt;The game isn’t selling because it’s DRM free; it’s selling because it’s actually GOOD.&lt;span style=""&gt;  &lt;/span&gt;A fact he wouldn’t have missed if he had actually played the game.&lt;span style=""&gt;  &lt;/span&gt;It’s also offered at a compelling price point, I picked up my copy for 40 bucks.&lt;span style=""&gt;  &lt;/span&gt;A price I was happy to play for a game where a single round can last me an entire night and I’ve yet to even experiment with the multiplayer side of the game.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;For most people the DRM issues will be a moot point.&lt;span style=""&gt;  &lt;/span&gt;This is because most people don’t qualify as enthusiast gamers (you know... the ones that will become obsessed with a game and play it repeatedly for the next 10 years…) so for them DRM activation and general usage issues are at best moot and at worst probably inconvenient.&lt;span style=""&gt;  &lt;/span&gt;This doesn’t however make these other players in any way edge cases.&lt;span style=""&gt;  &lt;/span&gt;For everyone else, this will probably cause some sparks and the fade into memory until someone decides to do something similar to moving away from the IPod after buying a repertoire of music thru iTunes at which point they will either grimly decide to buy their entire library over again, or cry themselves to sleep.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;The Red Pill:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Just because enthusiast gamers are harder to court and generally a smaller fan base this doesn’t however make these other players in any way edge cases, as they are the ones you want to be courting for user generated guides (gamefaqs.com anyone?), user generated content and finding replay value from the title.&lt;span style=""&gt;  &lt;/span&gt;These users also prop up the franchise as a whole, especially when the lull between games is more than a year or two.&lt;span style=""&gt;  &lt;/span&gt;For instance, Fallout 3 finally comes out this fall (we hope…), this is all fine and grand but no one outside the rabid fan base really has a clue what the game is about.&lt;span style=""&gt;  &lt;/span&gt;This is because it took almost 10 years to get to the point of having a release date.&lt;span style=""&gt;  &lt;/span&gt;Now do you think that fallout 3 is going to appeal to new people who have no idea what 1 and 2 were about or more to people who have played every fallout game that’s ever come out (including brotherhood for the Xbox, thou we try to pretend we didn’t).&lt;span style=""&gt;  &lt;/span&gt;Everyone who purchased 1 and 2 is going to buy 3, as the first two were and are still among the best games ever made.&lt;span style=""&gt;  &lt;/span&gt;Disenfranchising these users by telling them to their face ‘we don’t trust you’ is a good way to shoot yourself in the foot.&lt;span style=""&gt;  &lt;/span&gt;As these same users will happily slam the game for breaking their tempo of buy once play forever.&lt;span style=""&gt;  &lt;/span&gt;This isn’t a bad thing if you’re just writing a game for cash and not to tell a story that will last, but if you’re doing that stop writing big budget games, hire yourselves some flash and java script wizards and program at the mobile phone market, your garbage is chumming up the waters.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Edit:&lt;/p&gt;&lt;p class="MsoNormal"&gt;I thought I'd include some supplemental reading.  Apparently the &lt;a href="http://arstechnica.com/news.ars/post/20080716-library-of-congress-drm-a-serious-obstacle-to-archiving.html"&gt;Library of Congress is none to happy about the DRM situation either&lt;/a&gt;.&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-1518218743467181446?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/1518218743467181446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=1518218743467181446' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/1518218743467181446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/1518218743467181446'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/07/re-mass-effect-for-pc-why-do-people.html' title='Re: Mass Effect for PC: Why do people hate DRM?'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8375960068636340103</id><published>2008-06-04T00:45:00.000-07:00</published><updated>2008-06-04T00:45:01.417-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='movies'/><title type='text'>O George, how you failed us</title><content type='html'>I wasn't going to even write this blog entry but mulling over it for the weekend I decided to scrawl it down as it were.&lt;br /&gt;&lt;br /&gt;In case you haven't figured it out from the title this post is about Indian Jones 4 which I got to see over the weekend.  I left the theater almost speechless and couldn't form a coherent impression of the movie for about an hour after seeing it.  Sometimes these indicate a movie was astounding, in this case it just indicates that George Lucas should no longer be allowed to produce movies.&lt;br /&gt;&lt;br /&gt;Somewhere along the way Lucas seems to have forgotten that the Indian Jones series and E.T. were in fact independent pieces of intellectual property, to the detriment of Dr. Jones and his errant son.  For those that haven't had the pleasure of seeing this movie, award yourself with a cookie.  For the rest of you, I'm sorry you get to ride in the boat with me over the waterfall.&lt;br /&gt;&lt;br /&gt;The main problem with IJ4 is that there was no good reason to involve aliens.  None, the series has a well founded past in the realms of judeo-christian mythology.  They built upon that allowing other myths in the Temple of Doom (not a great movie but better than 4).  While I grant that they may have already exhausted the cool things that cold be done with the Christian faith, unless they decided to go looking for something like Jacobs Ladder (for which I may have forgiven them alien references), the idea of using aliens in a fiction that has up till that point revolved around honest adventure stories that dabbled in a directed subset of mysticism is maddening.  They could have even stuck with the crystal skull motif (there actually are such things in the world: &lt;a href="http://en.wikipedia.org/wiki/Crystal_skull"&gt;Crystal Skull&lt;/a&gt;) but the skull = aliens thing was done already,  Stargate SG-1 did it a while ago.  It could even have been kept an alien device or object, but an aliens head is more than a 'bit' of a stretch.  A power source that opens up a gateway to the unknown would have been perfect for someone who's previous claims to fame are recovering the arc of the covenant and drinking from the holy grail.&lt;br /&gt;&lt;br /&gt;The use of aliens of course isn't the only thing that made IJ4 a bad movie.  I think we can all agree that while Shia LaBeouf is an entertaining individual and even pulled off the greaser look and feel pretty well, even he can't befriend a pack of wild monkeys by simply making eye contact.  On the other hand, I don't think a bunch of monkeys can teach a human to swing through the trees in just as short an amount of time (Come on was this scene really necessary?)  Other than that he fills the role of Indian Jones son pretty well, helping contribute to the few things that actually made this feel like and Indian Jones movie.  Unfortunately this ruined the whole thing, making it feel like an Indian Jones movie in some areas and feel like another IP entirely at other times.&lt;br /&gt;&lt;br /&gt;Sadly this isn't the first crap movie Lucas has ever produced, this is the forth in a decade.  The last three being star wars episodes 1-3 (you know, the three people pretend don't exsist?)  This one on the other hand lands more in the category of 'swan song', where Lucas has reached the point that he's run out of ideas and started trying to mix IP's in 'novel' ways to create new (but sadly terrible) stories.  So please Mr. Lucas, stop making movies and leave the stories we know and love untainted by your interference (if you do, some people may just forgive you for the special edition star wars and replacing Darth Vaders ghost in episode 6 with that little whelp).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8375960068636340103?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8375960068636340103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8375960068636340103' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8375960068636340103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8375960068636340103'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/06/o-george-how-you-failed-us.html' title='O George, how you failed us'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-3531925313784544623</id><published>2008-05-23T00:15:00.000-07:00</published><updated>2008-05-22T21:40:04.551-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Ruby in the rough</title><content type='html'>As discussed in an earlier blog I've been doing some work with ruby recently and have been reasonable happy with the ease of generating results.  That was up until yesterday when I finally published the web page to our outward facing server.  The page actually loaded just fine, it just was stripped of all of it's formatting, ok no big deal right?  Yea... this problem managed to generate a days worth of rabbit hole endeavors to fix it.&lt;br /&gt;&lt;br /&gt;The actual solution to the problem was trivial if a bit of a hack.  What necessitated the hack is a bit of an annoyance however and slightly disappointing considering the nature of ruby on rails and the mongrel server system trumpeted as one of the best ways to run a rails application.&lt;br /&gt;&lt;br /&gt;The main problem was that you can't properly deliver public asset items thru a proxy server (the recommended way to deliver ruby pages thru apache).  Thus making those site resources effectively invisible.  This is because by default ruby on rails uses direct addressing of resources instead of a form of relative addressing.  This can however be worked around in a variety of ways, in my case I decided to solve it by using an asset server.  More accurately I decided to treat the apache servers public area as an asset server for the ruby instance.  This unfortunately is a bit of a double edged sword as it breaks the everything in one area solution presented by ruby on rails because now the /public area has to bet moved to the public areas of your apache build.  On the other hand you still have your insulated ruby site (that actually runs pretty quick) which still allows you to use the proxy load balancer features of apache if your feeling so inclined.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;&lt;br /&gt;Ruby isn't always the way to go, but you can program some pretty powerful sites using it however the mongrel server that's trumpeted as being wonderful hits a wall pretty quick.  Since starting this post I have actually replaced it with a newer server named 'thin', it's even faster; o it's also STABLE.  This sadly isn't a claim that mongrel can make.  The hacks above are still required and indeed are probably required for many of the more nonstandard configurations you can setup for servers (I actually don't address my server at root, my virtual servers access at 127.0.0.1:&amp;#060;port number&amp;#062;/&amp;#060;appname&amp;#062; which contributes to the delivering my public asset issues but also insulates my management code from direct execution).&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;&lt;br /&gt;If you aren't trying to build the next massively integrated services system (google, yahoo, msn for example) and aren't expecting to be hit by thousands of a users a minute ruby will get you there and you'll probably enjoy the development gradient along the way.  For the majority of people (read, those with English grammar skills) will find the use find the language to be a breeze and for serious developers there's solid IDE systems on Windows, Linux and Mac OSX so you can develop on any or all of the systems simultaneously and have a fairly even development experience wherever you are.  As an added bonus RoR lends it self very well to agile development for those coding maniacs out there.&lt;/appname&gt;&lt;/port&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-3531925313784544623?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/3531925313784544623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=3531925313784544623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3531925313784544623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3531925313784544623'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/05/ruby-in-rough.html' title='Ruby in the rough'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-7545388255855061167</id><published>2008-05-22T13:53:00.000-07:00</published><updated>2008-05-22T14:02:25.604-07:00</updated><title type='text'>Building Renovation, STALLED</title><content type='html'>I figure this would happen eventually but completely failed to predict the 'why' behind it.&lt;br /&gt;&lt;br /&gt;In this case it was two things.  The easier given being the weather.  It's been a rainy mess over the last week only providing a few really good days for doing house work.  The odd thing is that the workers for as professional as they appear to be don't seem to come in on days where it showers in the morning and is clear by noon.  I guess this is because they'd be wasting too much time setting up and doing tear down each day thou.&lt;br /&gt;&lt;br /&gt;The second reason is because the new front doors for our units are back order.  :: awesome :: So apparently nobody thought of the fact that we are using fancy 6-panel doors in our units now, made out of steel and that's not exactly the easiest thing on earth to order in bulk.  So yea, we are now waiting on that to finish the modifications and updates to the interior of the homes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-7545388255855061167?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/7545388255855061167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=7545388255855061167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7545388255855061167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7545388255855061167'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/05/building-renovation-stalled.html' title='Building Renovation, STALLED'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-3568163612969649338</id><published>2008-05-15T12:41:00.000-07:00</published><updated>2008-05-15T14:08:18.753-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='renovations'/><category scheme='http://www.blogger.com/atom/ns#' term='home improvement'/><title type='text'>Building Renovation Diary, Day 2</title><content type='html'>I have to say, today has turned out to be much drier than the previous day.  There hasn't been nearly as much loud noises going on around the house, which is good I guess I can at least think.&lt;br /&gt;&lt;br /&gt;The good news is I appear to be getting at least 3 of my new installation items today which is fantastic.  New sliding glass door, and two out of three new windows.  Also got to do some painting of objects I took down when painting my interior areas earlier.&lt;br /&gt;&lt;br /&gt;The bad news is I'm starting to notice the nail pops from them beating the hell out of the exterior of the building, there's in some ways more and in some ways less pops that I thought I would wind up with.  Which means two of the walls I just put the 'done' stamp on will need to be patched up.  Not a prospect I'm looking forward to but there's no way to avoid it so I'll have to live with it.  The main killer there is going to be just how much work is going to have to go into repairing the large wall space above my stairs.  That segment of walling is exceedingly difficult to paint let alone finesse a putty knife around on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-3568163612969649338?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/3568163612969649338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=3568163612969649338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3568163612969649338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/3568163612969649338'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/05/building-rennovation-diary-day-2.html' title='Building Renovation Diary, Day 2'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-1987038242302936008</id><published>2008-05-14T07:42:00.000-07:00</published><updated>2008-05-14T13:09:29.961-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='renovations'/><category scheme='http://www.blogger.com/atom/ns#' term='home improvement'/><title type='text'>Renovation Diary, Day 1</title><content type='html'>I'll be trying to get a blog out a day during the time that my home is under renovation documenting the more interesting things that have happened on a given day.  The red/blue comparisons aren't particularly appropriate for these posts and I'll be dropping the scheme for them as such, just a warning.&lt;br /&gt;&lt;br /&gt;As of today the renovations on my buildings exterior have officially begun.  In fact I'm currently watching someone standing on my balcony ripping apart the exterior walls of the building.  It's somewhat odd watching people beet the hell out of the exterior of your house w/o even talking to you about it.  But that's disingenuous this project has been developed steadily for over two years of planning before anything was ever implemented.  But it's still weird watching a window of your house get pulled out without any warning.&lt;br /&gt;&lt;br /&gt;From what I can tell my building no longer has a roof, or at least no longer has shingles and paneling.  This would be evidenced by the massive amount of material sitting on the ground around my house and large amount of banging I've been hearing for the last few hours.&lt;br /&gt;&lt;br /&gt;Earlier today I got to do the chicken little routine as I had no idea they were simply going to pull my sky light out and all of a sudden i had a few pieces of ceiling tile sitting in my house.  I've since placed tarps on the ground but that seems superfluous now as I think they've already replaced the window they ripped out.&lt;br /&gt;&lt;br /&gt;Currently what appears to be receiving the brunt of the punishment is the exterior walls, the removal and replacement of which constitute a significant amount of the work on the units.  Hopefully the new thermal envelope will work better than the old one did as these houses leaked heat like a siv.&lt;br /&gt;&lt;br /&gt;More updates bound to be made latter.&lt;br /&gt;&lt;br /&gt;Ah today is the day of getting what you want, and what you don't want all in one.  A little while back I decided to run a full networking solution in my house so that all my rooms were connected in a way that I thought would be the most useful.  The main problem with the network so far had been that i had decided to store the switch in an upstairs closet along with the router, all well and good except that there was no way to get the cable modem up there.  So I had to have a 'wan' port setup on my patch panel for the cable modem line.  This isn't necessarily a problem but when all the cable is the same color it's a pain trying to differentiate one from the rest requiring me to go out of my way to ensure I had the right cable at all times.&lt;br /&gt;&lt;br /&gt;As of today I'll have a second option for future projects.  Part of the renovations stipulated that a new conduit system be installed in the building on a unit by unit basis.  Being home I got to ask them to place it in the closet upstairs instead of the loft area of the same floor.  Now if/when i get fios I'll be able to place the modem, cabling, switch and router all in one place and have a series of generic connections end to end instead of special use connections.  This is for lack of a better word, awesome.&lt;br /&gt;&lt;br /&gt;On the downside I currently have no sliding glass door and all of my windows are covered in dupont tyvex paper and lack actually windows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-1987038242302936008?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/1987038242302936008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=1987038242302936008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/1987038242302936008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/1987038242302936008'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/05/renovation-diary-day-1.html' title='Renovation Diary, Day 1'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-7726184742216079823</id><published>2008-05-09T02:34:00.000-07:00</published><updated>2008-05-09T23:03:33.005-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>Owner of the coolest toys ever, Tony Stark</title><content type='html'>This past weekend I got to sit down and watch Iron Man.  Overall I thought the movie was pretty good if a bit light on the action side.  Oddly I found my self attract more to the technology that surrounds Stark's everyday life than I was drawn to the Iron Man suit.  Which isn't to say the suit is in anyway shabby, it's the most stylish and slick piece of equipment you could expect in the field of robotics enhanced powered armor.  However there are other suits in the sci-fi fiction realm that I happen to like much more aesthetically (the Juggernaut armor from star wars fiction comes to mind: &lt;a href="http://starwars.wikia.com/wiki/Juggernaut_510_Combat_Power_Armor"&gt;http://starwars.wikia.com/wiki/Juggernaut_510_Combat_Power_Armor&lt;/a&gt;).  However this post isn't about powered armor, it's about the cool toys that Stark used to build said power armor.&lt;br /&gt;&lt;br /&gt;Anyone who has seen the movie and was paying any sort of attention will notice that Stark's house and life had a million and one different items of different intriguing qualities.&lt;br /&gt;&lt;br /&gt;Most notable among the stock being the fact that his house talked to him.  Sadly this is still a long way off, especially for one that makes coy remarks about trying to use a suit of body armor to make interplanetary flights.  However some of the technologies do exist in the smart homes of today (just not quite a cool looking as his stuff was).&lt;br /&gt;&lt;br /&gt;The site &lt;a href="http://www.smarthome.com/_/index.aspx"&gt;Smarthome.com&lt;/a&gt; offers a number of powerful devices for creating a more tied together home life.  Offering more fantastic devices like electronic keypad locks for the front door to directly practical devices like water sensing shut offs for use on hot water heaters, washing machines and other water based devices.  Their keypads aren't as stylish as Starks all glass doors with the biometric knob and holographic keypads but they get the job done and aren't trying to secure a door easily bypassed with a sufficiently large rock (or in Tony's case, a repulsion cannon).  Smart home also provides equipment to do everything from remotely controlling all the electronics in your home and network enabling your electrical outlets and wall switches (who needs a clapper when you can have a computer programmed light show throughout the day?) to integrated security solutions complete with status web server systems.&lt;br /&gt;&lt;br /&gt;Something I've been waiting to see in the main stream building world but haven't are the self dimming windows.  These windows eliminate the need to even worry about a set of blinds (for light control at least) by being able to select their opacity dynamically and on demand.  The NREL has a &lt;a href="http://www.nrel.gov/buildings/electrochromic_basics.html"&gt;nice article&lt;/a&gt; on the topic for any who are curious.&lt;br /&gt;&lt;br /&gt;A few somewhat passed over items in the movie jumped out at me as well 'pretty damn cool' I think captures it well.  One that we haven't reached just yet but we've started scratching the surface of was his holographic display for designing new projects.  While nothing on this physical scale or technical level exists yet people have started construction 360 degree viewable holographic devices.  ICT Graphics lab has created a standing 3D image that can &lt;a href="http://gl.ict.usc.edu/Research/3DDisplay/"&gt;display both animation and colored items&lt;/a&gt;.  ICT's 3D image isn't quite as interactive as Starks but it's certainly a leap in the right direction (not to mention just being pretty damn cool).  Unfortunately ICT's display doesn't meet the requirements of a consumer public at this point, but a do it yourselfer with enough determination could probably construct something like this; assuming they possess infinite patience and determination.&lt;br /&gt;&lt;br /&gt;Any cool techs I forgot from the movie?  Let me know and I'll see what I can do to add them.&lt;br /&gt;&lt;br /&gt;This evenings red pill / blue pill brought to you by my buddy Henry for pointing out that I totally forgot to do a red/blue for this post.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;&lt;br /&gt;Push comes to shove, all of Tony Starks equipment was green screened, green objects and clever Cg.  That doesn't mean some of these technologies aren't on the horizon (in some cases the immediate horizon), and that all adds up to the next few years being pretty exciting in this area.  For instance the same technology that puts a dynamic display between the layers of your window could be utilized in the near range for things like car windows.  In the far range there's already a Darpa  project to implant a similar technology into a contact lens.  So keep an eye out over the next few years and you may get to play in Tony Starks play pen.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;&lt;br /&gt;Starks technology presents as many dangers as it does possibilities, the idea of a man wrapped in enough armor to take on an army is a fairly menacing prospect.  The AI presented in the movie could be turned to variety of nefarious acts as well.  Most notable among them being the possibility of utilizing such technology to run an army of drones willing to take and implement any order you give them (what is the cost of war when you risk nothing?).  So from this standpoint we could be presenting a new level of horror at a scale the world has never seen.  The good news being an AI of this grade most almost definitely require a compact quantum computer; and since nobody can even make a really really huge one work we can rule out expecting anything like that any time soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-7726184742216079823?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/7726184742216079823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=7726184742216079823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7726184742216079823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7726184742216079823'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/05/owner-of-coolest-toys-ever-tony-stark.html' title='Owner of the coolest toys ever, Tony Stark'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8859794585697968834</id><published>2008-05-02T11:51:00.000-07:00</published><updated>2008-05-02T11:56:52.620-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='home improvement'/><title type='text'>The never ending chore, Home Improvement</title><content type='html'>Over the past month or so I've been painting my house and doing a lot of small random home improvements.  But I'm starting to work on plans for the more involved projects around the house (like painting isn't involved enough...), and my house's exterior is being renovated in two weeks which is fantastic.  I had expected my house renovation to be in like a year and a half when they finished the rest of the buildings in the complex but I got put down as second on the list instead which was very surprising but hey I don't argue things like that.&lt;br /&gt;&lt;br /&gt;Now then onto the non fluff writing of the day.  One of the various home improvement projects that I've actually invested some heavy mental energies in working on is replacing my very 'dorm room' looking media centers.  Functionally there isn't anything wrong with the units.  They hold lots of stuff in a fairly efficient manner, even if they have over the years acquired a few bored holes to accommodate the rogue wiring here and there.  However all things come to an end and I've had these units since I was a teenager so it's time to replace them.  One of the below pictures is the culprit pieces of furniture.&lt;br /&gt;&lt;br /&gt;Currently the plan is to replace them with a set of shelves that I'm planning to build.  This is mostly because I can't find anything that fits my taste (or budget).  I had a bunch of initial ideas bouncing around my head but I think I've settled on a design that will be much easier to implement than the more convoluted setups I had been thinking of doing.  And that's usually a good thing.&lt;br /&gt;&lt;br /&gt;Initially I had wanted to do a set of standing A-frame designs that literally formed an A with the support being the bottoms of the A and the top point resting against the wall.  Shelving would be provided by placing shelves between the supporting legs, however I quickly came to suspect this design would actually gimp my ability to include some of the larger pieces of electronics this media center would have to house.  Also this design is predisposed to more room than I actually have, and wastes a large amount of that room on the large A design itself.&lt;br /&gt;&lt;br /&gt;The new design is still influenced from that original design but is much more compact and should provide a good boost in overall shelf space.  What's more this version allows me to build into a corner in a manner that would have been exceedingly difficult or impossible in the original plan. This is critical do to the cramped nature of the space.  The shelves can't exceed twenty four inches deep (eww.. english unit measurements...) and it's l shape legs can be of lengths 54 inches and 46 inches making the whole thing a bit complicated.  The one advantage is that my height is basically unlimited at over 8 ft. tall, well above the level that would even be practical to construct a piece of this nature.&lt;br /&gt;&lt;br /&gt;As you may have guessed the new designs are nowhere near the stage of being called 'done' however I thought I would share a few of my initial drawings of the new design.  Hopefully sometime in the very near future I'll be able to post the final plans for the design (either a CAD drawing or a DIA graph, we'll see.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;&lt;br /&gt;The reality of the situation is that I've never done anything like this before, and without the help of my ever loving father have always been terrible at wood working designs.  However alot of this is related to the fact that I've spent the majority of my time taking apart electronics not building stuff to work up my ability as a wood crafter.  On the other hand I'll have access to plenty of tools and some other help that will hopefully push the project forward the way I want it to go.&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;&lt;br /&gt;Worse comes to worse I settle for something a little simpler than the plan I am currently working on but I'd rather not.  It always feels like your selling yourself short when you do that and that's never good.  But if this all comes to a head and I wind up not being able to build it the way I want then IKEA and I will have some talking to do.&lt;br /&gt;&lt;br /&gt;&lt;embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" flashvars="host=picasaweb.google.com&amp;amp;RGB=0x000000&amp;amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fgmcgrathredbluepill%2Falbumid%2F5195844503858410753%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer" height="320" width="480"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8859794585697968834?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8859794585697968834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8859794585697968834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8859794585697968834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8859794585697968834'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/05/never-ending-chore-home-improvement.html' title='The never ending chore, Home Improvement'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-4792637310681060102</id><published>2008-04-21T18:39:00.000-07:00</published><updated>2008-04-22T11:41:58.990-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wowtalk'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>WoW is evil, it's still awesome.</title><content type='html'>No really it's evil.  This doesn't mean it's not awesome, it's just that the skills it's awesome at happen to be wasting a fantastic amount of time and stealing your social life against your will.&lt;br /&gt;&lt;br /&gt;For those who have no idea what I'm talking about take a wander over to the &lt;a href="http://www.worldofwarcraft.com/"&gt;World of Warcraft Website&lt;/a&gt; and check it out.  The game (or job for some people) is actually alot of fun and the way the expansions are done starting a new character at expansion time isn't a completely impossible prospect (even if it's somewhat daunting).&lt;br /&gt;&lt;br /&gt;I've been playing the game since a few months after it came out and was entirely hooked during my initial play period.  This was cut short by a segment of my senior year of college where I simply couldn't afford to play the game and go to school at the same time.  Finishing two degrees is difficult enough without any distractions and having a time sink like WoW would have done nothing but severely damage to my ability to pass my classes.&lt;br /&gt;&lt;br /&gt;Since returning to the game from my first hiatus I've realized WoW can fill a few other niches than the 'I must play all day every day' niche in a persons life.  And this realization has brought me a peace with the game that I never got when I was playing every day and trying to raid constantly to get new gear.&lt;br /&gt;&lt;br /&gt;In effect I've become the casual gamer when it comes to WoW (Lost Odyssey may take some issue with that statement however).  In this model it doesn't really matter how long it takes me to get to 70, I'd like to get there before the next expansion and enjoy the upper end content a few times thru but I'm not going to rush my way to 70 just to do that.  It's also stopped being my primary source of entertainment.  I play it when I don't have games to play, so it'll get more love when I've beaten Lost Odyssey, Dynasty Warriors: Gundam and Lost Planet.  And only then if I don't decide to pickup Mario Kart immediately after it comes out.&lt;br /&gt;&lt;br /&gt;The Red Pill:&lt;br /&gt;The main advantages of this approach are that I actually enjoy the game when I log on.  Many of the non raiding 70's I know have no idea why they log on.  They make 1500 gold a week but for no reason that they can think of, so it's basically spinning their wheels while they wait for the expansion.  That's fine but not for me, I'd rather enjoy the walk there a bit longer; and then I'll probably max out my crafting skills and move onto my other character who's been chilling out at around level 58 for a while now.  The one thing I've decided to not do more than absolutely necessary is slaying the same things repeatedly for the 'WAHOO I GOT ONE &lt;span style="font-size:78%;"&gt;(25 more to go...)&lt;/span&gt;!' if I can absolutely avoid it.  This combined with dailies has turned WoW into less of a game designed to be fun and more into a game designed to be a second job.  I've been there and done that, and I'm willing to do it to work on my professions and factions.  I'm not willing to do it just to be sufficiently buffed up to simply survive an encounter, potions and buffs should be there to give you an edge not be a necessity for survival.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Blue Pill:&lt;br /&gt;This approach obviously isn't for everyone.  I've basically sacrificed my ability to do the high end content and I'm lucky enough to be in a guild with a GM that doesn't care what I do so long as I don't cause her any problems.  It also helps that I'm not on a PVP server, so I can actually log on and enjoy myself without a 9 year old stabbing me in the back and then camping my body for the entire evening (and the incumbent fact that I now serve as a form of parental supervision for this muck child).  There's also a chance I won't get to see any of the high level content, and I'm still paying for a subscription that I'm not 'getting the most out of'.  However bear in mind that what you get out of a massive multi player game like WoW is whatever you want to get out of it.  I've got a few very good friends out of the time I've played the game and have been known to just log on to talk to them, so value as in all things is entirely subjective.&lt;br /&gt;&lt;br /&gt;On the upside, that sacrificed content has lent me more time to do other things.  Like painting my condo, I recently finished the living room area and it looks fantastic.  If I'd been dedicating the amount of time I used to in game I'd never have completed this project.  Outdoor activities are a bit easier to pull off as well, so things like my bike are getting shown some extra love.&lt;br /&gt;&lt;br /&gt;The best part about being a casual gamer?  I can play a survival hunter and nobody complains, this used to be a lightning rod complaint when people were displeased with me as an officer and what not.  Also I get left entirely out of guild politics, which is wonderful.  I loved being an officer and helping out the guild, but guildies suck; it's a hard learned fact and not having to deal with them is a positive dream sometimes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-4792637310681060102?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/4792637310681060102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=4792637310681060102' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/4792637310681060102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/4792637310681060102'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/04/wow-is-evil-its-still-awesome.html' title='WoW is evil, it&apos;s still awesome.'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-8312727421931087976</id><published>2008-04-21T17:30:00.000-07:00</published><updated>2008-04-21T14:53:51.315-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Ruby Red or Saphire Blue?</title><content type='html'>&lt;div style="text-align: left;"&gt;    I've recently started revamping a project at work for collecting subjects.  The basic premise being a lab member fills out a template of what they want to ask for their specific study.  This gets posted as a link when advertising new studies (/subject_collector/&lt;study&gt;&lt;study_name&gt;, etc.).  The main problem with the initial version of the project wasn't this part(aside from preventing replica submissions it works just as intended); it was that the researcher that requested it was already comfortable with MySQL so he was willing to use his own SQL queries on the database I designed.  This is all well and good until other people start asking for access to the system.  Hence the redesign, or more specifically expansion to include an administrative back-end.  Including user authentication, deletion of subject by study or removal of the subject entirely from that researchers subject pool (and preserving the subject if they are in other subject pools).&lt;/study_name&gt;&lt;br /&gt;&lt;study_name&gt;&lt;/study_name&gt;&lt;br /&gt;&lt;study_name&gt;The Red Pill:&lt;/study_name&gt;&lt;br /&gt;&lt;study_name&gt;    Luckily Ruby's 'route.rb' file allows for fairly robust path handling that makes it pretty simple to issue a new link to a new area of the website.  This makes adding new 'stuff' to a website pretty easy overall even for a newbie like me.  In fact the one major failing I've noticed so far is there are no clear cut ways to do authentication of users, something I figured would have been worked out by now (rails has reached version 2.0, this should well and done by now).&lt;br /&gt;&lt;br /&gt;&lt;/study_name&gt;&lt;study_name&gt;    Ruby's syntactic sugar also goes a bit to far sometimes.  It 'almost' gets in the way because it's not always easy to predict which edge of the sword you need to be playing with at a given time.  This is something that I'm sure gets more predictable when you've used the language for a few projects but it gets in the way a bit when your adopting the new programming paradigm.&lt;/study_name&gt;&lt;br /&gt;&lt;study_name&gt;&lt;br /&gt;These issues aside, if I can achieve the flexibility that ruby on rails affords me with something that has more explicit object mapping like python I'd probably head in that direction.  I'm not entirely comfortable mincing words with a JIT compiler over whether I've properly pluralized a word, or if I even need to pluralize the word in a give instance or location; so working around that problem entirely would definitely be the preferred path from here on.&lt;/study_name&gt;&lt;br /&gt;&lt;study_name&gt;&lt;/study_name&gt;&lt;br /&gt;&lt;study_name&gt;The Blue Pill:&lt;/study_name&gt;&lt;br /&gt;&lt;study_name&gt;    The reality of the situation is that it really doesn't matter what you make your website out of and it's more dictated by how dynamic your infrastructure is.  If your using a windows server, something .net would probably be more your speed, thou a ruby 'mongrel' and virtual server (this is far preferred for cgi/fast-cgi, as the performance there is horrid) implementation certainly wouldn't let you down in the long run.  Thou I have had some stability problems with mongrels on our production Linux machine, every now and then they decided they'd rather go bake cookies than actually do work.  To remedy this I have them perform a rolling restart ever 2-4 hours (I actually don't recall what it's set to right now..), the disadvantage being that my mongrels are down for a few seconds.  However this is countered by the fact that if they go to bake cookies they apparently fall into the oven and never return.&lt;br /&gt;&lt;br /&gt;On the other hand if your using a Linux machine &lt;/study_name&gt;to publish your work too you can easily setup apache to do whatever you want (this is also true in Windows and on the OSX platform).  I would still stear clear of the cgi/fast-cgi implementations and go straight to the ruby mongrel style solutions.  However any of the above solutions will work and on a smaller project it won't really matter which one you choose; bare in mind you can always change latter.  I assume this holds true for the mac as well but I haven't tested it, if they ever expand their licensing to run VM's on other hardware I'll kick the ball around the court.&lt;br /&gt;&lt;br /&gt;All in all however I think if I can find a way to do this using python, I'll most likely row in that direction for future projects.  The 'genshi' template system from the people that make Trac is a step in the right direction but not a single 'goto' solution like ruby.  So more research to be done before I find something I'm comfortable with I guess.&lt;br /&gt;&lt;study_name&gt;&lt;/study_name&gt;&lt;/study&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-8312727421931087976?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.shadowgears.com/feeds/8312727421931087976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6856642012808287701&amp;postID=8312727421931087976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8312727421931087976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/8312727421931087976'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/04/ruby-red-or-saphire-blue.html' title='Ruby Red or Saphire Blue?'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6856642012808287701.post-7957861973348502750</id><published>2008-04-17T18:35:00.000-07:00</published><updated>2008-04-17T22:53:09.468-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='explanation'/><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='test'/><title type='text'>red pill, blue pill</title><content type='html'>This post is to serve a number of purposes.&lt;br /&gt;&lt;br /&gt;First, I thought I'd explain the format I'm considering with this site so that people are confused if they stumble upon it and see two opposing views of the world.  The blog is named the red pill, in reference to the red and blue pills used in the matrix and more recently in common jargon.  A good reference for 'the blue pill' is the Wikipedia site: &lt;a href="http://en.wikipedia.org/wiki/Bluepill"&gt;http://en.wikipedia.org/wiki/Bluepill&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;I'll be trying to stick to using the metaphor more or less on target with the section mentioning red for the painful truth and blue for the blissful ignorance answer.  But honestly I already plan to deviate from that path a bit here and there.  I'll probably still be using the metaphor but applying it for example to a tech problem where the red represents the technical answer and the blue represents the rogue scholar account (not that I claim to be one but sometimes you just don't need all that jargon).&lt;br /&gt;&lt;br /&gt;Second and probably most obvious, this is my first post so I'm trying to make the site look the way I want it to look and testing out the editor before I move onto anything else I may want to do.  It's also given me a chance to test out the capabilities of Firefox to spell check me (since my spelling should be considered an atrocity against the English language).&lt;br /&gt;&lt;br /&gt;Lastly (and what I probably should have typed at the top...), welcome to my blog.  If you don't find it interesting or useful I hope it at least isn't too insulting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6856642012808287701-7957861973348502750?l=blog.shadowgears.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7957861973348502750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6856642012808287701/posts/default/7957861973348502750'/><link rel='alternate' type='text/html' href='http://blog.shadowgears.com/2008/04/red-pill-blue-pill.html' title='red pill, blue pill'/><author><name>Garrett</name><uri>http://www.blogger.com/profile/06952422585461513474</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_UbKGXWsXt9w/S0qbRgtT1KI/AAAAAAAAAGY/fVxxl0JJeAk/S220/IMG_0144.JPG'/></author></entry></feed>
