tag:blogger.com,1999:blog-345262222024-02-08T15:48:12.845-05:00One Robot's Dream"Balance, that's the secret. Moderate extremism." -- Edward AbbeyI, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.comBlogger100125tag:blogger.com,1999:blog-34526222.post-42732367389100770062014-06-05T10:41:00.001-05:002014-06-05T10:41:58.819-05:00Coming soonNow that I've had a few weeks with my Nokia Lumia 920, I'm going to start a series of posts about what's good (and bad) about Windows Phone 8.1 compared to iOS on my iPhone 4S.I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-1244155686086246052014-06-05T10:39:00.000-05:002014-06-05T10:44:09.876-05:00Warning signsAKA Ugly truths about the current gig:<br />
<br />
<ul>
<li><b>old tools:</b> we edit and debug with VS 2005 and manage builds with VS 2008 and TFS 2008. We should be building with VS 2010, ideally with VS 2013, but change is bad, apparently.</li>
<li><b>improper use of tools:</b> warnings are not set to 4, static analysis is not enabled</li>
<li><b>no unit tests:</b> seriously</li>
<li><b>no continuous integration:</b> seriously</li>
<li><b>not everything is under version control:</b> "large" (300 MB) Notes databases, golden data sets</li>
<li><b>versioning:</b> we hand-code version numbers instead of letting the build set them</li>
<li><b>Rally:</b> oh. my. God. I hate Rally. I've never seen a defect tracking system which is quite as opaque, and I have some experience with ClearCase and ClearQuest.</li>
<li><b>external dependencies:</b> I should not have to set include and library options to build</li>
</ul>
<br />
No place is perfect, but some of this stuff is just... sad.<br />
<br />
Oh, and I asked the TFS admin if any of the projects are set up to use a symbol server and he replied "NO"<br />
<br />
I take it from the caps that these newfangled tools aren't welcome.<br />
<br />
<sigh></sigh>I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-90620606141682914382013-11-06T13:39:00.000-05:002013-11-06T13:39:41.660-05:00The soul of a new dev box<div class="gmail_default" style="color: #222222; font-family: tahoma, sans-serif; font-size: small;">
The dev box isn't new, really: just adding a 256 GB SSD for the primary drive and repaving it.</div>
<div class="gmail_default" style="color: #222222; font-family: tahoma, sans-serif; font-size: small;">
<br /></div>
<div class="gmail_default" style="color: #222222; font-family: tahoma, sans-serif; font-size: small;">
I made a list of all the things I need to install to get back to a working environment. Yes, the original was backed up, but I'm moving to Windows 8.1, so it's a full remodel.</div>
<div class="gmail_default" style="color: #222222; font-family: tahoma, sans-serif; font-size: small;">
<br /></div>
<div class="gmail_default" style="color: #222222; font-family: tahoma, sans-serif; font-size: small;">
<span class="" style="border-collapse: separate; border-spacing: 0px; color: black; font-family: 'Times New Roman'; font-size: small;"><span class="" style="color: #333333; font-family: Calibri, Arial, Verdana, Tahoma, Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 18px;"><ul style="border: 0px; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 5px; padding: 0px 0px 0px 30px;">
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Windows 8.1 Pro</b> (I've avoided 8 up until now: we'll see...)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Google Chrome</b></li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Microsoft Security Essentials</b> (corporate requirement)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Virtual CloneDrive</b> (for mounting ISOs)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Visual Studio 2008</b> (yes,we still have code built with this)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Windows SDK 7.1</b> (we're tied to this specific SDK at the moment)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Visual Studio 2010</b></li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Visual Studio 2012</b></li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Visual Studio 2013</b> (some new code is being written in this, for no good reason I know)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Windows SDK 8.1</b> (for WinDbg, Application Verifier, etc.)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Office 2013</b> (I'm primarily working on Exchange 2013 restore at the moment)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Subversion 1.7</b> (haven't switched to 1.8 yet, mostly because this is for older products)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>TortoiseSVN 1.7</b></li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>git</b> (I get it now, and I <b><u>love</u></b> it: it's a floor polish <b>*and*</b> a salad dressing)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Atlassian SourceTree</b> (it's always useful to have a GUI when you go spelunking)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Notepad++</b> (I do more with vi in git's bash shell these days, but I still use it for searching through huge log files)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>MarkdownPad 2</b> (all my personal notes are in Markdown, including the wiki on my phone)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Dropbox</b> (all my ebooks and other documents are here)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Trillian</b> (we have to use Skype, and it got even more annoying after Microsoft took over)</li>
<li style="border: 0px; margin: 0px; padding: 0px;">Code Collaborator (mostly for old code: most code reviews these days are done by repository owners via pull requests)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Event Log Explorer</b> (if you have to search and filter event logs, this is a great tool)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Foxit Reader</b> (because I hate Adobe Reader)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>Visual Assist X</b> (kinda like ReSharper for C++)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>JetBrains ReSharper</b> (Best. Tool. Ever.)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>JetBrains dotPeek</b> (instead of Reflector)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>DisplayFusion</b> (for multiple monitors, which I now hate: I'd rather have a single 27" or 20" display)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>S3 Browser</b> (all our support packages - log files, event logs, etc. - wind up on S3 as Zip files: this is useful for retrieving them)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>VMware vSphere Client</b> (we have a lot of test VMs running on ESXi)</li>
<li style="border: 0px; margin: 0px; padding: 0px;"><b>VMware Workstation</b> (we have a lot of test VMs running on our dev boxes too)</li>
</ul>
</span></span> </div>
<div class="gmail_default" style="color: #222222; font-family: tahoma, sans-serif; font-size: small;">
At home, I'm turning into an occasional system administrator: too many devices on what used to be <b>*my*</b> network alone. I'm setting up a server for media (mostly photos) and local backups and gradually thinning the herd (I'm down to only *cough* three notebooks, not including the one with the bad screen sitting under my desk, but that number will be one in a couple of weeks).</div>
I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-23224449704462067922011-06-04T22:13:00.000-05:002014-06-05T10:44:23.560-05:00Wedge<div class="separator" style="clear: both; text-align: center;">
<img border="0" src="http://2.bp.blogspot.com/-VeE7_cOC_EI/TertgTJgsnI/AAAAAAAAAVQ/bE2Hm5cmGfI/s400/AboutWedge.tiff" height="379" width="307" /></div>
I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com1tag:blogger.com,1999:blog-34526222.post-22429369057483393902009-03-28T22:01:00.004-05:002009-03-28T22:11:13.735-05:00The Devalued Prime Minister of a Devalued GovernmentThis video has been making the rounds (HT to <a href="http://speirs.org/2009/03/25/the-devalued-prime-minister-of-a-devalued-government/">Fraser Spiers</a>) and despite the speaker being a British conservative and me being basically a pinko Commie socialist, I agree with what Hannan says: you cannot spend your way out of recession or borrow your way out of debt.<div><br /><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/94lW6Y4tBXs&color1=0xb1b1b1&color2=0xcfcfcf&hl=en&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/94lW6Y4tBXs&color1=0xb1b1b1&color2=0xcfcfcf&hl=en&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object><br /></div><div>Maybe if conservatives here were more like Hannan and less interested in foisting a Christianist manifesto on the world, I'd pay more attention.<div><br /></div><div><br /></div></div>I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-62925319804672456522009-03-22T20:04:00.004-05:002009-03-22T20:09:14.038-05:00Heads on pikesIf all the events of the last few months haven't kindled some righteous indignation over the train wreck our economy is becoming, Matt Taibbi's <a href="http://www.rollingstone.com/politics/story/26793903/the_big_takeover">The Big Takeover</a> in the latest Rolling Stone should get your blood boiling. I wonder how our version of the storming of the Bastille will play out...I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-57954140679673108042009-01-11T09:49:00.004-05:002009-01-11T10:42:35.751-05:00It's been a busy weekComing back from two weeks of vacation, even with a mandatory shutdown between Christmas and New Year's Day, tasks piled up and the week was hectic. The new QA manager is floundering (she already has all her staff alienated), outsourcing our current system software to the China team continues (yes, this doesn't bode well), and the firefighting and political infighting continue. On the positive side, life outside of work is good and my autodidacticism continues as I work through ATL, WTL, and yes, even MFC (the Visual Studio 2008 vintage).<br /><br />My new Studio 17 notebook was sent back to Dell because IT ordered it with a Blu-ray drive (raising the price $150) and integrated video (saving $150), yielding a lackluster 3.1 on the Windows Experience Index:<br /><br /><a href="http://2.bp.blogspot.com/_O2WNW28W4VM/SWoJQF5NEMI/AAAAAAAAAJA/3BAuUWwnlWs/s1600-h/Studio+1735.bmp"><img id="BLOGGER_PHOTO_ID_5290050884364734658" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 230px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_O2WNW28W4VM/SWoJQF5NEMI/AAAAAAAAAJA/3BAuUWwnlWs/s320/Studio+1735.bmp" border="0" /></a> There are some things about this machine I do <strong>not</strong> like, primarily the touchpad and keyboard:<br /><ul><li>the keyboard includes a numeric keypad, something I never use</li><li>the <home> and <end> keys and the <page> and <page> keys are all side by side instead of stacked as they should be</li><li>the touchpad is from Alps and it doesn't work as smoothly as a Synaptics touchpad.</li><li>the <a href="http://en.wikipedia.org/wiki/Menu_key">Menu key</a> is missing from the keyboard, and it's something I use occasionally</li><li>the <a href="http://en.wikipedia.org/wiki/Windows_key">Windows key</a> sticks when you do <windows>E to bring up Explorer, for example: the moment you type an L, you lock the machine. This doesn't happen with an external keyboard, and I'm holding out hope Dell will fix it in an update: I can live with it for now (and complain on the Dell support boards).</li></ul><p>However, the display is big and beautiful, the system is fast (even with a 5400 RPM drive, which I'll shortly replace with a 7200 RPM drive), and there's room for a second internal hard drive (that's where the original 5400 RPM drive will go, probably to hold extra or backup VMs, other backups, and maybe a test partition for Windows 7 builds).</p>Since I got this thing to run Windows 7, do WPF development, and drive an external 1920x1200 monitor (and I'll be stuck with it for some time), I had IT exchange it for one with a regular DVD burner and dedicated graphics ($150). If they had bought me a refurbished MacBook Pro as I originally requested, it would have cost about the same and been faster (albeit with a smaller main screen). This all would have been simpler (and faster) if I had been given a budget and allowed to create the order myself.<br /><br />In other news, my <a href="http://www.pegasusimaging.com/">former employer</a> in Tampa is doing gangbusters: <a href="http://www.pegasusimaging.com/accusoftrelease.htm">two</a> <a href="http://www.pegasusimaging.com/tasmanrelease.htm">acquisitions</a> in 30 days in a bad recession. I regret burning that bridge: whatever problems there were in product management pale in comparison to the insanity at my current job, but my <a href="http://en.wikipedia.org/wiki/The_Scorpion_and_the_Frog">scorpion nature</a> wasn't quite kept in check when I was there. That, and I should never have taken the QA manager position. C'est la vie...<br /><p>But hey, at least I have a job, for now. In 9 days, the country is officially under new management, and I am hopeful President Obama will make the right decisions and form the right alliances and help set this nation on a course to realizing our potential. If nothing else, he can't possibly do worse than the idiots we've had running things for the last 8 years (last 28 years, actually).</p>I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-28736483496657111592009-01-05T22:54:00.006-05:002009-01-09T15:06:09.571-05:00More WTL resources<a href="http://www.gamedev.net/reference/programming/features/wtl1/"></a><span style="FONT-WEIGHT: bold">Using the Windows Template Library</span> articles by R. Mack<br /><ul><li><a href="http://www.gamedev.net/reference/programming/features/wtl1/">Part 1: Getting Started</a></li><li><a href="http://www.gamedev.net/reference/programming/features/wtl2/">Part 2: Windowing</a></li></ul>After a promising start which builds from an empty WinMain(), it peters out after a couple of examples. Still, it's worth reading to see how simple it is to start pulling in WTL bits.<br /><br /><br /><span style="FONT-WEIGHT: bold">WTL Makes UI Programming a Joy</span> articles (Zip files with a Word doc and zipped source) by Chris Sells, Dharma Shukla, and Nenad Stefanovic<br /><ul><li><a href="http://www.sellsbrothers.com/writing/WTLPart1.zip">Part 1: The Basics</a></li><li><a href="http://www.sellsbrothers.com/writing/WTLPart2.zip">Part 2: The Bells and Whistles</a></li></ul>Stefanovic is the creator of WTL, and while dated, these articles are worth reading to get a little deeper into WTL.<br /><br /><br /><a href="http://community.devpinoy.org/blogs/cvega/archive/2008/07/24/wtl-links.aspx">A page of WTL links</a> in the Philippines which includes Eamon Tuathail's humbling <span style="FONT-WEIGHT: bold">WTL Developer's Guide</span> in PDF: highly recommended.<br /><br /><br />Finally, a WTL tip: if you're like me, you build with Warning Level set to Level 4 (<span style="FONT-WEIGHT: bold">/W4</span>) and with Treat Warnings As Errors set to Yes (<span style="FONT-WEIGHT: bold">/WX</span>). To get rid of those <a href="http://msdn.microsoft.com/en-us/library/ttcz0bys.aspx">C4996</a> warnings, define <span style="FONT-WEIGHT: bold">_SECURE_ATL</span>.I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-60963122817052986892009-01-04T11:24:00.011-05:002009-01-04T13:41:17.503-05:00Getting started with WTLI've spent the holidays (re)learning about <a href="http://en.wikipedia.org/wiki/WTL">WTL</a>, so I thought I'd make a few notes as I went.<br /><br />I'm using Visual Studio 2008 Professional on Vista SP1, so if you're using <a href="http://msdn.microsoft.com/en-us/vstudio/bb725993.aspx">something else</a>, the details may be slightly different. The essentials will be the same, though.<br /><br />The first step is to make sure you have WTL on your machine with the App Wizard registered.<br /><br />The current version of WTL is 8.0, and it can be found on <a href="http://wtl.sourceforge.net/">SourceForge</a>, oddly enough. Just download the Zip version and extract the contents into a folder on your system (I used <span style="font-weight: bold;font-family:courier new;" >C:\WTL80</span>).<br /><br />WTL comes with a number of scripts to add WTL support to the App Wizard in Visual Studio, but 8.0 was released before Visual Studio 2008 came out, so you'll have to add the WTL support yourself. Fortunately, it's incredibly simple:<br /><ul><li>copy <span style="font-weight: bold;font-family:courier new;" >AppWiz\setup80.js</span> to <span style="font-weight: bold;font-family:courier new;" >AppWiz\setup90.js</span></li><li>open <span style="font-weight: bold;font-family:courier new;" >setup90.js</span> in a text editor and make the following changes:</li></ul><span style="font-size:85%;"></span><blockquote><span style="font-size:85%;">Compare: (<)C:\WTL80\AppWiz\setup90.js (6399 bytes) with: (>)C:\WTL80\AppWiz\setup80.js (6401 bytes)<br /><br />12c12<br />< // Setup program for the WTL App Wizard for VC++ 9.0 (Orcas) --- > // Setup program for the WTL App Wizard for VC++ 8.0 (Whidbey)<br />72,73c72,73<br />< strvc9key = "HKLM\\Software\\Microsoft\\VisualStudio\\9.0\\Setup\\VC\\ProductDir" strvalue =" WSShell.RegRead(strVC9Key);"> var strVC8Key = "HKLM\\Software\\Microsoft\\VisualStudio\\8.0\\Setup\\VC\\ProductDir";<br />> strValue = WSShell.RegRead(strVC8Key);<br />79,80c79,80<br />< strvc9key_x64 = "HKLM\\Software\\Wow6432Node\\Microsoft\\VisualStudio\\9.0\\Setup\\VC\\ProductDir" strvalue =" WSShell.RegRead(strVC9Key_x64);"> var strVC8Key_x64 = "HKLM\\Software\\Wow6432Node\\Microsoft\\VisualStudio\\8.0\\Setup\\VC\\ProductDir";<br />> strValue = WSShell.RegRead(strVC8Key_x64);<br />84c84<br /><> WScript.Echo("ERROR: Cannot find where Visual Studio 8.0 is installed.");<br />144,146c144,146<br />< strline = "Param=\" wizard_version =" 9.0\"> strLine += ".8.0";<br />> else if(strLine.indexOf("WIZARD_VERSION") != -1)<br />> strLine = "Param=\"WIZARD_VERSION = 8.0\"";<br /></span></blockquote>You only need to change all 8.0 instances to 9.0; all the other changes are ones I made to productize the script, because that's how I roll.<br /><br />Anyway, shut down Visual Studio 2008 if you have it running, run <span style="font-weight: bold;font-family:courier new;" >setup90.js</span>, start Visual Studio 2008, and create a new project.<br /><br />You will now see a WTL node under <span style="font-weight: bold;font-family:verdana;" >Other Languages\Visual C++</span>, right below <span style="font-weight: bold;font-family:verdana;" >Win32</span>:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_O2WNW28W4VM/SWD3I-DQ-HI/AAAAAAAAAI4/0RY4lfpO5nQ/s1600-h/WindowClipping.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 286px;" src="http://2.bp.blogspot.com/_O2WNW28W4VM/SWD3I-DQ-HI/AAAAAAAAAI4/0RY4lfpO5nQ/s400/WindowClipping.png" alt="" id="BLOGGER_PHOTO_ID_5287497696000669810" border="0" /></a><br />Go ahead and create a scratch project using the wizard and take a look at the code. WTL comes with a dozen samples, including some for Vista, so be sure to take a look at them as well.<br /><br />When you're ready to continue, head over to the <a href="http://www.codeproject.com/KB/wtl/">excellent series of WTL articles on CodeProject</a>, starting with Michael Dunn's <a href="http://www.codeproject.com/KB/wtl/wtl4mfc1.aspx">WTL for MFC Programmers</a> series.I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-26418650132139901662008-10-30T10:25:00.004-05:002008-10-30T11:47:49.453-05:00Application ManifestsI was bitten by an interesting problem with our service today.<br /><br />When I ran the service on a clean XP SP3 system, I got<br /><br /><span style="font-family:courier new;"></span><blockquote><span style="font-size:85%;"><span style="font-family:courier new;">The system cannot execute the specified program.</span><br /></span></blockquote><br />Googling this phrase, it implied we had a missing dependency (DLL), so I ran <a href="http://www.dependencywalker.com/">Dependency Walker</a> but found no missing dependencies.<br /><br />However, Dependency Walker did find an error, giving me another set of phrases to Google:<br /><br /><span style="font-family: courier new; color: rgb(255, 0, 0);font-size:85%;" ></span><blockquote style="font-family: verdana;"><span style="font-family: courier new; color: rgb(255, 0, 0);font-size:85%;" >Error: The Side-by-Side configuration information for "foo.exe" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001).<br />Warning: At least one delay-load dependency module was not found.<br />Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.<br /></span></blockquote>"Side-by-Side configuration information" is the clue that this is actually a problem with the application manifest. Now we're getting somewhere...<br /><br />As it turns out, the Visual Studio 2005 project was configured to have the linker generate the application manifest, but for some reason (I haven't root caused it yet), the manifest being generated is wrong: it specifies a dependency on the VC8 runtime, but the service is actually statically linked to the runtime to minimize dependencies.<br /><br />So, the reason we're seeing this vague error when we run the service is because the application manifest is horked. When I rebuilt the service without the application manifest, the problem "went away."<br /><br />The next step is to take a look at the manifest and see what it ways.<br /><br />You'd think looking at an application manifest would be simple: it isn't.<br /><br />Fortunately, the indispensable Kenny Kerr has written a tool which will display the application manifest: <a href="http://weblogs.asp.net/kennykerr/archive/2007/07/10/manifest-view-1-0.aspx">Manifest View</a>.I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-17484759086797795212008-10-24T09:54:00.006-05:002008-10-30T12:08:17.848-05:00Compare and contrast<a href="http://www.guardian.co.uk/world/2008/oct/24/sarah-palin-clothes">Sarah Palin says clothing budget row is sexist</a><br /><br />versus<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_O2WNW28W4VM/SQnpnP6QDvI/AAAAAAAAAGc/zL8sBnP_SL8/s1600-h/obama-shoes-400.jpg"><img style="margin: 0px auto 10px; display: block; text-align: left; cursor: pointer; width: 342px; height: 400px;" src="http://4.bp.blogspot.com/_O2WNW28W4VM/SQnpnP6QDvI/AAAAAAAAAGc/zL8sBnP_SL8/s400/obama-shoes-400.jpg" alt="" id="BLOGGER_PHOTO_ID_5262994500054159090" border="0" /></a><br /><br />Picture by Callie Shell, from an excellent Digital Journalist piece <a href="http://digitaljournalist.org/issue0810/callie-bp.html">here</a>.I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-1741732913145159212008-10-11T11:51:00.004-05:002008-10-11T12:52:27.480-05:00Why I'm voting for Barack ObamaWhile I lean so far to the left on most things that I'd be more at home in someplace like Boulder or Berkeley (perhaps), I can't think of any of the Republican candidates who were noteworthy.<br /><br />Rudy Giuliani: noun verb 9/11. He's an idiot, too, showing poor judgment with Kerik, his affairs, etc.<br /><br />Mike Huckabee: very personable, so long as you overlook his fundamentalism and the corruption when he was governor of Arkansas. Sorry, I have no tolerance for <span style="font-weight: bold;">any</span> religious fundamentalists: Christian, Muslim, Jewish, etc.<br /><br />Mitt Romney: the smartest of the bunch, and certainly he has some business credibility, but he was very quick to change his views to match what people want (and eerily reminiscent of a Stepford husband).<br /><br />Fred Thompson: please. An actor? Did we learn nothing from the disaster that was Reagan, worst president until W?<br /><br />On the Democratic side, I liked Kucinich (a lot) for saying the things that needed to be said, but he was nowhere near viable.<br /><br />I couldn't support Hillary Clinton because she voted for the invasion and occupation of Iraq (as did Biden). That, and I don't want another ruling family.<br /><br />I like Chris Dodd a lot - smart guy, good record - but his relationship with the insurance companies was a little uncomfortable.<br /><br />I like Bill Richardson for a number of reasons - record on foreign policy, record at the Department of Energy, he's governor of my favorite state, he isn't another white guy, etc. - and I was really pulling for him.<br /><br />I didn't care for Barack Obama at first: his lack of experience annoyed me immensely, and I couldn't understand why people were talking about him. Just like with John Edwards, he came from nowhere to national prominence without actually doing something noteworthy, and I'm sorry, but I still believe you have to pay your dues, get your scars, earn your experience.<br /><br />However, his choice of Biden addresses most of my concerns about experience (most), and Barry has earned my respect, which is no mean feat.<br /><br />Look, he's been campaigning for almost two years now, he's been all over the country, he's talked to thousands of people, and he's managed to stay civil, focused, and commanding. Unlike the bitter old white guy running against him.<br /><br />Barack Obama's campaign is and was much better run (ethically, financially, etc.). Both McCain and Clinton had poorly run campaigns during the primaries, and it doesn't speak well of their organizational abilities.<br /><br />Barack Obama is smarter, more even-tempered, and more ethical than John McCain. No contest here.<br /><br />Barack Obama did a <span style="font-weight: bold;">much</span> better job at picking his Vice President. Much, <span style="font-weight: bold;">much</span> better. I have always liked and respected Biden (apart from the Iraq vote).<br /><br />Finally, Barack Obama is younger and healthier than John McCain, and the thought of Sarah Palin being anywhere near the oval office scares the hell out of me.<br /><br />It should scare the hell out of everyone.<br /><br />Look, we have some serious, <span style="font-weight: bold;">serious</span> problems:<br /><ul><li>an impending worldwide recession, possibly even a depression</li><li>the end of cheap oil, in a culture built <span style="font-weight: bold;">entirely</span> on cheap oil and with no viable alternatives in sight<br /></li><li>global warming, massive habitat destruction, and an increasing extinction rate<br /></li><li>the impending death of the seas from rising CO2 and increasing ocean acidification</li><li>religious fundamentalists, here and abroad</li></ul> This is some terrifying stuff, and ignoring it, jumping in the SUV, and going down to the mall to load up on Cheetos and DVDs isn't going to change it.<br /><br />I'm looking for someone who speaks to our better natures, who can inspire us to work together to make the world a better place, to lead us into the 21st century and away from fear, poverty, war, and ignorance.<br /><br />John McCain is not that person.<br /><br />Barack Obama is.<br /><br />So get out there and vote. It <span style="font-weight: bold;">really </span>is likely to be the most important election of your life.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_O2WNW28W4VM/SPDnaUYg4-I/AAAAAAAAAFM/5h7U4rh4qFw/s1600-h/normalvoting.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_O2WNW28W4VM/SPDnaUYg4-I/AAAAAAAAAFM/5h7U4rh4qFw/s400/normalvoting.jpg" alt="" id="BLOGGER_PHOTO_ID_5255955204475511778" border="0" /></a>I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com2tag:blogger.com,1999:blog-34526222.post-86390974637017107482008-10-03T09:50:00.003-05:002008-10-03T10:11:39.178-05:00Using devcon to update a driverIf you work with drivers, it quickly becomes a <a href="http://www.thefreedictionary.com/Pain+In+the+Ass">PITA</a> updating them, although I've gotten quite fast at doing this on XP, thanks to muscle memory.<br /><br />(Vista doesn't change the focus properly in the Device Manager wizard, by the way, so my muscle memory doesn't work on Vista.)<br /><br />Anyway, it turns out there's a tool available from Microsoft called <a href="http://support.microsoft.com/kb/311272">devcon</a>: it lets you do pretty much everything from the command line that Device Manager does, and then some.<br /><br />For example, here I'm using it to update a driver:<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_O2WNW28W4VM/SOY1p_xH8_I/AAAAAAAAAE8/rqerovaxWxM/s1600-h/devcon.bmp"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_O2WNW28W4VM/SOY1p_xH8_I/AAAAAAAAAE8/rqerovaxWxM/s400/devcon.bmp" alt="" id="BLOGGER_PHOTO_ID_5252945010982646770" border="0" /></a><br /><br /><br /><br /><br /><br /><br /><br /><br />By the way, the grep I'm using is from <a href="http://unxutils.sourceforge.net/">UnxUtils</a>.I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-24356992602697011852008-10-02T10:05:00.006-05:002008-10-03T08:38:47.722-05:00Excess commenting considered harmfulWith apologies to <a href="http://en.wikipedia.org/wiki/Edsger_dijkstra">Dijkstra</a>.<br /><br />I'm a big fan of comments, provided they're in the right place and convey the correct information.<br /><br />While the near-total lack of comments in my current codebase irritates me, I also come across stuff like this in some of our common code which is utterly pointless:<br /><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >//----------------------------------------------</span><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >// File: spizzbar.cpp</span><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >// Author: Earnest Programmer</span><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >// Created: 8/05/2008</span><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >// Purpose: Implements an API that will allow...<br /></span><span style="color: rgb(255, 0, 0);font-family:courier new;" >//----------------------------------------------</span><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >// Changed: never</span><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >//----------------------------------------------</span><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" ></span><br /><br />Let's start with the lines of dashes which separate the comment block into regions:<br /><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >//----------------------------------------------</span><br /><br />I'll admit to still occasionally doing such things, and I'd argue in the case where you have a small set of headers (2, in the case of our current SDK) and the headers are likely to be the documentation users of the SDK are most likely to see, you can get away with such cruft, but 99.9% of the time, it's pointless (and I really need to stop).<br /><br /><br />Next, we have a line which tells us the name of the file:<br /><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >// File: spizzbar.cpp</span><br /><br />Umm, if we're reading the code, it's already in a file and it already has a file name and it came from version control, which can tell us all the different names this file has ever had, so this is also pointless.<br /><br /><br />Next, we have a line which tells us the name of the original author of the file:<br /><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >// Author: Earnest Programmer</span><br /><br />Aw, your mom sure must be proud. However, this information is also in the version control history, so why are you cluttering up the code with it?<br /><br /><br />Next are a couple of lines which tell us when the file was created and last modified:<br /><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >// Created: 8/05/2008<br />...</span><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >// Changed: never</span><br /><br />You can guess where this is going, so repeat after me: "this information is also in the version control history, so why are you cluttering up the code with it?" Nicely done, thanks.<br /><br /><br />Finally, we come to some lines which purport to add value:<br /><br /><span style="color: rgb(255, 0, 0);font-family:courier new;" >// Purpose: Implements an API that will allow...<br /></span><br />So let's see:<br /><ul><li>it's a .cpp file, so I'm pretty sure it's implementing something.</li><li>the API is in the matching header (presumably spizzbar.h), so the purpose of the API should already be documented there</li></ul><br />In conclusion, there's no value here: the <span style="font-weight: bold;">entire</span> comment block is useless.<br /><br />"So what's the big deal?", you may ask.<br /><br />Fair enough: let's go through this.<br /><br />Comments are no different than code: they have to be maintained, and useless comments are like dead code. Linkers usually strip dead code, but programmers spend most of their time <span style="font-weight: bold;">reading</span> code, so we're optimizing for that scenario.<br /><br />Also, the <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself">DRY</a> principle says you want to abhor duplication, so if you document a function in the header, you don't need to copy the documentation to the implementation. Otherwise, you'll have to maintain comments in both locations.<br /><br />Finally, like every line of code, you should look at every comment and ask yourself: If I ripped out this comment and I or someone else came back in six months to look at this code, could we still understand the code? If the answer is yes, strip the comment.<br /><br />I believe part of our focus as software developers should be on writing as <span style="font-weight: bold;">little</span> code as possible - most of the cost of software development is maintenance, and the more you have to maintain, the more it costs - and this extends to comments.<br /><br />As the phrase misattributed to Einstein goes:<br /><blockquote>Everything should be made as simple as possible, but no simpler.<br /></blockquote>I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-56626184773069270052008-09-29T13:57:00.002-05:002008-09-29T14:09:01.947-05:00Phoning it in<blockquote></blockquote>Nice juxtaposition <a href="http://thecaucus.blogs.nytimes.com/2008/09/29/palin-says-she-is-looking-forward-to-debate">here</a>:<br /><blockquote>“Some people have criticized my decision to put my country first, but I will never, ever be a president who sits on the sidelines when this country faces a crisis,’’ said Mr. McCain. And Mr. McCain, who spent this weekend in Washington working the phones, but did <a href="http://thecaucus.blogs.nytimes.com/2008/09/27/back-in-town-but-not-on-capitol-hill/">not actually return to Capitol Hill </a>, said: “I know that many of you have noticed, but it’s not my style to simply ‘phone it in.’ ”<br /></blockquote>Priceless.<br /><br />Why are we even having an election? It's not like there's a choice.I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-46087582806788500952008-09-29T09:46:00.002-05:002008-09-29T09:52:54.265-05:00Roads to MadnessYep, another <a href="http://en.wikipedia.org/wiki/The_Warning_%28Queensr%C3%BFche_album%29">Queensrÿche</a> song title.<br /><br />So now I'm running the scrum planning meeting, and the first point of contention - after me internally going "WTF?!" and trying not to show how pissed I was - was whether we really need to have the product manager at the meeting.<br /><br />Yeah, let's leave the stakeholder out: that worked so well in the past.I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-18364032026982129752008-09-27T08:03:00.004-05:002008-09-27T08:21:32.884-05:00Last Time in ParisI think I'll continue my new trend of song titles for post titles, this time a <a href="http://en.wikipedia.org/wiki/Last_Time_in_Paris">single</a> from Queensrÿche.<br /><br />I just read a great <a href="http://blogs.msdn.com/progressive_development/archive/2008/09/16/developing-international-software-is-really-really-hard-we-need-a-brand-new-version.aspx">post on localization</a> at the always-excellent <a href="http://blogs.msdn.com/progressive_development/">Progressive Development</a> blog with some good advice and a very nifty tip I hadn't come across before: use a <a href="http://en.wikipedia.org/wiki/Pseudolocalization">pseudolocalized</a> build for testing so you can tell<br /><ul><li>which strings are not still in resources and localized</li><li>which strings are clipped</li></ul>This last item is <span style="font-weight: bold;">incredibly</span> useful. Thanks again, James (aka Maven).I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-21986842462578097982008-09-25T19:57:00.003-05:002008-09-28T22:48:07.099-05:00Working ManSo now I'm using <a href="http://en.wikipedia.org/wiki/Working_Man">Rush song titles</a> for my posts: interesting...<br /><br />Work has become very, um, challenging.<br /><br />The first challenge has been the resignation of my boss, the director of software development and the person most directly responsible for me taking the job. After two years of struggling to get the software department aligned with a product development process that can best be described as chaotic, after telling senior management time and again that the demands placed on the software organization exceeded our capacity by almost 200%, even with the most optimistic estimates, I guess he got tired of pushing the rock up the hill.<br /><br />With his departure almost three weeks ago now, I've been drafted to assist my boss's boss, the VP of product development, as we first try to figure out where we are with all the products - all 67 of them.<br /><br />Seriously. <span style="font-weight: bold;">67</span> products.<br /><br />You have to page down three times to get to the bottom of our CruiseControl page, and that's just for the products being actively maintained. It's insane.<br /><br />We then have to figure out how to take steps to continue product development while also going back and fixing all the shortcuts and bandaids and just plain screwups we made getting the products out the door as quickly as possible. This week, that involved 4 solid days of meetings - 9:00 AM to 6:00 PM - with test-driven requirements, planning poker, etc. Grueling, especially since I had to lead all the meetings and I was the one standing at the board writing down all the use cases and leading everyone through this. Ugh.<br /><br />I've also been going to <span style="font-weight: bold;">way</span> too many meetings with senior management, including some with the CEO. I now believe all the stories I've heard about people leaving meetings with the CEO's spittle on their face (from him screaming at them). The CEO hasn't screamed at me (yet), but he definitely has anger management issues. I want to get back to where I don't interact with him or any of the other senior staff as quickly as possible, but that may be a while: we have yet to interview anyone for VP of software engineering.<br /><br />On the positive side, we finally got some C++test licenses, and it's a very interesting tool (not cheap, though). More on C++test later...<br /><br />So, at this point, I'm hating on this job. I've got a couple of things lined up, including a company in Vero Beach which looks like a great fit if they pay enough and if they'll go for a couple of days a week of telecommuting. And yes, I <span style="font-weight: bold;">do</span> get work done when I'm sitting out by the pool with the laptop, thank you very much!<br /><br />I'm also looking longingly at some jobs out in Reno (gambling systems) and in Grass Valley, CA (video, much better), but that's mainly to keep me sane. We just moved into a big house in Rockledge with an awesome pool, so Barbara and the kids will probably miss me if those turn out to be viable options, but still... Grass Valley is only a couple of hours from San Francisco, and Reno is an extra hour. Intriguing, and I've had this itch to go west for about 5 years now, and it keeps getting stronger.<br /><br />Anyway, this is getting long, and I need to get home. I'd like to close with a shout out to my friend who cannot be named, and I hope this post gets him the review he's been waiting for. With that raise he's sure to get, he can probably afford to upgrade his monthly cable to HD and maybe have a little left over to buy some fancy treats for the dog.<br /><br />I kid, I kid...I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-39663450520618178942008-09-25T18:58:00.004-05:002008-09-28T22:48:39.312-05:00Breaking the SilenceReferences to <a href="http://en.wikipedia.org/wiki/Breaking_the_Silence_%28Queensr%C3%BFche_song%29">Queensrÿche songs</a> aside, it's been a while since my last post.<br /><br />I was in the middle of composing a post, in fact, when I got the news about <a href="http://areyoutalking.blogspot.com/2008/06/angie.html">Angie</a>, and we're all still dealing with the loss of someone who was - in every real sense of the term - a member of our family.<br /><br />Three months later, it's still hard to accept that she's gone, but I'm <span style="font-weight: bold;">very </span>grateful for the time we did manage to spend together, and I'm especially glad she was able to see Nate grow up into a truly wonderful - although sometimes frustrating! - young man. I'm glad that she was also able to know Jen and Julianne and all the other members of this interesting extended family of ours, and we all miss her dearly.<br /><br />One good thing, if one can say that, to come of all this is that we reconnected with Angie's mom Judy and were also finally able to meet her good friends Kyle and Kelly and meet other friends and family at the service. It was difficult afterwards being in this great little house she was living in at the time of her death, seeing all these traces of her, even catching scents which triggered memories, but although her life ended far too soon, she definitely was loved and will be for as long as we all remember her.<br /><br />Life moves on, though, with no regard to whether you want it to, so don't take it for granted.<br /><br />Angie, we love you and we miss you.I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-76151850976772726122008-06-05T09:19:00.010-05:002008-09-29T14:13:49.531-05:00Snowflake<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_O2WNW28W4VM/SEf5wj2CC2I/AAAAAAAAAEE/g3i4XdpByDQ/s1600-h/snow-leopard.jpg"><img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://2.bp.blogspot.com/_O2WNW28W4VM/SEf5wj2CC2I/AAAAAAAAAEE/g3i4XdpByDQ/s400/snow-leopard.jpg" alt="Original image from http://www.focusmag.gr/id/files/2831/snow-leopard.jpg" id="BLOGGER_PHOTO_ID_5208406106728172386" border="0" /></a><br /><br />So the <a href="http://www.macrumors.com/2008/06/04/mac-os-x-10-6-called-snow-leopard-all-cocoa/">current rumor</a> is that Mac OS X 10.6 - "Snow Leopard" - will be announced at WWDC in Monday's "<a href="http://en.wikipedia.org/wiki/Stevenote">Stevenote</a>" and ship at the beginning of 2009.<br /><br />Given that I've started on Snowflake - interesting name alignment, considering I thought of it the day before I heard about 10.6 - it would seem I've got six months to wrap up this foray into <a href="http://daringfireball.net/2005/10/the_life">The Life</a>.<br /><br />I have less than <a href="http://gusmueller.com/blog/archives/2005/12/25.html">1,068 days</a> and a <a href="http://support.apple.com/specs/powerbook/PowerBook_G4_15-inch_1_67-1_5GHz.html">3-year-old G4 PowerBook</a>, so it seems I have my work cut out for me...I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-18438261659223634382008-06-04T15:57:00.003-05:002008-06-06T16:18:10.015-05:00Strengths and weaknesses<a href="http://www.nytimes.com/2008/06/04/us/04evolution.html">Good article</a> in the NY Times on a new creationist tactic. The opening line is great (emphasis mine):<br /><br /><blockquote>Opponents of teaching evolution, <span style="font-weight: bold;">in a natural selection of sorts</span>, have gradually shed those strategies that have not survived the courts.<br /></blockquote><br />Heh.<br /><br />Creationists are really after a unified belief system - "God and/or the Bible explains everything" - kinda like science has (somewhat tongue-in-cheek) the goal of a <a href="http://en.wikipedia.org/wiki/Theory_of_Everything">Theory of Everything</a>.<br /><br />The difference, of course, is that science is <span style="font-weight: bold;">always</span> willing to throw out the current explanation and replace it with a better one <span style="font-style: italic;">provided the new theory stands up to experimental verification</span>. There might be some resistance at first - scientists are people, after all, with egos and prejudices fully intact - but facts will prevail when the dust settles.<br /><br />If you want to believe God put everything in place 6,500 years ago and pressed the Start button, that's all well and good, but what can you do to <span style="font-weight: bold;">prove</span> (i.e, <a href="http://wordnet.princeton.edu/perl/webwn?o2=&o0=1&o7=&o5=&o1=1&o6=&o4=&o3=&s=prove&i=4&h=000000000#c">test</a>) it?<br /><br />You can't, and the unified belief system sure as hell doesn't explain something like bacteria evolving to become drug-resistant, does it?I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-61716747748617888512008-06-04T14:00:00.004-05:002008-06-06T16:18:44.270-05:00Repairing the Damage, Before Roe<a href="http://www.nytimes.com/2008/06/03/health/views/03essa.html">Good essay</a> in the NY Times today on that least controversial of topics: abortion. The last two paragraphs make their point:<br /><br /><p></p><blockquote><p> It is important to remember that Roe v. Wade did not mean that abortions could be performed. They have always been done, dating from ancient Greek days. </p><p> What Roe said was that ending a pregnancy could be carried out by medical personnel, in a medically accepted setting, thus conferring on women, finally, the full rights of first-class citizens — and freeing their doctors to treat them as such. </p></blockquote><br />I'll add that given my gender, I believe I'm entitled to my opinions on the subject but without much ethical ground to <span style="font-weight: bold;">impose</span> them.<br /><br />'Nuff said.I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-78183342525106303552008-05-27T08:56:00.003-05:002008-06-06T16:19:18.278-05:00A couple of observationsWhatever your politics, I offer a couple of observations for consideration:<br /><br />John McCain's limited, highly controlled access to his medical records is probably a good indicator of how open his administration would be. Ditto for releasing tax returns months after Clinton and Obama, the latter being first (and least affluent of the three).<br /><br />Barack Obama's organized and disciplined campaign is probably a good indicator of how organized and disciplined his administration would be. In the same vein, Hillary Clinton's campaign reflects poorly on her administrative skills.I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com2tag:blogger.com,1999:blog-34526222.post-11554893634643904472008-05-27T08:23:00.003-05:002008-06-06T16:19:47.557-05:00Okay, so we get some things right...<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_O2WNW28W4VM/SDwMN-nvbXI/AAAAAAAAAD0/EZKYFCoZTQc/s1600-h/HiRISE_PHX_Lander.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_O2WNW28W4VM/SDwMN-nvbXI/AAAAAAAAAD0/EZKYFCoZTQc/s400/HiRISE_PHX_Lander.png" alt="" id="BLOGGER_PHOTO_ID_5205048703620967794" border="0" /></a><br /><br />More info here:<br /><br /><a href="http://www.planetary.org/blog/article/00001464/">OMG!! Parachute!!!! Photo!!!!!!</a><br /><br />Too frackin' cool...I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0tag:blogger.com,1999:blog-34526222.post-6606916111570747262008-05-13T13:30:00.002-05:002008-09-28T22:49:18.381-05:00Ha!<a href="http://www.guardian.co.uk/science/2008/may/12/peopleinscience.religion">Childish superstition: Einstein's letter makes view of religion relatively clear</a><br /><br />No more being subjected to that "Science without religion is lame, religion without science is blind." quote. 'Nuff said.I, Robothttp://www.blogger.com/profile/08627810939954460851noreply@blogger.com0