<?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-4361245043329780596</id><updated>2012-02-16T13:06:49.429-06:00</updated><category term='code'/><category term='kvetch'/><category term='cook'/><title type='text'>Mike's Cafe II</title><subtitle type='html'>Just a plain cup of joe</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-2951074809363769618</id><published>2011-11-23T11:33:00.003-06:00</published><updated>2011-11-23T11:42:38.745-06:00</updated><title type='text'>November Status Report</title><content type='html'>In no particular order:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I trashed my Windows Vista partition, which I was not using, and installed CentOS 6. Why CentOS 6? &amp;nbsp;I want to run &lt;a href="http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.htm"&gt;XILINX ISE WebPACK&lt;/a&gt;, which can run on Linux, but is only certified to run on &lt;a href="http://www.redhat.com/rhel/"&gt;RHEL&lt;/a&gt;&amp;nbsp;&lt;i&gt;this version&lt;/i&gt; and &lt;a href="http://www.suse.com/"&gt;Suse Linux Enterprise&lt;/a&gt; &lt;i&gt;that version&lt;/i&gt;. I have a board with a Xilinx part on it, and I want to play with it. Rather than screwing around with my default Ubuntu desktop box to get Xilinx to work (it's supposed to be possible), I decided to install the nearest thing to RHEL around: &lt;a href="http://www.centos.org/"&gt;CentOS&lt;/a&gt;. My intention is to make an "engineering workstation" type system, like my old Sun workstation that I used on the job.&lt;/li&gt;&lt;li&gt;CentOS 6 has it's quirks. Red Hat uses a program called &lt;a href="http://en.wikipedia.org/wiki/Prelink"&gt;prelink&lt;/a&gt;&amp;nbsp;to (try to) speed up the system. YMMV, as they say. What it does do, and does very well, is trash &lt;a href="http://www.dropbox.com/"&gt;Dropbox&lt;/a&gt;, an online file storage provider.&amp;nbsp;Dropbox is currently &amp;nbsp;important in my life because I store &amp;nbsp;my notes on it. I do love my notes. Prelink does a good job of prelinking things that should not &lt;i&gt;ever&lt;/i&gt; be prelinked. To tell prelink to cut it out, you have to edit the file&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/prelink.conf&lt;/span&gt; and blacklist the program being trashed. Yup. The prelink guys want you to opt out, not opt in. I give them credit for being so&amp;nbsp;inclusive. For a program like Dropbox, blacklisting can be an iterative process. You think you have it fixed, but then Dropbox gets trashed again, so you have to tweak your blacklist... again.The magic temporary fix is&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo yum reinstall dropbox dropbox-nautilus&lt;/span&gt;, which will at least temporarily give you back Dropbox. (Yeah, I enabled &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Sudo"&gt;sudo&lt;/a&gt;&lt;/span&gt;. Just shoot me, I come in peace, from &lt;a href="http://www.debian.org/"&gt;Debian&lt;/a&gt;. Sorta, kinda.) I think that I have the proper blacklisting sorted out, but only time will tell.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class="tr_bq"&gt;For the record, here's the lines I added to&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;/etc/prelink.conf&lt;/span&gt; to blacklist Dropbox:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-b dropbox*&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-b dbcli*&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;We'll see how this works out in the long run. Yesterday when&lt;/span&gt;&amp;nbsp;I booted CentOS 6, Dropbox was still working, and all is in harmony.&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The GUI based package manager, which is based on &lt;a href="http://www.packagekit.org/"&gt;PackageKit&lt;/a&gt;&amp;nbsp;and &lt;a href="http://en.wikipedia.org/wiki/Yellowdog_Updater,_Modified"&gt;YUM&lt;/a&gt;, &amp;nbsp;is slower than cooking Irish oatmeal. I have no idea why. Running &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;yum&lt;/span&gt; from the command line does not seem too slow, so it has to be something with how they're updating/searching/building the local package database. For the record, &lt;a href="http://en.wikipedia.org/wiki/Synaptic_(software)"&gt;synaptic&lt;/a&gt;&amp;nbsp;and &lt;a href="http://en.wikipedia.org/wiki/Advanced_Packaging_Tool"&gt;APT&lt;/a&gt; seem much faster.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Of course&amp;nbsp;&lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;&amp;nbsp;has the annoying&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;apt-xapian-index&lt;/span&gt; thing going on... &amp;nbsp;very annoying. See:&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class="tr_bq"&gt;&lt;a href="http://sapnwnewbie.blogspot.com/2010/11/high-cpu-usage-by-update-apt-xapi.html"&gt;High CPU Usage on Ubuntu By update-apt-xapi Process&lt;/a&gt;&amp;nbsp;(Note that you have to fix the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/cron.daily/apt&lt;/span&gt; file as well as the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/cron.weekly/apt-xapian-index&lt;/span&gt; file. Ubuntu belives in wearing &amp;nbsp;both a belt and &lt;strike&gt;suspenders&lt;/strike&gt;&amp;nbsp;braces.)&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;I did a fresh install for my Ubuntu system. I went from 11.04 "Natty Narwhal" to 11.10 "Oneiric Ocelot". Supposedly they have improved the wonderful, shiny new&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Unity_(user_interface)"&gt;Unity&lt;/a&gt;&amp;nbsp;user interface. I tried it (again); it's still not what I'm looking for. No surprise. I fixed this with a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;sudo apt-get install lubuntu-desktop kupfer&lt;/span&gt; and life is beautiful again.&lt;/li&gt;&lt;li&gt;Ubuntu 11.10 has packages for a complete &lt;a href="http://en.wikipedia.org/wiki/GNU_toolchain"&gt;GNU gcc toolchain&lt;/a&gt;, including hardware debugging, &amp;nbsp;for a&amp;nbsp;&lt;a href="http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_(MSP-EXP430G2)"&gt;TI MSP430&lt;/a&gt;&amp;nbsp;target. In theory one would not have to &lt;i&gt;ever&lt;/i&gt; build the friggen' thing again. In practice,&amp;nbsp;the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;gdb-msp430&lt;/span&gt; package will not install:&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;E: /var/ca&lt;/span&gt;che/apt/archives/gdb-msp430_7.2~mspgcc-7.2-20110612-1ubuntu1_amd64.deb: trying to overwrite '/usr/share/gdb/python/gdb/__init__.py', which is also in package gdb 7.3-0ubuntu2&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The bug is already in the &lt;a href="https://bugs.launchpad.net/ubuntu/+source/software-center/+bug/883420"&gt;Ubuntu launchpad bug tracker&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Another problem with an official Ubuntu package for a MSP430 toolchain is that an official package will follow the Debian standard for where files go: executable binaries go in something like &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/usr/bin&lt;/span&gt;, libraries in something like&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/usr/lib&lt;/span&gt;, and so forth. The toolchain is scattered through your system, albeit in a logical way. This may make using &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;'s C/C++ Cross Compiler Support &amp;nbsp;and C/C++ GDB Hardware Debugging plugins a pain to use. One reason I like Eclipse is it gives you a GUI type debugger in Linux. I do so like to point and click...&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-EV1o9Z8WfWM/Ts0lwlbwPeI/AAAAAAAABcc/V13PbtZXFnQ/s1600/eclipse_junkpng.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="451" src="http://4.bp.blogspot.com/-EV1o9Z8WfWM/Ts0lwlbwPeI/AAAAAAAABcc/V13PbtZXFnQ/s640/eclipse_junkpng.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Note the handy Eclipse configuration form, found under &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Project --&amp;gt; Properties --&amp;gt; C/C++ Build --&amp;gt; Settings&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, at least on my system. It's trying hard to make your life easier. Really. I think that Eclipse is assuming that you have the whole the cross compiler toochain stored in one location, such as &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/usr/local/foo&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; or &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/opt/bar&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;. If you can give it a valid prefix, such as &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;msp-430-&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; or &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;arm-none-eabi-&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, and a valid path to the toolchain's executables, such as &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/opt/msp430/bin&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; or&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/opt/CodeSourcery/Sourcery_G++_Lite/bin&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, your life will be much easier because you will have fewer wonderful Eclipse form boxes to fill out. This &lt;i&gt;may&lt;/i&gt; work for putting your executable binary things in&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; /usr/bin&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, and the rest of the files somewhere in the file system.&amp;nbsp;I don't know. If someone fixes the &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;gdb-msp430&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;package I'll find out. My preference is too keep all the toolchains separate, but if everything plays nicely and I don't have to build the &lt;a href="http://mspgcc.sourceforge.net/"&gt;mspgcc toochain&lt;/a&gt; ever again, I'll be happy.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-2951074809363769618?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/2951074809363769618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/11/november-status-report.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/2951074809363769618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/2951074809363769618'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/11/november-status-report.html' title='November Status Report'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-EV1o9Z8WfWM/Ts0lwlbwPeI/AAAAAAAABcc/V13PbtZXFnQ/s72-c/eclipse_junkpng.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-4443729278946220141</id><published>2011-10-14T09:58:00.000-05:00</published><updated>2011-10-14T09:58:42.325-05:00</updated><title type='text'>Hey, it's October!</title><content type='html'>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-vxuN2ULtAk4/TphMrEt9GvI/AAAAAAAABbI/9T0BytxhNT4/s1600/IMG_0755_1.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="180" src="http://3.bp.blogspot.com/-vxuN2ULtAk4/TphMrEt9GvI/AAAAAAAABbI/9T0BytxhNT4/s320/IMG_0755_1.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Atop the lighthouse at Whitefish Bay&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-YZ141i6xK3Q/TphDVrnTOpI/AAAAAAAABaw/b_B5y5I7pUI/s1600/IMG_0771_1.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="180" src="http://2.bp.blogspot.com/-YZ141i6xK3Q/TphDVrnTOpI/AAAAAAAABaw/b_B5y5I7pUI/s320/IMG_0771_1.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;At Whitefish Bay, Michigan&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Hmm, I've been a bit inactive as of late. It's time to update the blog...&lt;br /&gt;&lt;br /&gt;Ken and I "&lt;a href="http://www.mtu.edu/current/parentnet/archives/2006/parent409.html"&gt;Said Yah to Da UP, Eh!&lt;/a&gt;" and made a lightning strike to &lt;a href="http://www.exploringthenorth.com/whitefish/whitefish.html"&gt;Whitefish Point, Michigan&lt;/a&gt;&amp;nbsp;(aka "The Graveyard of Ships"). This is the site of a working lighthouse and the &lt;a href="http://www.exploringthenorth.com/shipmus/shipmuseum.html"&gt;Great Lakes Shipwreck Museum&lt;/a&gt;, among other things. From Chicago, it's a very long ride in the country, at times on rural roads with, at most, one destination sign. (I believe that the locals think that road signs are optional. If you don't know where the road goes, why the hell would you want to travel it, ya stupid fudgie?) The "&lt;a href="http://en.wikipedia.org/wiki/SS_Edmund_Fitzgerald"&gt;Edmund Fitzgerald&lt;/a&gt;"&amp;nbsp; that &lt;a href="http://en.wikipedia.org/wiki/Gordon_Lightfoot"&gt;Gordon Lightfoot&lt;/a&gt;&amp;nbsp;sings about sank near this place, and every year there a memorial service is held at the museum. The recovered bell from the Big Fitz is rung 29 times, once for each crew member. A replacement bell, inscribed with names of the the crew, was installed on the wreck. We also passed through &lt;a href="http://en.wikipedia.org/wiki/Sault_Ste._Marie,_Michigan"&gt;Sault Ste. Marie, Michigan&lt;/a&gt;&amp;nbsp;and saw the &lt;a href="http://en.wikipedia.org/wiki/Soo_locks"&gt;Soo Locks&lt;/a&gt;&amp;nbsp;in action, visited the museum ship&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Steamship_Valley_Camp"&gt;Steamship Valley Camp&lt;/a&gt;&amp;nbsp;(very cool) and went to the top of the&amp;nbsp;&lt;a href="http://www.thevalleycamp.com/tower-of-history-4/"&gt;Tower of History&lt;/a&gt;. We had a great time.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-C2jRo9CouVo/TphB4OREF4I/AAAAAAAABag/YxYU1vB3mXs/s1600/IMG_0673_1.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="180" src="http://2.bp.blogspot.com/-C2jRo9CouVo/TphB4OREF4I/AAAAAAAABag/YxYU1vB3mXs/s320/IMG_0673_1.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Mackinaw_Bridge"&gt;Mackinaw Bridge&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Something else great about Michigan: where I come from, a party store sells things such as paper hats and decorated napkins; in Michigan, a party store sells all varieties of &amp;nbsp;booze. The heck with paper hats! They folks really know how to party! Yowza! I celebrated this diversity by purchasing a variety of beers and some legal, 125 proof &amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Moonshine"&gt;moonshine&lt;/a&gt;. A few of the beers and the moonshine made it back home intact. I haven't cracked the hooch open yet, but I'll get around to it.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Gror9JlWTE4/TphAe88-o2I/AAAAAAAABaY/ztgjaukm3Ys/s1600/white_dog.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-Gror9JlWTE4/TphAe88-o2I/AAAAAAAABaY/ztgjaukm3Ys/s1600/white_dog.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Moonshine&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Interesting to note: my wife's two brothers, both alumnae of &lt;a href="http://en.wikipedia.org/wiki/Ole_Miss#History"&gt;Ole_Miss&lt;/a&gt;, were unable to hook me up with moonshine in Mississippi. They claimed no knowledge of such things, the&amp;nbsp;sissies. I had to console myself with&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Stolichnaya"&gt;Stoli&lt;/a&gt;&amp;nbsp;while I was down south. I'll tell you one thing, the great thing about Mississippi is that for greater efficiency, beer is sold in gas stations and convenience stores instead of liquor stores. It sure sped things up for me! &amp;nbsp;I'm not sure what a party store is in Mississippi. Maybe that's where you can buy a lap dance or something.&lt;br /&gt;&lt;br /&gt;Like all good tourists, we purchased a crapload of fudge and postcards, ate a&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Pasty"&gt;pastie&lt;/a&gt;, and ran out of gas on the interstate. On the journey home, I survived on a balanced diet of non-Chicago hot dogs with mustard and &lt;a href="http://en.wikipedia.org/wiki/V8_(beverage)"&gt;V8&lt;/a&gt;&amp;nbsp;juice. I'm more or less still alive, but I really need eat some greens.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;A few photos:&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-r3XppFnjY9I/TphCq7JNbsI/AAAAAAAABao/FOSrJp3FPlI/s1600/IMG_0699_1.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="180" src="http://4.bp.blogspot.com/-r3XppFnjY9I/TphCq7JNbsI/AAAAAAAABao/FOSrJp3FPlI/s320/IMG_0699_1.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The lighthouse at Whitefish Bay&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-mQGxS1MFZPg/TphKY_FtCVI/AAAAAAAABa4/JhFhNmeMoJM/s1600/IMG_0700_1.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="180" src="http://2.bp.blogspot.com/-mQGxS1MFZPg/TphKY_FtCVI/AAAAAAAABa4/JhFhNmeMoJM/s320/IMG_0700_1.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Great Lakes Shipwreck Museum&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-xRLJO2cd01A/TphLDipyW2I/AAAAAAAABbA/YezK3MHpZaQ/s1600/STA_0746_1.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-xRLJO2cd01A/TphLDipyW2I/AAAAAAAABbA/YezK3MHpZaQ/s320/STA_0746_1.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;View from the Lighthouse&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-4443729278946220141?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/4443729278946220141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/10/hey-its-october.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4443729278946220141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4443729278946220141'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/10/hey-its-october.html' title='Hey, it&apos;s October!'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-vxuN2ULtAk4/TphMrEt9GvI/AAAAAAAABbI/9T0BytxhNT4/s72-c/IMG_0755_1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-1902118598322777653</id><published>2011-06-20T11:16:00.000-05:00</published><updated>2011-06-20T11:16:28.463-05:00</updated><title type='text'>Re: Unity Desktop Environment nonresponsive with GeForce 7300 LE...</title><content type='html'>&lt;strong&gt;Re: Unity &lt;a class="kLink" href="http://www.nvnews.net/vbulletin/showthread.php?p=2446881#" id="KonaLink0" style="font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; position: static; text-decoration: underline !important;"&gt;&lt;span style="color: blue; font-family: inherit ! important; font-size: inherit ! important; font-weight: inherit ! important; position: static;"&gt;&lt;span class="kLink" style="background-color: transparent; border-bottom: 1px solid blue; color: blue ! important; font-family: inherit ! important; font-size: inherit ! important; font-weight: inherit ! important; position: static;"&gt;Desktop&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; Environment nonresponsive with GeForce 7300 LE...&lt;/strong&gt;        &lt;br /&gt;&lt;hr size="1" style="background-color: #d1d1e1; color: #d1d1e1;" /&gt;              &lt;div id="post_message_2446881"&gt;&amp;nbsp;&lt;/div&gt;&lt;div id="post_message_2446881"&gt;Aw, snap! I thought everything was groovy, but I was wrong. I posted this elsewhere... &lt;/div&gt;&lt;div id="post_message_2446881"&gt;&amp;nbsp;&lt;/div&gt;&lt;div id="post_message_2446881"&gt;Sorry, it's not fixed. My mistake, there still seem to be some problems. &lt;br /&gt;&lt;br /&gt;I found this in the Debian User Forums:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forums.debian.net/viewtopic.php?f=7&amp;amp;t=65539" target="_blank"&gt;http://forums.debian.net/viewtopic.php?f=7&amp;amp;t=65539&lt;/a&gt; "Lost 3D after updating nvidia-glx, &lt;a class="kLink" href="http://www.nvnews.net/vbulletin/showthread.php?p=2446881#" id="KonaLink1" style="font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; position: static; text-decoration: underline !important;"&gt;&lt;span style="color: blue; font-family: inherit ! important; font-size: inherit ! important; font-weight: inherit ! important; position: static;"&gt;&lt;span class="kLink" style="color: blue !important; font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; position: static;"&gt;linux&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; and X".&lt;br /&gt;&lt;br /&gt;Someone advised reinstalling the following packages:&lt;br /&gt;&lt;br /&gt;libegl1-mesa_7.10.2-3_i386.deb&lt;br /&gt;libglu1-mesa_7.10.2-3_i386.deb&lt;br /&gt;libegl1-mesa-drivers_7.10.2-3_i386.deb&lt;br /&gt;xserver-xephyr_1.10.2-1_i386.deb&lt;br /&gt;libgl1-mesa-dri_7.10.2-3_i386.deb&lt;br /&gt;xserver-xorg-core_1.10.2-1_i386.deb&lt;br /&gt;libgl1-mesa-glx_7.10.2-3_i386.deb&lt;br /&gt;&lt;br /&gt;I reinstalled the Ubuntu amd64 equivalents:&lt;br /&gt;&lt;br /&gt;(libegl1-mesa) &amp;lt;- not on my system&lt;br /&gt;libglu1-mesa&lt;br /&gt;(libegl1-mesa-&lt;a class="kLink" href="http://www.nvnews.net/vbulletin/showthread.php?p=2446881#" id="KonaLink2" style="font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; position: static; text-decoration: underline !important;"&gt;&lt;span style="color: blue; font-family: inherit ! important; font-size: inherit ! important; font-weight: inherit ! important; position: static;"&gt;&lt;span class="kLink" style="background-color: transparent; border-bottom: 1px solid blue; color: blue ! important; font-family: inherit ! important; font-size: inherit ! important; font-weight: inherit ! important; position: static;"&gt;driver&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;) &amp;lt;- not on my system&lt;br /&gt;xserver-xephyr&lt;br /&gt;libgl1-mesa-dri&lt;br /&gt;xserver-xorg-core&lt;br /&gt;libgl1-mesa-glx&lt;br /&gt;&lt;br /&gt;Two of these packages, libegl1-mesa and libegl1-mesa-driver, are not &lt;a class="kLink" href="http://www.nvnews.net/vbulletin/showthread.php?p=2446881#" id="KonaLink3" style="font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; position: static; text-decoration: underline !important;"&gt;&lt;span style="color: blue; font-family: inherit ! important; font-size: inherit ! important; font-weight: inherit ! important; position: static;"&gt;&lt;span class="kLink" style="color: blue !important; font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; position: static;"&gt;installed&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; and don't seem to be needed.&lt;br /&gt;&lt;br /&gt;After banging in these packages, Ubuntu boots and loads Unity-2D. I  mistook Unity-2D for regular unity, and thought "problem solved". My  mistake.&lt;br /&gt;&lt;br /&gt;I am currently using  &lt;a class="kLink" href="http://www.nvnews.net/vbulletin/showthread.php?p=2446881#" id="KonaLink4" style="font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; position: static; text-decoration: underline !important;"&gt;&lt;span style="color: blue; font-family: inherit ! important; font-size: inherit ! important; font-weight: inherit ! important; position: static;"&gt;&lt;span class="kLink" style="color: blue !important; font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; position: static;"&gt;nVidia &lt;/span&gt;&lt;span class="kLink" style="color: blue !important; font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; position: static;"&gt;driver&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; 275.09.07, installed from NVIDIA-Linux-x86_64-275.09.07.run.&lt;br /&gt;&lt;br /&gt;The unity support test now results in a failure and loads unity-2d on my system.&lt;br /&gt;&lt;br /&gt;mikey@hatshepsut:~/Downloads$ /usr/lib/nux/unity_support_test -p&lt;br /&gt;OpenGL vendor string:   Mesa Project&lt;br /&gt;OpenGL renderer string: Software Rasterizer&lt;br /&gt;OpenGL version string:  2.1 Mesa 7.10.2&lt;br /&gt;&lt;br /&gt;Not &lt;a class="kLink" href="http://www.nvnews.net/vbulletin/showthread.php?p=2446881#" id="KonaLink5" style="font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; position: static; text-decoration: underline !important;"&gt;&lt;span style="color: blue; font-family: inherit ! important; font-size: inherit ! important; font-weight: inherit ! important; position: static;"&gt;&lt;span class="kLink" style="color: blue !important; font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; position: static;"&gt;software&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; rendered:    no&lt;br /&gt;Not blacklisted:          yes&lt;br /&gt;GLX fbconfig:             yes&lt;br /&gt;GLX texture from pixmap:  no&lt;br /&gt;GL npot or rect textures: yes&lt;br /&gt;GL vertex &lt;a class="kLink" href="http://www.nvnews.net/vbulletin/showthread.php?p=2446881#" id="KonaLink6" style="font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; position: static; text-decoration: underline !important;"&gt;&lt;span style="color: blue; font-family: inherit ! important; font-size: inherit ! important; font-weight: inherit ! important; position: static;"&gt;&lt;span class="kLink" style="background-color: transparent; border-bottom: 1px solid blue; color: blue ! important; font-family: inherit ! important; font-size: inherit ! important; font-weight: inherit ! important; position: static;"&gt;program&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;:        yes&lt;br /&gt;GL fragment program:      yes&lt;br /&gt;GL vertex buffer object:  yes&lt;br /&gt;GL framebuffer object:    yes&lt;br /&gt;GL version is 1.4+:       yes&lt;br /&gt;&lt;br /&gt;Unity supported:          no&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-1902118598322777653?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/1902118598322777653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/06/re-unity-desktop-environment.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/1902118598322777653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/1902118598322777653'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/06/re-unity-desktop-environment.html' title='Re: Unity Desktop Environment nonresponsive with GeForce 7300 LE...'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-2468452507809319771</id><published>2011-06-19T19:07:00.004-05:00</published><updated>2011-06-20T11:18:00.395-05:00</updated><title type='text'>Unity DE is now Working as Well As Can Be Expected</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-FWFqSOkU3sY/Tf6NhlFHHXI/AAAAAAAAAqo/TztYC39Hw6o/s1600/my-unity-desktop.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-FWFqSOkU3sY/Tf6NhlFHHXI/AAAAAAAAAqo/TztYC39Hw6o/s320/my-unity-desktop.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&amp;nbsp;&lt;strike&gt;Happy, happy, joy, joy&lt;/strike&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;See the next day's post.&lt;br /&gt;&lt;strike&gt; &lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;I posted this elsewhere:&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;&lt;b&gt;[FIXED] Re: Unity Desktop Environment nonresponsive with GeForce 7300 LE...&lt;/b&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;Short answer: not a nVidia driver problem.&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;I found a fix, at least for my system, in the Debian User Forums:&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;http://forums.debian.net/viewtopic.php?f=7&amp;amp;t=65539 "Lost 3D after updating nvidia-glx, linux and X".&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;Someone advised reinstalling the following packages:&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;libegl1-mesa_7.10.2-3_i386.deb&lt;/strike&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;libglu1-mesa_7.10.2-3_i386.deb&lt;/strike&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;libegl1-mesa-drivers_7.10.2-3_i386.deb&lt;/strike&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;xserver-xephyr_1.10.2-1_i386.deb&lt;/strike&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;libgl1-mesa-dri_7.10.2-3_i386.deb&lt;/strike&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;xserver-xorg-core_1.10.2-1_i386.deb&lt;/strike&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;libgl1-mesa-glx_7.10.2-3_i386.deb&lt;/strike&gt;&lt;/div&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;I reinstalled the Ubuntu amd64 equivalents:&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;libegl1-mesa &amp;lt;-------- Not installed or needed on my system.&lt;/strike&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;libglu1-mesa&lt;/strike&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;libegl1-mesa-driver &amp;lt;- Not installed or needed on my system.&lt;/strike&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;xserver-xephyr&lt;/strike&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;libgl1-mesa-dri&lt;/strike&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;xserver-xorg-core&lt;/strike&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;strike&gt;libgl1-mesa-glx&lt;/strike&gt;&lt;/div&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;Two of these packages, libegl1-mesa and libegl1-mesa-driver, WERE NOT installed on my system after the upgrade to natty (Ubuntu 11.04). I don't know why they weren't installed during the upgrade, or if they were there before the upgrade. They seem to be needed. (&lt;b&gt;No, they are not.&lt;/b&gt;)&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;After banging in these packages, the Unity Desktop Environment works as well as can be expected. (Snarky comments removed.) Of course, I am running the nVidia 275.09.07 drivers instead of the ones in the Ubuntu repository...&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;A great Father's Day present for me! Happy Father's Day to all the dads out there.&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;I'm not a fan of the Unity DE, but it is nice to have my video working properly again.&lt;/strike&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-2468452507809319771?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/2468452507809319771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/06/unity-de-is-now-working-as-well-as-can.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/2468452507809319771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/2468452507809319771'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/06/unity-de-is-now-working-as-well-as-can.html' title='Unity DE is now Working as Well As Can Be Expected'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-FWFqSOkU3sY/Tf6NhlFHHXI/AAAAAAAAAqo/TztYC39Hw6o/s72-c/my-unity-desktop.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-4655341363189307010</id><published>2011-06-02T11:17:00.000-05:00</published><updated>2011-06-02T11:17:19.137-05:00</updated><title type='text'>My New Lubuntu Desktop</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-8lt1NJi0uXM/Teek9ZkNE1I/AAAAAAAAAqk/-AjVXIaQPvM/s1600/my_lxde_desktop.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-8lt1NJi0uXM/Teek9ZkNE1I/AAAAAAAAAqk/-AjVXIaQPvM/s320/my_lxde_desktop.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Big news from the home office in beautiful Skokie, IL: I have not been enjoying my Unity desktop environment experience very much. I am not alone is this.&amp;nbsp; In the past I have fixed other Ubuntu oddities such as the Aubergine barf color scheme and the placing and reordering of the window buttons on the top left, ala OS X. My solution to this whole Unity business is to switch to Lubuntu, which uses&amp;nbsp; LXDE. I call this the natty quick fix (NQF):&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt get install lubuntu-desktop &lt;/span&gt;&lt;/blockquote&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Log out, then log in again into Lubuntu. Add other Lubuntu/LXDE packages as desired.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;I put the bar up on the top, ala Gnome 2, added the Cairo Dock and found that Gnome-Do still works. I'm a happy, happy camper once again. &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;I can't complain too much, because you do not have to use Unity or Unity 2D. There are so many desktop environment/window manager options available from the standard repositories. I could even use Gnome 2 while it lasts, without adding a single package. (It's supposed to go away in the next release, but it's still available for now.)&amp;nbsp; That's a nice thing about Ubuntu: You can customize the heck out of it. There are a lot of other desktop options out there, options that will not kill my current installation. I do not want to reinstall at this time. There's KDE, XFCE4, LXDE, Window Maker, etc., all available for installation from the repository. I chose LXDE. Earlier, I tried it in a virtual machine and had a good experience. Now it's working well for me directly on hardware.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;LXDE is supposed to be a lightweight desktop environment. but with all the crap I'm running on it, Conky shows a crapload of memory being used. (It's showing 1.48 GB being used right now, and all I'm doing is editing this blog post.) I'll look into that later. Right now life is too good.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-4655341363189307010?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/4655341363189307010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/06/my-new-lubuntu-desktop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4655341363189307010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4655341363189307010'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/06/my-new-lubuntu-desktop.html' title='My New Lubuntu Desktop'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-8lt1NJi0uXM/Teek9ZkNE1I/AAAAAAAAAqk/-AjVXIaQPvM/s72-c/my_lxde_desktop.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-477883914259477512</id><published>2011-06-01T10:41:00.000-05:00</published><updated>2011-06-01T10:41:16.005-05:00</updated><title type='text'>My New Ubuntu Natty Wallpaper II</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-0vT_XHi8lyU/TeZZLxbzhNI/AAAAAAAAAqg/X_Kb3R-2aHU/s1600/natty_nvidia-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://2.bp.blogspot.com/-0vT_XHi8lyU/TeZZLxbzhNI/AAAAAAAAAqg/X_Kb3R-2aHU/s320/natty_nvidia-3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I felt creative after borking my system's video &lt;i&gt;again.&lt;/i&gt; This time I was trying to get Unity working by down-reving&amp;nbsp; both my Xorg server and the proprietary nVidia video driver. All I I got for my efforts was a screen full of scrambled pixels.&lt;br /&gt;&lt;br /&gt;Unity more or less works on my system if I use the open source Nouveau driver. (Other things break... the Nouveau driver 3D stuff is not ready for prime time.) I can also use the nVidia driver with Unity 2D, which is probably being improved &lt;i&gt;even as I write&lt;/i&gt;. I'm not real crazy about the Unity desktop environment, 2D or otherwise. It seems to be a great leap backwards. I'm not sure why I don't deep six the whole fricking thing and move on. I must have too much time on my hands.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-477883914259477512?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/477883914259477512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/06/my-new-ubuntu-natty-wallpaper-ii.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/477883914259477512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/477883914259477512'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/06/my-new-ubuntu-natty-wallpaper-ii.html' title='My New Ubuntu Natty Wallpaper II'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-0vT_XHi8lyU/TeZZLxbzhNI/AAAAAAAAAqg/X_Kb3R-2aHU/s72-c/natty_nvidia-3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-8760375572795921847</id><published>2011-05-26T08:54:00.002-05:00</published><updated>2011-05-26T08:58:17.363-05:00</updated><title type='text'>My New Ubuntu Natty Wallpaper</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-s77zgK___NQ/Td5ajeWwmXI/AAAAAAAAAqc/FwinEwYVl9o/s1600/my_natty_desktop.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-s77zgK___NQ/Td5ajeWwmXI/AAAAAAAAAqc/FwinEwYVl9o/s400/my_natty_desktop.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;Dear Mr. Shuttleworth,&lt;br /&gt;&lt;br /&gt;&amp;nbsp;I am having ever so much fun with the new Unity desktop. I felt so inspired by the spirit of unity that I created a new desktop wallpaper for my computer. It truly warms the cockles of my heart to beta test your wonderful software.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;&lt;br /&gt;Mikey&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-8760375572795921847?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/8760375572795921847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/05/my-new-ubuntu-natty-wallpaper.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/8760375572795921847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/8760375572795921847'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/05/my-new-ubuntu-natty-wallpaper.html' title='My New Ubuntu Natty Wallpaper'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-s77zgK___NQ/Td5ajeWwmXI/AAAAAAAAAqc/FwinEwYVl9o/s72-c/my_natty_desktop.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-7420976729836120019</id><published>2011-03-10T17:38:00.000-06:00</published><updated>2011-03-10T17:38:07.709-06:00</updated><title type='text'>I have the touch!</title><content type='html'>The poison touch, that is. The proverbial brown thumb. It's a reverse midas touch kind of power: everything I touch turns to crap.&lt;br /&gt;&lt;br /&gt;It's&amp;nbsp; an awesome and mighty power. I have an uncanny ability to pick losers. Whatever I like, gets the spike. I liked the TV show &lt;i&gt;Firefly&lt;/i&gt;. Canceled. &lt;i&gt;FlashForward&lt;/i&gt;. Canceled.&amp;nbsp; &lt;i&gt;My Name is Earl&lt;/i&gt;. Canceled. Yikes! No more TV for me.&amp;nbsp; I decided that I would wait a few years for the reruns to appear, and spend my time reading books and speaking in tongues to computers as a hobby, instead of watching TV. Although Hollywood heaved a very big sigh of relief, it's just too late for some.&lt;br /&gt;&lt;br /&gt;Now writers must face my dangerous attentions. John Biggins was dropped by his publisher. He's self publishing on Amazon.com, poor guy. Even &lt;b&gt;&lt;i&gt;Neil Gaiman&lt;/i&gt;&lt;/b&gt; can't get R.A. Lafferty reprinted. (Good thing R.A. is now a blessed memory... he'd starve otherwise.) Earlier I reviewed Sara Vowell's book, &lt;i&gt;The Wordy Shipmates&lt;/i&gt;, for Skokie Public Library's Winter Reading Whatever-a-thon. Hey, just shoot me, OK? I just wanted to win one of the prizes for my sweetie.&lt;br /&gt;&lt;br /&gt;So, today I find in the "Buy Our Discarded Books for $1 Snack Zone Copy Center" section of the library... &lt;i&gt;The Wordy Shipmates&lt;/i&gt;. The very copy that I checked out earlier this year and reviewed. With the purple X of death on its spine. The book was just published in 2008, and now in 2011 the library's already binning it for a buck. You know,&amp;nbsp; they still have Erle Stanley Gardiner books printed in 1955 on the shelf, but Sara Vowell gets the axe after three stinking years. I hope she has health insurance.&lt;br /&gt;&lt;br /&gt;Screw it. I'm joining the Tea Party. They deserve me. There's just no way I'm going to the OTB, that's for sure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-7420976729836120019?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/7420976729836120019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/03/i-have-touch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/7420976729836120019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/7420976729836120019'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/03/i-have-touch.html' title='I have the touch!'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-459059469503590357</id><published>2011-02-02T12:44:00.000-06:00</published><updated>2011-02-02T12:44:17.480-06:00</updated><title type='text'>Snow Day</title><content type='html'>The big storm has dropped a huge load of snow here in Skokie. I'm not sure I can open the front door -- there's a snowdrift&amp;nbsp; about 3-4 feet high in front of it. The back has a sliding door, so if I really want to go outside, I can. Earlier I heard children from next door outside, walking and playing with their dog. I started a pot of black beans with smoked turkey wings and sausage in the slow cooker, then did the crossword puzzle and the jumble. Then watched a couple ot TV shows on Hulu. The house smells great from the slowly cooking beans. It's now 12:38 PM; time to hit the showers.&lt;br /&gt;&lt;br /&gt;Life is beautiful!&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-459059469503590357?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/459059469503590357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/02/snow-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/459059469503590357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/459059469503590357'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/02/snow-day.html' title='Snow Day'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-4587803857802100565</id><published>2011-01-23T09:54:00.000-06:00</published><updated>2011-01-23T09:54:02.121-06:00</updated><title type='text'>Dreaming in Chinese</title><content type='html'>&lt;style type="text/css"&gt;p { margin-bottom: 0.08in; }&lt;/style&gt;  &lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;i&gt;Dreaming in Chinese: Mandarin Lessons in Life, Love and Language&lt;/i&gt; by Deborah Fallows&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;a href="http://3.bp.blogspot.com/_x-dCbtsItBs/TTxOxHIsrWI/AAAAAAAAAp0/d7DcviNe-Qk/s1600/dreaming-in-chinese.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_x-dCbtsItBs/TTxOxHIsrWI/AAAAAAAAAp0/d7DcviNe-Qk/s200/dreaming-in-chinese.jpeg" width="129" /&gt;&lt;/a&gt;The author, a lady from the USA, lived in China for years, and writes about her experiences there. What's interesting about this book is she doesn't write much about tourist sites, cuisine or martial arts, but rather about what she learned about Chinese people and society while living in China while trying to learn Mandarin Chinese (&lt;span style="font-weight: normal;"&gt;Putonghua). She writes about getting a Chinese name, something that “would demonstrate that we weren't just here to flit around China, but intended to stick it out for a while.”  Foreigners are given a name made of Chinese words that sound like their name in their native tongue.   For example, Dr. Paul Myron Anthony Linebarger (who wrote as Cordwainer Smith)  became “Lin Bai-lo” (“Forest of Incandescent Bliss”). Alas, Deborah became “jie bi” “borrow a pen”, which just plain sucks. She correctly deep-sixed the bad name, and spent three years dodging it. There's a lot more  about Chinese culture, society and language – a lot of Chinese language here – because it takes a lot of work for  English speakers to dream in Chinese.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-4587803857802100565?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/4587803857802100565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/01/dreaming-in-chinese.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4587803857802100565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4587803857802100565'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/01/dreaming-in-chinese.html' title='Dreaming in Chinese'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x-dCbtsItBs/TTxOxHIsrWI/AAAAAAAAAp0/d7DcviNe-Qk/s72-c/dreaming-in-chinese.jpeg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-3837506343130593569</id><published>2011-01-17T09:57:00.004-06:00</published><updated>2011-01-18T22:55:16.124-06:00</updated><title type='text'>A Writer is Me!</title><content type='html'>In the Kingdom of Loathing, the Naughty Sorceress is no more. Outside of the Kingdom of Loathing lies the domain known as the real world. In that place I wrote a book review for the Skokie Public Library Winter Reading program. To my surprise, they put my review in the library's blog! Way cool, but sadly, they didn't correct my accidental truncation of the title. The correct title is &lt;i&gt;The Wordy Shipmates&lt;/i&gt;. The librarians probably respect my words too much to edit them. &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;blockquote&gt;&lt;h2 class="entry-title"&gt;&lt;a class="entry-title-link" href="http://feedproxy.google.com/%7Er/skokielibrary/bookshelf/%7E3/pViSv-CRV2E/" target="_blank"&gt;What Skokie is Reading&lt;/a&gt;&lt;/h2&gt;&lt;div class="entry-author"&gt;&lt;span class="entry-source-title-parent"&gt;from &lt;a class="entry-source-title" href="http://www.google.com/reader/view/feed/http%3A%2F%2Ffeeds.feedburner.com%2Fskokielibrary%2Fbookshelf" target="_blank"&gt;The Bookshelf&lt;/a&gt;&lt;/span&gt; &lt;span class="entry-author-parent"&gt;by &lt;span class="entry-author-name"&gt;Lynnanne&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;As part of our &lt;a href="http://events.skokielibrary.info/evanced/sr/homepage.asp" target="_blank"&gt;Winter Reading program&lt;/a&gt;,  we are encouraging you readers to write your own reviews of books when  you enter them on your reading log.   Many readers have already  contributed book reviews and, during the course of the Winter Reading  program, we will share with you some of these wonderful reviews.&lt;br /&gt;Today’s review is of &lt;a href="http://blogs.skokielibrary.info//aquabrowser.skokielibrary.info/?hreciid=%7clibrary%2fmarc%2fskokie-iii%7cb1563535" target="_blank"&gt;&lt;i&gt;The Wordy Shipmate&lt;/i&gt;&lt;/a&gt; by Sarah Vowell: &lt;/blockquote&gt;&lt;blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_x-dCbtsItBs/TTZtvoF90gI/AAAAAAAAApw/6JwW3JtwMmc/s1600/wordyship.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_x-dCbtsItBs/TTZtvoF90gI/AAAAAAAAApw/6JwW3JtwMmc/s200/wordyship.jpg" width="131" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/TTZtBM3KKNI/AAAAAAAAAps/PBQYld5-cW8/s1600/wordyship.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;This  book, written by a former contributing editor and consigliore of the  radio show “This American Life”, is a fascinating, penetrating, personal  and funny book about the Puritan settlers who emigrated to the New  World to build a “city upon a hill”. Few authors could get me interested  in the minutiae of Protestant theology, yet I found myself reading  eagerly about things such as “the covenant of grace” and “the covenant  of works”. Not to mention all the other goings on – banishments, cruel  and unusual punishments, the conjoined church and state, wars with the  Native Americans and a legion of strong personalities with serious  differences of opinions and only a little tolerance. These people, their  issues and the events surrounding them, still resonate today beyond the  cans of baked beans available in every supermarket.&lt;br /&gt;Click &lt;a href="http://winterreading.skokielibrary.info/" target="_blank"&gt;here to find out what Skokie is reading and reviewing&lt;/a&gt; and to register for the Winter Reading program.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-3837506343130593569?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/3837506343130593569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/01/writer-is-me.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/3837506343130593569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/3837506343130593569'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/01/writer-is-me.html' title='A Writer is Me!'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_x-dCbtsItBs/TTZtvoF90gI/AAAAAAAAApw/6JwW3JtwMmc/s72-c/wordyship.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-6561116937263182406</id><published>2011-01-15T08:06:00.000-06:00</published><updated>2011-01-15T08:06:03.762-06:00</updated><title type='text'>Still Looking for the Key</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/TTGnQqmkoNI/AAAAAAAAApo/OG3OEdrIPVs/s1600/Also_ate_zarathustra.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_x-dCbtsItBs/TTGnQqmkoNI/AAAAAAAAApo/OG3OEdrIPVs/s1600/Also_ate_zarathustra.gif" /&gt;&lt;/a&gt;&lt;/div&gt;I'm still pillaging my way through Loathing, looking for the last necessary key. Above is one of my consolation prizes: &lt;br /&gt;&lt;h1 class="firstHeading" style="text-align: center;"&gt;The Best Meal of My Life Trophy&lt;/h1&gt;&lt;h1 class="firstHeading" style="text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;which&lt;/span&gt; you can earn by eating&amp;nbsp;&lt;span style="font-weight: normal;"&gt; 60 &lt;/span&gt;&lt;a href="http://kol.coldfront.net/thekolwiki/index.php/White_Citadel_burger" style="font-weight: normal;" title="White Citadel burger"&gt;White Citadel burgers&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;, 10 &lt;/span&gt;&lt;a href="http://kol.coldfront.net/thekolwiki/index.php/White_Citadel_fries" style="font-weight: normal;" title="White Citadel fries"&gt;orders of White Citadel fries&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;, four &lt;/span&gt;&lt;a href="http://kol.coldfront.net/thekolwiki/index.php/Cherry_Cloaca_Cola" style="font-weight: normal;" title="Cherry Cloaca Cola"&gt;Cherry Cloaca Colas&lt;/a&gt;&lt;span style="font-weight: normal;"&gt; and four &lt;/span&gt;&lt;a href="http://kol.coldfront.net/thekolwiki/index.php/Diet_Cloaca_Cola" style="font-weight: normal;" title="Diet Cloaca Cola"&gt;Diet Cloaca Colas&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 class="firstHeading" style="text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;I'm still waiting for the heart attack.&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 class="firstHeading" style="text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 class="firstHeading" style="text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 class="firstHeading" style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 class="firstHeading" style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 class="firstHeading" style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 class="firstHeading" style="text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-6561116937263182406?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/6561116937263182406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/01/still-looking-for-key.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6561116937263182406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6561116937263182406'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/01/still-looking-for-key.html' title='Still Looking for the Key'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x-dCbtsItBs/TTGnQqmkoNI/AAAAAAAAApo/OG3OEdrIPVs/s72-c/Also_ate_zarathustra.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-8932457204567922821</id><published>2011-01-13T16:44:00.000-06:00</published><updated>2011-01-13T16:44:33.412-06:00</updated><title type='text'>Chasing the Naughty Sorceress</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/TS93MV7_ehI/AAAAAAAAApk/iAtsXRbU2EU/s1600/Sorcform1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_x-dCbtsItBs/TS93MV7_ehI/AAAAAAAAApk/iAtsXRbU2EU/s1600/Sorcform1.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;The Naughty Sorceress from the Kingdom of Loathing&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;Back in the day (the day being sometime around 1974), I used to play a game called &lt;i&gt;Dungeons and Dragons.&lt;/i&gt; I was an enthusiastic player for a number of years, until I wasn't. I lost interest, and so did my friends. The thrill was gone. I stopped playing role playing games, cold turkey.&amp;nbsp;I moved on to other things, and so did most of my friends. I cast no more spells, and adventured underground no more. Orcs were safe in my presence, unless they were&lt;i&gt; very&lt;/i&gt; annoying.&lt;br /&gt;&lt;br /&gt;This has all changed. I now adventure again, in a place called &amp;nbsp;&lt;a href="http://www4.kingdomofloathing.com/login.php?loginid=ebd053f3ad084c41b1997978aadd4d8b"&gt;The Kingdom of Loathing&lt;/a&gt;. Don't ask me why, because I really don't know. I do know that I am in good company and having fun, so I'm just rolling with it. Last night I earned the "Right Tool for the Job" trophy by adventuring 100 times in the Haunted Bathroom of Spookyraven Manor armed with a Gnollish Autoplunger.&lt;br /&gt;&lt;br /&gt;That's a &amp;nbsp;tool I could use in the real world. The toilet has been acting up, and my arm is getting tired using the old-fashioned regular old plunger. Sadly, Gnollish Autoplungers appear to be unavailable for ready money. Later tonight, you can find me looking for&amp;nbsp;&lt;a href="http://kol.coldfront.net/thekolwiki/index.php/Boris's_key"&gt;Boris's key&lt;/a&gt;, which is hidden somewhere in the Kingdom of Loathing. With that key, the Naughty Sorceress is &lt;i&gt;toast&lt;/i&gt;! Yes indeed!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-8932457204567922821?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/8932457204567922821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2011/01/chasing-naughty-sorceress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/8932457204567922821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/8932457204567922821'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2011/01/chasing-naughty-sorceress.html' title='Chasing the Naughty Sorceress'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_x-dCbtsItBs/TS93MV7_ehI/AAAAAAAAApk/iAtsXRbU2EU/s72-c/Sorcform1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-6213191347367312735</id><published>2010-12-25T22:15:00.000-06:00</published><updated>2010-12-25T22:15:20.774-06:00</updated><title type='text'>Holy crap! I haven't posted here since August!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_x-dCbtsItBs/TRbAfwv711I/AAAAAAAAApE/JUBdGepWS5Y/s1600/red-beans-and-rice-sm.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_x-dCbtsItBs/TRbAfwv711I/AAAAAAAAApE/JUBdGepWS5Y/s1600/red-beans-and-rice-sm.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Earlier today, I removed a semi-frozen 1 pound, 15 ounce solid chunk of pork shoulder from the fridge and cut it into smaller pieces. Being semi-frozen made it easier to cut up, but my left hand sure got pretty cold. It was a necessary sacrifice for the plan. Miss Lizzy will make the pickle meat and rice; I'll make the red beans. I can't wait. I love beans and rice, especially red beans and rice. One of the worst parts about having cancer was the truly awful food I was given to eat while incarcerated in Rush North Shore hospital. Exactly once, and only once in all the time that I was an inmate there did they serve red beans and rice. They were beyond adequate, they were actually pretty good. They were one of the few things that actually smelled appetizing when you lifted off the cover over the plate. Of course, that meant that they had to remove it from the menu, to better inflict the patients with more poorly cooked chicken, mystery meat and dry turkey sandwiches with no readily available mustard. You know, healthy food.&lt;br /&gt;&lt;br /&gt;Such bad memories. Enough of that.&lt;br /&gt;&lt;br /&gt;I wasted some more time today playing Kingdom of Loathing. Great fun! I finally killed Ed the Undying, got the Holy MacGuffin and had a ticker tape parade. Then I discovered that I could adventure in the CRIMBCO WC while falling down drunk, so a had a few more Salty Dogs and hit the head to fight some hobelfs. Yeah, baby! Unlike in the real world, in the Kingdom of Loathing I'm the &lt;i&gt;man&lt;/i&gt;.&amp;nbsp;That's one of the cool things about KOL.&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/_x-dCbtsItBs/TRa_4opfmVI/AAAAAAAAApA/ksaZh-MMT4E/s1600/playerfeed_1888541_bigsig.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="64" src="http://3.bp.blogspot.com/_x-dCbtsItBs/TRa_4opfmVI/AAAAAAAAApA/ksaZh-MMT4E/s320/playerfeed_1888541_bigsig.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;In the real world, Miss Lizzy and I went to Starbucks to get out of the house. George was there, and being a true gentleman and scholar, he bought Miss Lizzy a Eggnog Latte and me an Americano. We spent some time chatting, and I got to talk geek with George for a while. I love talking geek. I get to do it so little these days. I told him about the current status of my great vaporware project, &lt;i&gt;BrikWars Arena &lt;/i&gt;and my current Project Euler woes. Yup, I talked too much. I need to learn how to curb my enthusiasm a bit.&lt;br /&gt;&lt;br /&gt;So Happy Crimbo to all, and to all, a good night.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-6213191347367312735?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/6213191347367312735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/12/holy-crap-i-havent-posted-here-since.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6213191347367312735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6213191347367312735'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/12/holy-crap-i-havent-posted-here-since.html' title='Holy crap! I haven&apos;t posted here since August!'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_x-dCbtsItBs/TRbAfwv711I/AAAAAAAAApE/JUBdGepWS5Y/s72-c/red-beans-and-rice-sm.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-7612068144751996282</id><published>2010-08-03T19:06:00.010-05:00</published><updated>2010-08-03T19:19:23.762-05:00</updated><title type='text'>Adventures in Notetaking</title><content type='html'>I'm testing out using&amp;nbsp;&lt;i&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=2226"&gt;vimwiki&lt;/a&gt;&lt;/i&gt;, yes, a &lt;a href="http://www.vim.org/index.php"&gt;Vim&lt;/a&gt; script, as a notes program to keep some information synced between my netbook and my desktop. Keeping some notes in&amp;nbsp;&lt;a href="https://www.dropbox.com/"&gt;Dropbox&lt;/a&gt; so they can be accessed from two different machines shouldn't be an exercise in rocket science, yet this been an annoyance for a while. I've looked at some other programs to do this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;&lt;i&gt;&lt;a href="http://projects.gnome.org/tomboy/"&gt;Tomboy&lt;/a&gt;&lt;/i&gt;, which is a pretty good program. It relies on&amp;nbsp;&lt;a href="http://www.mono-project.com/Main_Page"&gt;Mono&lt;/a&gt;. I don't have many philosophical problems with Mono. (Hey, if Microsoft want to&amp;nbsp; support open source .NET, cool.) It's just that a huge pile of Mono needs to be installed for Tomboy to work, and I want to try to keep my netbook free of big, big, big programs. Especially big, big, big programs that use Microsoft-type technology.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;&lt;i&gt;&lt;a href="http://live.gnome.org/Gnote"&gt;Gnote&lt;/a&gt;&lt;/i&gt; is a reimplementation of Tomboy using C++ instead of mono. It's as great as Tomboy, only less filling. The problems that I had with it was that Gnote (and Tomboy) want to put the note files in a fixed location. A fixed location that is not in my Dropbox directory. I want that location to be somewhere in the ~/Dropbox directory, so that both of my machines can work with the files. I tried to use a symbolic link to relocate the files to the Dropbox, and it seemed to work, at least for a while, before it screwed up. Data was lost. No fun. Definitely my bad.&amp;nbsp; Possibly this will work in a future version. It may even work now, for all I know. Cleaning up the mess was a pain and I don't want to do it again, so I'm avoiding these programs.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;&lt;a href="http://zim-wiki.org/"&gt;Zim&lt;/a&gt; is yet another note program, this time implemented in Python. I like Python. It seems pretty good, and I can easily put the notes into my Dropbox folder. The problem that I have is the netbook version is older than the desktop version and can't easily find and read all the files created by the desktop version. The newer version on the desktop machine keeps wanting to uprev the files created on the netbook. They just can't get along. I tried to install the newer version on my netbook but that's a NOP. I get this error message:&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error: Dependency is not satisfiable: python-support (&amp;gt;= 0.90.0) &lt;br /&gt;&lt;blockquote&gt;Since the system uses Python for, well, I dunno, probably something&amp;nbsp; important, I'm not messing with it. &lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.vim.org/scripts/script.php?script_id=861"&gt;Viki/Deplate&lt;/a&gt; is another vim script that provides wiki capabilities. I did not have a happy experience with it. I installed it, and a few other scripts that it depends on my machine. Let's just say that I had troubles with it. As the author so helpfully points out: &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;blockquote&gt;See :help vimball for details. Also, make sure to read |viki-customization|. If you have difficulties to install this plugin or if you use vim 7.0, please make sure to use the current version of vimball (&lt;a href="http://www.vim.org/scripts/script.php?script_id=1502"&gt;vimscript #1502&lt;/a&gt;).&amp;nbsp;  &lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;I did RTFM. It was like beating my head against the Great Wall of Vim. Guys, I just want to use a script, not study Vim scripting. This thing should just work out of the box.&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;&lt;a href="http://www.vim.org/scripts/script.php?script_id=2226"&gt;vimwiki&lt;/a&gt; is the current contender. So far, so good. It allows you to choose where it will save the notefiles, and selecting my Dropbox&amp;nbsp; directory was not a problem. I can look in the directory and see and open the files. The files are plain text files, readable by darn near anything. I like this. I'm going to play with this for a while. We'll see how it goes.&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/4361245043329780596-7612068144751996282?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/7612068144751996282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/08/adventures-in-notetaking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/7612068144751996282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/7612068144751996282'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/08/adventures-in-notetaking.html' title='Adventures in Notetaking'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-7141902964069016663</id><published>2010-07-22T23:07:00.007-05:00</published><updated>2010-07-22T23:29:00.204-05:00</updated><title type='text'>July 2010 Update</title><content type='html'>I haven't written in my blog at all in July. Here's some things that happened:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Feds have collected all my remaining&amp;nbsp; census materials. The only things that I had left were my training manuals and workbook. I had already turned in my ID and enumerator's bag, so I can no longer impersonate a g-man.&lt;/li&gt;&lt;li&gt;We had an end to the census NRFU (Non Response Follow UP) phase of the census. We had hot dogs, chicken kebabs and fun.&lt;/li&gt;&lt;li&gt;The Feds telephoned me asking for my ID and enumerator bag back. I told them that I had already turned them in. "Who did you give it to?" they asked. My crew leader, (name omitted here)&lt;name here="" omitted=""&gt;. "How do you spell it?" they asked. Being a super grass, I told them. I then emailed her to give her a heads up. You got to love dealing with temporary feds. &lt;/name&gt;&lt;/li&gt;&lt;li&gt;I fixed Python scripting in &lt;a href="http://golly.sourceforge.net/"&gt;Golly&lt;/a&gt; on amd64, at least on my machine. It seems there is a two year old bug, reported to Debian, that has not yet been fixed.&lt;/li&gt;&amp;nbsp;The bug report:&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=495941"&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=495941&lt;/a&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;&lt;a href="https://docs.google.com/document/edit?id=1RNUYzIKLS9LVxMthLSDKB4Pr41QHLuf-wfJ8qetphC4&amp;amp;hl=en"&gt;How to fix it.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Installed and played a bit with some other cellular automaton programs. Golly and &lt;a href="http://psoup.math.wisc.edu/mcell/"&gt;Mirek's Cellebration&lt;/a&gt; still rule, as far as I can tell. I plan to revise my CA (cellular automaton) program, but I'm in learning mode right now, picking up more C++ skills. I'm using a book from the library, &lt;a href="http://www.acceleratedcpp.com/"&gt;Accelerated C++&lt;/a&gt; by Andrew Koenig and Barbara Moo. I highly recommend it; at least it's working for me.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.johnbigginsfiction.com/"&gt;John Biggins&lt;/a&gt;, the author of&lt;b&gt; &lt;span style="font-size: small;"&gt;A Sailor of Austria, &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: small;"&gt;is writing again&lt;/span&gt;&lt;span style="font-size: small;"&gt;! His new novel&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;, The Surgeon's Apprentice&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: small;"&gt;, is available as a kindle book from Amazon.com. It's great, even though it's not about the Austro-Hungarian u-boat service. He's working on another novel, too.&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: small;"&gt;Life is good.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;It's bedtime, so I'll bore you dome more...&amp;nbsp; later. &lt;/span&gt;&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/4361245043329780596-7141902964069016663?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/7141902964069016663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/07/july-2010-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/7141902964069016663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/7141902964069016663'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/07/july-2010-update.html' title='July 2010 Update'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-4662247356237064499</id><published>2010-06-07T11:08:00.001-05:00</published><updated>2010-06-07T11:08:53.011-05:00</updated><title type='text'></title><content type='html'>Another day,  without the dollar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-4662247356237064499?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/4662247356237064499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/06/another-day-without-dollar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4662247356237064499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4662247356237064499'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/06/another-day-without-dollar.html' title=''/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-6804692044446716504</id><published>2010-06-02T12:52:00.000-05:00</published><updated>2010-06-02T12:52:50.910-05:00</updated><title type='text'>No longer a g-man</title><content type='html'>I cleaned up my last addresses yesterday. Since there is no more work for me from the local census office, I was released. Surprisingly, I was the first to finish. I should have milked it more, but what can I say? Wen you're done, you're done. I had to turn in my ID badge, a boatload of paper forms, and sadly, the cool census enumerator's bag. I was hoping to keep the bag, but it is not allowed. I did get to keep the four government issue number 2 pencils, the surviving blue ballpoint pen (one messily self-destructed), a pencil sharpener, some pencil erasers and some paper clips. All useful stuff, even if the pen is a bit suspect.&amp;nbsp; I also have the &lt;b&gt;D-547 2010 Census Nonresponse Followup (NRFU) Enumerator Manual &lt;/b&gt;and the &lt;b&gt;D-590 Census Employee Handbook for Enumerators, Recruiting Assistants and Crew Leader Assistants - 2010 Census. &lt;/b&gt;The books never were good reading, and now that the census is over for me, they're not much good for anything except origami.&lt;br /&gt;&lt;br /&gt;It's good to be done, because I have definitely worn out my welcome on the street that I was working on. People get cranky with you if you keep showing up, asking the same questions. Of course, that gives them motivation to be a proxy for you, and give you information about their neighbors and landlords so you can complete the census questionnaires of people who did not fill out a census form, moved in or out on census day, etc. They give you the information so that they can see the back of you. They want you to go away and never come back. Now I never will, unless they want to get together, grill some burgers and drink a few beers.&lt;br /&gt;&lt;br /&gt;It would be nice to work s new street, but there's none left to enumerate. So it's back to unemployment for me. The job search continues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-6804692044446716504?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/6804692044446716504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/06/no-longer-g-man.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6804692044446716504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6804692044446716504'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/06/no-longer-g-man.html' title='No longer a g-man'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-3555538831527323008</id><published>2010-05-28T17:36:00.000-05:00</published><updated>2010-05-28T17:41:26.083-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Another One Bites the Dust</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;I think I'm back in the game. My score is now 74.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_x-dCbtsItBs/TABEQCCuviI/AAAAAAAAAoA/ONsgyXQ8n-s/s1600/Problem+112+-+Project+Euler+-+Mozilla+Firefox_025.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/_x-dCbtsItBs/TABEQCCuviI/AAAAAAAAAoA/ONsgyXQ8n-s/s640/Problem+112+-+Project+Euler+-+Mozilla+Firefox_025.png" width="518" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-3555538831527323008?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/3555538831527323008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/05/another-one-bites-dust.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/3555538831527323008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/3555538831527323008'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/05/another-one-bites-dust.html' title='Another One Bites the Dust'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_x-dCbtsItBs/TABEQCCuviI/AAAAAAAAAoA/ONsgyXQ8n-s/s72-c/Problem+112+-+Project+Euler+-+Mozilla+Firefox_025.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-5104890616491264674</id><published>2010-05-27T22:07:00.000-05:00</published><updated>2010-05-27T22:23:07.145-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Project Euler Status Report</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_x-dCbtsItBs/S_8zIS3AXBI/AAAAAAAAAn4/H45LHp71kGA/s1600/euler_main.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_x-dCbtsItBs/S_8zIS3AXBI/AAAAAAAAAn4/H45LHp71kGA/s200/euler_main.jpg" width="171" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Today I cracked not one, but &lt;i&gt;two&lt;/i&gt; Project Euler problems: numbers 76 and 63. Woo-hoo! For the longest time I was stuck, but persistence finally paid off. My score is now 72.&amp;nbsp; I should not have been stuck for so long, but it is what it is. I'm not the best Project Euler competitor by a very long shot. I don't have great knowledge of&amp;nbsp; number theory and algorithms, but I'm working on it. Now, at least I know what "partition" means in number theory.&lt;br /&gt;&lt;br /&gt;Knowing the correct math terminology makes it much easier to research solutions. I need to spend some more time with a number theory text, pencil and paper. I never thought I would spend time on this kind of math...&lt;br /&gt;&lt;br /&gt;By the way, yes, the "private email" listed in the image will connect to me. It's not the best way, but it will work.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/S_8wrEN0pYI/AAAAAAAAAng/-lvh18dpsWU/s1600/euler052710.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/_x-dCbtsItBs/S_8wrEN0pYI/AAAAAAAAAng/-lvh18dpsWU/s640/euler052710.png" width="592" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/S_8xaEpKH2I/AAAAAAAAAnw/MeVRKbHqJLE/s1600/euler052710-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/_x-dCbtsItBs/S_8xaEpKH2I/AAAAAAAAAnw/MeVRKbHqJLE/s640/euler052710-2.png" width="594" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-5104890616491264674?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/5104890616491264674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/05/project-euler-status-report.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/5104890616491264674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/5104890616491264674'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/05/project-euler-status-report.html' title='Project Euler Status Report'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x-dCbtsItBs/S_8zIS3AXBI/AAAAAAAAAn4/H45LHp71kGA/s72-c/euler_main.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-6536730449632953234</id><published>2010-05-26T09:21:00.000-05:00</published><updated>2010-05-26T09:26:26.171-05:00</updated><title type='text'>G-men on SNL</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_x-dCbtsItBs/S_0p94KgFgI/AAAAAAAAAnY/GRYoQQZlsoQ/s1600/Tine_Fey_Betty_White.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="352" src="http://3.bp.blogspot.com/_x-dCbtsItBs/S_0p94KgFgI/AAAAAAAAAnY/GRYoQQZlsoQ/s640/Tine_Fey_Betty_White.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;Tina Fey enumerating Betty White&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;You can watch a very funny census skit from Saturday Night Live on &lt;a href="http://www.hulu.com/watch/147972/saturday-night-live-census"&gt;Hulu&lt;/a&gt;, at least until it isn't there any more. For the record, Tina Fey's shoulder bag and ID appear authentic, but the clipboard isn't. Real live census enumerators will have an oversize 3 ring notebook binder, which doubles as a writing surface. If Tina was a boy, she would have to be wearing a necktie, but since she isn't, I believe her outfit is acceptable for a temp "g-man".&amp;nbsp; She should probably tuck in her blouse to look more professional, but that's really not my call.&amp;nbsp; I wonder if she's really earning a little extra money working for the census, or if the NBC prop department is just really good.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-6536730449632953234?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/6536730449632953234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/05/g-men-on-snl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6536730449632953234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6536730449632953234'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/05/g-men-on-snl.html' title='G-men on SNL'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x-dCbtsItBs/S_0p94KgFgI/AAAAAAAAAnY/GRYoQQZlsoQ/s72-c/Tine_Fey_Betty_White.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-7557597160087503017</id><published>2010-05-25T23:03:00.000-05:00</published><updated>2010-05-25T23:19:41.586-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kvetch'/><title type='text'>I'm now a Man in Black, but without the flashy thing.</title><content type='html'>I am finally working again. I work for the federal government of the USA, albeit on a strictly temporary basis.&amp;nbsp; Although the USA has no &lt;b&gt;&lt;i&gt;Official Secrets Act&lt;/i&gt;&lt;/b&gt;, I am nevertheless sworn to secrecy and thus can't tell you much, on the pain of fines and imprisonment. Really! It's too bad, because I'm getting some really funny stories from this job. C'est la vie. I think it's OK to tell you that I made $US 77.5625 today (before taxes). Cha-ching! &lt;br /&gt;&lt;br /&gt;I have no flashy thing, but I want one. A Pilot G2 pen is a poor substitute. Even if you load it with a Mont Blanc cartridge. Government issue ballpoint pens tend to self-destruct and leak ink. The government will disavow any knowledge of (or responsibility for) your ink stained self, including your clothing. I found one of my father's old pocket protectors; it not only gives me a warm feeling (I really miss Pop) but it protects my shirts from federal blue ballpoint pen ink. The government issue number 2 pencils and the federal blue pencil sharpener do kick ass.&lt;br /&gt;&lt;br /&gt;I don't get to ride in a helicopter, or carry a firearm, or any other weapons for that matter. I don't have a car with a siren or lights, either. Everyone should feel much safer knowing that. I do get to wear a spiffy non-photo ID card on a lanyard around my neck. I also wear a shirt and tie, and I don't wear sneakers or jeans, so I look almost professional. If you close one eye and squint a bit. &lt;br /&gt;&lt;br /&gt;Life is good, for now. Best of all, tonight was taco night. And did I mention the $77.5625, before taxes?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-7557597160087503017?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/7557597160087503017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/05/im-now-man-in-black-but-without-flashy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/7557597160087503017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/7557597160087503017'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/05/im-now-man-in-black-but-without-flashy.html' title='I&apos;m now a Man in Black, but without the flashy thing.'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-3433109625276106816</id><published>2010-05-22T08:26:00.000-05:00</published><updated>2010-05-25T23:28:31.615-05:00</updated><title type='text'>PAC MAN turns 30</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/S_faUB7YzuI/AAAAAAAAAnQ/OonlA1avwTA/s1600/google-pacman-start.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="299" src="http://2.bp.blogspot.com/_x-dCbtsItBs/S_faUB7YzuI/AAAAAAAAAnQ/OonlA1avwTA/s640/google-pacman-start.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Yesterday was the 30th anniversary of PAC MAN, and Google celebrated with a working version of the game in in the logo of their search page. Of course I inserted a few coins, just like the good old days. Play it while it's still available.&lt;br /&gt;&lt;br /&gt;Update May 25, 2010:&amp;nbsp; Since everybody loves PAC MAN, he's now a permanent fixture at&amp;nbsp; &lt;a href="http://www.google.com/pacman/"&gt;http://www.google.com/pacman/&lt;/a&gt;. Go there and insert coin now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-3433109625276106816?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/3433109625276106816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/05/yesterday-was-30th-anniversary-of-pac.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/3433109625276106816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/3433109625276106816'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/05/yesterday-was-30th-anniversary-of-pac.html' title='PAC MAN turns 30'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x-dCbtsItBs/S_faUB7YzuI/AAAAAAAAAnQ/OonlA1avwTA/s72-c/google-pacman-start.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-6853350453015658499</id><published>2010-05-18T13:08:00.000-05:00</published><updated>2010-05-18T16:50:42.011-05:00</updated><title type='text'>My Life as a Ronin II: Easy Peasy Lemon Squeezy</title><content type='html'>&lt;div style="text-align: left;"&gt;The story of Theresa's HP Netbook continues.&lt;/div&gt;&lt;br /&gt;Brian eventually gave the now working HP netbook back to Phil, who gave it back to Theresa. It was working well. We put it through it's paces, and everything was good. Windows XP was singing &lt;i&gt;bel canto&lt;/i&gt;. &lt;br /&gt;&lt;br /&gt;Brian kept the netbook for a few days, and played with it a lot. He liked that little HP, and would love to get his hands on one. (As they say, it's not in the budget.) He dragged it all over town, computing up a storm... well, at least he watched a lot of storm and tornado videos on it. (That's his thing.)&amp;nbsp; He was smitten, and wants get something just like it, except he wants to install OS X on it. This is possible on some models. Not legal, mind you, but possible. Steve Jobs is &lt;i&gt;so&lt;/i&gt; pissed.&lt;br /&gt;&lt;br /&gt;The netbook was working well, really, until the Theres-in-ator got her hands on it. The HP then became "goofalized". I have no idea what happened. (Some people should avoid computing devices.) Brian emailed me that he had it again, and that there was an "incident", and it now wasn't booting correctly. Brian's stock repsonse is "hardware problem, it's broken". I emailed back my stock response -- boot into safe mode and fix the beast. He tried, no joy. Eventually he showed it to me at the office, a.k.a. Starbucks. It was really goofed up, and I frankly, I had no idea how to fix it. It would boot up, but nothing ran. Safe mode was no help here.&lt;br /&gt;&lt;br /&gt;This was going to be a royal pain. Phil and Brian were talking about using it for target practice. I thought that would be a waste of a good machine. My contention was it's probably just a software problem, and that we should fix it.&amp;nbsp; Brian and I talked about reinstalling Windows XP. You would think we could sort that out, but nope. No way. (We're pretty useless I guess.) We had troubles. (Not to mention that Theresa didn't have Windows XP media, even though she paid for a license when she purchased the machine. Brian had a Windows XP disk of some sort -- insert pirate sounds here -- that we were working with.)&amp;nbsp; It's possible to install Windows XP from a thumb drive (Google says so), but you have to jump through a few hoops to do so and Brian and I didn't make it through. Aw, snap!&lt;br /&gt;&lt;br /&gt;To save the HP from being used for target practice I offered to put Linux on it. Theresa's files were on a SD card, while Windows was on the internal SSD. We could install Linux on the internal SSD, and just leave the SD card alone. Since Theresa is a windows user, so I wanted a easy to use Linux distro.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/S_K4hX9gbYI/AAAAAAAAAnA/UTn4jmVKU7U/s1600/easypeasy.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_x-dCbtsItBs/S_K4hX9gbYI/AAAAAAAAAnA/UTn4jmVKU7U/s320/easypeasy.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I chose &lt;a href="http://www.geteasypeasy.com/"&gt;Easy Peasy&lt;/a&gt; for her. It's very point and clicky, really easy to figure out, but under the hood it's a robust Linux distribution based on Ubuntu. Just the thing for a girl who breaks Windows. Although it was originally designed for Asus eeePC netbooks, [1] I was betting that it would run on the HP. One nice thing about Easy Peasy is it has all the goodies installed from the get go. As the website puts it:&lt;/div&gt;&lt;blockquote&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;EasyPeasy is a simple netbook operating system, but still provides you  with the codecs and drivers you need for running most music and video right out of the box.&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;You should read that as Adobe &lt;a href="http://www.adobe.com/products/flashplayer/"&gt;Flashplayer&lt;/a&gt; and and things like mp3 codecs are already installed. Some Linux distributions adhere to &lt;a href="http://www.gnu.org/"&gt;GNU&lt;/a&gt; philosophy, and you have to futz around to install things required to get more music and video choices on your machine. While we're the subject:&amp;nbsp;&lt;a href="http://www.fsf.org/campaigns/playogg/"&gt;play ogg&lt;/a&gt;, OK? It really is a good thing. Even if you run the proprietary stuff, use and support free and open source software. It's good to have choices.&amp;nbsp; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/S_K5X6pM9YI/AAAAAAAAAnI/gPmlFbY9Jcg/s1600/Easy-Peasy-1-1-Is-Out-Has-a-Brand-New-Look-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="372" src="http://4.bp.blogspot.com/_x-dCbtsItBs/S_K5X6pM9YI/AAAAAAAAAnI/gPmlFbY9Jcg/s640/Easy-Peasy-1-1-Is-Out-Has-a-Brand-New-Look-2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I got things working with Easy Peasy: audio, web cam, wireless networking. It was only slightly annoying. The wireless chipset is from Broadcom, and to work with Linux, it requires the firmware to be downloaded from a manufacturer's site on the internet. It seems that the firmware can't be included in a Linux distro, which is a shame. It's real hard to download firmware from the internet while sitting in Starbucks if your wifi ain't working. I had to drag it home to connect to my local network over a cat5 cable to get the firmware. While annoying, it worked well. Almost easy peasy lemon squeezy. And I got a little exercise walking, too.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Brian, who is enamored with Mac OS X, really liked Easy Peasy. He downloaded it at home and wanted to install it on a windows desktop box that he uses. The Easy Peasy user interface is really designed for netbooks; I know I wouldn't want to use it on a desktop machine. I pointed him to &lt;a href="http://wubi-installer.org/"&gt;wubi&lt;/a&gt;, which would install the regular &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; Lucid in peaceful coexistence with the Windows OS already installed on the machine, much to the annoyance of Bill Gates. He downloaded and ran wubi, and a bunch of hours later (he was working over the Cricket modem), it finished installing successfully. The cool thing was Ubuntu recognized and used the Cricket modem. I wasn't sure if that was going to happen, which was one reason I recommended wubi. Before this Brian was talking about buying Snow Leopard and turning this machine into a hackintosh. We'll have to see if he continues down the hackintosh road, now that he has has Ubuntu. You know that Brian is broke, and Ubuntu is free (as in beer) as well as free (as in speech), while OS X is neither.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;George saw Easy Peasy, played with it a bit and loved it. Now he wants to install it on &lt;i&gt;his&lt;/i&gt; HP netbook.&amp;nbsp; I'm not really trying to convert people to Linux, but I seem to be doing so anyway. Go figure.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;i&gt;A few hours later:&lt;/i&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;[1]&amp;nbsp; When I wrote this, I thought that Easy Peasy was once called eeebuntu. I was wrong. According to &lt;a href="http://en.wikipedia.org/wiki/Eeebuntu"&gt;Wikipedia&lt;/a&gt;:&lt;/div&gt;&lt;blockquote&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Eeebuntu&lt;/b&gt; (not to be confused with &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Easy_Peasy" title="Easy Peasy"&gt;Easy Peasy&lt;/a&gt;, formerly known as Ubuntu Eee) is an &lt;a href="http://en.wikipedia.org/wiki/Operating_system" title="Operating system"&gt;operating system&lt;/a&gt; for &lt;a href="http://en.wikipedia.org/wiki/Netbook" title="Netbook"&gt;netbooks&lt;/a&gt;.  The current version is based on &lt;a href="http://en.wikipedia.org/wiki/Ubuntu_%28operating_system%29" title="Ubuntu (operating system)"&gt;Ubuntu&lt;/a&gt;, newer version will be  based on &lt;a href="http://en.wikipedia.org/wiki/Debian" title="Debian"&gt;Debian&lt;/a&gt;  Unstable&lt;sup class="reference" id="cite_ref-0"&gt;&lt;a href="http://en.wikipedia.org/wiki/Eeebuntu#cite_note-0"&gt;[1]&lt;/a&gt;&lt;/sup&gt;.  Eeebuntu was designed originally for the &lt;a href="http://en.wikipedia.org/wiki/Asus_Eee_PC" title="Asus Eee PC"&gt;Asus  Eee PC&lt;/a&gt; line of netbooks.&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I think Ubuntu eee was what I think I used to run eeebuntu om my Asus eeePC 900, but I'm not sure at this point in time. I know I ran one or the other, and whichever one it was, it was darn good. Both were originally intended to run on Asus eeePC computers, but now work on a variety of netbooks.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-6853350453015658499?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/6853350453015658499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/05/my-life-as-ronin-ii-easy-peasy-lemon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6853350453015658499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6853350453015658499'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/05/my-life-as-ronin-ii-easy-peasy-lemon.html' title='My Life as a Ronin II: Easy Peasy Lemon Squeezy'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x-dCbtsItBs/S_K4hX9gbYI/AAAAAAAAAnA/UTn4jmVKU7U/s72-c/easypeasy.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-1658146451319356769</id><published>2010-04-25T18:10:00.000-05:00</published><updated>2010-04-26T10:40:28.983-05:00</updated><title type='text'>I'm up to no good</title><content type='html'>I'm in the process of making a virtual hackintosh, using OS X 10.4 Tiger:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/S9TJMsurJDI/AAAAAAAAAmA/4V1pOiVqWEI/s1600/osx-install1png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_x-dCbtsItBs/S9TJMsurJDI/AAAAAAAAAmA/4V1pOiVqWEI/s640/osx-install1png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It's going pretty slow. The above process is now at 15%, and it's been running for some time now. It was tricky to get it to this point, so I'm just going to let it run. We'll see if runs to completion. Maybe I have something configured poorly.&lt;br /&gt;&lt;br /&gt;I made two other virtual machines, one Ubuntu Linux "Lucid Lynx" 10.04 and the other Crunchbang 10 "Statler" Alpha 1. They both installed faster than OS X, and both are working well. I plan to eventually put Lucid on my desktop and Statler on my netbook. I'm just playing with OS X; I don't plan on making a real hackintosh.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/S9Tr0THMX9I/AAAAAAAAAmI/XnZfqOv3Utk/s1600/osx-install2png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_x-dCbtsItBs/S9Tr0THMX9I/AAAAAAAAAmI/XnZfqOv3Utk/s640/osx-install2png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&amp;nbsp;Quite a bit later...&lt;/i&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://3.bp.blogspot.com/_x-dCbtsItBs/S9V6PVu-lKI/AAAAAAAAAmQ/J7K636tZp68/s1600/osx-install3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_x-dCbtsItBs/S9V6PVu-lKI/AAAAAAAAAmQ/J7K636tZp68/s640/osx-install3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&amp;nbsp;The next morning...&lt;/i&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://3.bp.blogspot.com/_x-dCbtsItBs/S9WzwikpzpI/AAAAAAAAAmY/YVpF5rIB0oc/s1600/osx-install.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_x-dCbtsItBs/S9WzwikpzpI/AAAAAAAAAmY/YVpF5rIB0oc/s640/osx-install.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&amp;nbsp;The network is (finally) up&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-1658146451319356769?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/1658146451319356769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/04/im-up-to-no-good.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/1658146451319356769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/1658146451319356769'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/04/im-up-to-no-good.html' title='I&apos;m up to no good'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_x-dCbtsItBs/S9TJMsurJDI/AAAAAAAAAmA/4V1pOiVqWEI/s72-c/osx-install1png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-5679737859103551254</id><published>2010-04-23T17:30:00.000-05:00</published><updated>2010-04-23T17:32:09.201-05:00</updated><title type='text'>Mirage</title><content type='html'>Earlier, I wrote that my pal Brian had a client who wanted to pay us to install OS X on his netbook. (Creating a "hackintosh".)&amp;nbsp; I neglected to mention that Brian's reality differs from mine in many respects. In some other universe, Brian has a client who wants us to install OS X on a HP netbook and is willing to pay. In this universe... nah. &lt;br /&gt;&lt;br /&gt;I still like the guy, but I'm a little pissed at myself for taking him seriously, even for a moment. It's just that I'm broke and unemployed right now, so a few extra bucks would be nice.&lt;br /&gt;&lt;br /&gt;I've been preparing my desktop system for an OS reinstall. I have Ubuntu 10.04 "Lucid Lynx" running in Virtual box, and it's running well. It's running&amp;nbsp; well despite the rich goof's current master plan to change the default color scheme from disgusting orange brown to putrid eggplant purple and move the window control buttons from the right side of the screen to the left side of the screen.&amp;nbsp; This is button move is major stuff. They are sitting around &lt;i&gt;right now&lt;/i&gt; finding new and innovative uses for the newly freed real estate on the right hand side. I don't know about you, but I just can't wait. Seriously. I'm sure that I will eventually get over the bad habit of trying to click on the right hand side top of every fricking window eventually.&lt;br /&gt;&lt;br /&gt;If I was a wealthy guy with my own software company people would take me seriously, too. Money buys a lot of respect. Especially paycheck money. "Move those darn buttons! This is big!" I think that Mark Shuttleworth wants to be like Steve Jobs. I'm thinking that one Steve jobs is enough, but since he tends to keep his snout out of Linux I can live with him. The problem is, Ubuntu is Mark Shuttleworth. We're stuck with him. He is a self appointed benevolent dictator for life, and he's paying good money for the right.&lt;br /&gt;&lt;br /&gt;Well, if Lucid is too annoying, I can revert back to Debian. Or even jump to another distro. It ain't that big a deal. There's not much special sauce in Ubuntu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-5679737859103551254?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/5679737859103551254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/04/mirage.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/5679737859103551254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/5679737859103551254'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/04/mirage.html' title='Mirage'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-4674110651387432614</id><published>2010-04-21T12:04:00.000-05:00</published><updated>2010-04-21T16:54:38.458-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kvetch'/><title type='text'>My Life as a Rōnin</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_x-dCbtsItBs/S88tF3HYQ5I/AAAAAAAAAlg/MymTkXGdqFg/s1600/yojimbo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_x-dCbtsItBs/S88tF3HYQ5I/AAAAAAAAAlg/MymTkXGdqFg/s320/yojimbo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Toshir%C5%8D_Mifune"&gt;Toshiro Mifune&lt;/a&gt; as an old school &lt;/i&gt;&lt;i&gt;rōnin&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;"A &lt;b&gt;rōnin&lt;/b&gt; &lt;span style="font-weight: normal;"&gt;(&lt;span class="t_nihongo_kanji" lang="ja" xml:lang="ja"&gt;浪人&lt;/span&gt;&lt;span class="t_nihongo_help noprint"&gt;&lt;sup&gt;&lt;a href="http://en.wikipedia.org/wiki/Help:Installing_Japanese_character_sets" title="Help:Installing Japanese character sets"&gt;&lt;span class="t_nihongo_icon" style="color: #0000ee; font: bold 80% sans-serif; padding: 0pt 0.1em; text-decoration: none;"&gt;?&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/span&gt;)&lt;/span&gt;  &lt;sup class="reference" id="cite_ref-britannica_0-0"&gt;&lt;a href="http://en.wikipedia.org/wiki/Ronin#cite_note-britannica-0"&gt;[1]&lt;/a&gt;&lt;/sup&gt;  was a &lt;a href="http://en.wikipedia.org/wiki/Samurai" title="Samurai"&gt;samurai&lt;/a&gt;  with no lord or master during the &lt;a href="http://en.wikipedia.org/wiki/History_of_Japan#Feudal_Japan_.2812th_-_19th_century.29" title="History of Japan"&gt;feudal period (1185–1868)&lt;/a&gt; of &lt;a href="http://en.wikipedia.org/wiki/Japan" title="Japan"&gt;Japan&lt;/a&gt;. A  samurai became masterless from the death or fall of his master, or after  the loss of his master's favor or &lt;a href="http://en.wikipedia.org/wiki/Privilege" title="Privilege"&gt;privilege&lt;/a&gt;."&lt;/blockquote&gt;&lt;div style="text-align: center;"&gt;Source: &lt;a href="http://en.wikipedia.org/wiki/Ronin"&gt;wikipedia&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;So Theresa, who is someone that I saw once, but never really met, has a problem. She has a pierced tongue, which freaks me out, but that's &lt;i&gt;my&lt;/i&gt; problem. She's the girlfriend of Phil, who is someone that I have met but I don't see a lot. Phil and I hang around&amp;nbsp; sometimes while holdings things like beer and fishing rods. He has a really cool dog named Austin, who seems problem free. Theresa's problem is an HP netbook running Windows XP. The problem is the computer just ain't right. It's a really cute little machine -- much nicer that my eeePC 900. It has a nice big keyboard and a slightly larger screen. I want one, but, as they say,&amp;nbsp; it's not in the budget. She gave the netbook to Brian to fix and he worked on it a bit. He cleaned up some, but not all, of the ugly mess. He managed to blow out the passwords that her ex-boyfriend had helpfully added to the machine, and got rid of a few hundred items that a virus scanner flagged as malware.&amp;nbsp; The system was still &lt;a href="http://en.wikipedia.org/wiki/Borken"&gt;borken&lt;/a&gt;: it would not connect to the Internet and it was doing really strange things, and it was doing them very slowly. Brian asked me for help. It seems that since none of us is working, the budget for this job is zero. Fool that I am, I agree to take a look at it. It feels like work, which I like, but pays nil, which I don't like. Aw, snap! I have to quit giving it away.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/S89rDgUkPpI/AAAAAAAAAlo/RXRlya2HVIU/s1600/hpnetbook_215X215.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_x-dCbtsItBs/S89rDgUkPpI/AAAAAAAAAlo/RXRlya2HVIU/s320/hpnetbook_215X215.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;It's so beautiful! I want to put Crunchbang Linux on it!&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Mind you, I am not really an IT person. I'm an electronics technician who went to night school to get a degree in electrical engineering. I was a UNIX system administrator for an engineering group, a CAD librarian, a printed circuit board designer, a sort of general-purpose electronics technician. I used to wire TV sets with about a hundred thermocouples so we could see how hot the components would get. (Pretty hot, sometimes.) I run &lt;a href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt; for my desktop, I use &lt;a href="http://en.wikipedia.org/wiki/Vi"&gt;Vi&lt;/a&gt; &lt;b&gt;and&lt;/b&gt; &lt;a href="http://en.wikipedia.org/wiki/Emacs"&gt;Emacs&lt;/a&gt;, &lt;a href="http://www.gimp.org/"&gt;GIMP&lt;/a&gt; and &lt;a href="http://moc.daper.net/"&gt;moc&lt;/a&gt;. I can write crap-ass software in &lt;a href="http://en.wikipedia.org/wiki/C_%28programming_language%29"&gt;C&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/C%2B%2B"&gt;C++&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Python_%28programming_language%29"&gt;Python&lt;/a&gt;. In short, I am just another jack-of-all-trades, master of none, who is currently unemployed. Life stinks, sometimes. These skills gives me some ability to beat computers into submission. I try to pick up a few bucks sorting out computer problems for people. These are usually not difficult problems involving hardware repair. These are usually simple things related to system configuration and using software, things that someone could and should handle themselves. Finding a solution usually involves asking Google, thinking logically and maybe learning a thing or two.&lt;br /&gt;&lt;br /&gt;I get few takers for my services. People do not want to pay. I hear complaints about the lack of service technicians, closely followed by complaints about what service technicians charge. Service technicians tend to want a living wage. Clients seem to like "free", closely followed by "really cheap". At times it's hard to find a middle ground, so I get few jobs, while they keep doing whatever they do.&lt;br /&gt;&lt;br /&gt;My pal Brian once charged a guy $50 to sort out a computer. The guy paid him $12, because it only took an hour. I guess computer techs are only worth $12/hour, with no benefits or secure employment. Brian took the $12, and then formatted the guy's hard drive for him, giving him a minty fresh computer. Brian is a natural born &lt;a href="http://en.wikipedia.org/wiki/Bofh"&gt;BOFH&lt;/a&gt;. The client was not happy. Brian kept the $12. Life stinks, sometimes.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/S89tcD2C-QI/AAAAAAAAAl4/_Ze26g6Jo9A/s1600/bofh_book.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_x-dCbtsItBs/S89tcD2C-QI/AAAAAAAAAl4/_Ze26g6Jo9A/s320/bofh_book.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Be afraid.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;My aunt's brother is having phone problems. He will not call AT&amp;amp;T to come out and check things out. He says that they charge $80/hour, and he doesn't want to pay that. He thinks that a huge bill will be run up, and that they are out to screw him. AT&amp;amp;T will check the phone line up to the house for free, but he will not even ask for that. He would rather complain about things. Kvetching sure is more fun. He did go out and spend $80 for a new DSL modem, as if that would fix his problem. It didn't. I took a look at things. He has two phone lines, and one is &lt;a href="http://en.wikipedia.org/wiki/Borken"&gt;borken&lt;/a&gt;. That's as far as I went. I was not about to chase the line through the house from the second floor, especially since he refused to call AT&amp;amp;T to have the phone line checked to the house. I was &lt;i&gt;not&lt;/i&gt; going to call AT&amp;amp;T for for him; he should know how do do that. As far as I know, it's still borken. Life stinks, sometimes. &lt;br /&gt;&lt;br /&gt;So I fixed Teresa's netbook for free. Why not? A loss leader, and maybe I now have another fine friend that I will hear from only when they need me. It took 3.5 hours, mostly because that's how long it takes. He's what I did:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Wifi was not working, but Brian's &lt;a href="http://en.wikipedia.org/wiki/Cricket_Communications"&gt;Cricket&lt;/a&gt; modem worked, so I did not have to fix the wifi &lt;b&gt;&lt;i&gt;now&lt;/i&gt;&lt;/b&gt; or take the little beast home to my router to get Internet access. You can't do jack without an Internet connection.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; I updated&amp;nbsp;&lt;a href="http://www.malwarebytes.org/"&gt;Malwarebytes&lt;/a&gt;, which Brian had installed. I like this program; it has done good things for me in the past.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; I ran yet another full virus scan in "limited driver mode" using Malwarebytes, which removed yet more malware.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I ran Microsoft update. They were 9 updates. 7 or 8 of them were security updates. Why didn't she run Windows update regularly?&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; I then tried to turn Microsoft Security Essentials back on. (Brian had turned it off.) It would not turn on. (Insert joke here.)&amp;nbsp;&lt;b&gt; &lt;/b&gt;OK. Microsoft's anti-virus program did not work on Microsoft's operating system. It also would not reinstall, and gave an error message with the long hex error code 0x8004ff07. (It should have said guru meditation 0x-long-hex-number&lt;long hex="" number=""&gt;, but it didn't.&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Amiga"&gt;Amiga&lt;/a&gt;s were so much cooler, even when they screwed up. I miss my Amiga.) Following the hex error number to a Microsoft forum, some guy gave this &lt;/long&gt;&lt;a href="http://social.answers.microsoft.com/Forums/en-US/msestart/thread/88cd4e0b-9095-44a6-8a47-62345ff19964"&gt;fix&lt;/a&gt;&lt;long hex="" number=""&gt;:&lt;/long&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;1.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;Uninstalling MSE&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;2.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;Reboot.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;3.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;Reinstall MSE.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;4.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;Cancel the update and scan.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;5.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;Reboot.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;6.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;Launch MSE and trigger upgrade via Help, Upgrade.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;7.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;Download and install completed successfully.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; text-indent: -0.25in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;long hex="" number=""&gt;Someone from Microsoft urged the parties involved to file bug reports with Microsoft. He gave helpful web links. &lt;/long&gt;At times it's hard to find a middle ground.&amp;nbsp;&lt;long hex="" number=""&gt; I want Microsoft to run more tests on their code before they release it to the wild. They want me to write bug reports. Neither of these things are going to happen.&amp;nbsp;&lt;/long&gt;                      &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; I started on the Microsoft Security Esentials fix. After the first step (remove MSE), I made a command decision: I was not going to reinstall it. MSE blows. Microsoft blows. MSE gets good reviews for malware detection, but I have been having problems with it doing simple tasks, things like updating virus definitions and turning on. So I uninstalled it and replaced it with the free version of AVG. The AVG install told me that I should remove MSE. Since I had already removed MSE, I installed AVG anyway. (Déjà vu: I have seen this before.) AVG works OK, despite the bogus warning.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I update AVG. I run a configuration scan. I run yet another virus scan using AVG. It finds nothing bad.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I turn the Windows firewall back on. (Brian had turned it off.) (Insert yet another turn-on joke here.)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;If fixed the wifi. Someone or something mucked around with the tcp/ip settings. Once they were set correctly, wifi worked.&lt;/li&gt;&lt;/ul&gt;Maybe I should have turned on system restore, but I stuck a fork in it because I was done and Starbucks wanted to close.&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&amp;nbsp;After, 3.5 hours the netbook was now working fine. While it did not demand my complete attention the whole time, I had to be there to shepherd the process. For zero dollars. Brian has another job, which is supposed to pay actual US dollars. Some doofus wants us to install &lt;a href="http://en.wikipedia.org/wiki/OS_X"&gt;OS X&lt;/a&gt; on his HP netbook, and is willing to pay us something for it. Since&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Apple_Inc."&gt;Apple&lt;/a&gt; really doesn't want you to do &lt;a href="http://en.wikipedia.org/wiki/Hackintosh"&gt;this&lt;/a&gt;, it's kind of tricky. This should be fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-4674110651387432614?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/4674110651387432614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/04/ronin-life.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4674110651387432614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4674110651387432614'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/04/ronin-life.html' title='My Life as a Rōnin'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_x-dCbtsItBs/S88tF3HYQ5I/AAAAAAAAAlg/MymTkXGdqFg/s72-c/yojimbo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-6676331872491243783</id><published>2010-03-20T15:12:00.000-05:00</published><updated>2010-03-20T15:15:02.016-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cook'/><title type='text'>Cooking With Dog</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/S6Uj2opcoXI/AAAAAAAAAlQ/Sx5di3qfo4o/s1600-h/cookingwithdog1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="345" src="http://2.bp.blogspot.com/_x-dCbtsItBs/S6Uj2opcoXI/AAAAAAAAAlQ/Sx5di3qfo4o/s400/cookingwithdog1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;I am not an entrée!&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I found another cooking show on You Tube that I really enjoy. It's called &lt;a href="http://www.youtube.com/user/cookingwithdog"&gt;Cooking With Dog&lt;/a&gt;. Yep, only on &lt;a href="http://www.youtube.com/"&gt;You Tube&lt;/a&gt; can you find such quality cooking shows. Fortunately, the dog is a narrator, not an ingredient. Maybe the title isn't so ambiguous in Japanese. The dog should get his own TV show, because he's &lt;i&gt;talented&lt;/i&gt;. He seems to speak English, albeit with a Japanese accent. He narrates the whole show. He's pretty awsome for an such sissy looking dog. I wonder if he speaks Japanese, too. The lady's usually cooking something tasty. She's pretty skilled in the kitchen. She's also a bit of a fuss budget, but the results look really great.&amp;nbsp; I bet they taste great, too. I'm not so sure I can cook like her, but I'm going to try.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_x-dCbtsItBs/S6UlBCGni-I/AAAAAAAAAlY/hlqauuSsc68/s1600-h/cookingwithdog2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/_x-dCbtsItBs/S6UlBCGni-I/AAAAAAAAAlY/hlqauuSsc68/s400/cookingwithdog2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The only bad thing is now I want to eat &lt;a href="http://www.youtube.com/user/cookingwithdog#p/u/20/klFyrnrUSck"&gt;tonkatsu&lt;/a&gt;, even though I just finished eating lunch. Maybe later. I need to go to the store and get a few things.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-6676331872491243783?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/6676331872491243783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/03/cooking-with-dog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6676331872491243783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6676331872491243783'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/03/cooking-with-dog.html' title='Cooking With Dog'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x-dCbtsItBs/S6Uj2opcoXI/AAAAAAAAAlQ/Sx5di3qfo4o/s72-c/cookingwithdog1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-7351886752249167627</id><published>2010-03-15T17:45:00.000-05:00</published><updated>2010-03-15T17:45:36.689-05:00</updated><title type='text'>CA Updates</title><content type='html'>Although I haven't been blogging, work on the cellular automaton program has continued.&amp;nbsp; It now has an on screen display of some interesting parameters. I also have been learning how to use FLTK 1.1 (Fast Light Tool Kit, pronounced "full tick", although I keep wanting to say "foot lick".) Somehow I have figured out how to write a GUI control program to control the whole ca shebang. I was going to call it lcp, "Life Control Program", but the name seems to imply mind control cult membership and it also seems to be already used in Ubuntu Linux.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mikey@hatshepsut:~/workspace/ca$ lcp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;The program 'lcp' is currently not installed.&amp;nbsp; You can install it and be assimilated by typing:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo apt-get install lsh-client&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;lcp: command not found&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mikey@hatshepsut:~/workspace/ca$ &lt;/span&gt;&lt;/blockquote&gt;So I decided on cacp, "Cellular Automata Control Program".&amp;nbsp; Now available on &lt;a href="https://launchpad.net/ca"&gt;Launchpad&lt;/a&gt;. Thanks to Greg Ercolano's &lt;a href="http://www.seriss.com/people/erco/fltk/"&gt;FLTK cheat sheet and videos&lt;/a&gt;, which were very helpful.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I want to create a war game similar to the old Avalon Hill war games of my youth, something like &lt;a href="http://en.wikipedia.org/wiki/Afrika_Korps_%28game%29"&gt;Afrika Korps&lt;/a&gt; or possibly like SSI's &lt;a href="http://en.wikipedia.org/wiki/Allied_General"&gt;Allied General&lt;/a&gt;. I'm not sure how to do this, so I'm going to have to put my thinking cap on for a while. While I'm figuring that out, I'll be working on the cellular automatons. I have a few more ideas for improvements.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_x-dCbtsItBs/S56xhRYFSLI/AAAAAAAAAlI/pz2pbKcrFF4/s1600-h/tatort2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="247" src="http://3.bp.blogspot.com/_x-dCbtsItBs/S56xhRYFSLI/AAAAAAAAAlI/pz2pbKcrFF4/s320/tatort2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Last night's International Mystery was &lt;i&gt;&lt;b&gt;Tatorte&lt;/b&gt;&lt;/i&gt; ("Crime Scene"), which is one of my faves. The &lt;i&gt;bier&lt;/i&gt; drinking, &lt;i&gt;currywurst&lt;/i&gt; eating detectives Max Ballauf and Freddy Schenk were on the job again, chasing yet another killer. I like these guys -- they once even arrested an elderly SS murderer for crimes committed back in the 1930's. They sure are natural born po-lice, as they used to say on &lt;i&gt;The Wire&lt;/i&gt;. Alas, &lt;i&gt;L'ispettore&amp;nbsp; Coliandro&lt;/i&gt; will return next week. He's definitely la natural born doofus who somehow manages to make time with a hot chick, solve a little crime and order mass quantities of yoghurt. C'est la vie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-7351886752249167627?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/7351886752249167627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/03/ca-updates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/7351886752249167627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/7351886752249167627'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/03/ca-updates.html' title='CA Updates'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x-dCbtsItBs/S56xhRYFSLI/AAAAAAAAAlI/pz2pbKcrFF4/s72-c/tatort2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-3497381920405474265</id><published>2010-02-27T13:31:00.000-06:00</published><updated>2010-02-27T13:31:18.721-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>CA project status</title><content type='html'>The cellular automata project continues.&amp;nbsp; It is currently working in a bare-bones, command line manner. You can load start files in plaintext (.cells) format, start in single step mode, toggle on/off single step mode while the program is running and select fixed plane or toroid modes on startup. It's now actually usable.&lt;br /&gt;&lt;br /&gt;The toroidal surface took longer than expected, which seems to be the norm for me. (I had changed the code for countNeighbors() in the C++ version and&amp;nbsp; I had some incorrect code to handle cells on the edges. It took me a while to sort it out.) The code is up on &lt;a href="https://launchpad.net/ca"&gt;launchpad&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Features to work on:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Save a snapshot of the current state to a plaintext (.cells) file.&lt;/li&gt;&lt;li&gt;Input rulesets from the command line.&lt;/li&gt;&lt;li&gt;Set the global constants from a configuration file.&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/4361245043329780596-3497381920405474265?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/3497381920405474265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/ca-project-status.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/3497381920405474265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/3497381920405474265'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/ca-project-status.html' title='CA project status'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-3181966825602000516</id><published>2010-02-24T10:08:00.000-06:00</published><updated>2010-02-24T18:40:17.583-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kvetch'/><title type='text'>The Third Time's the Charm</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_x-dCbtsItBs/S4XCyEeRZBI/AAAAAAAAAk8/WlOXEP7-enU/s1600-h/coliandro.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_x-dCbtsItBs/S4XCyEeRZBI/AAAAAAAAAk8/WlOXEP7-enU/s320/coliandro.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/L%27ispettore_Coliandro"&gt;L'ispettore Coliandro&lt;/a&gt; on Wikipedia&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;I caught the rebroadcast of &lt;i&gt;Inspector Coliandro&lt;/i&gt; on&amp;nbsp;&lt;a href="http://www.mhznetworks.org/mhzworldview/"&gt;MHz Worldview&lt;/a&gt;'s &lt;a href="http://www.facebook.com/MHzWorldviewInternationalMystery"&gt;International Mystery&lt;/a&gt; last night. This time the broadcast engineers rediscovered how to vertically center the video on the screen. This is a good thing, because that's where the English subtitles are located. The subtitles make it much easier for me to follow the story, because I sure don't understand much Italian.&lt;br /&gt;&lt;br /&gt;Even with subtitles, Inspector Coliandro is still a doofus who needs to stand closer to a razor. Much closer. Despite his scruffy appearance, he somehow got transferred back to the flying squad, even after ordering a multi-lifetime supply of yoghurt cups for the police. (Sadly, the flying squad has no airplanes. They just cruise around in unmarked police cars, just like the Chicago PD.) He did solve some crime: he rescued his partner from a frame-up, got the goods on a bent copper and put the whammy on a purse snatcher. Even better, he made kissy face with a hot chick from a family of petty criminals. (They were sort of like an Italian version of the Timson clan from &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Rumpole_of_the_Bailey"&gt;Rumpole of the Bailey&lt;/a&gt;&lt;/i&gt;.) Still, I'm not sure if Coliandro is a keeper, even if he does get lucky with a different hottie in each episode. (I do bet ya that he never even gets near to first base with the smoking hot prosecutor, Dottoressa Longhi.)&lt;br /&gt;&lt;br /&gt;I guess time will tell. They seem to have more episodes of&lt;i&gt; Inspector Coliandro&lt;/i&gt; in the pipeline, and they're going to run them no matter what I think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-3181966825602000516?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/3181966825602000516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/third-times-charm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/3181966825602000516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/3181966825602000516'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/third-times-charm.html' title='The Third Time&apos;s the Charm'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_x-dCbtsItBs/S4XCyEeRZBI/AAAAAAAAAk8/WlOXEP7-enU/s72-c/coliandro.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-6672983365570002194</id><published>2010-02-23T11:34:00.000-06:00</published><updated>2010-02-24T21:25:55.161-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Hey, it works!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/S4PluzB3NlI/AAAAAAAAAk0/FKH3Yi2vap0/s1600-h/ca-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_x-dCbtsItBs/S4PluzB3NlI/AAAAAAAAAk0/FKH3Yi2vap0/s640/ca-1.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Earlier, I determined that I would need to implement just a few more functions in C++ to get a bare-bones version of my cellular automaton (CA) program working. Here's a list of the necessary functions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;countNeighbors&lt;/li&gt;&lt;li&gt;cellNextgen&lt;/li&gt;&lt;li&gt;updateCAMatrix&lt;/li&gt;&lt;li&gt; a 2D vector to hold the ruleset information&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;I wrote out the functions using pencil and paper. True to my past performance, none of them ran as written on paper. One of these days, I'll get it right from the get-go. Whatever. At least I was correct in that these were the functions required get the job done. At the end of a small hack-a-thon, I was left with a working, bare-bones version of Conway's Game of life. I decided not to fill the blog up with too much source code. If you're interested, the source code is available &lt;a href="https://launchpad.net/ca"&gt;here&lt;/a&gt; on &lt;a href="https://launchpad.net/"&gt;launchpad&lt;/a&gt;. I'll only add code snippets as necessary, or when I just feel like it. &lt;br /&gt;&lt;br /&gt;Next on the agenda is implementing:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Toroidal surface version. &lt;/li&gt;&lt;li&gt;Single step mode.&lt;/li&gt;&lt;li&gt;Start pattern file input. &lt;/li&gt;&lt;/ul&gt;The nice thing about C++ is that it is faster than Python. In this case, the C++ version of the CA program is much, much faster than the Python version. It's so much faster that I want to take another look at my Python code to see if there's something amiss. I think C++&amp;nbsp; is my new language of choice for sound and graphics.&lt;br /&gt;&lt;br /&gt;The downside is that C++ is more painful for me to code in. Part of it is my ignorance, and part of it is just the nature of C++. I studied things like "&lt;a href="http://en.wikipedia.org/wiki/Pass_by_reference#Call_by_reference"&gt;pass by reference&lt;/a&gt;", "pass by value" and "&lt;a href="http://en.wikipedia.org/wiki/Dynamic_memory_allocation"&gt;dynamic memory allocation&lt;/a&gt;" in school, and I quickly left them behind because I was an electrical engineering student, studying other topics. Now that I've started writing more code, and I'm beginning to use C++, I have to start paying attention to these things.&lt;br /&gt;&lt;br /&gt;Python is free and easy language. Python has automatic memory management (&lt;a href="http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29"&gt;garbage collection&lt;/a&gt;), while in C++ the programmer &lt;i&gt;must&lt;/i&gt; take out the trash. C++ has &lt;a href="http://en.wikipedia.org/wiki/Static_type#Static_typing"&gt;static typing&lt;/a&gt;; Python has dynamic typing. C++ is compiled; Python is interpreted. These differences make Python much easier to use, which means it is much faster to write code in. C++ is more painful to code in, but it sure runs fast. The C++ CA program runs so fast compared to Python version that I think it's worth the trouble of climbing the C++ learning curve. And what a steep curve it is! This is going to take a while.&lt;br /&gt;&lt;br /&gt;One problem that I notice when asking Google how to do things with C++ is the widespread use of C idioms and libraries to solve problems in C++. While C++ was developed from C, and can run &lt;i&gt;almost&lt;/i&gt; everything just like C, it also has a number of distinctly C++ ways of handling tasks. It seems that so many C coders segued into C++ they carried many of their C solutions into C++ code. For example, I wanted to convert some text into an integer. Google shows that many people would use a C method:&lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;... &lt;/span&gt;&lt;/div&gt;&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;...&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;... &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;int myint;&lt;/span&gt;&lt;/div&gt;&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;char *mystring;&lt;/span&gt;&lt;/pre&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;...&lt;/span&gt;&lt;/div&gt;&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;myint = atoi(mystring)&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;...&lt;/span&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;which works just fine in C++. It's just that C++ has another way, a native C++ way to do the same thing.&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #include &amp;lt;string&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #include &amp;lt;sstream&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using namespace std;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int myint;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string mystring;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stringtream ss;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stringstream ss;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ss &amp;lt;&amp;lt; mystring;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ss &amp;gt;&amp;gt; myint;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I don't have a big problem with using C idioms in C++; it's just that while studying Python I found it best to write Python code in Python, not translated Scheme or C. I suspect that this will hold true in C++ as well.&amp;nbsp; While it's true for this example the C code is nice and concise, the C++ version is pretty flexible and can do some interesting things. For example, it could parse a long string of whitespace separated items, and deposit each item into a separate variable. The variables could have varying types, if desired. The infrastructure is already there. I'm just learning this C++ stuff, but it seems to me that you might not always want to immediately just grab a tool from C to tackle a problem in C++.&lt;br /&gt;&lt;br /&gt;Another problem is C++ has changed over the years. If in searching for C++ wisdom you see something like &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include &lt;iostream.h&gt;&lt;/iostream.h&gt;&lt;/span&gt; in sample code, go somewhere else. That does not work anymore, and hasn't for a while.&lt;br /&gt;&lt;br /&gt;I've been working through Lazy Foo's &lt;a href="http://www.lazyfoo.net/SDL_tutorials/index.php"&gt;Beginning Game Programming&lt;/a&gt; tutorials. These tutorials are using &lt;a href="http://www.libsdl.org/"&gt;Simple Directmedia Layer&lt;/a&gt;&amp;nbsp; so they are of great interest to me. I highly recommend them. I got a copy of &lt;i&gt;&lt;a href="http://nostarch.com/plg.htm"&gt;Programming Linux Games&lt;/a&gt;:&amp;nbsp; Building Multimedia Applications with SDL, OpenAL(tm), and Other APIs&lt;/i&gt; by Loki Software, Inc. with John R. Hall. These days I don't buy too many computer books because they are expensive, often quickly obsolete and just do not give you a lot of &lt;b&gt;bang&lt;/b&gt; for your buck. I mean, &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt; is pretty good at answering questions about computing, and my local &lt;a href="http://www.skokie.lib.il.us/"&gt;library&lt;/a&gt; has beau coup books on the subject, as well as a subscription to&amp;nbsp;&lt;a href="http://my.safaribooksonline.com/"&gt;Safari Books Online&lt;/a&gt;. I made an exception for this book, because it's from the people who developed SDL, and the excerpts looked pretty good. Now that I have it in my hands, I glad I spent the money. It's a little old (I think some things have changed with SDL since the book was written), but it's still pretty solid.&lt;br /&gt;&lt;br /&gt;Sadly, the author, John R. Hall, is now blessed memory. He died way too young. My condolences to his family and friends.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-6672983365570002194?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/6672983365570002194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/its-alive-its-alive.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6672983365570002194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/6672983365570002194'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/its-alive-its-alive.html' title='Hey, it works!'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_x-dCbtsItBs/S4PluzB3NlI/AAAAAAAAAk0/FKH3Yi2vap0/s72-c/ca-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-614343945415175803</id><published>2010-02-22T11:01:00.000-06:00</published><updated>2010-02-22T11:04:28.601-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kvetch'/><title type='text'>Regular TV</title><content type='html'>I'm a terrible couch potato. It's a not-so-secret sin, a guilty pleasure. These days, I watch most of my video entertainment on my computer, rather than on my television. Given a fast enough connection to the Internet, you can get free video on demand. I just love it. I think when I get working again I am going to build a &lt;a href="http://www.mythtv.org/"&gt;MythTV&lt;/a&gt; box and go nuts.&lt;br /&gt;&lt;br /&gt;I don't have cable or satellite. (They cost money, which is currently in short supply.) I just have plain old Chicago-area broadcast TV, which is free.&amp;nbsp; I don't watch a lot of regular TV these days, except for Sundays. Sundays I can get my fix of foreign detective shows on&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/MHz_Worldview"&gt;MHz Worldview&lt;/a&gt;'s International Mystery. What a great show! It's not available online. WYCC Chicago carries it on channel 20.3. I get to watch &lt;a href="http://en.wikipedia.org/wiki/Henning_Mankell"&gt;Henning Mankell's&lt;/a&gt; Kurt Wallander in subtitled Swedish,&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/George_Simenon"&gt;George Simenon's&lt;/a&gt; Inspector Maigret in subtitled French, &lt;a href="http://en.wikipedia.org/wiki/Andrea_Camilleri"&gt;Andrea Camilleri's&lt;/a&gt; Salvo Montalbano in subtitled Italian... you get the picture. Every week, you get detectives in a foreign land chasing the bad guys. I just love it.&lt;br /&gt;&lt;br /&gt;How cool is this: French police get to drink on the job. I love when Inspector Maigret (played by Bruno Cremer) orders &lt;i&gt;une bière&lt;/i&gt; or &lt;i&gt;cognac&lt;/i&gt; while working. This is normal for him, as normal as eating cassoulet. In the USA, cops aren't &lt;i&gt;supposed&lt;/i&gt; to drink on the job.&lt;br /&gt;&lt;br /&gt;My absolute fave is&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Tatort"&gt;Tatort&lt;/a&gt; ("Crime Scene"), which is in German. The episodes currently being shown are with the detectives Max Ballauf and Freddy Schenk, who are in the &lt;i&gt;kripo&lt;/i&gt; ("kriminal polizei") in Cologne, Germany. They chase murderers. As the characters in &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/The_Wire"&gt;The Wire&lt;/a&gt;&lt;/i&gt; used to say, they are &lt;i&gt;natural born po-lice&lt;/i&gt;. They even arrest an elderly fugitive nazi murderer in one show, which gives them bonus points in my book. I am jealous of them because they have easy access to &lt;a href="http://en.wikipedia.org/wiki/Currywurst"&gt;currywurst&lt;/a&gt; and unpasteurized beer, even while on the job.&lt;br /&gt;&lt;br /&gt;I don't like all of the shows. There's a show with some Italians running around in it (OK, it's titled &lt;i&gt;&lt;a href="http://www.mhznetworks.org/shop/product.php?productid=16201"&gt;La Omicidi&lt;/a&gt;&lt;/i&gt;) where the only cool thing is the bad guy, who wrote Dante's &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/La_Divina_Commedia"&gt;La Divina Commedia&lt;/a&gt;&lt;/i&gt; on the walls of his cell in prison, and is smarter than everyone else in the whole world. Then there's the current guy, Inspector Coliandro, who seems to be a doofus who bulk orders more yoghurt than even the guy on&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Burn_Notice"&gt;Burn Notice&lt;/a&gt; could eat. I'm not the only one who is less than thrilled with Inspector Coliandro. MHz Worldview sent me this in a email:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/S4Kxal6R7YI/AAAAAAAAAks/QaLbgnJZQkE/s1600-h/colliandro.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_x-dCbtsItBs/S4Kxal6R7YI/AAAAAAAAAks/QaLbgnJZQkE/s320/colliandro.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Inspector Coliandro: Second Time's the Charm? &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Many of our viewers had mixed feelings about the premiere of Inspector Coliandro last month. The tone of this series is different than some of our other offerings, but give it another chance. You may like the second episode better.&amp;nbsp;Inspector Coliandro: Into A Trap, Sunday, February 21 and Tuesday, February&amp;nbsp;23 at 9PM ET/PT&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;OK, let's give the show another chance. So, it's Sunday, time for the show. I sit and watch some of the news from Germany, which is on before International Mystery. The video is just fine. The opening for International Mystery comes on. The video is just fine. Inspector Coliandro comes on. The video is now "borken". Whiskey Tango Foxtrot. The video is shifted down from the top of the screen, which cuts of the bottom of the video frame, while leaving an empty black bar at the top. The subtitles are conveniently invisible because they are in the cut off portion of the frame. Aw, snap! Can't these idiots center the video on the screen?&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;To be fair, if I could find the remote for my wonderful set top converter box I may have been able to fix the problem. Maybe. The first episode, which sucked by the way, had flawless video. The second required knowledge of Italian. Maybe the third time's a charm. We'll see.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-614343945415175803?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/614343945415175803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/regular-tv.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/614343945415175803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/614343945415175803'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/regular-tv.html' title='Regular TV'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_x-dCbtsItBs/S4Kxal6R7YI/AAAAAAAAAks/QaLbgnJZQkE/s72-c/colliandro.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-2993671864259556462</id><published>2010-02-21T12:16:00.000-06:00</published><updated>2010-02-21T13:24:44.337-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kvetch'/><title type='text'>The New Crossword Puzzle Workaround</title><content type='html'>I may have previously mentioned my need to print a daily crossword Puzzle for Lizzy. One day, literally overnight, the crossword puzzle from the Chicago Tribune&amp;nbsp; would not print from my computer. To be more precise, it would not print from my&amp;nbsp; fully up to date 64 bit Ubuntu 9.10 "karmic koala" machine to my Samsung SCX-4200 printer. Neither would any of the other Flash crossword puzzles. Aw, snap!&lt;br /&gt;&lt;br /&gt;Did I change anything? Yep, I do so all the time. I have software updates running all the time. It might be any of the bleeding edge crap that that's installed on my machine. Many computers in the desktop Linux world have a delicate software ecology, and mine is no exception. It could also be any of the stupid things that I do to my computer. It also could be any of the stupid things the folks at Ubuntu and Canonical do to my computer. It could be someone else, somewhere else. I break software all the time. I'm real good at that. I break things, then I fix them. I don't think that I broke Flash crossword puzzle printing -- it could have something to do with the software update installs that are going on all the time -- but I'm not sure. It could be that Flash update that slid in the other day, so don't be quick to blame me and my promiscuous use of synaptic and configure; make; make install to /usr/local.&lt;br /&gt;&lt;br /&gt;Chasing for an answer, I researched Samsung, Cups, Linux, Adobe Flash and the Dark Magical Arts. I tried different web browsers. Opera. Chrome. &lt;a href="http://en.wikipedia.org/wiki/Kazehakase"&gt;Kazehakase&lt;/a&gt;, even. I reinstalled the printer drivers, following tweedledee's excellent and exhaustive instructions on the &lt;a href="http://ubuntuforums.org/showthread.php?t=341621"&gt;Ubuntu Forums.&lt;/a&gt; (I know, &lt;i&gt;tweedletee&lt;/i&gt;? You're taking advice from someone called tweedledee? Hush up! Tweedledee know what (s)he is talking about.) I waved a dead chicken over the computer, the printer and my unemployed son. No joy.&amp;nbsp; As far as I can determine, I can print from anything &lt;i&gt;except&lt;/i&gt; an Adobe Flash crossword puzzle program. &lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;It will not print to the printer,&lt;/div&gt;&lt;div style="text-align: center;"&gt;It will not print to a PDFer.&lt;br /&gt;It will not print on a box,&lt;br /&gt;It will not print from Firefox.&lt;/div&gt;&lt;div style="text-align: center;"&gt;It will not print here or there&lt;/div&gt;&lt;div style="text-align: center;"&gt;It will not print anywhere.&lt;/div&gt;&lt;div style="text-align: center;"&gt;I like green eggs and SPAM, &lt;/div&gt;&lt;div style="text-align: center;"&gt;but I do not like Flash, Sam I Am.&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I think the printer and the print system is OK, but there is some problem related to Flash. My last problem related to Flash was also related to the crossword puzzle. That one one was really annoying -- Flash would not respond to mouse clicks. Great fun. I couldn't do anything with it, it just sat there and ignored me, like just like my friends and family. The problem was neither Flash, nor the Firefox web browser.&amp;nbsp; The problem was the &lt;a href="http://en.wikipedia.org/wiki/Compiz"&gt;Compiz&lt;/a&gt; window manager used by the default Ubuntu Gnome desktop.&amp;nbsp; Change the window manager to&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Metacity"&gt;Metacity&lt;/a&gt;, and the crossword puzzle works. (Remember, a delicate software ecology can be part of running of a free and open source operating system. There are a lot of cooks stirring the pot.)&lt;br /&gt;&lt;br /&gt;Someone else on the web figured this out. I didn't know Compiz from  Metacity before this. I'm running Metacity right now. Compiz is still "borken".&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Well, everything worked until now. Now printing is "borken" for the Flash crossword puzzle, and I can't find a fix. The work around was to boot Windows Vista, and print the crossword puzzle. (Go figure. It works &lt;i&gt;great&lt;/i&gt; there.) This is unacceptable not only because it is surrendering to the dark side of the force, but because it also takes half of forever. It wouldn't be so bad to be evil if it were only a bit faster. I spent a day tweaking this broken-down Edsel of an operating system, and it's still is way too slow. It's like a Crown Vic with a four cylinder engine. For an evil company, full of really smart people, bent on world software domination, this is a sorry excuse for an operating system. I'm tired of booting this slowpoke every stinking day for the woman I love. &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;So the new work around is to change crossword puzzles. I needed to find one that I can print out for Lizzy. So good-bye, Chicago Tribune crossword puzzle. Good-bye to flash crossword puzzles. Yes, even though both of Lizzy's parents worked for the Trib, it's time to move on.&amp;nbsp; It' been fun. Hello, &lt;a href="http://crosswords.washingtonpost.com/wp-srv/style/crosswords/daily/front.htm"&gt;Washington Post crossword puzzle&lt;/a&gt;, which uses &lt;a href="http://java.com/en/"&gt;Java&lt;/a&gt; instead of Flash. It also can generate a .gif file, which I can print out.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Problem &lt;i&gt;almost&lt;/i&gt; solved. I'm calling it a day.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-2993671864259556462?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/2993671864259556462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/new-crossword-puzzle-workaround.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/2993671864259556462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/2993671864259556462'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/new-crossword-puzzle-workaround.html' title='The New Crossword Puzzle Workaround'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-210789739142023958</id><published>2010-02-20T15:35:00.000-06:00</published><updated>2010-02-20T15:35:12.333-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Pseudo-Life</title><content type='html'>Nothing much to report here. I worked a bit on the cellular automata program; now it generates screen after screen of random patterns. This is not the final goal, but it is a step in the right direction. A game of pseudo-life, instead of &lt;a href="http://en.wikipedia.org/wiki/Conway%27s_life"&gt;Conway's life&lt;/a&gt;. When I first compiled and ran this bit of code, I saw something strange. In just a few moments the screen would fill up with green blocks. It took me a little while to figure out what the problem was. D'oh! I neglected to clear the cells vector, which would keep on magically growing. This gives you a minty green screen o' blocks. &lt;br /&gt;&lt;br /&gt;I kept pouring over the SDL sections of the code. There was no problem with SDL code, just the plain vanilla C++ code. Happy&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cells.clear();&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;to all.&lt;br /&gt;&lt;br /&gt;I went through the Python version of this program and figured out what functions would have to be ported to get a bare bones working version of the program. It looks like just a few:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;countNeighbors&lt;/li&gt;&lt;li&gt;cellNextgen&lt;/li&gt;&lt;li&gt;updateCAMatrix&lt;/li&gt;&lt;li&gt; a 2D vector to hold the ruleset information.&lt;/li&gt;&lt;/ul&gt;No I haven't posted them yet -- they're still vaporware. They will all be showing up as I go along. I actually coded them using pencil and paper, but to date I have a poor track record of writing down working code with pencil and paper. I will code and debug them, then post.&lt;br /&gt;&lt;br /&gt;One thing I learned after writing the paper and pencil code is that using c++ &lt;a href="http://en.wikipedia.org/wiki/Vector_%28C%2B%2B%29"&gt;vector&lt;/a&gt; &amp;lt;bool&amp;gt;  is probably not a good idea. Too bad, it looks so good on paper.&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;vector&amp;gt;&lt;br /&gt;#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;#include "SDL/SDL.h"&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;// Globals&lt;br /&gt;const int XRES = 1024;&lt;br /&gt;const int YRES = 768;&lt;br /&gt;const int BLOCKSIZE = 4;&lt;br /&gt;const int DELTA_T = 250;&lt;br /&gt;const int FCOLOR = 0x0000FF00;&lt;br /&gt;const int BCOLOR = 0x00000000;&lt;br /&gt;const int ROWS = YRES / BLOCKSIZE;&lt;br /&gt;const int COLS = XRES / BLOCKSIZE;&lt;br /&gt;&lt;br /&gt;int randomStart(vector&lt;sdl_rect&gt; &amp;amp; cells, vector&lt;vector&gt;&lt;int&gt; &amp;gt; &amp;amp; world) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srand(time(NULL));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_Rect p;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int pct;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int row = 0; row &amp;lt; ROWS; ++row)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int col = 0; col &amp;lt; COLS; ++col)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pct&amp;nbsp; = rand() % 1000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pct &amp;lt; 200)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.x = col * BLOCKSIZE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.y = row * BLOCKSIZE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.w = BLOCKSIZE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.h = BLOCKSIZE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cells.push_back(p);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; world[row][col] = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; world[row][col] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vector&lt;sdl_rect&gt; cells;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vector&amp;lt; vector&lt;int&gt; &amp;gt; world(ROWS, vector&lt;int&gt;(COLS,0));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // initialize SDL&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_Init(SDL_INIT_VIDEO);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // populate the world&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //randomStart(cells, world);&amp;nbsp;&amp;nbsp; // pass by reference&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set the title bar&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_WM_SetCaption("Cellular Automata", "Cellular Automata");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // create window&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_Surface* screen = SDL_SetVideoMode(XRES, YRES, 0, SDL_DOUBLEBUF);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create background and block&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_Surface* bg = SDL_CreateRGBSurface(SDL_SWSURFACE,XRES, YRES, 32, 0, 0, 0, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_FillRect(bg, NULL, BCOLOR);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Display the bank screen&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_BlitSurface(bg, NULL, screen, NULL);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_Flip(screen);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // creak the block image for a live cell&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_Surface* block = SDL_CreateRGBSurface(SDL_SWSURFACE, BLOCKSIZE - 2, BLOCKSIZE - 2, 32, 0, 0, 0, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_FillRect(block, NULL, FCOLOR);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_Event event;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool gameover = false;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // message pump&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!gameover)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // look for an event&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (SDL_PollEvent(&amp;amp;event)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // an event was found&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; switch (event.type) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // close button clicked&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case SDL_QUIT:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; gameover = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // handle the keyboard&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case SDL_KEYDOWN:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; switch (event.key.keysym.sym) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case SDLK_ESCAPE:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case SDLK_q:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; gameover = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; randomStart(cells, world);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // draw the background&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_BlitSurface(bg, NULL, screen, NULL);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // blit the blocks&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (unsigned int i = 0; i &amp;lt; cells.size(); ++i)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_BlitSurface(block, NULL, screen, &amp;amp;cells[i]);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // empty the vector of cells&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cells.clear();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // update screen&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_Flip(screen);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // free the background surface&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_FreeSurface(bg);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // cleanup SDL&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDL_Quit();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;/int&gt;&lt;/int&gt;&lt;/sdl_rect&gt;&lt;/int&gt;&lt;/vector&gt;&lt;/sdl_rect&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-210789739142023958?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/210789739142023958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/pseudo-life.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/210789739142023958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/210789739142023958'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/pseudo-life.html' title='Pseudo-Life'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-4408318877433691759</id><published>2010-02-19T16:32:00.000-06:00</published><updated>2010-02-19T16:32:27.885-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kvetch'/><title type='text'>Addicted to Binary Blobs</title><content type='html'>&amp;nbsp;The &lt;a href="http://www.mono-project.com/Main_Page"&gt;Mono&lt;/a&gt; folks, lead by &lt;a href="http://tirania.org/blog/"&gt;Miguel de Icaza&lt;/a&gt;, released a &lt;a href="http://www.go-mono.com/moonlight/prerelease.aspx"&gt;Moonlight 3.0 Preview&lt;/a&gt; that actually plays &lt;a href="http://www.microsoft.com/en/us/default.aspx"&gt;Microsoft&lt;/a&gt;&amp;nbsp;&lt;a href="http://silverlight.net/"&gt;Silverlight&lt;/a&gt; 3 videos on my 64-bit Ubuntu Linux box. I was able to go to the &lt;a href="http://www.nbcolympics.com/video/assetid=3a1185d2-1f79-45cd-9a8a-c7b3c57fcda4.html#lysaceks"&gt;NBC Olympics&lt;/a&gt; website ("Powered by Microsoft Silverlight") and actually watch videos on &lt;b&gt;Linux&lt;/b&gt;. Before this did not work at all, and yes, I had Moonlight installed. It just didn't work on these videos. With the 3.0 preview installed, it just worked. (Well, it just worked after I followed the prompting to accept a license agreement and download some codecs, but that's the norm for non-free software.) When I played a video, first I am warned that I am using an unsupported operating system, and then the video plays. It plays pretty good in the small window embedded in the web page, but it seems to have problems with full screen. (That could be a problem with my network connection.) Well done, folks! Kudos!&lt;br /&gt;&lt;br /&gt;Of course, if I go to the site for &lt;a href="http://www.microsoft.com/Security_Essentials/"&gt;Microsoft Security Essentials&lt;/a&gt; and try to play the installation video, all I get is audio. Not that I could (or would) install that software on Linux, but still, the Silverlight installation video still should play. It works on Windows.&lt;br /&gt;&lt;br /&gt;Wow. I have just now lost &lt;b&gt;all&lt;/b&gt; my open source credibility. Umm, &lt;a href="http://www.fsf.org/news/playogg.html"&gt;play ogg&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/S376mFwxDSI/AAAAAAAAAkc/mBDZImDiHL0/s1600-h/play_ogg_medium.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_x-dCbtsItBs/S376mFwxDSI/AAAAAAAAAkc/mBDZImDiHL0/s320/play_ogg_medium.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I'm a sucker for sound and video. Seriously. I listen to more music,  radio and TV on my computer than I do using any other device. I probably should not be wasting so much time, but I do need to get my fix. I watch my video and listen to my music on &lt;a href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt;, not on &lt;a href="http://en.wikipedia.org/wiki/Windows"&gt;Microsoft Windows&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Mac_OS_X"&gt;Mac OS X&lt;/a&gt;. It all works pretty well most of the time, but I can't do it without using non-free "binary blobs" of software. This is the norm for Windows and Mac OS X, but Linux is generally free and open source. Generally. The dirty secret of Linux is that almost everyone who plays sound and video usually does so with proprietary, non-open source software, such as MP3 or Flash. This stuff may be free as in free beer, but it is not free as in free speech. There are open source alternatives, but it can be hard to find radio stations and video sources using them. It's not pretty, but that's the way it is. You can read all about Free and Open Source Software issues at the &lt;a href="http://www.fsf.org/"&gt;Free Software Foundation&lt;/a&gt;. &lt;a href="http://www.fsf.org/news/playogg.html"&gt;Play ogg&lt;/a&gt;, if you can. If you can't, you must make you own choices. I put the binary blobs in. You might choose to leave them out.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;According to my beautiful and talented sweetie, Miss Lizzy, the most important thing my computer does it print out the day's crossword puzzle for her.&amp;nbsp; She's not very upfront about this, but that's that the way it is. She will hover around me in the morning, waiting for me to print out the &lt;a href="http://www.chicagotribune.com/features/games/chi-sa-crossword-htmlpage,0,3928076.htmlpage"&gt;crossword puzzle&lt;/a&gt;. (This is a good thing, because I like sugar.) This crossword puzzle in question is an &lt;a href="http://www.adobe.com/products/flashplayer/"&gt;Adobe Flashplayer&lt;/a&gt; application that runs in a web browser, usually &lt;a href="http://www.mozilla.com/en-US/firefox/firefox.html"&gt;Firefox&lt;/a&gt; for me. All was well until one fine day, the puzzle would not print out. Aw, snap! Dang old software upgrades.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The printer is still working fine, and I can print from any application I want, except from the Flashplayer crossword puzzle. Even the frickin' built in scanner still works. No fun here, and sugar may soon be rationed. There is a work around, but it's fugly. The work around is to tell &lt;a href="http://www.gnu.org/software/grub/"&gt;grub&lt;/a&gt; to boot Windows Vista, where Firefox and Flash can print out a crossword puzzle for Lizzy. Yuck! Windows one huge non-free binary blob, and now I need it. This is killing me. Help me! Help me! Next, I'll be on TV with Bill Gates, saying "I'm a pc!" and "Bing!".&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The things I do for love.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-4408318877433691759?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/4408318877433691759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/addicted-to-binary-blobs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4408318877433691759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4408318877433691759'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/addicted-to-binary-blobs.html' title='Addicted to Binary Blobs'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x-dCbtsItBs/S376mFwxDSI/AAAAAAAAAkc/mBDZImDiHL0/s72-c/play_ogg_medium.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-4112039048754467548</id><published>2010-02-18T09:36:00.000-06:00</published><updated>2010-02-18T09:38:14.703-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Adding SDL</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/S31OV73LTYI/AAAAAAAAAj0/gEMGyyvxTgg/s1600-h/sdl_logo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_x-dCbtsItBs/S31OV73LTYI/AAAAAAAAAj0/gEMGyyvxTgg/s320/sdl_logo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Now that I have the basic data structure representing the cellular automata "world", it's time to start hacking in the graphics code. I'm using &lt;a href="http://www.libsdl.org/"&gt;Simple DirectMedia Layer&lt;/a&gt; (SDL) to make the magic here. Why SDL? Well, I started doing this stuff in&amp;nbsp;&lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;, where I used&amp;nbsp;&lt;a href="http://www.pygame.org/news.html"&gt;pygame&lt;/a&gt; to make the magic, and SDL is the magic behind pygame.&lt;br /&gt;&lt;br /&gt;SDL was the library that &lt;a href="http://www.lokigames.com/"&gt;Loki Games&lt;/a&gt; used to port commercial games from Windows to Linux. I even purchased one. Sadly, Loki is gone, but SDL is still here and is even still under development. Ignorant as I am, it seems as good a choice as any. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_x-dCbtsItBs/S31RNBnxoHI/AAAAAAAAAkE/DUhHIbgRLdE/s1600-h/ca-random-start1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="491" src="http://1.bp.blogspot.com/_x-dCbtsItBs/S31RNBnxoHI/AAAAAAAAAkE/DUhHIbgRLdE/s640/ca-random-start1.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;The magic so far&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;The display portions of the code were copied from a demo that I found somewhere on the net. Sorry, I don't remember where.&amp;nbsp; Ask Google -- the code is out there. Most of the comments are from that source. Originally the program displayed a bitmap;  I hacked it to my bidding. I won't say much more about the code, although I could go on until the cows come home.&lt;br /&gt;&lt;br /&gt;One tweak that come to mind is to change the world vector's data type, which is currently a C++ int, which is 4 bytes on my machine. I really don't need 4294967296 different values to hold 2 states, 0 or 1. A &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;bool&lt;/span&gt; would do nicely, or maybe a shorter king of unsigned integer type, if I decide to encode more information about the cell. It's on the TODO list.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="color: #a020f0;"&gt;#include &lt;/span&gt;&lt;span style="color: magenta;"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="color: #a020f0;"&gt;&lt;br /&gt;#include &lt;/span&gt;&lt;span style="color: magenta;"&gt;&amp;lt;vector&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="color: #a020f0;"&gt;&lt;br /&gt;#include &lt;/span&gt;&lt;span style="color: magenta;"&gt;&amp;lt;cstdlib&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #a020f0;"&gt;#include &lt;/span&gt;&lt;span style="color: magenta;"&gt;"SDL/SDL.h"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &lt;span style="color: brown;"&gt;&lt;b&gt;using&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: seagreen;"&gt;&lt;b&gt;namespace&lt;/b&gt;&lt;/span&gt;&amp;nbsp;std;&lt;/span&gt; &lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &lt;span style="color: seagreen;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;XRES = &lt;span style="color: magenta;"&gt;1024&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &lt;span style="color: seagreen;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;YRES = &lt;span style="color: magenta;"&gt;768&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &lt;span style="color: seagreen;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;BLOCKSIZE = &lt;span style="color: magenta;"&gt;8&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &lt;span style="color: seagreen;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;DELTA_T = &lt;span style="color: magenta;"&gt;250&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &lt;span style="color: seagreen;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;FCOLOR = &lt;span style="color: magenta;"&gt;0x00FF00&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &lt;span style="color: seagreen;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;BCOLOR = &lt;span style="color: magenta;"&gt;0x000000&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &lt;span style="color: seagreen;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;ROWS = YRES / BLOCKSIZE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &lt;span style="color: seagreen;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;COLS = XRES / BLOCKSIZE;&lt;/span&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;randomStart(vector&amp;lt;SDL_Rect&amp;gt; &amp;amp; cells, vector&amp;lt;vector &amp;lt;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;gt; &amp;gt; &amp;amp; world) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;srand(time(&lt;span style="color: magenta;"&gt;NULL&lt;/span&gt;));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_Rect p;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;pct;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&amp;nbsp;(&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;row = &lt;span style="color: magenta;"&gt;0&lt;/span&gt;; row &amp;lt; ROWS; ++row)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&amp;nbsp;(&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;col = &lt;span style="color: magenta;"&gt;0&lt;/span&gt;; col &amp;lt; COLS; ++col)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pct&amp;nbsp;&amp;nbsp;= rand() % &lt;span style="color: magenta;"&gt;1000&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&amp;nbsp;(pct &amp;lt; &lt;span style="color: magenta;"&gt;375&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p.x = col * BLOCKSIZE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p.y = row * BLOCKSIZE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p.w = BLOCKSIZE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p.h = BLOCKSIZE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cells.push_back(p);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world[row][col] = &lt;span style="color: magenta;"&gt;1&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world[row][col] = &lt;span style="color: magenta;"&gt;0&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: magenta;"&gt;0&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;main() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vector&amp;lt;SDL_Rect&amp;gt; cells;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vector&amp;lt; vector&amp;lt;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;gt; &amp;gt; world(ROWS, vector&amp;lt;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;gt;(COLS,&lt;span style="color: magenta;"&gt;0&lt;/span&gt;));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// initialize SDL&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_Init(SDL_INIT_VIDEO);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// populate the world&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;randomStart(cells, world);&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;// pass by reference&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// set the title bar&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_WM_SetCaption(&lt;span style="color: magenta;"&gt;"Cellular Automata"&lt;/span&gt;, &lt;span style="color: magenta;"&gt;"Cellular Automata"&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// create window&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_Surface* screen = SDL_SetVideoMode(XRES, YRES, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;, SDL_DOUBLEBUF);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// Create background and block&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_Surface* bg = SDL_CreateRGBSurface(SDL_SWSURFACE,XRES, YRES, &lt;span style="color: magenta;"&gt;32&lt;/span&gt;, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_Surface* block = SDL_CreateRGBSurface(SDL_SWSURFACE, BLOCKSIZE - &lt;span style="color: magenta;"&gt;2&lt;/span&gt;, BLOCKSIZE - &lt;span style="color: magenta;"&gt;2&lt;/span&gt;, &lt;span style="color: magenta;"&gt;32&lt;/span&gt;, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_FillRect(block, &lt;span style="color: magenta;"&gt;NULL&lt;/span&gt;, FCOLOR);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// blit a block&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&amp;nbsp;(&lt;span style="color: seagreen;"&gt;&lt;b&gt;unsigned&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: seagreen;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&amp;nbsp;i = &lt;span style="color: magenta;"&gt;0&lt;/span&gt;; i &amp;lt; cells.size(); ++i)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_BlitSurface(block, &lt;span style="color: magenta;"&gt;NULL&lt;/span&gt;, bg, &amp;amp;cells[i]);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_Event event;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: seagreen;"&gt;&lt;b&gt;bool&lt;/b&gt;&lt;/span&gt;&amp;nbsp;gameover = &lt;span style="color: magenta;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// message pump&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;while&lt;/b&gt;&lt;/span&gt;&amp;nbsp;(!gameover)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// look for an event&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&amp;nbsp;(SDL_PollEvent(&amp;amp;event)) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// an event was found&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;switch&lt;/b&gt;&lt;/span&gt;&amp;nbsp;(event.type) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// close button clicked&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/span&gt;&amp;nbsp;SDL_QUIT:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gameover = &lt;span style="color: magenta;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// handle the keyboard&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/span&gt;&amp;nbsp;SDL_KEYDOWN:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;switch&lt;/b&gt;&lt;/span&gt;&amp;nbsp;(event.key.keysym.sym) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/span&gt;&amp;nbsp;SDLK_ESCAPE:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;case&lt;/b&gt;&lt;/span&gt;&amp;nbsp;SDLK_q:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gameover = &lt;span style="color: magenta;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// draw the background&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_BlitSurface(bg, &lt;span style="color: magenta;"&gt;NULL&lt;/span&gt;, screen, &lt;span style="color: magenta;"&gt;NULL&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// update the screen&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_UpdateRect(screen, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;, &lt;span style="color: magenta;"&gt;0&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// free the background surface&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_FreeSurface(bg);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;// cleanup SDL&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SDL_Quit();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: magenta;"&gt;0&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt; }&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-4112039048754467548?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/4112039048754467548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/adding-sdl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4112039048754467548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4112039048754467548'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/adding-sdl.html' title='Adding SDL'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x-dCbtsItBs/S31OV73LTYI/AAAAAAAAAj0/gEMGyyvxTgg/s72-c/sdl_logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-9067670921302378001</id><published>2010-02-17T14:43:00.000-06:00</published><updated>2010-02-18T09:38:56.786-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Coding in C++, or Why I like Python</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/S3xrd7AA-LI/AAAAAAAAAjs/JUjA4NSzNxM/s1600-h/800px-Commodore64.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt; &lt;/a&gt;&lt;/div&gt;I've been working on converting my cellular automata program from &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;&lt;br /&gt;using &lt;a href="http://www.pygame.org/news.html"&gt;pygame&lt;/a&gt; to &lt;a href="http://www.cplusplus.com/"&gt;C++&lt;/a&gt; using SDL. &lt;i&gt;Now&lt;/i&gt; I remember why I like Python so much more than C++.&lt;br /&gt;&lt;br /&gt;Admittedly, my C++ is rusty. I studied C++ back in the days of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include &lt;/span&gt;&amp;lt;iostream.h&amp;gt;, and I liked it so much that as soon as class was over, I started looking for another language to hack in. Almost anything else. Seriously. &lt;span style="font-family: inherit;"&gt;While I was away, I missed the whole&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; namespace&lt;/span&gt; thing, which was just waiting to bite me.&amp;nbsp; I flirted with Java, but it reminds me way too much of C++. (I found Java to be kind of like C++, only slower and without pointers. I realize that some will take issue with the "slower" label, but that was my experience.) Then I turned to the &lt;b&gt;Dark Side&lt;/b&gt; and used &lt;a href="http://www.microsoft.com/express/Windows/"&gt;Visual Basic&lt;/a&gt; for a while, because I was running windows &lt;i&gt;anyway&lt;/i&gt; on my &lt;strike&gt;&lt;b&gt;fully operational Death Star&lt;/b&gt;&lt;/strike&gt; computer. Eventually. I came to my senses and repented my sins, and switched to &lt;a href="http://www.freebasic.net/"&gt;freeBASIC&lt;/a&gt;, and &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt;, which are both pretty darn good.&lt;br /&gt;&lt;br /&gt;Then I decided I needed to stop coding in BASIC. Cold turkey. Why? I'm not really sure. Possible reasons include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;My &lt;a href="http://en.wikipedia.org/wiki/Commodore_64"&gt;Commodore 64&lt;/a&gt; is long gone. (True, but freeBasic is a long way from C64 BASIC. A very, very long way.)&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/S3xrd7AA-LI/AAAAAAAAAjs/JUjA4NSzNxM/s1600-h/800px-Commodore64.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_x-dCbtsItBs/S3xrd7AA-LI/AAAAAAAAAjs/JUjA4NSzNxM/s320/800px-Commodore64.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;h1 class="firstHeading" id="firstHeading"&gt;&lt;span style="font-size: x-small;"&gt;(Photo by:&amp;nbsp; &lt;/span&gt; &lt;span style="font-family: Arial; font-size: x-small;"&gt;&lt;b&gt;&lt;a href="http://commons.wikimedia.org/wiki/User:Pixel8" title="User:Pixel8"&gt;Bill   Bertram)&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;ul&gt;&lt;li&gt;BASIC programmers get no respect. (True that.)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; BASIC programmers are brain dead. (OK, I am brain dead by design, not because my first programming language was BASIC. This must be a feature, and not a bug. For the record, my first programming language was FORTRAN.&amp;nbsp; I hacked code using an IBM keypunch at Oakton Community College, back when OCC was located at Oakton &amp;amp; Nagle. Let me tell you, IBM manufactured a solid keypunch. Hanging chad was &lt;b&gt;not&lt;/b&gt; a problem.)&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;There's something better out there? (Maybe. I still don't know.) &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;It's lonely out there, in BASIC but-not-Visual-Basic land. Most of the kids are  playing somewhere else. Who can you &lt;strike&gt;plagiarize&lt;/strike&gt; learn from?&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The prolix syntax of BASIC was giving me writer's cramp.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I'm still not exactly sure why I left freeBASIC behind; I do remember that I wasn't happy with it. The grass must be greener on the other side, right? For whatever frivolous reason, I decided that I needed a new formal language, stat. I looked around, and decided on Python. I'm pretty happy with it. It's easy peasy, clean, and it generally runs fast enough. There are many people out there to learn from, although some of them speak in tongues.&lt;br /&gt;&lt;br /&gt;So why the return to C++?&lt;br /&gt;&lt;br /&gt;Well, pygame is using SDL to do its magic, and to better understand pygame I want to learn more about SDL, which "is written in C, but works with C++ natively." [1] I want to learn more about making pretty moving pictures and sound on my computer, and I want to be a bit closer to the hardware. I will be doing that, for now, using Simple DirectMedia Layer (SDL). It looks like C++ will help me with that, so it's time for me to re-confront the beast. &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;(I'm not in the mood for doing &lt;a href="http://en.wikipedia.org/wiki/C_%28programming_language%29"&gt;C&lt;/a&gt; right now, thank you very much. I did study C in my night school career. I have even written a linked list in C. I don't feel the need to do it again, unless absolutely necessary. C++ means never having to implement another list ADT again, &lt;i&gt;ever&lt;/i&gt;.)&lt;br /&gt;&lt;br /&gt;The story so far:&lt;br /&gt;&lt;br /&gt;Once I got over the whole "now it's&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include &amp;lt;iostream&amp;gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;using namespace std;&lt;/div&gt;thing" I ran smack into the &lt;i&gt;I can't believe that I have forgotten the whole concept of "pass by value" vs " pass by reference"&lt;/i&gt; thing. How could I have forgotten what a big, fat, hairy deal it was to write beautiful code in C++? This here is one very good reason to like Python.&lt;br /&gt;&lt;br /&gt;In Python, if you want to pass a list to a function, you just pass the list (which is an &lt;b&gt;object&lt;/b&gt;)&amp;nbsp; to the function. If you want to return the list after the function is done with it, you can return the list (which is still the same &lt;b&gt;object&lt;/b&gt;, only&lt;b&gt; &lt;/b&gt;possibly somewhat changed) from the function. This appears to be passing by reference. This makes sense, because generally you would not want to deep copy a list, which is what you would have to do to pass a list by value.&amp;nbsp; If you want to pass a 2D array to a function, well, you do the same as you would with the list, because a 2D array in Python is a list of lists.&amp;nbsp; (Unless you're using &lt;a href="http://numpy.scipy.org/"&gt;numpy&lt;/a&gt;. Then a 2D array is... I dunno. Beats me.) No worries, and best of all, automagically handled.&lt;br /&gt;&lt;br /&gt;Mind you, you have to remember which Python objects are &lt;b&gt;immutable&lt;/b&gt; and which are &lt;b&gt;mutable&lt;/b&gt;, but that's about it.&lt;br /&gt;&lt;br /&gt;For example, the Python version has this function, which updates a 2D "array" (actually, a list of lists) named "ca_matrix". I can easily pass the ca_matrix &lt;b&gt;object&lt;/b&gt; to the function, and even easily pass it to yet another function, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cellNextgen&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;def updateCA_MATRIX(ca_matrix, ruleset, mode):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; global COLS, ROWS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tarray = makeCA_MATRIX()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in range(ROWS):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for col in range(COLS):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tarray[row][col] = cellNextgen(row, col, ca_matrix, ruleset, mode)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return tarray&amp;nbsp; &lt;/div&gt;&lt;/blockquote&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;Note that I cannot change ca_matrix here because I need it unchanged to calculate the next generation's ca_matix. If you want to, you can easily pass a list to a function, modify it and the changes will be in the scope of the calling function. For example, in Python 2.6.4:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#! /usr/bin/env python&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;def change_list(s):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; s[0] = 2*s[0]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;s = [1,2,3,4]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print s&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;change_list(s)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print s&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="font-family: inherit;"&gt;Gives the following output:&lt;/div&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[1, 2, 3, 4]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[2, 2, 3, 4]&lt;/span&gt;&lt;/blockquote&gt;No worries, just code it.&lt;br /&gt;&lt;br /&gt;In the &lt;a href="http://en.wikipedia.org/wiki/C_%28programming_language%29"&gt;C&lt;/a&gt; programming language, there are no lists, unless you roll your own list type. If you ever take a decent class in C programming, the teacher will make you do so. In C++, there are these list-like things called &lt;b&gt;vectors&lt;/b&gt; , as well as &lt;b&gt;lists&lt;/b&gt; and some various other "containers". (Alas, none of them contain &lt;i&gt;beer&lt;/i&gt;.) You just have to learn how to use and abuse them. They seem useful.&lt;br /&gt;&lt;br /&gt;For the truely brave, you can also roll your list type, just like in C. Initially, I opted for vectors and a C style 2D array... and I should have been using just vectors. For the record, it was great sport, sorting out how to pass a an array by reference in C++. Now that I know how, they are gone from my code. I don't think they'll be back again, at least in my C++ stuff.&lt;br /&gt;&lt;br /&gt;The simple truth is that in C++ you should use C++ code, not C code; you must learn not only &lt;i&gt;when&lt;/i&gt; you want to pass by value or pass by reference but also &lt;i&gt;how&lt;/i&gt; to pass by value or pass by reference. C++ compilers are finicky. In Python this stuff is just not a problem.&lt;br /&gt;&lt;br /&gt;The C++ code so far: &lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;span style="color: brown; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&lt;span style="color: #a020f0;"&gt;#include &lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;span style="color: #a020f0; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include  &lt;/span&gt;&lt;span style="color: magenta;"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;span style="color: #a020f0; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include  &lt;/span&gt;&lt;span style="color: magenta;"&gt;&amp;lt;vector&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;span style="color: #a020f0; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include  &lt;/span&gt;&lt;span style="color: magenta;"&gt;&amp;lt;cstdlib&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;// for  random numbers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: brown;"&gt;&lt;b&gt;using&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;namespace&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;std;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;//  Globals&lt;/span&gt;&lt;br /&gt;&lt;span style="color: seagreen;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;XRES = &lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1024&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;YRES = &lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;768&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;BLOCK_SIZE = &lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;DELTA_T = &lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;250&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;FCOLOR = &lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0x00FF00&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;BCOLOR = &lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0x000000&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;ROWS = YRES /  BLOCK_SIZE;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: seagreen;"&gt;&lt;b&gt;const&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;COLS = XRES /  BLOCK_SIZE;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: seagreen;"&gt;&lt;b&gt;struct&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;point {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;x;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;y;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; };&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;randomStart(vector&amp;lt;point&amp;gt;  &amp;amp; cells, vector&amp;lt;vector &amp;lt;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; &amp;gt;  &amp;amp; world) {&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;srand(time(&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;NULL&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;));&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;point p;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;pct;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: brown; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;row = &lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;; row &amp;lt; ROWS;  ++row)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: seagreen; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;col = &lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;; col &amp;lt; COLS;  ++col)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pct&amp;nbsp;&amp;nbsp;=  rand() % &lt;/span&gt;&lt;span style="color: magenta;"&gt;1000&lt;/span&gt;;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: brown; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;(pct &amp;lt; &lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;375&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p.x = col;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p.y = row;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cells.push_back(p);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world[row][col] = &lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: brown; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world[row][col] = &lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout  &amp;lt;&amp;lt; &lt;/span&gt;&lt;span style="color: magenta;"&gt;"During randomStart: cells.size() = "&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;lt;&amp;lt;  cells.size() &amp;lt;&amp;lt; endl;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout &amp;lt;&amp;lt; &lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"done  randomStart"&lt;/span&gt;&amp;nbsp;&amp;lt;&amp;lt; endl;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: brown; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; }&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;  &lt;/span&gt;Initially I used a vector and an array of arrays. I lost the array of arrays because arrays are are &lt;a href="http://www.parashift.com/c++-faq-lite/big-picture.html#faq-6.15"&gt;evil&lt;/a&gt;. I should have been using a vector of vectors instead of a C++ array of arrays. This is especially true because figuring out how to pass a 2D array to a function in C++ was painful. (References: &lt;a href="http://www.parashift.com/c++-faq-lite/containers.html#faq-34.1"&gt;http://www.parashift.com/c++-faq-lite/containers.html#faq-34.1&lt;/a&gt;, &lt;a href="http://bytes.com/topic/c/answers/61931-passing-array-function-reference-pointers"&gt;http://bytes.com/topic/c/answers/61931-passing-array-function-reference-pointers&lt;/a&gt;)&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;Initially I used &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#define&lt;/span&gt; for magic global values when I should have been using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;const&lt;/span&gt;&lt;/span&gt;. I fixed that. &lt;br /&gt;&lt;ul style="font-family: inherit;"&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;The idea here is to write C++ code using C++, not C. My goal is to write good Python code using the best Python practices; to write good C++ code using the best C++ practices.&lt;br /&gt;&lt;br /&gt;I'm still working on it. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Notes: &lt;/b&gt;&lt;br /&gt;[1] &lt;a href="http://www.libsdl.org/"&gt;http://www.libsdl.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-9067670921302378001?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/9067670921302378001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/coding-in-c-or-why-i-like-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/9067670921302378001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/9067670921302378001'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/coding-in-c-or-why-i-like-python.html' title='Coding in C++, or Why I like Python'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x-dCbtsItBs/S3xrd7AA-LI/AAAAAAAAAjs/JUjA4NSzNxM/s72-c/800px-Commodore64.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-1173430084844022013</id><published>2010-02-09T11:44:00.000-06:00</published><updated>2010-02-18T09:39:27.656-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Back to C++</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_x-dCbtsItBs/S3F2WpOFyaI/AAAAAAAAAjc/zoRaeUpa6VI/s1600-h/replicators.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/S3F2ndIFL2I/AAAAAAAAAjk/0uMUdzAbRwM/s1600-h/replicators.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_x-dCbtsItBs/S3F2ndIFL2I/AAAAAAAAAjk/0uMUdzAbRwM/s320/replicators.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt; Replicators on a toroidal surface&lt;/i&gt;&lt;br /&gt;&lt;i&gt;(Ruleset: B36/S23 "HighLife") &lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Many have written&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Cellular_automaton"&gt;cellular automaton&lt;/a&gt; programs.&lt;br /&gt;&lt;blockquote&gt;A &lt;b&gt;cellular automaton&lt;/b&gt; (pl. &lt;b&gt;cellular automata&lt;/b&gt;, abbrev. &lt;b&gt;CA&lt;/b&gt;)  is a &lt;a href="http://en.wikipedia.org/wiki/Discrete_mathematics" title="Discrete mathematics"&gt;discrete&lt;/a&gt; model studied in &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Computability_theory_%28computer_science%29" title="Computability theory (computer science)"&gt;computability  theory&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Mathematics" title="Mathematics"&gt;mathematics&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Physics" title="Physics"&gt;physics&lt;/a&gt;,  &lt;a href="http://en.wikipedia.org/wiki/Theoretical_biology" title="Theoretical biology"&gt;theoretical biology&lt;/a&gt; and microstructure  modeling. It consists of a regular grid of &lt;i&gt;cells&lt;/i&gt;, each in one of a  finite number of &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/State_%28computer_science%29" title="State (computer science)"&gt;states&lt;/a&gt;&lt;/i&gt;, such as "On" and "Off".&amp;nbsp; &lt;b&gt; [1]&lt;/b&gt;&lt;/blockquote&gt;Cellular automatons are often referred to as "&lt;a href="http://en.wikipedia.org/wiki/Conways_life"&gt;Conways Game of Life&lt;/a&gt;", which is one type of cellular automaton. For exploring cellular automatons on your computer,&amp;nbsp; I can highly recommend both &lt;a href="http://golly.sourceforge.net/"&gt;Golly&lt;/a&gt; (runs on Windows, OS X or Linux) or &lt;a href="http://psoup.math.wisc.edu/mcell/"&gt;Mirek's Cellebration&lt;/a&gt; (Windows, and wherever Java applets can run.) They're both great programs. There are others available, too. Just ask your favorite search engine.  Since I want to explore writing software, and cellular automatons seem like fun, I wrote my own cellular automation program, in&lt;i&gt; &lt;/i&gt;&lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;. It's now working fairly well. I just cleaned up a few &lt;strike&gt;bugs&lt;/strike&gt; features and added a toroidal surface mode, which is really cool. (I got that idea from &lt;a href="http://www.nathanieljohnston.com/index.php/2009/07/the-maximal-lifespan-of-patterns-in-conways-game-of-life/"&gt;Nathaniel Johnston's&lt;/a&gt; blog.) Now that the program is working well enough,&amp;nbsp; I want to convert it to &lt;a href="http://en.wikipedia.org/wiki/C%2B%2B"&gt;C++&lt;/a&gt;, which is one of the languages that I studied in night school. It can't be that hard, right? It might even be fun.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I started coding in Python, because it's rather easy peasy compared to other programming languages I have used: interpreted, with a large standard library, yet still fast enough. Currently, Python is the main tool I use for programming.&lt;a href="http://en.wikipedia.org/wiki/Perl"&gt;&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Ruby_%28programming_language%29"&gt;&lt;/a&gt; (I also started studying &lt;a href="http://en.wikipedia.org/wiki/Scheme_%28programming_language%29"&gt;Scheme&lt;/a&gt;, initially to try to get a handle on recursion, later to learn &lt;a href="http://en.wikipedia.org/wiki/Functional_programming"&gt;functional programming&lt;/a&gt;. Still working on it.)&lt;br /&gt;&lt;br /&gt;Now it's time to use a compiled language for a while, so C++ it is. Why a compiled language? Because I fell like it. Why C++? For a most excellent reason, namely I studied a few years back in night school and I'm already somewhat familiar with it.&lt;br /&gt;`&lt;br /&gt;People tend to favor what they are already familiar with. &lt;br /&gt;&lt;br /&gt;I studied C++ a number of years ago, while the language standard was still evolving. I used to write C++ something like this:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include &amp;lt;iostream.h&amp;gt;&lt;iostream.h&gt;&lt;iostream.h&gt;&lt;iostream.h&gt;&lt;/iostream.h&gt;&lt;/iostream.h&gt;&lt;/iostream.h&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;void main()&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;{&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;nbsp; cout &amp;lt;&amp;lt; "Hello, world!" &amp;lt;&amp;lt; endl;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;nbsp; &lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;/blockquote&gt;And it worked just fine. (Yes, it is odd for a function that returns &lt;i&gt;void&lt;/i&gt; returning an &lt;i&gt;integer&lt;/i&gt;. Yet I remember this working. Go figure. Some things in life just don't make sense.)[2]&lt;br /&gt;&lt;br /&gt;This certainly does not work &lt;i&gt;now&lt;/i&gt;. To be fair, the professor told us that would probably be the case, but not to worry, because it wouldn't change that much.) Well, what hat has changed? The C++ compiler I am using (GNU g++, gcc version 4.4.1), is supposed to mostly follow the current C++ standard. It supposedly is closer to the standard than many other compilers. Here's some changes that I noted: the current C++ standard now uses &lt;a href="http://en.wikipedia.org/wiki/Namespaces"&gt;namespaces&lt;/a&gt;, iostream.h is now iostream and main &lt;i&gt;must&lt;/i&gt; return an integer. Rewriting the code gives:&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include &amp;lt;iostream&amp;gt;&lt;iostream&gt;&lt;/iostream&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;using namespace std;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int main()&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;{&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;nbsp; cout &amp;lt;&amp;lt; "Hello, world!" &amp;lt;&amp;lt; endl;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;which works.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mikey@hatshepsut:~$ g++ -o hello hello.cpp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mikey@hatshepsut:~$ ./hello&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Hello, world!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mikey@hatshepsut:~$ &lt;/span&gt;&lt;/blockquote&gt;This works, too:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include &lt;/span&gt;&amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int main()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::cout &amp;lt;&amp;lt; "Hello, world!" &amp;lt;&amp;lt; std::endl;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;/blockquote&gt;Aside from this stuff, it's seems to be the same. I guess I'll find out as I go along.&lt;br /&gt;&lt;br /&gt;My &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; program uses &lt;a href="http://www.pygame.org/news.html"&gt;pygame&lt;/a&gt; for displaying the graphics. Pygame is built on &lt;a href="http://www.libsdl.org/"&gt;SDL&lt;/a&gt; (Simple DirectMedia Layer). SDL is " a cross-platform, &lt;a href="http://en.wikipedia.org/wiki/Free_and_open_source_software" title="Free and open source software"&gt;free and open source software&lt;/a&gt;  multimedia &lt;a href="http://en.wikipedia.org/wiki/Library_%28computing%29" title="Library (computing)"&gt;library&lt;/a&gt; written in &lt;a href="http://en.wikipedia.org/wiki/C_%28programming_language%29" title="C (programming language)"&gt;C&lt;/a&gt; that presents a simple interface  to various platforms' &lt;a href="http://en.wikipedia.org/wiki/Computer_graphics" title="Computer graphics"&gt;graphics&lt;/a&gt;, sound, and input devices."[3]&amp;nbsp; SDL also works with C++. I used Python's built-in list data type. C++ has the &lt;a href="http://en.wikipedia.org/wiki/Standard_Template_Library"&gt;Standard Template Library&lt;/a&gt;, which provides both a vector and a list container, either of which should work for me. That's all the magic there is, at least for this project. Let's see how it goes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Notes:&lt;/b&gt;&lt;br /&gt;&lt;b&gt;[1]&lt;/b&gt; Wikipedia article:&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Cellular_automaton"&gt;Cellular automaton&lt;/a&gt; (Tue Feb&amp;nbsp; 9 10:59:37 CST 2010)&lt;br /&gt;&lt;b&gt;[2]&lt;/b&gt; No, I am not imagining this. Track down a copy of &lt;i&gt;How to think like a computer scientist&lt;/i&gt;&amp;nbsp; C++ Version First Edition by Allen B. Downey on the Internet if you don't believe me.&lt;br /&gt;&lt;b&gt;[3]&lt;/b&gt; Wikipedia article:&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Simple_DirectMedia_Layer"&gt;Simple DirectMedia Layer&lt;/a&gt; (Tue Feb&amp;nbsp; 9 10:26:16 CST 2010)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-1173430084844022013?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/1173430084844022013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/back-to-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/1173430084844022013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/1173430084844022013'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/back-to-c.html' title='Back to C++'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x-dCbtsItBs/S3F2ndIFL2I/AAAAAAAAAjk/0uMUdzAbRwM/s72-c/replicators.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-4649278910950230154</id><published>2010-02-05T12:17:00.000-06:00</published><updated>2010-02-18T09:40:16.805-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cook'/><title type='text'>Next on the Agenda</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/S2xfYmz_rMI/AAAAAAAAAi0/6yx6PZn0ONo/s1600-h/Pelmen.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_x-dCbtsItBs/S2xfYmz_rMI/AAAAAAAAAi0/6yx6PZn0ONo/s320/Pelmen.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span class="comment"&gt;A &lt;a href="http://en.wikipedia.org/wiki/1952" title="1952"&gt;1952&lt;/a&gt; Soviet poster advertising &lt;a href="http://en.wikipedia.org/wiki/Pelmeni" title="Pelmeni"&gt;pelmeni&lt;/a&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span class="comment"&gt;&amp;nbsp;&lt;/span&gt;(Source: Wikipedia &lt;a href="http://en.wikipedia.org/wiki/Pelmeni"&gt;pelmeni&lt;/a&gt;  article.) &lt;/div&gt;&lt;br /&gt;After the great success of the &lt;a href="http://mikescafeii.blogspot.com/2010/02/spam-musubi.html"&gt;Tropical Vacation Lunch&lt;/a&gt;, I seek new culinary worlds to conquer. I've been eating lots of frozen &lt;a href="http://en.wikipedia.org/wiki/Pierogi"&gt;pierogi&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Pelmeni"&gt;pelmeni&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Jiaozi"&gt;gyoza&lt;/a&gt; lately. I decide that it was time for me to cut out the middleman and to start rolling my own. Fortunately, the beautiful and talented &lt;a href="http://www.maangchi.com/"&gt;Maangchi&lt;/a&gt; has a video on how to make the Korean version, which are called &lt;a href="http://www.maangchi.com/recipe/mandu"&gt;mandu&lt;/a&gt;. To my delight, you can buy the wrappers from a grocery store. The ingredients are in the house, and the dried &lt;a href="http://www.maangchi.com/ingredients/shiitake-mushrooms"&gt;shiitake mushrooms&lt;/a&gt; are soaking right now. Later, I'm gonna be cooking with Maangchi. Miss Lizzy will be &lt;i&gt;so &lt;/i&gt;jealous.&lt;br /&gt;&lt;br /&gt;(Later, after the shiitake mushrooms have finished soaking.)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/S2zAerHXLPI/AAAAAAAAAi8/nTnqT4PYuaw/s1600-h/gyoza-wrappers.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_x-dCbtsItBs/S2zAerHXLPI/AAAAAAAAAi8/nTnqT4PYuaw/s320/gyoza-wrappers.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;I kept my cheatsheet handy.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Everything went like clockwork, just like in Maangchi's &lt;a href="http://www.maangchi.com/recipe/mandu"&gt;video&lt;/a&gt; except I ran out of wrappers long before I ran out of the meat mixture. I don't really see that as a problem because I was getting tired and my back was starting to hurt. I was really glad to wrap up the remaining meat mixture and stick it in the fridge for later.&amp;nbsp; I can buy some more wrappers tomorrow. I also really wanted to eat some mandu.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/S2zBVrRJzWI/AAAAAAAAAjE/-48I4BSAymU/s1600-h/leftover-meat.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_x-dCbtsItBs/S2zBVrRJzWI/AAAAAAAAAjE/-48I4BSAymU/s320/leftover-meat.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;I really need to buy more wrappers!&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I think next time I make these I'm going to try to press gang Miss Lizzy into helping me, which could be fun. We can flirt around with each other as we make mandu.&amp;nbsp; I wonder if this is a world-wide problem. Are many unplanned pregnancies the result of promiscuous mandu making?&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_x-dCbtsItBs/S2zCwrPcexI/AAAAAAAAAjM/0slvbSf-yFo/s1600-h/mandu.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_x-dCbtsItBs/S2zCwrPcexI/AAAAAAAAAjM/0slvbSf-yFo/s320/mandu.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;mandu&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I'm going to do this again now that I know how easy it is.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/S3FxL_TDhAI/AAAAAAAAAjU/GuLxJCDzpSk/s1600-h/mandu-lunch.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_x-dCbtsItBs/S3FxL_TDhAI/AAAAAAAAAjU/GuLxJCDzpSk/s320/mandu-lunch.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Lunch is served&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-4649278910950230154?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/4649278910950230154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/next-on-agenda.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4649278910950230154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/4649278910950230154'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/next-on-agenda.html' title='Next on the Agenda'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_x-dCbtsItBs/S2xfYmz_rMI/AAAAAAAAAi0/6yx6PZn0ONo/s72-c/Pelmen.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-688804258256788292</id><published>2010-02-03T13:04:00.000-06:00</published><updated>2010-02-18T09:39:52.812-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cook'/><title type='text'>Spam Musubi</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x-dCbtsItBs/S2m6pHX2clI/AAAAAAAAAik/hon9tgdOtlw/s1600-h/Lizzy_musubi.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_x-dCbtsItBs/S2m6pHX2clI/AAAAAAAAAik/hon9tgdOtlw/s320/Lizzy_musubi.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;It's February in Skokieland, and a fresh snowfall has come, adding yet another layer of beautiful white snow. Santa has long since come and gone, leaving a nice stocking full of coal under the Hanuka&amp;nbsp; bush to keep Mike warm. It would be lovely to be somewhere warm, near the ocean, and sit and sip umbrella drinks after parasailing, but that is not in the cards for an unemployed layabout such as I. Still, the most wonderful Miss Lizzy has got a nice bunch of coconuts and a plate full of &lt;a href="http://en.wikipedia.org/wiki/Spam_musubi"&gt;Spam musubi&lt;/a&gt;, made by yours truly, Mike. I call it my tropical vacation lunch. I had to roll my own Spam musubi because the&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/7-Eleven"&gt;7-Eleven's&lt;/a&gt; of Skokieland do not carry it. The Illinois Tech 7-Eleven did (and maybe still does) carry decent pitas stuffed with &lt;a href="http://en.wikipedia.org/wiki/Felafel"&gt;felafel&lt;/a&gt; or chicken&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Shawarma"&gt;shawarma&lt;/a&gt;, and &lt;a href="http://en.wikipedia.org/wiki/Samosa"&gt;samosas&lt;/a&gt; with wonderful green coriander &lt;a href="http://en.wikipedia.org/wiki/Chutney"&gt;chutney&lt;/a&gt; but that is literally on the other side of town, over an hour away on the el. The local joints do sell mediocre &lt;a href="http://en.wikipedia.org/wiki/Po%27_boy"&gt;po' boys&lt;/a&gt; featuring soft bread rolls, yellow&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Process_cheese"&gt;process cheese&lt;/a&gt; and something like &lt;a href="http://en.wikipedia.org/wiki/Oscar_Mayer"&gt;Oscar Mayer&lt;/a&gt;&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Bologna_sausage"&gt;bologna sausage&lt;/a&gt;, but that's just not working for me today.&lt;br /&gt;&lt;br /&gt;Yes, I have eaten these alleged po' boys. It's one of the night school students quick meal units. We'll discuss the frozen&amp;nbsp;&lt;a href="http://www.freezerburns.com/wordpress/2008/12/19/episode-35-ghetto-burrito-frodown/"&gt;burrito&lt;/a&gt; fetish later -- you need to microwave those, and often there's just not enough time or clean microwaves available.&lt;br /&gt;&lt;br /&gt;I never thought I would ever be eating spam, much less cooking it with teriyaki sauce, but here I am. I blame it on winter, and the general lack of good tomatoes.&lt;br /&gt;&lt;br /&gt;Of course, Spam musubi ain't half bad, especially&amp;nbsp; with some &lt;a href="http://en.wikipedia.org/wiki/Furikake"&gt;furikake&lt;/a&gt; added. Since Miss Lizzy purchased the jumbo tin of Spam, I only used half the can so far. I can see more Spam teriyaki in my near future.&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/_x-dCbtsItBs/S2nJj3foPwI/AAAAAAAAAis/Cv8cZ2_8NCs/s1600-h/spam_musubi.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_x-dCbtsItBs/S2nJj3foPwI/AAAAAAAAAis/Cv8cZ2_8NCs/s320/spam_musubi.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-688804258256788292?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/688804258256788292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/spam-musubi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/688804258256788292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/688804258256788292'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/spam-musubi.html' title='Spam Musubi'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x-dCbtsItBs/S2m6pHX2clI/AAAAAAAAAik/hon9tgdOtlw/s72-c/Lizzy_musubi.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-1332471262116564457</id><published>2010-02-01T12:46:00.000-06:00</published><updated>2010-02-18T10:07:21.460-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cook'/><title type='text'>Python 3000, or Confuse-A-Coder</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_x-dCbtsItBs/S31lN2wBBXI/AAAAAAAAAkM/DAcvRBAUvWQ/s1600-h/Spam_with_cans.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_x-dCbtsItBs/S31lN2wBBXI/AAAAAAAAAkM/DAcvRBAUvWQ/s320/Spam_with_cans.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;(Photo by:&lt;/span&gt;&lt;a class="extiw" href="http://en.wikipedia.org/wiki/User:TheMuuj" title="w:User:TheMuuj"&gt;Matthew W. Jackson&lt;/a&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;So here I am,&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; newbie pythonista. Writing code. On my computer. On other people's computers, using &lt;/span&gt;&lt;a href="http://www.portablepython.com/" style="font-family: Arial,Helvetica,sans-serif;"&gt;Portable Python&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;. Doing new, geeky things. &lt;/span&gt;&lt;strike style="font-family: Arial,Helvetica,sans-serif;"&gt;Impressing&lt;/strike&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; boring my wife. (Nitey-nite, honey.) This is truly beautiful. I now almost grok &lt;/span&gt;&lt;a href="http://diveintopython.org/" style="font-family: Arial,Helvetica,sans-serif;"&gt;Dive Into Python&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;, and have actually even read parts of it. I can even pick &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Guido_van_Rossum" style="font-family: Arial,Helvetica,sans-serif;"&gt;Guido van Rossum&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; out of a police lineup, if needed.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;OK, to be honest, &lt;/span&gt;&lt;a href="http://openbookproject.net/thinkCSpy/index.html" style="font-family: Arial,Helvetica,sans-serif;"&gt;How To Think Like a Computer Scientist&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; is more my speed, and I have worked through all of that. (Alas, I still think like Mike.)&amp;nbsp; I even did the entire &lt;/span&gt;&lt;a href="http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-00Fall-2008/CourseHome/index.htm" style="font-family: Arial,Helvetica,sans-serif;"&gt;MIT 6.00 class&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;, (which now has video!) although I do not yet grok the dynamic programming solution to the knapsack problem. I did study electrical engineering, and even earned a BSEE, but math/CS types study some different stuff, I think. Or perhaps I was dozing through class? Either could be true, as far as I can tell.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;Things change over time. Some changes are a good thing. Isn't there anything you would like to change in your life? Wouldn't would you like a few do-overs? I sure could use a few. The Python guys seem to think so, too. &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Python is transitioning to Python 3, and things are bit different. Some things have been really done over. Here are some differences that I have found, explained simply. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Print is now a function and not a keyword.&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;This means you have to say: &amp;nbsp;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print() &lt;/span&gt;&lt;br /&gt;instead of :&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;You can no longer say:&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print 'spam spam spam',&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;to suppress the newline. You now must say:&lt;/div&gt;&lt;span class="nb" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;print&lt;/span&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;'spam spam spam', &lt;/span&gt;&lt;span class="n" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;sep&lt;/span&gt;&lt;span class="o" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;=&lt;/span&gt;&lt;span class="s" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;""&lt;/span&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Yes, I know, this &lt;i&gt;is&lt;/i&gt; gripping material. Apparently someone, somewhere wants to be able to redefine print to do something useful, like making spam musubi topped with foie gras, or confusing a cat. This is not possible with &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;print &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;defined as a keyword, so get used to the parentheses. A good way to do that is to put the following line near the top of all your Python 2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; code:&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="p" style="font-size: small;"&gt;from __future__ import print_function&lt;/span&gt;&lt;/div&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;This will enforce&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; the Python 3 syntax, and you won't have to change your code if you ping-pong between Python 2 and Python 3, as I do.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Integer division can now return a float.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Before Python acted like, well, the&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/C_%28programming_language%29"&gt;C programming language&lt;/a&gt; that I remember learning at night school. If you divided two integers, your result was always an integer. So&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; 5/2&lt;/span&gt; would return&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; 2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;(Note that the sentence lacks a period because &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2&lt;/span&gt; is an integer, while &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2.&lt;/span&gt; is a float. Adding a period is confusing.)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;In Python 3, if you divide two ints, you can get a float. In Python 3,&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5/2&lt;/span&gt; will return &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2.5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;(Again, I left the period off on purpose.) This is the correct answer, after all. I think Guido van Rossum changed his mind here. No biggie, unless you do as much crap ass integer calculation that comes from working&amp;nbsp;&amp;nbsp;&lt;a href="http://projecteuler.net/"&gt;Project Euler&lt;/a&gt;&amp;nbsp; problems.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="p" style="font-size: small;"&gt;To get used to this new behavior, put&amp;nbsp; &lt;/span&gt;&lt;span class="p" style="font-size: small;"&gt; the following line  near the top of all your Python 2 code:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="p" style="font-size: small;"&gt;from __future__ import division&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="p" style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;If you&lt;i&gt; want &lt;/i&gt;to use integer division, use the integer division operator&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; //&lt;/span&gt; instead of the division operator &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;If you &lt;i&gt;want&lt;/i&gt; to work on Project Euler problems, seek professional help.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Strings have changed.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="p" style="font-size: small;"&gt;I've just started working with this. According to &lt;a href="http://docs.python.org/3.1/whatsnew/3.0.html"&gt;Guido&lt;/a&gt;,&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;Python 3.0 uses the concepts of &lt;i&gt;text&lt;/i&gt; and (binary) &lt;i&gt;data&lt;/i&gt;  instead of Unicode strings and 8-bit strings.  All text is Unicode; however &lt;i&gt;encoded&lt;/i&gt; Unicode is represented as binary data.&lt;/blockquote&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="p" style="font-size: small;"&gt;I'm still sorting this out so I can't help you much here. To enforce Python 3 &lt;strike&gt;strings&lt;/strike&gt; text,&amp;nbsp; &lt;/span&gt;&lt;span class="p" style="font-size: small;"&gt;put&amp;nbsp; &lt;/span&gt;&lt;span class="p" style="font-size: small;"&gt; the  following line  near the top of all your Python 2 code:&lt;/span&gt;&lt;/div&gt;&lt;span class="p" style="font-size: small;"&gt;from __future__ import &lt;/span&gt;unicode_literals&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;My current project, a Python &lt;strike&gt;synthesizer&lt;/strike&gt; noisemaker,&amp;nbsp; pukes and errors out&amp;nbsp; if I use this line. Works fine in Python 2.6.4 without it. I seem to be confused about using the &lt;a href="http://docs.python.org/3.1/library/wave.html"&gt;wave&lt;/a&gt; and&amp;nbsp;&lt;a href="http://docs.python.org/3.1/library/struct.html"&gt;struct&lt;/a&gt; modules. At least I &lt;i&gt;think&lt;/i&gt; that's the problem. I'm not using much else in the way of &lt;strike&gt;strings&lt;/strike&gt; text in the program. I plan to sort this out down the road.&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;A lot of functions that used to return a &lt;i&gt;list&lt;/i&gt; now return an &lt;i&gt;object&lt;/i&gt; that is not a list.&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/dev/3.0/whatsnew/3.0.html" style="font-family: Arial,Helvetica,sans-serif;"&gt;Guido writes&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;div class="section" id="views-and-iterators-instead-of-lists"&gt;&lt;blockquote&gt;&lt;h3&gt;Views And Iterators Instead Of Lists&lt;/h3&gt;Some well-known APIs no longer return lists:&lt;br /&gt;&lt;ul class="simple"&gt;&lt;li&gt;&lt;a class="reference external" href="http://docs.python.org/dev/3.0/library/stdtypes.html#dict" title="dict"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;dict&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;  methods &lt;a class="reference external" href="http://docs.python.org/dev/3.0/library/stdtypes.html#dict.keys" title="dict.keys"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;dict.keys()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;,  &lt;a class="reference external" href="http://docs.python.org/dev/3.0/library/stdtypes.html#dict.items" title="dict.items"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;dict.items()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;  and &lt;a class="reference external" href="http://docs.python.org/dev/3.0/library/stdtypes.html#dict.values" title="dict.values"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;dict.values()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;  return “views” instead of lists.  For example, this no longer works: &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;k&lt;/span&gt;  &lt;span class="pre"&gt;=&lt;/span&gt; &lt;span class="pre"&gt;d.keys();&lt;/span&gt; &lt;span class="pre"&gt;k.sort()&lt;/span&gt;&lt;/tt&gt;.  Use &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;k&lt;/span&gt; &lt;span class="pre"&gt;=&lt;/span&gt; &lt;span class="pre"&gt;sorted(d)&lt;/span&gt;&lt;/tt&gt; instead (this works in Python  2.5 too and is just as efficient).&lt;/li&gt;&lt;li&gt;Also, the &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;dict.iterkeys()&lt;/span&gt;&lt;/tt&gt;,  &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;dict.iteritems()&lt;/span&gt;&lt;/tt&gt;  and &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;dict.itervalues()&lt;/span&gt;&lt;/tt&gt;  methods are no longer supported.&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://docs.python.org/dev/3.0/library/functions.html#map" title="map"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;map()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;  and &lt;a class="reference external" href="http://docs.python.org/dev/3.0/library/functions.html#filter" title="filter"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;filter()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;  return iterators.  If you really need a list, a quick fix is e.g.  &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;list(map(...))&lt;/span&gt;&lt;/tt&gt;, but a better fix is often to use a list comprehension (especially when the original code uses &lt;a class="reference external" href="http://docs.python.org/dev/3.0/reference/expressions.html#lambda"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;lambda&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;),  or rewriting the code so it doesn’t need a list at all.  Particularly tricky is &lt;a class="reference external" href="http://docs.python.org/dev/3.0/library/functions.html#map" title="map"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;map()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;  invoked for the side effects of the function; the correct transformation is to use a regular &lt;a class="reference external" href="http://docs.python.org/dev/3.0/reference/compound_stmts.html#for"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;for&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;  loop (since creating a list would just be wasteful).&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://docs.python.org/dev/3.0/library/functions.html#range" title="range"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;range()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;  now behaves like &lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;xrange()&lt;/span&gt;&lt;/tt&gt;  used to behave, except it works with values of arbitrary size.  The latter no longer exists.&lt;/li&gt;&lt;li&gt;&lt;a class="reference external" href="http://docs.python.org/dev/3.0/library/functions.html#zip" title="zip"&gt;&lt;tt class="xref docutils literal"&gt;&lt;span class="pre"&gt;zip()&lt;/span&gt;&lt;/tt&gt;&lt;/a&gt;  now returns an iterator.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;I grok some of this, and I have run into problems with these changes in the wild. Especially when &lt;strike&gt;plagiarizing&lt;/strike&gt; &lt;strike&gt;copying&lt;/strike&gt; using other people's code. You can't make lists anymore by saying things like:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;s = range(1000)&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;In Python3, s is &lt;i&gt;not&lt;/i&gt; a list. This idiom is real popular in the wild. Remember this when you use Google to find someone else's code to solve your problem. It doesn't work any more. You must explicitly create the list:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;s = list(range(1000))&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;if you really want s to be a list.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt; I tend to read in numeric data from text files, and it winds up as strings in a list. Being the &lt;a href="http://www.schemers.org/"&gt;schemer&lt;/a&gt; that I am (more later, maybe, on the joys and sorrows of Lisp) I would use map() to convert all the strings in a list to integers. Here's a line of code that I wrote on 13 Mar 2009:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;temp1 = map(int,data.split())&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;For Python 3, you would have to say:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;temp1 = list(map(int,data.split()))&lt;/span&gt;&lt;br /&gt;A better solution is to stop writing Lisp code in Python and use a list comprehension, which works in both Python 2 and Python 3:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;temp1 = [int(x) for x in data.split()] &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;which is much more pythonic, and cleaner once you start comprehending list comprehensions.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;There's an automagic script, 2to3, which I have never used because I feel that I am still learning Python, and I need to solve this kind of problem using my finely tuned mental machine. Or all by myself, anyway. It may be useful.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;There is a -3 switch that will warn you about things that will not work in Python 3. I am starting to use this switch, but I think that some of the results are &lt;i&gt;so&lt;/i&gt; not my problem to fix:&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;mikey@hatshepsut:~/workspace/mysynth/src$ python -3 mysynth&lt;br /&gt;/usr/lib/python2.6/site.py:1: DeprecationWarning: The 'new' module has been removed in Python 3.0; use the 'types' module instead.&lt;br /&gt;&amp;nbsp; """Append module search paths for third-party packages to sys.path.&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Another problem is that many useful libraries are not yet available for Python 3. No &lt;a href="http://numpy.scipy.org/"&gt;numpy&lt;/a&gt;&amp;nbsp; yet, and of course nothing that depends on numpy. I think this stuff will exist in Python 3, but not yet. The best thing do right now is to stick with Python 2 if you need something that doesn't exist yet in Python 3, but use the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;from __future__ import&lt;/span&gt; statements. (I'm working on it...). Otherwise, start using Python 3. Unless you're actually paid to write Python code, and your boss says &lt;b&gt;No Python 3 for you!&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;At least, thats what I'm doing for now.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Cheers!&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;References:&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&lt;a href="http://docs.python.org/3.1/whatsnew/3.0.html"&gt;Whats New in Python 3.0&lt;/a&gt;&amp;nbsp; by Guido van Rossum &lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;A clear explanation of &lt;/span&gt;&lt;a href="http://www.secnetix.de/olli/Python/list_comprehensions.hawk" style="font-family: Arial,Helvetica,sans-serif;"&gt;list comprehensions&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; . by Olli&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://openbookproject.net/thinkCSpy/index.html" style="font-family: Arial,Helvetica,sans-serif;"&gt;How To Think Like a  Computer Scientist&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;(Uses Python 2.)&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-00Fall-2008/CourseHome/index.htm" style="font-family: Arial,Helvetica,sans-serif;"&gt;MIT 6.00&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Introduction to Computer Science and Programming (Uses Python 2.)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://diveintopython3.org/"&gt;Dive into Python 3&lt;/a&gt;&amp;nbsp; by Mark Pilgrim (A challenging read for me.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="p" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-1332471262116564457?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/1332471262116564457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/python-3000-or-confuse-coder.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/1332471262116564457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/1332471262116564457'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/02/python-3000-or-confuse-coder.html' title='Python 3000, or Confuse-A-Coder'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_x-dCbtsItBs/S31lN2wBBXI/AAAAAAAAAkM/DAcvRBAUvWQ/s72-c/Spam_with_cans.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4361245043329780596.post-2398582730451302637</id><published>2010-01-31T17:39:00.000-06:00</published><updated>2010-02-01T14:40:52.259-06:00</updated><title type='text'>In the beginning...</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span id="goog_1264981946354"&gt;&lt;/span&gt;&lt;span id="goog_1264981946355"&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/"&gt;&lt;/a&gt;I have another web site, called Mike's Cafe. On this site I stated "this is not a blog, it just looks like one." For some reason this was important to me. I'm not sure why. I was just about to add some more content to the site when I realized that it not only looked like a blog, but that I was treating it like a blog and even thinking of it like a blog. I didn't have anything major to add to the site, I just wanted to gas on a bit. Stop kidding yourself Mike, that's what a blog is all about. So that's why Mike's Cafe II is here, so I can blog.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Although I am currently running on Vista, my normal desktop is Linux. I currently run Ubuntu, although I've been running Linux as a desktop user since the 1990's. I have used Slackware, Red hat, Suse, Debian and Arch. I like Linux, but something is always broken. (Hey don't get upset, it's just the way things are in the Open Source world.)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;(There's been a short break while I rebooted into Ubuntu. Winbuilder is finished making the VistaPE iso, so I can now go home.)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;I can get most things to work. I can listen to internet radio, create word docs,  spreadsheet, and email to my heart's content. Using non-free "binary blobs" I can use watch Hulu, which means I now watch more TV on my computer than on my TV, and Richard Stallman would be very disappointed with me.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Enough of that. Previously, I ripped my audio disks using EAC (on windows) and grip (on Linux). I don't run windows much anymore, so I used grip. I like grip; it was quite flexible and it used cdparanoia to rip the  disks. Then grip disappeared from the Ubuntu repositories because the developer hasn't worked on it for about five years, which could be a problem.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;If you build grip from the source code you see some scary stuff. After running ./configure, things chug along and create a makefile, but things are not OK:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;checking cdda_interface.h usability... yes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;checking cdda_interface.h presence... yes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;checking for cdda_interface.h... yes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;checking cdda_paranoia.h usability... no&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;checking cdda_paranoia.h presence... yes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;configure: WARNING: cdda_paranoia.h: present but cannot be compiled&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;configure: WARNING: cdda_paranoia.h:     check for missing prerequisite headers?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;configure: WARNING: cdda_paranoia.h: see the Autoconf documentation&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;configure: WARNING: cdda_paranoia.h:     section "Present But Cannot Be Compiled"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;configure: WARNING: cdda_paranoia.h: proceeding with the preprocessor's result&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;configure: WARNING: cdda_paranoia.h: in the future, the compiler will take precedence&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;configure: WARNING:     ## --------------------------------------------------------------- ##&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;configure: WARNING:     ## Report this to http://sf.net/tracker/?group_id=3714&amp;amp;atid=103714 ##&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;configure: WARNING:     ## --------------------------------------------------------------- ##&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;checking for cdda_paranoia.h... yes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;checking cdda/cdda_interface.h usability... no&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;checking cdda/cdda_interface.h presence... no&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;checking for cdda/cdda_interface.h... no&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;checking cdda/cdda_paranoia.h usability... no&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;checking cdda/cdda_paranoia.h presence... no&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;checking for cdda/cdda_paranoia.h... no&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span"&gt;Yikes! No paranoia is available here for ready money. Grip doesn't look so great any more. I was going to report the error, but someone else beat me to the punch. It seems the developer has been AWOL since 2005. (He and his wife do have a cool food blog, though.)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;(Yes, I have installed the &amp;nbsp;libcdio-paranoia-dev package... &amp;nbsp;has something changed in the last five years?)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span"&gt;I could use cdparanoia to rip my cds, and then invoke &lt;a href="http://www.geocities.jp/aoyoume/aotuv/"&gt;aoTuV&lt;/a&gt;&amp;nbsp;or whatever to shrink them, but what a pain in the neck. Or maybe an opportunity to do some scripting?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span"&gt;Lucky me, someone else already did the&lt;/span&gt; heavy scripting and wrote rubyripper. Not yet in the Ubuntu repository, but pretty easy to install. There seem to be some .debs out there, but I decided to install from source. Instructions exist, but of course the instructions are a little off for my system, which seems be the norm.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Here's how I installed rubyripper &amp;nbsp;on Ubuntu 9.10 karmic amd64:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;b&gt;1. install this lot:&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;sudo apt-get install cd-discid cdparanoia flac lame mp3gain normalize-audio ruby-gnome2 ruby vorbisgain&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;b&gt;2. fix normalize&lt;/b&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; Make a symlink from /usr/bin/normalize-audio to /usr/local/normalize &amp;amp; call it a day.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;ln -s&amp;nbsp;/usr/bin/normalize-audio&amp;nbsp;/usr/local/normalize&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;You need to do something, because the Debian folks have changed the name of normalize to normalize-audio. If you're really interested, here's the reason why they changed the name, from the package's README.Debian file:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;2004-06-26: The package and binary names had to be changed due to namespace conflicts. The binary normalize was renamed to normalize-audio so that it keeps orthogonal with its frontend names (normalize-ogg and normalize-mp3) while not using a generic name anymore.&lt;/blockquote&gt;&lt;blockquote&gt;See more information about it here: &amp;nbsp;&lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=250390"&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=250390&lt;/a&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; You could hack the source code, or wait for Debian or Ubuntu to adopt the package &amp;amp; fix this, or become a Debian or Ubuntu developer and adopt the package &amp;amp; fix this or just make the symlink. You may have trouble with mono, but then, who likes mono?&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;b&gt;3. get/install wavegain:&lt;/b&gt;&lt;br /&gt;Get the wavegain source code, (you can get it here: &lt;a href="http://www.rarewares.org/others.php"&gt;http://www.rarewares.org/others.php&lt;/a&gt;),&amp;nbsp;compile it for Debian, install somewhere in you search path. Old school as I am, I put the executable in /usr/local/bin.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;b&gt;4. get/install rubyripper source code:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/rubyripper/"&gt;http://code.google.com/p/rubyripper/&lt;/a&gt;&lt;br /&gt;&amp;nbsp;I installed the program like this:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;./configure --enable--lang-all --enable-gtk2 --enable-cli --prefix=/usr/local&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;sudo make install&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;5. If you dislike warnings appearing in your terminal windows, use this duct tape solution:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;On karmic some programs cause an warning or error:&lt;br /&gt;Gtk-Message **: Failed to load module "pk-gtk-module": (etc)&lt;br /&gt;&lt;br /&gt;pk-gtk-module is a "GTK+ module for font installation",&amp;nbsp;"This key determines if applications should be able to prompt for fonts".&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;Turn it off for now, it's not working. &amp;nbsp;A temporary fix is changing the key in gconf-editor&lt;br /&gt;/apps/gnome_settings_daemon/gtk-modules/pk-gtk-module to false.&lt;/span&gt;  &lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;This seems to be an Ubuntu problem, and they know about it. It will probably be cleaned up down the road.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt; &lt;/span&gt;   &lt;br /&gt;Here's some references:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;rubyripper&lt;/b&gt;&lt;br /&gt;A secure audiodisc ripper for Linux and OS X&lt;br /&gt;&lt;a href="http://code.google.com/p/rubyripper/"&gt;http://code.google.com/p/rubyripper/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;a href="http://code.google.com/p/rubyripper/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;HOWTO: Install Rubyripper on Ubuntu&lt;/b&gt;&lt;br /&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=799621"&gt;http://ubuntuforums.org/showthread.php?t=799621&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=799621"&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Rubyripper article on Hydrogen Audio&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;b&gt;&lt;a href="http://wiki.hydrogenaudio.org/index.php?title=Rubyripper"&gt;http://wiki.hydrogenaudio.org/index.php?title=Rubyripper &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4361245043329780596-2398582730451302637?l=mikescafeii.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mikescafeii.blogspot.com/feeds/2398582730451302637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mikescafeii.blogspot.com/2010/01/in-beginning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/2398582730451302637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4361245043329780596/posts/default/2398582730451302637'/><link rel='alternate' type='text/html' href='http://mikescafeii.blogspot.com/2010/01/in-beginning.html' title='In the beginning...'/><author><name>Mike</name><uri>http://www.blogger.com/profile/03081052068029290469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_x-dCbtsItBs/S2YfUr-41BI/AAAAAAAAAiE/AmCkpbt2HAU/S220/awsnap.jpg'/></author><thr:total>0</thr:total></entry></feed>
