<?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-1965384389652880237</id><updated>2012-05-29T14:15:10.614-07:00</updated><title type='text'>David Nesting</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1965384389652880237.post-9136404404269147079</id><published>2011-11-06T06:44:00.000-08:00</published><updated>2012-05-07T10:20:12.063-07:00</updated><title type='text'>Project: Wireless solar-powered garden moisture sensor</title><content type='html'>We recently built a box garden in our back yard, and we integrated it into the yard's existing irrigation system. &amp;nbsp;Unfortunately tuning the amount of water it should receive was somewhat clumsy, and it occurred to me that a sensor monitoring the moisture of the soil would be helpful in ensuring our garden gets the right amount of water.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Wireless, solar-powered&lt;/li&gt;&lt;li&gt;Measures soil moisture (dielectric constant method)&lt;/li&gt;&lt;li&gt;Measures soil temperature&lt;/li&gt;&lt;li&gt;Measures solar panel voltage&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Hardware cost: about $125 (+$25-30 for the hardware to program the XBee)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note that this post does not discuss the "base station" side of the wireless system. &amp;nbsp;I'll follow up with a separate post about that.&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Hardware&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Parts&lt;/b&gt;&lt;br /&gt;I chose XBee because I have an established XBee network, and I'm familiar with the devices and they seem to be power-efficient. &amp;nbsp;The XBee also has four analog-to-digital converters built in, so I also decided to try building this without a microcontroller at all, to further save power. &amp;nbsp;This meant all of my sensors had to be analog.&lt;br /&gt;&lt;br /&gt;For power, if I have the XBee sleep for 30 seconds at a time, it should be able to run at less than 3-5mA on average (1.6mA for the device while it's sleeping, and less than 40mA while it's awake). &amp;nbsp;For the battery, we should have enough energy to last several days without sunlight, and when it's sunny we should be able to fully recharge in a day or so. &amp;nbsp;I ended up with a 1300mAh LiPo battery (10 days at 5mA) and a 2W solar panel (333mA at 6V).&lt;br /&gt;&lt;br /&gt;For the soil moisture sensor, I wanted something analog, maintenance-free and something I could bury. &amp;nbsp;There are many sensors (especially DIY sensors) of the "stick two nails into the soil" variety. &amp;nbsp;These are unreliable and corrode over time. &amp;nbsp;Vegetronix makes a VG400 and VH400 analog sensor that measures the dielectric constant of the soil. &amp;nbsp;I went with the VH400 sensor because I figured I wanted better precision at the expense of a little bit of power.&lt;br /&gt;&lt;br /&gt;Parts list (proto-board friendly approach):&lt;br /&gt;&lt;ul style="clear: left;"&gt;&lt;li&gt;&lt;a href="http://vegetronix.com/Products/VH400/"&gt;Vegetronix VH400 soil moisture sensor&lt;/a&gt; ($34.95), analog 0-3V output (also consider the VG400)&lt;/li&gt;&lt;li&gt;Insulated thermistor (&lt;a href="https://www.adafruit.com/products/372"&gt;Adafruit&lt;/a&gt; $4.00), 10k ohms&amp;nbsp;&lt;/li&gt;&lt;li&gt;XBee 2mW Wire Antenna - Series 1 or 2 (ZB) (&lt;a href="http://www.sparkfun.com/products/10414"&gt;SparkFun&lt;/a&gt;&amp;nbsp;$25.95)&lt;/li&gt;&lt;li&gt;XBee break-out, to mate the XBee with a breadboard or proto board&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Breakout Board for XBee Module (&lt;a href="http://www.sparkfun.com/products/8276"&gt;SparkFun&lt;/a&gt;&amp;nbsp;$2.95)&lt;/li&gt;&lt;li&gt;2x&amp;nbsp;2mm 10pin XBee Socket (&lt;a href="http://www.sparkfun.com/products/8272"&gt;SparkFun&lt;/a&gt;&amp;nbsp;$2.00)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;XBee computer interface for programming, either XBee Explorer USB (&lt;a href="http://www.sparkfun.com/products/8687"&gt;SparkFun&lt;/a&gt; $24.95), or XBee FTDI break-out (&lt;a href="http://www.adafruit.com/products/126"&gt;Adafruit kit&lt;/a&gt; $10.00) and FTDI cable (&lt;a href="http://www.adafruit.com/products/70"&gt;Adafruit&lt;/a&gt; $20.00)&lt;/li&gt;&lt;li&gt;USB LiPoly Charger - Single Cell (&lt;a href="http://www.sparkfun.com/products/10161"&gt;SparkFun&lt;/a&gt; $14.95, &lt;a href="http://www.adafruit.com/products/390"&gt;Adafruit&lt;/a&gt; $20.00)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Note: The SparkFun charger comes set to 5v. &amp;nbsp;The selection jumper (a solder blob) must be removed and jumpered to 3.3v for the Xbee.&lt;/li&gt;&lt;li&gt;Note: The two chargers linked above are different. &amp;nbsp;The Adafruit charger would probably require the "XBee Explorer Regulated" (see links in the substitutions paragraph below).&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;LiPo battery (&lt;a href="http://www.sparkfun.com/products/8483"&gt;SparkFun&lt;/a&gt; 2000mAh $16.95, &lt;a href="https://www.adafruit.com/products/258"&gt;Adafruit&lt;/a&gt; 1300mAh $12.00)&lt;/li&gt;&lt;li&gt;Solar Panel, 6V 2W, weather-resistant (&lt;a href="https://www.adafruit.com/products/200"&gt;Adafruit&lt;/a&gt; $25.00)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;This could probably be lower power, but this was the only one I could find that was also weather and UV resistant.&lt;/li&gt;&lt;li&gt;Pay attention to the connector on the charger above. &amp;nbsp;You may also need to grab a mini USB cable, for instance, and solder it to the solar panel.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Break Away Headers - Straight (&lt;a href="http://www.sparkfun.com/products/116"&gt;SparkFun&lt;/a&gt;&amp;nbsp;$2.50) -- I always keep some of these around because I use them a lot when mating break-out boards to breadboards.&lt;/li&gt;&lt;li&gt;Breadboard or proto board&lt;/li&gt;&lt;ul&gt;&lt;li&gt;I started with: &amp;nbsp;Breadboard Clear Self-Adhesive (&lt;a href="http://www.sparkfun.com/products/9567"&gt;SparkFun&lt;/a&gt;&amp;nbsp;$5.95)&lt;/li&gt;&lt;li&gt;And then transferred everything to:&amp;nbsp;ProtoBoard - Rectangle 3" (&lt;a href="http://www.sparkfun.com/products/8815"&gt;SparkFun&lt;/a&gt; $4.50)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Consider also getting the female complement to the Break Away Headers above to avoid making some of the connections permanent.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;A weather-proof case, e.g.:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Small waterproof OtterBox (&lt;a href="http://www.adafruit.com/products/340"&gt;Adafruit&lt;/a&gt; $10.00)&lt;/li&gt;&lt;li&gt;SparkFun Project Case - Black (&lt;a href="http://www.sparkfun.com/products/8601"&gt;SparkFun&lt;/a&gt; $9.95)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Resistors for three voltage dividers (I used a mix of what I had handy). &amp;nbsp;The XBee only measures up to 1.2v.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;3.0v -&amp;gt; 1.2v for measuring the moisture sensor (I used a 6.8k and two 5.6k in series)&lt;/li&gt;&lt;li&gt;3.3v + 10k ohm thermistor -&amp;gt; 1.2v (I used 3.3k)&lt;/li&gt;&lt;li&gt;6v -&amp;gt; 1.2v for measuring solar panel voltage (I used a 3.3k and two 6.8k in series)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Substitutions are possible. &amp;nbsp;The battery charger just needs to be able to accept the voltage provided by the solar panel, and must be compatible with whatever battery you're using. &amp;nbsp;The charger should permit simultaneous powering of your circuit while charging (or not), and should provide a regulated 3.3v output. &amp;nbsp;If you can't get a regulated output, substitute something like the "XBee Explorer Regulated (&lt;a href="http://www.sparkfun.com/products/9132"&gt;SparkFun&lt;/a&gt; $9.95)" for the Xbee break-out board and be aware that the pins on the XBee Regulated are different from SparkFun's break-out board.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Assembly&lt;/b&gt;&lt;br /&gt;Here's a basic breadboard arrangement of the above:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-x6UBXPpmxUI/TrYFQihxbbI/AAAAAAAACRc/hCThA5d8-Xs/s1600/garden-bread.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" src="http://3.bp.blogspot.com/-x6UBXPpmxUI/TrYFQihxbbI/AAAAAAAACRc/hCThA5d8-Xs/s320/garden-bread.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The LiPo charger is the red component at the top, and has the "SYS" or "Project" lines connected to the breadboard as shown (inside rail is positive, outside is ground). &amp;nbsp;The third wire on the left side of the charger connects to the solar panel as well, though you could conceivably connect it to the battery's positive terminal if you'd rather see battery voltage instead. &amp;nbsp;The solar panel then connects to the LiPo charger (not depicted).&lt;br /&gt;&lt;br /&gt;The two-port screw terminal connects to the thermistor. &amp;nbsp;Orientation doesn't matter. &amp;nbsp;The four-port screw terminal connects to the VH400 sensor. &amp;nbsp;As depicted here, port 1 is the signal (black wire of the VH400), port 3 is the supply voltage (red) and port 4 is ground (bare).&lt;br /&gt;&lt;br /&gt;I strongly suggest modifying this approach to power the VH400 from the XBee's ON pin, so that it's only powered when the XBee is awake. &amp;nbsp;The XBee is not guaranteed to supply a full 3.3v from this pin, so you may also need to use a transistor to power the VH400 from Vcc. &amp;nbsp;The layout above is what I ended up doing, though.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Software/Configuration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since the node itself has no microcontroller, I only needed to be concerned about (a) configuration of the XBee, and (b) the software on the server side to interpret and record the data.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;XBee Configuration&lt;/b&gt;&lt;br /&gt;I'm using a Series 2 (ZB) XBee module, so the instructions below might vary if you're using something different. &amp;nbsp;I'm not taking advantage of any of the Zigbee features of the Series 2, so the Series 1 XBees should work fine (and they're cheaper). &amp;nbsp;Use the XBee Explorer USB or FTDI adapter to connect the XBee to your computer, and use XCTU to flash the 'router' firmware onto the XBee. &amp;nbsp;Search the web for tutorials on obtaining and using XCTU with XBee. &amp;nbsp;The 'router' firmware will give you a flexible set of features. &amp;nbsp;The 'end device' firmware will automatically put the XBee in a cyclic sleep mode, which is a pain to work with. &amp;nbsp;With the right firmware in place, you can use XCTU or a serial terminal program to configure the XBee. &amp;nbsp;You may want to start with "ATFR" or "ATRE" to reset the XBee's configuration to factory defaults. &amp;nbsp;After each set of commands, you'll probably also want to do an "ATWR" to write your settings to non-volatile memory.&lt;br /&gt;&lt;br /&gt;First, let's identify the module:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ATNI "GARDEN"&lt;br /&gt;ATDH&lt;br /&gt;ATDL&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;ATDH and ATDL will give you the upper and lower 32-bits of the node's 64-bit address. &amp;nbsp;Record these for later. &amp;nbsp;Now let's configure the ADIO pins to be analog inputs (2).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ATD0 2&lt;br /&gt;ATD1 2&lt;br /&gt;ATD2 2&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And let's have the XBee periodically report them (say, every 5s (0x1388 ms)). &amp;nbsp;We leave the destination address defaulted to 0, which will cause the samples to be sent to the XBee coordinator (our base station).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ATIR 1388&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Since my network is encrypted, I also need to set an encryption key and enable encryption before this will work. &amp;nbsp;Skip setting KY and EE unless you need to.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ATKY 0011223344556677&lt;br /&gt;ATEE 1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;A few seconds later, the XBee should be joined to the network and transmitting samples to your coordinator. &amp;nbsp;Verify that you're receiving these before continuing. &amp;nbsp;Once the XBee seems to be reliably sending its analog samples, there's a few more changes we can make to reduce its power consumption.&lt;br /&gt;&lt;br /&gt;First, we can reduce the transceiver power. &amp;nbsp;By default, the PL setting is at full transmit power (4), and the PM receive boost setting is enabled (1). &amp;nbsp;Try reducing these as much as you can, while still allowing you to receive messages. &amp;nbsp;You may need to do this once your device is installed in its final home.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ATPL 0&lt;br /&gt;ATPM 0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Finally, we can put it to sleep between samples. &amp;nbsp;I have mine set to wake every 30s, but 1 to 5 minutes might be acceptable too, and will extend the battery life. &amp;nbsp;The time spent asleep is the product of the SP value (in 10ms increments up to 2800ms (0xaf0)) and SN (a simple multiplier). &amp;nbsp;We'll also tell it to stay awake for only 100ms (0x64).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ATSN 1&lt;br /&gt;ATSP AF0&lt;br /&gt;ATST 64&lt;br /&gt;ATSO 4&lt;br /&gt;ATSM 4&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After sending the ATSM 4 command, the XBee will start sleeping as instructed. &amp;nbsp;Your ability to make further configuration changes will be hampered. &amp;nbsp;If you're using XCTU, you'll get an error trying to send anything while the XBee is sleeping. &amp;nbsp;While XCTU is giving you this error, you can wake the XBee up by grounding the RST pin, at which point XCTU should discover it again. &amp;nbsp;Alternatively, you can make your changes remotely via another XBee (using the "remote AT" API), which will buffer commands until the XBee wakes up and checks in with its parent node. &amp;nbsp;You may also have success using ATSM 5, and using the wake pin feature to keep it awake while you're messing with it. &amp;nbsp;I haven't tried that.&lt;br /&gt;&lt;br /&gt;You'll want to use the same (or greater) SN and SP values for the parent XBee node (either the coordinator, or an upstream router). &amp;nbsp;Otherwise, the parent node will forget about the child since it will be asleep so much, causing you to lose commands that you might want to send to it, and requiring the child to do a more expensive join to the network.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Base Station Software&lt;/b&gt;&lt;br /&gt;On the receiving end, you'll need another XBee and a computer interface (similar to what you needed to program the XBee above) acting as a controller. &amp;nbsp;With the XBee accessible by serial port, and in API mode, you can adapt &lt;a href="http://fastolfe.net/2011/garden-sensor/garden-base.py.txt"&gt;this Python script&lt;/a&gt; to receive samples.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Results&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The graphs below should have live data, constructed with RRDtool. &amp;nbsp;(Essentially, I just used the sample Python script above to execute an 'rrdtool update' command that adds all three measurements to an RRD file that I can then graph.) &amp;nbsp;If there are gaps in the data (red lines), note that I'm still tuning the solar panel placement.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update 2012-05-07: &lt;/b&gt;After about a year in operation, I've stopped getting readings. &amp;nbsp;I suspect the battery has died. &amp;nbsp;Until I get it working the graphs below will be blank or just give you outside temperatures (measured separately).&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://brie-david.com/sensors/garden-temp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="111" src="http://brie-david.com/sensors/garden-temp.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://brie-david.com/sensors/garden-moisture.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="111" src="http://brie-david.com/sensors/garden-moisture.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://brie-david.com/sensors/garden-solar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="111" src="http://brie-david.com/sensors/garden-solar.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Learnings&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The VH400 was an unnecessary power expense. &amp;nbsp;I think I could have gotten by with the VG400 and saved a lot of power in the process (~7mA versus 0.6mA).&lt;/li&gt;&lt;li&gt;The VH400 could have been driven from the XBee's ON pin, so that it was only consuming current when the XBee was awake. &amp;nbsp;This is undoubtedly the biggest power drain.&lt;/li&gt;&lt;li&gt;Cold solder joints will haunt you when deploying something like this someplace with lots of temperature variation.&lt;/li&gt;&lt;li&gt;Solar panel placement is important. &amp;nbsp;Despite getting a lot of California sun during the day, I ended up getting about half a day of charge out of my solar panel each day. &amp;nbsp;I'm still tuning this, given that my garden is growing up all around and finding a place without shadows is difficult.&lt;/li&gt;&lt;li&gt;Some way to monitor battery voltage would have been nice. &amp;nbsp;There's one more ADIO port on the XBee that could be used for this, but the LiPo charger I used didn't have an easy way to access the battery terminal. &amp;nbsp;The XBee is capable of reporting its own voltage, but this would have been regulated at 3.3v by the LiPo charger.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1965384389652880237-9136404404269147079?l=blog.fastolfe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/9136404404269147079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastolfe.net/2011/11/project-wireless-solar-powered-garden.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/9136404404269147079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/9136404404269147079'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/2011/11/project-wireless-solar-powered-garden.html' title='Project: Wireless solar-powered garden moisture sensor'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-x6UBXPpmxUI/TrYFQihxbbI/AAAAAAAACRc/hCThA5d8-Xs/s72-c/garden-bread.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1965384389652880237.post-7364739596764272194</id><published>2009-11-13T08:24:00.000-08:00</published><updated>2011-01-30T21:03:35.116-08:00</updated><title type='text'>Converting Windows XP to a VMware VM in Windows 7</title><content type='html'>I recently bought a new Windows 7 computer.  I ended up with some hardware that wasn't compatible with Windows 7, and since my new machine had an obscene amount of RAM, I wanted to play with VMware, so I set out to virtualize my old Windows XP system within my new Windows 7 system.  Since Windows 7 does not allow raw disk access to user mode processes, you can't just boot off of the XP hard drive within VMware.  I also wasn't keen on installing any fast-and-loose tools or drivers to enable raw disk access.  In the event my experience is useful, here's a step-by-step of how I ended up doing this:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install the XP hard drive into the Windows 7 computer.&lt;/li&gt;&lt;li&gt;A method of building a .vmdk disk image from the raw disk is needed.  I'm familiar with how to do this in Linux, and I wanted a Linux VM anyway, so that's how I approached this.  There's almost certainly a way to do this without "leaving" Windows.  You need enough free space on your target disk to hold the entirety of the XP drive.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download an ISO for a Linux distribution (e.g. &lt;a href="http://www.ubuntu.com/getubuntu/download"&gt;Ubuntu&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;In VMware, create a new VM from this ISO.  It doesn't need much space (I gave it 10G, and Ubuntu Desktop is only using ~3G).&lt;/li&gt;&lt;li&gt;In the hardware configuration for the VM, add a new Hard Drive, choose Physical Disk, and select the Windows XP disk (the whole disk, not just a partition).  You'll only be reading from this disk.&lt;/li&gt;&lt;li&gt;In the settings for this VM, under Options, enable Shared Folders and map a folder on your host on the drive where you might want to store the resulting .vmdk.  Once you have a working system, you can reformat the XP drive and move this file over there.&lt;/li&gt;&lt;li&gt;Once you have the Linux VM running, install &lt;code&gt;qemu-img&lt;/code&gt;.  In Ubuntu, this is how you do it: &lt;kbd&gt;apt-get install qemu-img&lt;/kbd&gt;.&lt;/li&gt;&lt;li&gt;Identify the Windows XP disk.  If you're familiar with Linux and how partitioned devices appear, you can probably just pick it out of the list at &lt;kbd&gt;/dev/sd*&lt;/kbd&gt;. (You can see which drive is mounted as the root filesystem by typing &lt;kbd&gt;mount&lt;/kbd&gt;.  With only two drives, one is the XP filesystem.)  Otherwise, you can try examining &lt;kbd&gt;/dev/disk/by-id&lt;/kbd&gt; or by-path or by-uuid to try and figure it out.&lt;/li&gt;&lt;li&gt;Identify the location of your host's shared folders.  This will probably be a directory under &lt;kbd&gt;/mnt/hgfs&lt;/kbd&gt;: &lt;kbd&gt;ls /mnt/hgfs&lt;/kbd&gt;&lt;/li&gt;&lt;li&gt;Use qemu-img to convert the raw disk to a VMDK file: &lt;kbd&gt;qemu-img convert -O vmdk /dev/sda /mnt/hgfs/vm-images/winxp.vmdk&lt;/kbd&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;Depending on the size, the conversion process may take several minutes.  After it's done, go back to the host, configure a new Windows XP VM under VMware, and select this VMDK file for your drive.&lt;/li&gt;&lt;li&gt;If it boots up, and seems usable, then you're probably done.  Install VMware Tools, remove obsolete software/drivers, and possibly re-activate Windows (this was painless for me; there must be a certain number of hardware upgrades you can do without requiring you to call them up and justify your change).&lt;/li&gt;&lt;li&gt;Consider shrinking your VMDK to try and recover some of the "free" space.&lt;/li&gt;&lt;li&gt;If you want to move the VMDK back over to the original drive, you'll probably need to shrink the size of the VMDK first, so that it will fit within a filesystem on the old drive (it should be at least as big as the original drive was, and since the overhead of a filesystem reduces the available disk space, you can't just store it as a file).&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1965384389652880237-7364739596764272194?l=blog.fastolfe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/7364739596764272194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastolfe.net/2009/11/converting-windows-xp-to-vmware-vm-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/7364739596764272194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/7364739596764272194'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/2009/11/converting-windows-xp-to-vmware-vm-in.html' title='Converting Windows XP to a VMware VM in Windows 7'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1965384389652880237.post-3283990449600127681</id><published>2008-06-02T08:18:00.000-07:00</published><updated>2011-01-30T21:05:34.659-08:00</updated><title type='text'>Review: Indiana Jones 4 Sucked</title><content type='html'>As far as I'm concerned, there are only three Indiana Jones movies.  The fourth simply does not count.  Lucas took a great thing and tried to stretch it just a little too far and ended up with something horrifying.  There are spoilers below, so if you haven't seen the movie, stop reading now.&lt;br /&gt;&lt;br /&gt;The first are the big changes.  The film takes place the 1950s.  No more Nazis.  Our villains this time are the commie Russians.  Our main antagonist, played by Cate Blanchett, feels like a James Bond villain rather than the villains we've known from earlier films.  Way overdone.  And then there were the aliens.  But more on that later.&lt;br /&gt;&lt;br /&gt;Ford was great.  The same Indy we've grown to love.  But his character went through a number of events that were &lt;em&gt;completely&lt;/em&gt; implausible.  I could write off some of the fantastic events of previous movies by getting into the story.  Maybe there &lt;em&gt;was&lt;/em&gt; a Grail.  If the Ark was real, maybe it would have powers.  But I couldn't do that with this movie.&lt;br /&gt;&lt;br /&gt;First there was the "magnetism".  Jones threw up some gunpowder to see where it would be drawn through the air.  First, neither gunpowder nor lead shot is magnetic, so whatever it was that was attracting this stuff, it wasn't magnetism.  Second, magnetic fields follow the inverse square law.  Double the distance, quarter the strength of the field.  If throwing this stuff up in the air caused it to fly toward the source, he should have felt it tugging on the stuff while it was in his hand, and given the speed it was moving, gravity should have yanked it back down harder than the "magnetic" field.  But fine, this was something "alien" so maybe it wasn't &lt;em&gt;really&lt;/em&gt; a magnetic field.  But it was the first sign that something wasn't quite right.&lt;br /&gt;&lt;br /&gt;Next was the atomic bomb.  Jones found himself in a mock town about to be blown up by a nuclear test.  He hides in a lead-lined refrigerator to protect himself from the radiation, which seems like it could be effective (no idea if the lead would be enough), but when the shock wave hits, destroying the town, he's thrown (seemingly) miles away, landing in the desert, a safe distance from the explosion.  No human would survive the forces of the initial blast nor cratering in the desert floor inside a freakin' refrigerator.  It's getting worse.&lt;br /&gt;&lt;br /&gt;Jones and crew then survived three falls over giant waterfalls, &lt;em&gt;inside a vehicle&lt;/em&gt;.  My physics may be a bit rusty, but once the front of the vehicle hits bottom, your body is still in a free-fall, and the vehicle is now stopped just as surely as it had been if it were waiting at the bottom of the falls.&lt;br /&gt;&lt;br /&gt;And then there was the flying saucer.  The "crystal skulls" were in fact alien skulls, and you put them back together and they become a real alien, who then starts up his giant flying saucer and disappears, with what appears to be a cubic mile worth of dirt and rock swirling around him.&lt;br /&gt;&lt;br /&gt;How can you have a flying saucer in an Indiana Jones movie?&lt;br /&gt;&lt;br /&gt;But beyond all of the above, the movie simply didn't have an engaging story.  I wasn't motivated to solve the puzzle with Indy.  This was a sad day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1965384389652880237-3283990449600127681?l=blog.fastolfe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/3283990449600127681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastolfe.net/2008/06/review-indiana-jones-4-sucked.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/3283990449600127681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/3283990449600127681'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/2008/06/review-indiana-jones-4-sucked.html' title='Review: Indiana Jones 4 Sucked'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1965384389652880237.post-1031044606843693987</id><published>2007-12-19T12:25:00.000-08:00</published><updated>2011-01-30T21:09:08.510-08:00</updated><title type='text'>Risk: Who should pay for it?</title><content type='html'>America is widely regarded as an increasingly litigious society.  We're sue-happy, and lots of people are discovering that the system can be (ab)used to win jackpots.  While some consider this trend an unredeemable negative, I view this as a reflection on the desires of the community to shift risk around.  This may be stupid and short-sighted, but the market normally can correct for it.  I divide lawsuits into three categories:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A justified suit where the plaintiff believes he has been wronged and seeks equitable compensation&lt;/li&gt;&lt;li&gt;A frivolous suit where the plaintiff does not believe he has been wronged, but seeks to win a jackpot by settling the case&lt;/li&gt;&lt;li&gt;A justified suit where the plaintiff believes he has been wronged and seeks to get as much money as possible, above and beyond equitable compensation&lt;/li&gt;&lt;/ol&gt;No matter what reforms are proposed, we must not prevent those falling into the first category from getting what they deserve.&lt;br /&gt;&lt;br /&gt;The second category is clear-cut as well.  When insurance companies are paying for the cost of a defense, they look at the economics first.  If it looks like it will cost you $100,000 to defend a lawsuit, and the plaintiff would be willing to walk away if you gave them $50,000 cash, you'll save $50,000 by settling, &lt;em&gt;even if you're certain you would win the case&lt;/em&gt;.  There is frequently no economic/legal incentive in the US to avoid these situations (such as a "loser pays" system common in other countries), so there will always be people willing to try.&lt;br /&gt;&lt;br /&gt;The third category (the basis for most of the rest of my post) arises because people are greedy, and juries frequently base their decisions on emotional factors rather than strictly rational ones.  They may award millions of dollars for claims of pain and suffering, or punitive damages to "send a message".  There is an incentive, then, for plaintiffs to lie, exaggerate or mislead so as to maximize their potential profit.&lt;br /&gt;&lt;br /&gt;But more importantly, there is an economic incentive here for people to &lt;em&gt;avoid personal responsibility&lt;/em&gt; in the first place.  You don't win as much money if you admit that you could have exercised some common sense to avoid the harm in the first place.&lt;br /&gt;&lt;br /&gt;Juries are supposed to be representative of the community.  If a jury claims that someone should have anticipated a certain risk and done more to prevent the harm it caused, that's effectively setting policy for that community.  It is impossible to be completely free from risk.  All you can do is draw a line somewhere and devote some percentage of your resources to mitigating it.  Where that line gets drawn is entirely a cultural thing, and there's no correct place to draw it.&lt;br /&gt;&lt;h2&gt;Guiding philosophies&lt;/h2&gt;On one side, you have the conservative buzzword of "personal responsibility".  Pay attention to what you're doing, and when you make a mistake, learn from your mistake and move on.  The costs of mistakes should be borne by those that make them, giving them an incentive to be more responsible, lowering risk-related costs for society and punishing those that fail to do so.&lt;br /&gt;&lt;br /&gt;On the other side, you have the more liberal stance that people should be protected from their own stupidity and incompetence.  People should feel safe and secure at all times and the people making my life riskier should be responsible for mitigating that.  These costs should be borne by those creating the risk, giving them an incentive to make the lives of everyone safe and secure.&lt;br /&gt;&lt;br /&gt;In the "personal responsibility" camp, the costs of errors are not shared uniformly.  Those that are less educated or less capable will make more mistakes.  A consequence of being less educated and less capable is that these people probably make less money and are less able to pay for the costs of those mistakes.  This exaggerates income disparity and decreases the quality of life for those on the lower end of the socioeconomic spectrum.&lt;br /&gt;&lt;br /&gt;In the more liberal camp, the costs of errors are shared more uniformly among the community.  A jury may think they're doing the right thing by inflating an award for damages to send a message, but what they've in fact done is tell everyone that their community places more of the responsibility for risk on the part of the businesses, and less on the part of the individual.  Insurance companies will react immediately to these developments by increasing their liability/malpractice premiums in that community, and businesses will have to raise their prices to compensate (or go out of business).  There's no such thing as a free lunch, and there will always be economic costs associated with risks.&lt;br /&gt;&lt;br /&gt;Though I identify more as a liberal than a conservative, I tend to side more with the conservative viewpoint here.  We do not grow as individuals by pointing fingers at someone else when we fail to use our common sense.  This gives stupid people license to be stupid, and potentially smart people license to remain children for the rest of their lives.  If the costs of my stupidity are going to be borne by society, what incentive do I have to not do stupid things?  If I have good common sense and know how to avoid unnecessary risk, why should I have to pay for those that don't?&lt;br /&gt;&lt;br /&gt;On the other hand, I'll acknowledge that this is more of a cultural issue than one that can be decided by the numbers.  Is it necessarily bad that a community wants to spread out the cost of risks?  Help the little guy at the expense of everyone else?  That's not all bad, is it, if that's how the community (via their juries) wants to spend its resources?&lt;br /&gt;&lt;h2&gt;Medical malpractice in particular&lt;/h2&gt;The goal (ostensibly) of the civil court system is to compensate people for harm caused by a doctor's errors.  All doctors will make errors, and given the nature of their work, the harm caused by those errors, on average, will be staggering.  Doctors (or their insurance companies) should be paying out settlements or judgments all the time.  That's not a bad thing; it's a cost of doing business.  Medicine is inherently risky.&lt;br /&gt;&lt;br /&gt;Generally speaking, the market should always compensate for cultural shifts involving responsibility for risk.  If juries start deciding to require that their businesses assume liability for more of these risks, the costs of doing business in that community should go up, and prices should go up correspondingly.  On the other hand, if juries decide that individuals should assume more of these risks, the consumers end up having to pay more when those risks are realized.  Note that the consumer normally pays either way, just from completely different directions, with costs distributed differently.&lt;br /&gt;&lt;br /&gt;Unfortunately, with some industries, the market is not allowed to correct for these shifts.  Most seekers of medical care are doing so with health insurance.  Health insurance companies (including the federal government) negotiate fixed reimbursement rates for health care services.  In communities with plaintiff-friendly juries, the health care industry is squeezed from both sides.  They have communities pushing doctors to assume more risk-associated costs, with health insurance providers preventing doctors from increasing prices to compensate.&lt;br /&gt;&lt;br /&gt;The result?  The doctors simply stop practicing, switch to a low-risk specialty, or move someplace else.  Your community can no longer sustain the same level of health care that your neighbors can.  If you find your community is shifting risk around (by way of civil judgments), you have to pay attention to the effects and do something about them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1965384389652880237-1031044606843693987?l=blog.fastolfe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/1031044606843693987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastolfe.net/2007/12/risk-who-should-pay-for-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/1031044606843693987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/1031044606843693987'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/2007/12/risk-who-should-pay-for-it.html' title='Risk: Who should pay for it?'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1965384389652880237.post-8321100175117418902</id><published>2007-09-08T15:04:00.000-07:00</published><updated>2011-02-01T08:24:51.357-08:00</updated><title type='text'>AT&amp;T Home Entertainment sucks</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;b&gt;(Note: Updates below.)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;So after I'd committed to my brand new apartment, it was time to start setting up my utilities.  The conversation with the leasing office went something like this:&lt;br /&gt;&lt;br /&gt;"Your cable TV will be provided by AT&amp;amp;T Home Entertainment."&lt;br /&gt;&lt;br /&gt;"That's it?  No Comcast?  DirecTV?"&lt;br /&gt;&lt;br /&gt;"The apartment is pre-wired for AT&amp;amp;T, and you won't be able to use Comcast.  But you might be able to do DirecTV or DISH on your balcony if you have a view to the satellite.  Let's look at the map.  Hmm, yeah, I don't think you have the right view to see their satellites.  Sorry."&lt;br /&gt;&lt;br /&gt;So I was a bit nervous about this.  Having worked for AT&amp;amp;T, I know exactly how much money and attention the services that they simply rebrand and resell get.  For those that don't know, ATTHE basically wires up commercial structures for DISH or DirecTV service, resells the service, and pads the bill.  So I was a little optimistic since DISH isn't really &lt;em&gt;that&lt;/em&gt; bad, and DISH supports HD, has an HD+DVR receiver, and does local channels in high definition.  So I figured I was going to be set.&lt;br /&gt;&lt;br /&gt;Of course, this story would be boring if that were actually the case.  This is the actual conversation (basically) I had with one of the sales reps at ATTHE:&lt;br /&gt;&lt;br /&gt;"Do you have an HD receiver with a DVR?"&lt;br /&gt;&lt;br /&gt;"No, we only have the HD receiver, and the standard-definition DVR receiver.  We don't have an HD+DVR receiver."&lt;br /&gt;&lt;br /&gt;"But you're just re-selling DISH, right?  DISH has an HD+DVR receiver."&lt;br /&gt;&lt;br /&gt;"Yes, but we don't use DISH receivers."&lt;br /&gt;&lt;br /&gt;"Umm, OK.  Well since it's just DISH service, couldn't I just buy my own DISH HD+DVR receiver and use it with your service?"&lt;br /&gt;&lt;br /&gt;At this suggestion, the sales lady became nearly hostile.  "No, sir, it wouldn't work.  We use different satellites than DISH."  WTF?  "Our satellites can't handle the signal that the DVR boxes need."&lt;br /&gt;&lt;br /&gt;(Ignoring the ridiculous satellite comment) "But you have a standard-definition DVR?"&lt;br /&gt;&lt;br /&gt;"Yes, but the satellites can't do both high definition and DVR at the same time."&lt;br /&gt;&lt;br /&gt;I am not making this up.  I told her this was a deal-breaker and went to look at my other options.  I knew I had none at this point but I didn't want to give her my sale.  A few days later, I figured I had no choice, so I called back and decided to order.&lt;br /&gt;&lt;br /&gt;"So, just to confirm, I'll be able to get all of the local channels in high definition, right?"&lt;br /&gt;&lt;br /&gt;"Yes sir, absolutely."&lt;br /&gt;&lt;br /&gt;Nope.  When the installer came, hooked me all up, and I started browsing my channels, I asked him why I wasn't seeing locals in HD.  "Oh, all you'll get is those 5 HD channels.  We don't support locals in HD here."&lt;br /&gt;&lt;br /&gt;!!!!!!!!!!!&lt;br /&gt;&lt;br /&gt;I let him go, and I called DirecTV.  If there's any way at all they can work with the southeasterly view that I have, I want them to try.  I am not going to give AT&amp;amp;T a penny more than I have to.  They deliver a shitty, stripped-down version of DISH, and the version that they put in my apartment complex is even shitter and even more stripped down than that.  AVOID IF POSSIBLE.&lt;br /&gt;&lt;h2 id="update1"&gt;Update 2008-05-15&lt;/h2&gt;So, eight months later, here's the scoop:&lt;br /&gt;&lt;br /&gt;I eventually got my locals in HD by telling it to use off-the-air channels,vwhich were fortunately being provided with my cable signal.  I had to figure&amp;nbsp;this out myself.  Twice they attempted to send someone out to fix my cable box,&amp;nbsp;because they believed it was a problem with the box.  The first time, no one&amp;nbsp;showed up.  The second time, the person showed up 10 days late.  Seriously.  I&amp;nbsp;got a hang tag on my door and an annoyed voice mail saying I wasn't there at&amp;nbsp;the appointed time to let them in.  They were supposed to be there a week and a&amp;nbsp;half prior.&lt;br /&gt;&lt;br /&gt;It also turned out that the number of channels I did have available was a&amp;nbsp;fraction of the channels DISH provided to their own customers.  DISH customers&amp;nbsp;got something like 30 or 50 HD channels, and I only got five.  I called a total&amp;nbsp;of three times to try to understand what was happening here, and got wildly&lt;br /&gt;different explanations.  After researching this on my own, I learned that the&amp;nbsp;boxes they use are out of date by years.  They did not support MPEG2, which is&amp;nbsp;what a large number of DISH channels are encoded with.&lt;br /&gt;&lt;br /&gt;A month or so ago, one of my receivers stopped working intermittently (maybe&amp;nbsp;~50% of the time, it was reporting no signal).  I explained this over the&amp;nbsp;phone, and I was told that I could set up a service appointment, but when&amp;nbsp;they came out, if it was working, I would be billed $45.  It was suggested that I&lt;br /&gt;wait until it's failing all of the time before having someone come out, to&amp;nbsp;avoid this charge.  Alternatively, I could schedule a visit anyway, and if it started&amp;nbsp;working before he arrived, I could quickly call and cancel the visit so&amp;nbsp;as to avoid the $45 charge.  This discussion was surreal.&lt;br /&gt;&lt;br /&gt;A week later I decided to risk it, and when the tech came out, he told me&amp;nbsp;that they'd just upgraded my complex, and they were now offering MPEG2-capable&amp;nbsp;receivers, which included an HD+DVR receiver!  Unfortunately, they would have&amp;nbsp;to charge me to schedule an independent visit to have someone come out and hook&amp;nbsp;it up.  They would not just send me the replacement receivers.  And the new&amp;nbsp;service was going to cost me more.&lt;br /&gt;&lt;br /&gt;So while most of my &lt;em&gt;programming&lt;/em&gt; concerns are now satisfied, I am&amp;nbsp;still their customer not because I choose to be, but because I have no other&amp;nbsp;option if I want cable TV.  Their customer service reps have proven, time after&amp;nbsp;time, to be incredibly incompetent ("We use different satellites."), to the&amp;nbsp;point of infuriating.  It's clear that AT&amp;amp;T does not value this business&amp;nbsp;unit or its customers and I strongly urge you to avoid them unless you can't.&lt;br /&gt;&lt;br /&gt;Oh, and they recently added "online ordering"!  Wow, great, now I can make&amp;nbsp;programming changes online without having to deal with a real person.  How does&amp;nbsp;it work?  It's just a text box on a web form that says, "Tell us what you want&amp;nbsp;to change.  We'll follow up with you after you submit."  State of the art!&lt;br /&gt;&lt;h2 id="update2"&gt;Update 2009-03-19&lt;/h2&gt;So, three weeks ago, my local HD channels stopped working.  Both of my DISH boxes were stuck in a crash loop.  I called up, and was told that there's a "problem" in the Bay Area and that HD locals would be out until sometime in May.  I've since determined that other DISH customers in the Bay Area are fine, so the problem is specific to AT&amp;amp;T HE.  Fortunately, I recently moved to a new unit that has a southerly view, so my hands are no longer tied!  I've dropped AT&amp;amp;T HE.  Fuck them.  I've never been so dissatisfied with a utility provider in my entire life.  I am disgusted and appalled by the level of service I've received, the technical abilities of the staff, and the failure to plan.  As I said before, this company does not value its customers (they have Uverse now, after all), and gets its money entirely through exclusive agreements with apartment complexes.  Its customers are hostages.  They have no incentive to provide good customer service or to provide anything other than the bare minimum they can get by with.  FOR THE LOVE OF GOD, AVOID AT ALL COSTS.&lt;br /&gt;&lt;br /&gt;If you're considering moving into an apartment complex that has one of these exclusive agreements, bitch and moan about it, and DO NOT get a unit that does not have a southerly view.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1965384389652880237-8321100175117418902?l=blog.fastolfe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/8321100175117418902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastolfe.net/2007/09/at-home-entertainment-sucks.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/8321100175117418902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/8321100175117418902'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/2007/09/at-home-entertainment-sucks.html' title='AT&amp;amp;T Home Entertainment sucks'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1965384389652880237.post-7945555619387732157</id><published>2007-07-24T12:08:00.001-07:00</published><updated>2011-02-01T08:34:12.114-08:00</updated><title type='text'>Medical malpractice</title><content type='html'>A popular complaint among physicians is that America's medical malpractice system is this crushing force, arbitrarily assigning jackpot awards to people whose only harm was not getting better after they saw a doctor.  With average awards running so high, malpractice insurance premiums have to be high as well.    The novelty of &lt;a href="http://www.kevinmd.com/blog/2007/07/surgeon-goes-bare-and-is-judgment-proof.html"&gt;hearing about a physician&lt;/a&gt; flaunt his lack of insurance, making him an unprofitable target for malpractice litigation, usually stirs up debate.&lt;br /&gt;&lt;br /&gt;Both sides of the issue have merit, but, as usual, the disagreements are more a matter of perspective than something that you can act upon.&lt;br /&gt;&lt;br /&gt;As a patient, it's completely unreasonable to expect that your physician will be perfect.  There are people that walk into hospitals and never walk out.  The physician could have done everything conceivable, anticipated every possible complication, and done everything perfectly, and the patient still might have died.  These are poor outcomes that have nothing to do with the abilities of the physician.  People die.  We need to move on.&lt;br /&gt;&lt;br /&gt;Further, doctors make errors.  They're human beings like the rest of us.  There will be patients that do not wake up from their operations because the surgeon goofed.&lt;br /&gt;&lt;br /&gt;From the doctor's perspective, it's unreasonable to expect that you won't make an error, or that you should be exempt from having to pay for the consequences of those errors.  As a driver, I know there's a chance I may make a mistake.  I've done it before, and caused a (small) accident.  Who paid to make everything right?  Me, of course, because it was my error.  As an employee of a company, if I'm given a large amount of responsibility, and I make a mistake and cause a tremendous loss for the business, the business pays for that, either directly or indirectly.  I almost certainly pay personally here too, either by losing my job, or at least my standing.  But either way, the harm that my mistake caused was borne either by me, or by the person I was working for.&lt;br /&gt;&lt;br /&gt;The problem is that medicine deals with large risks.  Your own life is the ultimate risk.  A single error in a doctor's career could cause the loss of a person's life.  Is the doctor's life more valuable than the patient's?  "An eye for an eye" would suggest that this mistake be held up against the very life of the doctor that made it.&lt;br /&gt;&lt;br /&gt;Of course, you can't do that.  The physician is just doing his or her job, and just because it's a high-risk job doesn't mean the physician should have to pay for that risk.  That's why we have a malpractice system that uses insurance companies.  This system works on the assumption that doctors usually don't cause errors, but when they do, the costs are usually staggering.  Premiums should necessarily be high, and those costs should be passed on to the patients.  Doctors that make more mistakes pay high premiums, and they're forced out of the business because they can't afford it.&lt;br /&gt;&lt;br /&gt;So, in theory, the system isn't fundamentally broken, in my opinion.  However, there are still two problems that need to be addressed:&lt;br /&gt;&lt;br /&gt;The first problem is that a jury of your peers hasn't a fucking clue what constitutes malpractice, as opposed to just a bad outcome.  Consequently, the skills of the lawyer combined with the believability of each side's "expert witnesses" decide cases.  I'm an "objectivist", so any system where the skills of the people arguing decide fairness is, in my eyes, an unfair system.  I still think a jury system could work here, but letting both sides hire witnesses still seems wrong to me.  There is an inherent conflict of interest when someone pays you to take the stand to testify in their favor.&lt;br /&gt;&lt;br /&gt;Some solutions to this problem include specialized "health courts", or an impartial panel of experts that review and certify malpractice cases, rather than relying on the abilities of a lawyer to convince or confuse a possibly uneducated jury.&lt;br /&gt;&lt;br /&gt;The second problem is that the justice system is really there to fix injustices.  It disgusts me that there are literally industries that operate around litigation.  Litigation should be a last resort, not a first.  What we're really talking about here is the inevitable error that a physician makes.  What's so hard about (a) agreeing that an error was made, and (b) identifying fair compensation for that error?&lt;br /&gt;&lt;br /&gt;Answer: the promise of jackpots.  The introduction of non-economic damages in civil suits was a horrible mistake, in my opinion.  Anyone can claim "pain and suffering" damages in the millions, and if their story is sad enough, juries will agree.  It's impossible to quantify these things.  It's just a subjective judgment call, which makes it inappropriate for a court to force people to agree to.  In my opinion, a government and its justice system ought to be serving the public interest, in everything it does.  By permitting people to cry and whine to a jury in order to be awarded millions of dollars of "compensation", we are encouraging the population to be a bunch of fucking whiny cry-babies.  Get a spine!  Grow up!&lt;br /&gt;&lt;br /&gt;But it's not just non-economic jackpots that I take issue with.  It's actually my understanding that, generally speaking, awards tend to be consistent with the injury suffered.  The problem is that a potential plaintiffs (and their lawyers) have an economic incentive to call a bad outcome a case of malpractice.  All they have to do is convince or confuse a jury into believing them over the doctor.  (Remember that civil cases do not require them to believe either side "beyond a reasonable doubt.")  So if the costs of bringing the suit aren't that significant compared to the potential rewards, lawyers will gladly take the case, because even if they lose most of them, the few that pay off will pay off big.  So yes, the awards might even be adequate compensation for the plaintiff's poor outcome, but was it really fair to make the doctor (or his insurance company) pay for it in the first place?&lt;br /&gt;&lt;br /&gt;So instead of a physician's mistakes being considered an unfortunate cost of practicing medicine, handled expediently and fairly for both sides, it becomes an ugly, disgusting example of everything that's wrong with America's justice system.  Physicians are vilified, called "baby killers", with the most hurtful, shameful language you can imagine appearing in an official court document.  To the lawyer, it's just another day at the office.  To the doctor, it's devastating and heart-wrenching.  This isn't a simple cost of doing the job, it's a personal attack.  It's evil.&lt;br /&gt;&lt;br /&gt;Solutions to this problem?  Surprisingly, the same as the first: stop letting medical malpractice trials become a circus of confusion of claims that are dubious to begin with.  People that have legitimate claims should be compensated.  Those that don't have legitimate claims should have a harder time.    With less willingness for lawyers to pursue dubious claims, it should be possible to better predict how you will fare at trial, which allows both sides to see cases a little more objectively, and to have a better idea up front what sort of compensation is appropriate.  These cases can then be fairly settled out of court and everyone can move on with their lives.  Better for injured patients, better for doctors, not so great for lawyers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1965384389652880237-7945555619387732157?l=blog.fastolfe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/7945555619387732157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastolfe.net/2007/07/medical-malpractice_24.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/7945555619387732157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/7945555619387732157'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/2007/07/medical-malpractice_24.html' title='Medical malpractice'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1965384389652880237.post-5281476399804142130</id><published>2007-05-01T06:42:00.000-07:00</published><updated>2011-02-01T08:37:15.185-08:00</updated><title type='text'>Renewing License Plates in Missouri</title><content type='html'>&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://fastolfe.net/2007/05/01/its-easy-to-renew" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="49" src="http://fastolfe.net/2007/05/01/its-easy-to-renew" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I can't stand it when things are harder than they need to be.  Many times, things are hard because someone stupid is making the decisions, or someone lazy is doing the implementation.&lt;br /&gt;&lt;br /&gt;My plates are up for renewal.  I always wait until the last minute to do these types of things.&lt;br /&gt;&lt;br /&gt;Fortunately, Missouri offers a neat little online system for accomplishing this.  No waiting in line!  Unfortunately, it would appear that an early design meeting included a bit of dialog like this:&lt;br /&gt;&lt;blockquote&gt;"Do we want to let people use the system if their plates have expired?"&lt;br /&gt;"Hell no!  Screw them!"&lt;br /&gt;"Yeah!  Down with the citizens!  Make it harder for them to renew!"&lt;/blockquote&gt;So if you're late getting your plates renewed, not only do you have to pay a penalty, but they rob you of the convenience of getting them renewed online (arguably &lt;em&gt;much&lt;/em&gt; more of a penalty than the late fee).  Why???&lt;br /&gt;&lt;br /&gt;Of course, some would say it's my own fault for not renewing them on time.  It's true that I didn't renew them on time.  But what exactly is the point of this policy?  Is it indeed some form of additional punishment?  Why punish people by making it harder for them to get into compliance?  Doesn't that just discourage people from doing the right thing?  "Well I was all ready to renew online, but now I have to drive to an office, so I'm just going to put it off until I get a ticket..."&lt;br /&gt;&lt;br /&gt;My little rant doesn't end here, though.  Here's the list of documents that you're required to have to renew your plates:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Renewal application&lt;/li&gt;&lt;li&gt;Paid personal property tax receipts for the previous two (2) years&lt;/li&gt;&lt;li&gt;Safety inspection&lt;/li&gt;&lt;li&gt;Emissions inspection&lt;/li&gt;&lt;li&gt;Proof of insurance&lt;/li&gt;&lt;/ul&gt;Each of these items is verified by the system as you enter them in.&lt;br /&gt;&lt;br /&gt;Think about that for a second.  The system already knows about most (if not all) of these documents.  It would have to in order to verify that they're valid.  So why do I have to go through the house and scrounge up all of the paper copies to enter them into the system?  Why can't I just enter my license plate number, or my name and address, and have the system just pull up and verify that I'm all in compliance and ready to go?  There's no reason why renewing plates can't be a simple matter of &lt;em&gt;sending them the fee&lt;/em&gt; (electronically! even if it's past due!).  Why make people do extra work?&lt;br /&gt;&lt;br /&gt;Frequently, if this were a deliberate choice, the reason would boil down to costs.  "Adding this feature might save everyone 5 minutes of time, but it costs $50,000!  It's not cost-effective."  There is an error in this logic.  I see this a lot at work (AT&amp;amp;T), but frequently the time/money saved is a little less obvious.  Let's do some math.  If this feature were used by even, say, 100,000 people, we're talking about 500,000 minutes of time, or over 8000 man-hours.  In a business, it might be standard practice to multiply this by $50 or $100 per hour of time.  But since this is a municipality, let's value our citizens' time at $10 per hour instead.  This hypothetical feature would thus save the public over $80,000 a year.  It makes sense, then, to implement it if it costs less than this.  That $50,000 is cost-effective after all!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1965384389652880237-5281476399804142130?l=blog.fastolfe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/5281476399804142130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastolfe.net/2007/05/renewing-license-plates-in-missouri.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/5281476399804142130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/5281476399804142130'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/2007/05/renewing-license-plates-in-missouri.html' title='Renewing License Plates in Missouri'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1965384389652880237.post-7297307180020619125</id><published>2007-04-20T22:07:00.000-07:00</published><updated>2011-01-30T21:16:28.933-08:00</updated><title type='text'>Tamm Ave. Bridge Demolition</title><content type='html'>They blew up the Tamm Ave. bridge tonight, the first bridge of many that will be demolished to make way for &lt;s&gt;a&amp;nbsp;new hyperspace bypass&lt;/s&gt;&amp;nbsp;the upcoming I-64/40 construction.  It was actually pretty neat.  People were getting into it.  A drunk woman next to me kept trying to chat me up.  Fortunately she wouldn't shut up long enough for me to respond to anything she said.&lt;br /&gt;&lt;br /&gt;I managed to shoot this crappy, out-of-focus video:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed align="middle" bgcolor="#ffffff" flashvars="playerMode=embedded" id="VideoPlayback" quality="best" salign="TL" scale="noScale" src="http://video.google.com/googleplayer.swf?docId=2497693344441639713&amp;amp;hl=en" style="height: 326px; width: 400px;" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1965384389652880237-7297307180020619125?l=blog.fastolfe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/7297307180020619125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastolfe.net/2007/04/tamm-ave-bridge-demolition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/7297307180020619125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/7297307180020619125'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/2007/04/tamm-ave-bridge-demolition.html' title='Tamm Ave. Bridge Demolition'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1965384389652880237.post-481143037928264654</id><published>2007-02-13T17:31:00.000-08:00</published><updated>2011-01-30T21:18:06.069-08:00</updated><title type='text'>Firefox date handling in Page Info</title><content type='html'>Today I was researching an HTTP caching problem and I discovered what I thought was a bug.  When viewing the Page Info for an HTTP resource in Firefox, there is a "Modified" and "Expires" date that should reflect the modification date of the resource and when the resource should expire from the browser's cache.  Here is what I was seeing:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Modified:  Tuesday, February 13, 2007 6:38:58 PM&lt;br /&gt;Expires:   Tuesday, February 13, 2007 6:38:03 PM&lt;/pre&gt;&lt;br /&gt;For the life of me, I could not understand why the modification date was after the expiration date.  A helpful user wrote in with his own numbers that gave the expiration date as being a minute-and-a-half in the future of the modification date.  It was &lt;em&gt;supposed&lt;/em&gt; to expire exactly 20 seconds after it was modified.  What was going on here?&lt;br /&gt;&lt;br /&gt;Take a look at the response headers.  This request was made when the local clock on my PC was exactly 00:38:00 GMT:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Date:          Wed, 14 Feb 2007 00:39:14 GMT&lt;br /&gt;Last-Modified: Wed, 14 Feb 2007 00:38:58 GMT&lt;br /&gt;Expires:       Wed, 14 Feb 2007 00:39:18 GMT&lt;br /&gt;Cache-Control: max-age=3&lt;/pre&gt;&lt;br /&gt;See what's going on yet?&lt;br /&gt;&lt;br /&gt;The clocks on servers and client systems can't be guaranteed to be synchronized.  So when a server sends a Last-Modified or Expires date, the client can't really be sure when those events occur.  HTTP solves this by including a Date header, which should match the server's clock at the time the response was sent.  Browsers can then compare this clock to the client PC's clock to figure out when the server &lt;em&gt;really&lt;/em&gt; intended the resource to expire.&lt;br /&gt;&lt;br /&gt;Firefox is really doing the only reasonable thing it can do here.  Cache expiration is something only Firefox can do.  Since Firefox needs to know when, relative to its local clock, a resource should expire, it needs to compare the server's &lt;em&gt;intended&lt;/em&gt; expiration date with its own clock.  This means it has to adjust the resource's expiration date to compensate for the difference in clocks.  The modification date, on the other hand, is something that's really only meaningful to the server.  When Firefox decides that it needs to make a request to the server, it has to provide the Last-Modified date exactly as the server did, so that the server knows when it's appropriate to send back an updated resource, or just tell the browser to use what it already has cached.&lt;br /&gt;&lt;br /&gt;The result?  The Modified and Expires dates on the Page Info tab are showing times from the perspective of two different clocks.  They cannot be compared to one another!&lt;br /&gt;&lt;br /&gt;More reasons people don't want to deal with HTTP caching!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1965384389652880237-481143037928264654?l=blog.fastolfe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/481143037928264654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastolfe.net/2007/02/firefox-date-handling-in-page-info.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/481143037928264654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/481143037928264654'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/2007/02/firefox-date-handling-in-page-info.html' title='Firefox date handling in Page Info'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1965384389652880237.post-1168395196620338493</id><published>2007-02-05T15:50:00.000-08:00</published><updated>2011-01-30T21:17:38.601-08:00</updated><title type='text'>Evolution vs. Creationism: Not the debate you think it is</title><content type='html'>The "evolution vs. creationism" debate bugs me.  I normally love to discuss things like this and debate the merits of science versus philosophy, but the problem with this debate is that people don't actually understand what it is that's being debated, which makes any educated discussion somewhat difficult.&lt;br /&gt;&lt;br /&gt;Creationism is an explanation for the creation of life, one that that presumes a creator.  "Strict creationism" would go so far as to say that all of this happened just a few thousand years ago, while a more allegorical interpretation would allow for life to be "created", perhaps millions of years ago, and subsequently evolve according to a creator's design.&lt;br /&gt;&lt;br /&gt;Evolution is not an explanation for the creation of life.  It is the observation that life changes over time.  There is zero scientific evidence that evolution does not occur.  In fact, when you take a step back and look at what we do know about life, it's clear that evolution is &lt;em&gt;inevitable&lt;/em&gt; and can't &lt;em&gt;not&lt;/em&gt; occur.&lt;br /&gt;&lt;h2&gt;Evolution of life over time&lt;/h2&gt;If you don't believe in things like "DNA" or "chemicals", you might as well stop reading now and go put your head back in the sand outside.  We have an excellent understanding of how DNA functions.  We may not quite understand how all of the instructions put within DNA molecules get the effects that they do, but this is all an issue of overwhelming complexity, not a lack of understanding of the processes that are involved.  When you take a strand of DNA and let it "run", you get the same proteins and the same form of life.  When that DNA is mutated by the environment, or there is a failure to accurately copy it during the process of cell division or reproduction, changes are passed on to offspring.&lt;br /&gt;&lt;br /&gt;Now normally when you read about evolution, this is the part where you read that nature "selects" the more capable organism and the less capable ones die off and disappear.  This glosses over the whole process and you miss out on why this is inevitable.  DNA is like an assembly line at a factory.  When you change things around, either with the line or with the raw materials, you get a slightly different product.  Usually it isn't something you want, but occasionally you come up with something really novel that lets you outcompete someone else.  (For practical reasons, this doesn't actually occur in real factories, but when you're spread out over the surface of the earth and have a few hundred million years to lounge around, shit happens.)&lt;br /&gt;&lt;br /&gt;So long as you always have changes occurring in the mechanics of life (just like we always have solar and cosmic radiation, or errors in cell division), it is inevitable that these changes will result in offspring that are different from their parents.  When you always have environmental changes (like with climate changes, deforestation, natural disasters, changes in the availability of food, or the presence of a new species of predator that wasn't there before), you always open the door for some of those mutations to provide a benefit to organisms that have it.  Maybe the mutation will allow them to digest a certain kind of food they weren't able to digest previously, and a food shortage means they need to try.  Maybe it made the organism hairier, just when the temperatures were starting to drop.  Maybe it changed muscle density somewhere and allowed the organism to run slower, but over longer distances, which turned out to be helpful when food was starting to thin out.&lt;br /&gt;&lt;br /&gt;If environmental change is inevitable, and mutations are inevitable, then adaptation is inevitable.  Evolution is inevitable.  It's not a "theory", it's obvious, and it's staring you right in the face.&lt;br /&gt;&lt;br /&gt;Whenever you hear about an antibiotic-resistant strain of bacterial infection, that is a strain of bacteria that has evolved in the last few decades.  When you invent an imperfect but effective poison that kills off bacteria, the inevitable mutations that occur with DNA, combined with the extremely rapid rate of reproduction of bacteria, means that at some point in the near future, a mutated variant of that bacteria will have properties that allow it to survive the poison.  There is &lt;em&gt;no&lt;/em&gt; disagreement in the scientific community that evolution occurs, and the non-scientists telling you differently are flat out lying, or simply do not understand what evolution is.  Doctors and all types of biologist are way beyond accepting evolution.  It's now part of every-day practical application for many of these professions.  When someone says, "There's no such thing as evolution," it's like telling a construction worker that nails do not hold pieces of wood together.&lt;br /&gt;&lt;h2&gt;Creation of life&lt;/h2&gt;&lt;strong&gt;Most people arguing about evolution are actually trying to argue about the creation of life.&lt;/strong&gt;  Evolution, per se, is not incompatible with creationism, even if you subscribe to the strict 6000-year-old-universe religious view.  We see evolution all the time, right around us.&lt;br /&gt;&lt;br /&gt;Where there &lt;em&gt;is&lt;/em&gt; disagreement is on how life got started in the first place.  We can clearly see life evolving right in front of our eyes, but what did it originally evolve from?  &lt;strong&gt;Evolution does not attempt to answer this question&lt;/strong&gt;, so it is completely inappropriate to attack evolution just because you believe in creationism.&lt;br /&gt;&lt;br /&gt;Strict creationists, though, might still have a beef, because the evidence for evolution stretches back not just through the recent past, but hundreds of millions of years.  Even if they could accept that life evolves today, they can't accept that the gradual appearance of proto-human species documented by the fossil record ended up with us.  "Maybe they existed, or maybe God just put the fossils there to test our faith.  Even if they did exist, they must have all died off or something before God put modern humans here."&lt;br /&gt;&lt;br /&gt;A more liberal, allegorical interpretation of creationism usually ignores the 6000-year-old rule, and even might accept the scientific viewpoint that humans evolved from earlier forms of life, only instead of this happening due to selective pressure and environmental adaptation alone, our evolution was guided by a god.  This helps to reconcile the two theories, and lets some creationists sleep at night, but it can't survive scientific scrutiny.&lt;br /&gt;&lt;br /&gt;The reason scientists look to explain the creation of life without creationism is because creationism is not a scientific theory.  This is another point of contention among proponents of both sides.  "Creationism is just another theory!"  In layman's terms, it's a "theory".  In scientific terms, it is not.  A scientific theory must be something that is falsifiable, meaning that we can devise an experiment that demonstrates that the theory does not accurately predict reality.  Any "theory" that isn't falsifiable can not advance science, and science must necessarily disregard it.  Feel free to discuss it as philosophy, but it is &lt;em&gt;not&lt;/em&gt; science.  There are many people that view philosophy and science as two different branches that attempt to discover "truth".  What non-scientists frequently fail to realize is that while philosophy must necessarily incorporate some amount of science to further its pursuit of truth, the reverse is not true.  Science is all about the scientific method.  It cannot incorporate philosophical viewpoints, biases or methodologies.  If you cannot phrase an assertion as something that can be experimentally tested, it is not scientific and &lt;em&gt;must&lt;/em&gt; be excluded.&lt;br /&gt;&lt;br /&gt;Consequently, when scientists study the possible origin of life, they work based on their observations and the currently accepted views of how all of this works.  Since evolution guides the development of life on an ongoing basis, it's reasonable to assume that evolution guided the development of early life.  It makes sense, then, when trying to see how life came to be in the beginning, to focus on how evolution might have worked with early forms of life, and work our way back to see what initial components could have spontaneously come together to produce the first rudimentary life-like processes.&lt;br /&gt;&lt;br /&gt;And for a discussion of that, I must point you to &lt;a href="http://www.socialtext.net/wired-mag/index.cgi?where_did_life_come_from"&gt;Wired magazine's community-provided take&lt;/a&gt;, which (presently) gives an excellent discussion of the current scientific thinking about all of this.&lt;br /&gt;&lt;br /&gt;If you wish to debate evolution, please come prepared with an understanding of what it is that you're debating.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1965384389652880237-1168395196620338493?l=blog.fastolfe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/1168395196620338493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastolfe.net/2007/02/evolution-vs-creationism-not-debate-you.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/1168395196620338493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/1168395196620338493'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/2007/02/evolution-vs-creationism-not-debate-you.html' title='Evolution vs. Creationism: Not the debate you think it is'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1965384389652880237.post-4557935305443541024</id><published>2006-10-21T17:57:00.000-07:00</published><updated>2011-01-30T21:20:01.272-08:00</updated><title type='text'>Game of Tag</title><content type='html'>&lt;img alt="Slow! Children at play!" class="entry-photo" src="http://fastolfe.net/2006/11/06/children-at-play" /&gt;&lt;br /&gt;&lt;br /&gt;It took me &lt;a href="http://www.coxesroost.net/journal/2006/02/21/game-of-tag"&gt;eight months&lt;/a&gt;, Will, but here are my responses:&lt;br /&gt;&lt;h2&gt;Four jobs I've had&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Sonic cook&lt;/li&gt;&lt;li&gt;Internet provider, helpdesk, web stuff&lt;/li&gt;&lt;li&gt;Electronics manufacturer, providing network/PC support&lt;/li&gt;&lt;li&gt;AT&amp;amp;T!&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Four movies I can watch over and over&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Fifth Element&lt;/li&gt;&lt;li&gt;Alien*&lt;/li&gt;&lt;li&gt;Star Wars*&lt;/li&gt;&lt;li&gt;Fight Club&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Four TV shows I love(d) to watch&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Star Trek: TNG&lt;/li&gt;&lt;li&gt;Battlestar Galactica&lt;/li&gt;&lt;li&gt;Stargate SG-1/Atlantis&lt;/li&gt;&lt;li&gt;Attack of the Show (mostly for Olivia)&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Four places I've been on vacation&lt;/h2&gt;My first thought is to put Alaska, but I lived there for several years, so I don't think it should count.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Padre Island, Texas&lt;/li&gt;&lt;li&gt;Saranac, New York&lt;/li&gt;&lt;li&gt;Las Vegas, Nevada&lt;/li&gt;&lt;li&gt;Misc. lesser trips&lt;/li&gt;&lt;/ul&gt;Maybe I should have listed Alaska after all.&lt;br /&gt;&lt;h2&gt;Four favorite dishes&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Chicken in a basil cream sauce&lt;/li&gt;&lt;li&gt;Ice cream&lt;/li&gt;&lt;li&gt;Cheese &amp;amp; Macaroni&lt;/li&gt;&lt;li&gt;Pizza, naturally&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Four websites I visit daily&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cnn.com/"&gt;CNN.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://slashdot.org/"&gt;Slashdot.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.stltoday.com/"&gt;STLToday.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.com/reader/"&gt;Google Reader&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;That last one is probably cheating, since it's a feed reader, but it's true.  Every day.&lt;br /&gt;&lt;h2&gt;Four places I'd rather be&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Exploring the universe&lt;/li&gt;&lt;li&gt;Exploring the world&lt;/li&gt;&lt;li&gt;Exploring a restaurant&lt;/li&gt;&lt;li&gt;Exploring my fridge&lt;/li&gt;&lt;/ul&gt;OK, I'm back.&lt;br /&gt;&lt;h2&gt;Four I'm tagging&lt;/h2&gt;I respect my friends too much to do that.  :)&lt;br /&gt;&lt;br /&gt;(Photo by &lt;a href="http://www.flickr.com/photos/sergeymk/70727472/"&gt;sergeymk&lt;/a&gt;.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1965384389652880237-4557935305443541024?l=blog.fastolfe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/4557935305443541024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastolfe.net/2006/10/game-of-tag.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/4557935305443541024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/4557935305443541024'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/2006/10/game-of-tag.html' title='Game of Tag'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1965384389652880237.post-2972625148647641888</id><published>2006-10-21T16:45:00.000-07:00</published><updated>2011-01-30T21:21:50.066-08:00</updated><title type='text'>Net Neutrality: You pay either way!</title><content type='html'>So I've been seeing this commercial off and on a bit, and it really annoys me, because it's extremely misleading.  The voiceover goes like this:&lt;br /&gt;&lt;blockquote&gt;Are you google-eyed with confusion over 'net neutrality?  No wonder.  It's all just clever mumbo-jumbo.&lt;br /&gt;&lt;br /&gt;'Net neutrality is nothing more than a scheme by the multi-billion-dollar Silicon Valley tech companies, to get you, the consumer, to pay more for their services.&lt;br /&gt;&lt;br /&gt;Forget all the mumbo-jumbo.  'Net neutrality simply means: you pay.&lt;/blockquote&gt;Those in support of 'Net neutrality are guilty of similarly misleading comments and I don't like it.  To understand 'Net neutrality, you need to understand a few things:&lt;br /&gt;&lt;h2&gt;Internet providers today are already compensated&lt;/h2&gt;Internet providers are simply companies that provide people with Internet connections.  Those companies must then contract (peer) with other Internet providers, to ensure their customers can send and receive traffic to everyone on the global Internet.  The Internet itself isn't really a single thing.  All of these providers connect up with each other and relay traffic to/from each other, and they call that interconnected mesh "the Internet".&lt;br /&gt;&lt;br /&gt;Every physical Internet connection costs money.  When you subscribe to the Internet through your ISP, you get the benefit of connectivity.  Your ISP doesn't really benefit from the connection itself.  Consequently, the flow of cash goes one way: from you to them.&lt;br /&gt;&lt;br /&gt;Your favorite web site, for example, is in the same situation.  They must obtain a much larger Internet connection from an ISP.  The ISP doesn't really benefit from having that connection per se, so the money flows from your favorite web site to their chosen ISP.&lt;br /&gt;&lt;br /&gt;Your ISP and their ISP are in a different situation, though.  If they aren't connected to each other, their customers aren't going to like it and will find another ISP who is.  If your ISP wasn't connected up to anyone else, your ability to pull up any of your favorite web sites would be hampered, right?  So if these two ISPs have roughly the same amount of traffic they want to pass to the other, they might agree to set up a connection between themselves, where traffic from one side balances out traffic from the other side, so both sides end up paying mostly just for the maintenance of the connection.&lt;br /&gt;&lt;br /&gt;Opponents of 'Net neutrality like to say, "They're the popular web site sucking up all of this traffic.  They should have to pay!"  Except they do pay.  Their connection with their ISP ain't free, and they're probably charged based on the amount of data they send/receive.  If this traffic between their ISP and your ISP is no longer in your ISP's favor, that's their fault for not writing a better peering agreement.  If your use of your "unlimited" flat DSL connection is going up and costing your Internet provider more, that's something you and your Internet provider have to work out between themselves.  The reason flat rate Internet connections work is because the under-utilizers subsidize the costs of the over-utilizers, and the flat rate ends up being a rough average.  If the average utilization goes up, it's a no-brainer that the flat rate has to go up to compensate.  You can't try to keep your flat pricing low by pretending the increase is caused by 3rd-parties that you have no business relationship with whatsoever.&lt;br /&gt;&lt;h2&gt;Quality of Service&lt;/h2&gt;The utilization "problem" is a red herring, though.  The real issue is one of Quality of Service (QoS), and who pays for it.&lt;br /&gt;&lt;br /&gt;When you make a request against your favorite web site, it might pass through a handful of different ISPs.  These ISPs may have no business relationship at all to the content provider, or to you, the consumer.  Consequently, these providers aren't going to care when you tell them that your live video stream shouldn't be interrupted and should take precedence over random pieces of e-mail that could be delayed a few seconds without incident.  Neither you nor your favorite web site have any ability to guarantee the quality of the service they provide you.&lt;br /&gt;&lt;br /&gt;Within a single ISPs network, though, that's not the case.  If you're an AT&amp;amp;T customer, and you have a nice big IP connection from them, and they want to sell you live video on top of it, AT&amp;amp;T controls the entire network at that point, so they have the ability to guarantee the quality of service for that live video (TV) stream, and can say that TV takes precedence over file downloads and the like.  This raises red flags for competitors, that want to sell you TV over the public Internet.  Since they cannot guarantee that their own video stream will have a guaranteed quality of service, their live video will be treated just like other random Internet traffic.  If you start downloading some software, your live video stream from them will start breaking up and be unwatchable, while AT&amp;amp;T's live video service will still look great.&lt;br /&gt;&lt;br /&gt;This is a non-neutral Internet.  The ISP is able to provide services that others are unable to provide.  The ISP's solution (AT&amp;amp;T's position) is simply to sell guaranteed connectivity to these content providers, at a premium.  If you want to guarantee the quality of service of your Internet traffic to their customers, you need a dedicated connection where everything between the provider and the consumer is QoS-aware, and special efforts to configure the AT&amp;amp;T network to guarantee that level of service all the way to your home.  These specialized networks necessarily cost more.&lt;br /&gt;&lt;br /&gt;The content providers, understandably, think it's ridiculous to pay extra for this type of thing, and if they have to pay more to deliver their services to you, &lt;strong&gt;they will pass that charge on to you&lt;/strong&gt;.  There's no such thing as a free lunch.&lt;br /&gt;&lt;h2&gt;Net Neutrality&lt;/h2&gt;What these content providers advocate for instead, is a "neutral" Internet provider, one that does not give preference to their own IP packets, or allows 3rd-party providers to give themselves the same degree of preference without charging them extra for that ability.&lt;br /&gt;&lt;br /&gt;The problem is that the latter capability is still going to cost something, &lt;strong&gt;costs they will pass on to you&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Either way, you pay!  The battle between these two sides has nothing to do with whether or not &lt;em&gt;you&lt;/em&gt; pay.  It's all about &lt;em&gt;who&lt;/em&gt; you pay (i.e. who the "bad guy" is that has to raise rates).&lt;br /&gt;&lt;br /&gt;And, of course, this all makes the assumption that we even &lt;em&gt;want&lt;/em&gt; guaranteed quality of service for the video we watch on the Internet.  For stuff like Google Video and YouTube, we seem to be doing OK today without QoS.  So who's upset about the situation?  Those that want to provide &lt;em&gt;TV&lt;/em&gt; service over the Internet.  When you dial up Skinemax with your remote, you're not going to want to deal with 10 seconds of "Buffering..." every few minutes, or an episode of Lost that cuts out when your kids hop on Second Life.  It has to work without disruption, and it has to work &lt;em&gt;right now&lt;/em&gt;.  Somebody has to pay for that no matter how "neutral" the Internet is, and ultimately, it's going to be you either way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1965384389652880237-2972625148647641888?l=blog.fastolfe.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastolfe.net/feeds/2972625148647641888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastolfe.net/2006/10/net-neutrality-you-pay-either-way.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/2972625148647641888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1965384389652880237/posts/default/2972625148647641888'/><link rel='alternate' type='text/html' href='http://blog.fastolfe.net/2006/10/net-neutrality-you-pay-either-way.html' title='Net Neutrality: You pay either way!'/><author><name>David Nesting</name><uri>https://profiles.google.com/113344121601166140714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-AiNpoynuw8s/AAAAAAAAAAI/AAAAAAAACLQ/AE1qMn9-51g/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
