<?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-3298420732815848714</id><updated>2011-08-16T14:11:24.628-07:00</updated><category term='vote'/><category term='introduction'/><category term='hello'/><title type='text'>Personally Interesting Stuff</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default?start-index=101&amp;max-results=100'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>111</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-5529075223617314608</id><published>2010-01-06T13:12:00.000-08:00</published><updated>2010-01-06T13:34:52.622-08:00</updated><title type='text'>Personal computing history (part 8)</title><content type='html'>So, I'm working in the exciting world of &lt;a href="http://personallyinteresting.blogspot.com/2008/11/what-is-embedded.html"&gt;embedded&lt;/a&gt; &lt;a href="http://personallyinteresting.blogspot.com/2008/11/what-is-computer.html"&gt;programming&lt;/a&gt;.  Things like "shoot a laser beam at an object and figure out how far away the object is".  Or "control this motor, and turn on the laser when it is not pointing at a corner on the attached mirror wheel".&lt;br /&gt;&lt;br /&gt;While doing this, I am introduced to the world of &lt;a href="http://www.microchip.com/"&gt;PIC microcontrollers&lt;/a&gt;.  I find this very interesting, because of a project that had some notoriaty at the time:  the &lt;a href="http://web.archive.org/web/20060909133735/http://www-ccs.cs.umass.edu/~shri/iPic.html"&gt;iPic web server&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Besides being a neat hardware hack, this seems (at the time) like a good way to learn &lt;a href="http://en.wikipedia.org/wiki/Internet_Protocol_Suite"&gt;TCP/IP&lt;/a&gt;.  After all, if you can fit a webserver into a 1K instruction microcontroller, how hard can it be?&lt;br /&gt;&lt;br /&gt;So, I start playing with the development tools.  And soon find that I don't like them (surprise, surprise...)  What do I do?&lt;br /&gt;&lt;br /&gt;Well, write my own of course.  I'd written &lt;a href="http://personallyinteresting.blogspot.com/2009/10/personal-computing-history-part-3.html"&gt;VIM&lt;/a&gt;, so why not an interpreter for a much simpler processor?  Well, I didn't realize it at the time, but there were enough differences in chips and limitations to the &lt;a href="http://www.desmet-c.com/"&gt;compiler&lt;/a&gt; I was using that I needed to have a family of &lt;a href="http://www.picemulator.com/"&gt;interpreters&lt;/a&gt;, one for each processor...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-5529075223617314608?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/5529075223617314608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=5529075223617314608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5529075223617314608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5529075223617314608'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2010/01/personal-computing-history-part-8.html' title='Personal computing history (part 8)'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-547312389295712357</id><published>2009-12-26T18:48:00.000-08:00</published><updated>2009-12-26T18:49:38.001-08:00</updated><title type='text'>I'm back...</title><content type='html'>OK, I'm back.&lt;br /&gt;&lt;br /&gt;It was a lovely trip.&lt;br /&gt;&lt;br /&gt;And I had a lovely bout of bronchitis.&lt;br /&gt;&lt;br /&gt;More later...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-547312389295712357?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/547312389295712357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=547312389295712357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/547312389295712357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/547312389295712357'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/12/im-back.html' title='I&apos;m back...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-4468780939931592042</id><published>2009-11-29T14:54:00.000-08:00</published><updated>2009-11-29T14:55:25.804-08:00</updated><title type='text'>I'm Off!</title><content type='html'>But not in the way most people think  :)&lt;br /&gt;&lt;br /&gt;Off on vacation, You may not see anything from me for a few weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-4468780939931592042?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/4468780939931592042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=4468780939931592042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/4468780939931592042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/4468780939931592042'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/11/im-off.html' title='I&apos;m Off!'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-6820607964466101199</id><published>2009-11-25T10:35:00.000-08:00</published><updated>2009-11-25T10:49:37.414-08:00</updated><title type='text'>Upcoming events...</title><content type='html'>Tomorrow, I run a 10K in the morning, and have Thanksgiving dinner in the afternoon.&lt;br /&gt;&lt;br /&gt;On Monday, I board a plane for a warm, sunny destination.&lt;br /&gt;&lt;br /&gt;And, as a followup to &lt;a href="http://personallyinteresting.blogspot.com/2009/09/apple-update.html"&gt;Apple Update&lt;/a&gt;, I have bought a &lt;a href="http://en.wikipedia.org/wiki/Portable_media_player"&gt;PMP&lt;/a&gt; -- a &lt;a href="http://www.viewsonic.com/products/vpd400.htm"&gt;Viewsonic VPD400&lt;/a&gt;.  800x480 4.3" screen, plenty of CPU horsepower, lots of codecs.  Only 8GB of flash, but it takes &lt;a href="http://en.wikipedia.org/wiki/Microsdhc"&gt;MicroSCHC&lt;/a&gt; cards so I can carry all the video I can afford...&lt;br /&gt;&lt;br /&gt;I would have preferred the VPD500 (5" screen, 16GB of flash), but while it has been announced it is not yet available.&lt;br /&gt;&lt;br /&gt;And, for the curious, it's a lot like the &lt;a href="http://mp4nation.net/catalog/index.php?main_page=product_info&amp;cPath=1_8&amp;products_id=290"&gt;Onda 535&lt;/a&gt; (Yah, that's the 545,  not 535.  I couldn't find a link to the 535, but they are the same in all respects except a 5" screen on the 545).  I considered the Onda545 (or even the 797, with a 7" screen!) but&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1) I'd prefer a brand name (and vendor) that was better known in the USA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2) I was not sure that mp4nation could deliver in time.&lt;br /&gt;&lt;br /&gt;And if you are interested in other PMP info, check out &lt;a href="http://www.pmptoday.com/"&gt;PMP Today&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-6820607964466101199?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/6820607964466101199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=6820607964466101199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6820607964466101199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6820607964466101199'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/11/upcoming-events.html' title='Upcoming events...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2449339518270424452</id><published>2009-11-23T10:59:00.000-08:00</published><updated>2009-11-23T11:00:58.283-08:00</updated><title type='text'>A day that will live in infamy...</title><content type='html'>Happy Birthday to me,&lt;br /&gt;Happy Birthday to me,&lt;br /&gt;Happy Birthday dear me...&lt;br /&gt;Happy Birthday to me.&lt;br /&gt;&lt;br /&gt;What, you thought the subject has some other meaning?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2449339518270424452?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2449339518270424452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2449339518270424452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2449339518270424452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2449339518270424452'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/11/day-that-will-live-in-infamy.html' title='A day that will live in infamy...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-7291628033417385947</id><published>2009-11-19T13:23:00.000-08:00</published><updated>2009-11-19T13:25:06.569-08:00</updated><title type='text'>Not gone and Not forgotten!</title><content type='html'>This blog, that is.&lt;br /&gt;&lt;br /&gt;Right now, it's crunch time at work and I'm getting ready to go on vacation.&lt;br /&gt;&lt;br /&gt;No spare time to do anything, including writing blog entries (besides this hastily typed entry).&lt;br /&gt;&lt;br /&gt;Sorry, I'll try to make occasional weird comments just to let you know I'm still around...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-7291628033417385947?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/7291628033417385947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=7291628033417385947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7291628033417385947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7291628033417385947'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/11/not-gone-and-not-forgotten.html' title='Not gone and Not forgotten!'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-3464007968814280291</id><published>2009-11-13T12:13:00.000-08:00</published><updated>2009-11-13T12:31:45.832-08:00</updated><title type='text'>Personal computing history (part 7)</title><content type='html'>Despite what we could do with virus scan/removal, the company I worked for (names withheld to protect the guilty^H^H^H^H^H^Hinnocent^H^H^H^H^H^H^H^H^H^H^H^Hno one in particular) was losing it's customer base.  We did not have a standout "Windows" program, and the business shrank.&lt;br /&gt;&lt;br /&gt;Eventually, it folded.&lt;br /&gt;&lt;br /&gt;I took a temporary job doing support work (that stretched to a year and a half, I'm lucky that I got out of there without it being permanent).&lt;br /&gt;&lt;br /&gt;There was the &lt;a href="http://en.wikipedia.org/wiki/Dot-com_bubble"&gt;"dot-com" boom&lt;/a&gt;, where I put in my time with a web startup (they were doing tech support via web interface, and wanted a virus scan component).  They wound up with most of the rest of them...&lt;br /&gt;&lt;br /&gt;Looking around, I remembered what a friend of mine had told me years ago -- that my skills were a good match for &lt;a href="http://en.wikipedia.org/wiki/Embedded_programming"&gt;embedded programming&lt;/a&gt;.  So I went after jobs there.&lt;br /&gt;&lt;br /&gt;He was right -- while I had to get "up to speed" on the particular embedded controllers, my experience in assembly language and programming in C right down to the bare metal of the computer was just what they were looking for.&lt;br /&gt;&lt;br /&gt;I settled in for the long haul...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-3464007968814280291?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/3464007968814280291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=3464007968814280291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3464007968814280291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3464007968814280291'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/11/personal-computing-history-part-7.html' title='Personal computing history (part 7)'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-7488336766196010567</id><published>2009-11-09T13:22:00.000-08:00</published><updated>2009-11-09T13:38:05.831-08:00</updated><title type='text'>Personal computing history (part 6)</title><content type='html'>And, after a while, &lt;a href="http://en.wikipedia.org/wiki/DOS"&gt;DOS&lt;/a&gt; was no longer king.  &lt;a href="http://en.wikipedia.org/wiki/Windows"&gt;Windows&lt;/a&gt; ruled.&lt;br /&gt;&lt;br /&gt;And with Windows came Microsoft's Word for Windows.  Version 6.&lt;br /&gt;&lt;br /&gt;And then came &lt;a href="http://en.wikipedia.org/wiki/Word_macro_virus"&gt;macro viruses&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;From the anti-virus vendors came much shouting "How do we parse these files?  What is in these files?"&lt;br /&gt;&lt;br /&gt;And from Microsoft came the grudging reply "We cannot tell you."&lt;br /&gt;&lt;br /&gt;Not "Will not".  "&lt;strong&gt;Cannot&lt;/strong&gt;".&lt;br /&gt;&lt;br /&gt;You see, back then Word files (and Excel files) were saved &lt;a href="http://en.wikipedia.org/wiki/C%2B%2B"&gt;C++&lt;/a&gt; object streams.  To save a WORD file, you had C++ write the associated objects to disk.  To read it back, you have C++ read the associated objects from disk.&lt;br /&gt;&lt;br /&gt;So nobody had "designed" the file.  It was just C++ objects.&lt;br /&gt;&lt;br /&gt;If you use the right C++ compiler and objects, everything just works.  Use something else...&lt;br /&gt;&lt;br /&gt;So, the best that Microsoft (again grudgingly) could do was to provide a "reference" implementation of C++ objects to read/write an appropriate &lt;a href="http://en.wikipedia.org/wiki/Object_Linking_and_Embedding"&gt;OLE&lt;/a&gt; file, and some documentation on the internal WORD objects (complete with bugs...)&lt;br /&gt;&lt;br /&gt;So, what do you do with this?  Well, the anti-virus vendors split into 2 camps:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1) Use the reference implementation as the basis of the scanner&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2) Use the reference implementation to figure out the actual binary contents of a .DOC file.&lt;br /&gt;&lt;br /&gt;The company I worked for went for option #2.  I had much "fun" (for strange values of "fun") translating object streams into actual binary data.&lt;br /&gt;&lt;br /&gt;But in the end, we knew what was in a Word file (or Excel file or...).  Down to the bit.  And could parse a Word file in &lt;strong&gt;ANY&lt;/strong&gt; language...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-7488336766196010567?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/7488336766196010567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=7488336766196010567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7488336766196010567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7488336766196010567'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/11/personal-computing-history-part-6.html' title='Personal computing history (part 6)'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-1321546735099701518</id><published>2009-11-04T13:17:00.000-08:00</published><updated>2009-11-04T13:32:48.068-08:00</updated><title type='text'>Personal computing history (part 5)</title><content type='html'>So, I now have a pair of tools:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.datapackrat.com/source/vim.html"&gt;VIM&lt;/a&gt;as a debugger&lt;br /&gt;and&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.datapackrat.com/source/codegen.html"&gt;CODEGEN&lt;/a&gt; as a disassembler.&lt;br /&gt;&lt;br /&gt;What do I do with them?&lt;br /&gt;&lt;br /&gt;Well, around this time, the company I was working for became involved with the first &lt;a href="http://en.wikipedia.org/wiki/Computer_virus"&gt;computer viruses&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And I had tools that would let me simulate running any software, and rip apart programs with ease.&lt;br /&gt;&lt;br /&gt;Of course, some viruses tried to make it hard.  They didn't want to be traced, or encrypted themselves, or even kept the parts of themselves that were not currently executing encrypted (i.e. decrypt the currently required subroutine before executing it, and re-encrypt it when done.  This was the "&lt;a href="http://vil.nai.com/vil/content/v_1383.htm"&gt;Whale&lt;/a&gt;" virus).  None of it mattered.  One or two virses (like the "Whale" virus) made me create a "tweaked" version of my tools, but that was hardly even a speed bump.&lt;br /&gt;&lt;br /&gt;And so I spent many years disassembling viruses and writing anti-virus software...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-1321546735099701518?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/1321546735099701518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=1321546735099701518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1321546735099701518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1321546735099701518'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/11/personal-computing-history-part-5.html' title='Personal computing history (part 5)'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-7603395912832190550</id><published>2009-11-02T13:34:00.000-08:00</published><updated>2009-11-02T13:41:56.353-08:00</updated><title type='text'>Personal computing history (part 4)</title><content type='html'>As I mentioned &lt;a href="http://personallyinteresting.blogspot.com/2009/10/personal-computing-history-part-3.html"&gt;last time&lt;/a&gt;, the debugger I wrote has 2 instruction decoders.  One of which creates both instruction string and executable information.&lt;br /&gt;&lt;br /&gt;This turned out to be VERY useful.&lt;br /&gt;&lt;br /&gt;Why?&lt;br /&gt;&lt;br /&gt;Well, after a while, I also wanted to disassemble programs, not just debug them.&lt;br /&gt;&lt;br /&gt;And I had an engine that allowed me to decode instructions and execute them.  So I could know not only that a &lt;a href="http://en.wikipedia.org/wiki/DOS"&gt;DOS&lt;/a&gt; call or &lt;a href="http://en.wikipedia.org/wiki/BIOS"&gt;BIOS&lt;/a&gt; was being made, I could determine what function was being asked for.&lt;br /&gt;&lt;br /&gt;Add an &lt;a href="http://personallyinteresting.blogspot.com/2008/12/re-creating-source-code-part-2.html"&gt;algorithm&lt;/a&gt; to separate code and data, and you have a very powerful disassembler...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-7603395912832190550?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/7603395912832190550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=7603395912832190550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7603395912832190550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7603395912832190550'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/11/personal-computing-history-part-4.html' title='Personal computing history (part 4)'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8169966857380191787</id><published>2009-10-28T13:35:00.000-07:00</published><updated>2009-10-28T13:52:39.121-07:00</updated><title type='text'>Personal computing history (part 3)</title><content type='html'>The one problem with interpreters (like &lt;a href="http://personallyinteresting.blogspot.com/2009/10/personal-computing-history-part-2.html"&gt;VIM&lt;/a&gt;) is that they are slow.&lt;br /&gt;&lt;br /&gt;In fact, VIM used about 400 instructions to interpret a single instruction.  So your program ran 400 times slower than normal.&lt;br /&gt;&lt;br /&gt;The early PCs and clones were running &lt;a href="http://en.wikipedia.org/wiki/Intel_8088"&gt;8088&lt;/a&gt; chips at 4.77Mhz.  Since they weren't all that efficent (not like the single clock instructions of modern chips), you got less than 1 million instructions per second (MIPS).  So, at it's fastest, your 1MIPS program was running at&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1000000 / 400 = 2500 instructions per second&lt;br /&gt;&lt;br /&gt;Yah, it was slow.&lt;br /&gt;&lt;br /&gt;This meant that all sorts of tricks were used to get any little bit of speed out of it that you could.&lt;br /&gt;&lt;br /&gt;One of the biggest tasks of the interpreter was instruction decoding.  Taking a byte stream like&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A3 34 12&lt;br /&gt;and determinging that this was the instruction&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MOV [1234],AX&lt;br /&gt;&lt;br /&gt;If you work with this for a while, you realize that you are much better off if you have two versions of the instruction decoder:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1) produces readable  strings and computer instructions&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2) just produces computer instructions&lt;br /&gt;&lt;br /&gt;Most of the interpreters processing will be internal.  You are not (usually) going to be watching every instruction.  If you don't produce strings for the user (case 2), it is much faster.&lt;br /&gt;&lt;br /&gt;If you are going to be producing strings for the user (for example, tracing a critical code section), you are not going to care (in general) how fast the routine is (the user can't keep up with the computer).&lt;br /&gt;&lt;br /&gt;So, you trade code space for speed.  A common trade-off.&lt;br /&gt;&lt;br /&gt;You just have to be &lt;strong&gt;VERY SURE&lt;/strong&gt; that both decoders are "in sync" so you can switch between them without anything breaking (or interpreting instructions incorrectly...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8169966857380191787?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8169966857380191787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8169966857380191787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8169966857380191787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8169966857380191787'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/10/personal-computing-history-part-3.html' title='Personal computing history (part 3)'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-3241864240830765928</id><published>2009-10-26T13:28:00.000-07:00</published><updated>2009-10-26T13:48:33.386-07:00</updated><title type='text'>Personal computing history (part 2)</title><content type='html'>So, why was this such a big deal?&lt;br /&gt;&lt;br /&gt;Well, the best debugger is an interpreter.  VIM stands for "VIrtual Machine", and is an interpreter for 8086 machine code.&lt;br /&gt;&lt;br /&gt;With it's own memory space, so changing something important (like trashing the interrupt vector table) wouldn't crash the real machine.&lt;br /&gt;&lt;br /&gt;Simulated periphirals (like interrupt controllers) and access to the actual machine hardware (keyboard, disk drive) so that it could do real-world simulations (like booting and running a different operating system the the one running VIM).  And the ability to turn hardware access off, so you could protect your system from malicious software.&lt;br /&gt;&lt;br /&gt;Breakpoint on data access, so you can see how a stray memory pointer is trashing your data.&lt;br /&gt;&lt;br /&gt;Breakpoints were setup so that if executing an instruction would cause a breakpoint, the break occurred &lt;strong&gt;before&lt;/strong&gt; that instruction executed (for example, if you wanted to see how memory location 1234 was being overwritten, you could set a breakpoint on 1234.  Then, if executing the instruction&lt;blockquote&gt;&lt;br /&gt;MOV BYTE PTR [SI],AL&lt;/blockquote&gt;would write to location 1234, VIM will stop &lt;strong&gt;before&lt;/strong&gt; the instruction executed and trashed memory.)&lt;br /&gt;&lt;br /&gt;VIM will also remember the last 2047 instructions executed, so you can figure out just how you got to this point.&lt;br /&gt;&lt;br /&gt;Also, save/restore your debugging session to disk.  So you can go home for the night and pick up where you left off in the morning.  Or play "what if" on code execution, and go back to a known starting state any number of times.&lt;br /&gt;&lt;br /&gt;So, I now had a tool that would let me do all sorts of neat stuff.  And one that would become the basis for much of my work in the future (though I didn't know it at time time).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-3241864240830765928?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/3241864240830765928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=3241864240830765928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3241864240830765928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3241864240830765928'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/10/personal-computing-history-part-2.html' title='Personal computing history (part 2)'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-3895947153223946333</id><published>2009-10-23T13:11:00.000-07:00</published><updated>2009-10-23T13:25:07.945-07:00</updated><title type='text'>Personal computing history (part 1)</title><content type='html'>A long time ago, I wrote a lot of &lt;a href="http://en.wikipedia.org/wiki/Assembly_language"&gt;assembly language&lt;/a&gt;.  I got very good at it.&lt;br /&gt;&lt;br /&gt;Some years later, I was working for a company that did educational software.  Back in the mid-80's a lot of PC software was &lt;a href="http://en.wikipedia.org/wiki/Copy_protection"&gt;copy protected&lt;/a&gt;.  This was a major pain for us, as we had a $2000 program (back in the 80's this was even more of a painful cost than it would be now...) that broke when used on a faster (back then, 80286) machine.&lt;br /&gt;&lt;br /&gt;So, my boss, knowing how good I was a low-level stuff, asked me to break the copy protection.  No &lt;a href="http://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act"&gt;DMCA&lt;/a&gt; back then, I was free as a bird...&lt;br /&gt;&lt;br /&gt;So, I started digging into the program with &lt;a href="http://mirror.href.com/thestarman/asm/debug/debug.htm"&gt;DEBUG&lt;/a&gt;.  And taking notes...&lt;br /&gt;&lt;br /&gt;After about 10 pages of scatterd notes with cryptic values written on them, I though to myself "Why am I doing this?  I have a computer!" and so &lt;a href="http://www.datapackrat.com/source/vim.html"&gt;VIM&lt;/a&gt; was born.  A month of effort got the basics working, and the copy protection was toast.&lt;br /&gt;&lt;br /&gt;...to be continued...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-3895947153223946333?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/3895947153223946333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=3895947153223946333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3895947153223946333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3895947153223946333'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/10/personal-computing-history-part-1.html' title='Personal computing history (part 1)'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-5412868158414692486</id><published>2009-10-21T13:26:00.000-07:00</published><updated>2009-10-21T13:37:46.701-07:00</updated><title type='text'>Disk Rot...</title><content type='html'>Well, despite my warnings to others about software vanishing and keeping "&lt;a href="http://personallyinteresting.blogspot.com/2009/03/old-bits.html"&gt;old bits&lt;/a&gt;" around, I find that I've been bitten...&lt;br /&gt;&lt;br /&gt;I'm doing some cleaning in the computer room (getting rid of old junk), and looked in a CD wallet that contains archives of my development work.  The disks are succumbing to &lt;a href="http://en.wikipedia.org/wiki/Disc_rot"&gt;disk rot&lt;/a&gt; -- when I opened the sleeves in the wallet, they took the aluminum layer with them.  Oops...&lt;br /&gt;&lt;br /&gt;I think this was an interaction between that particular brand of CD and the plastic of the disk sleeve, since other CDs in the same wallet are fine.&lt;br /&gt;&lt;br /&gt;Fortunately, I made multiple copies.  On CD's from different companies.  Stored in different locations and methods (CD wallets vs jewel cases).&lt;br /&gt;&lt;br /&gt;I haven't lost anything, but that's just because I'm paranoid about such things.  But not everyone is...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-5412868158414692486?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/5412868158414692486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=5412868158414692486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5412868158414692486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5412868158414692486'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/10/disk-rot.html' title='Disk Rot...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-6660721663234913133</id><published>2009-10-19T13:02:00.000-07:00</published><updated>2009-10-20T14:16:21.556-07:00</updated><title type='text'>Back to work...</title><content type='html'>no, not you.  Me.&lt;br /&gt;&lt;br /&gt;About a week and a half ago I received an email from someone who sent me the source to Intel's AEDIT (of which &lt;a href="http://www.desmet-c.com/see_32.shtml"&gt;SEE&lt;/a&gt;, the editor that came with &lt;a href="http://www.desmet-c.com/"&gt;DeSmet-C&lt;/a&gt;, is a clone).  He is setting up a &lt;a href="http://see-editor.info/"&gt;website&lt;/a&gt; about SEE, and both wanted me to have the AEDIT source (written in &lt;a href="http://en.wikipedia.org/wiki/PL/M"&gt;PL/M&lt;/a&gt;) and to have me "tidy-up" the DeSmet C pages in advance of being spidered by search engines for the new page.&lt;br /&gt;&lt;br /&gt;So, this finally got me to get off my duff and post the DeSmet 2.51 C88 reconstruction I had done.&lt;br /&gt;&lt;br /&gt;Though, if anyone wants to make a better DeSmet C page, I won't say no...&lt;br /&gt;&lt;br /&gt;Also, I've started back in on the 2.51 GEN reconstruction I had started and not finished.  This, as I anticipated, is more complex than the C88 reconstruction, as GEN had undergone more changes, both to support "large case" (i.e. &lt;a href="http://en.wikipedia.org/wiki/C_memory_model#Memory_models"&gt;large memory model&lt;/a&gt;) and to support direct generation of object code (no intermediate assembly language file).&lt;br /&gt;&lt;br /&gt;I'm between 1/3 and 1/2 finsished, and plowing through.  It's a bit worrysome, though, that I have several functions that I have yet to discover names for.  This is probably due to routines that were subsumed by other functions, but it will mean that I have to "guess" names and code structure, which will make the reconstruction less useable.  Hopefully I'll find the equivalent later code...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-6660721663234913133?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/6660721663234913133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=6660721663234913133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6660721663234913133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6660721663234913133'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/10/back-to-work.html' title='Back to work...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-6655539843535095274</id><published>2009-10-12T13:54:00.001-07:00</published><updated>2009-10-12T13:54:58.852-07:00</updated><title type='text'>It's loose!</title><content type='html'>The reconstructed DeSmet C v2.51 &lt;a href="http://www.desmet-c.com/new251.shtml"&gt;source&lt;/a&gt;, that is.&lt;br /&gt;&lt;br /&gt;It only took me from January 2009 to now to do it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-6655539843535095274?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/6655539843535095274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=6655539843535095274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6655539843535095274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6655539843535095274'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/10/its-loose.html' title='It&apos;s loose!'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-9189273506779669032</id><published>2009-10-09T12:30:00.000-07:00</published><updated>2009-10-09T12:43:22.539-07:00</updated><title type='text'>Easter Eggs, part 2...</title><content type='html'>Easter Eggs can also be in some surprising places.  Like computer chips...&lt;br /&gt;&lt;br /&gt;Known as &lt;a href="http://en.wikipedia.org/wiki/Chip_art"&gt;Chip Art&lt;/a&gt;, these are microscopic doodles put in chip for fun (or copyright purposes, as described in the above &lt;a href="http://en.wikipedia.org/wiki/Main_Page"&gt;wikipedia&lt;/a&gt; article).&lt;br /&gt;&lt;br /&gt;Some of it is &lt;a href="http://micro.magnet.fsu.edu/creatures/pages/tihappyface.html"&gt;crude&lt;/a&gt;, some wonderfully &lt;a href="http://micro.magnet.fsu.edu/creatures/pages/cheetah.html"&gt;detailed&lt;/a&gt;, all of it fascinating.&lt;br /&gt;&lt;br /&gt;Check out &lt;a href="http://micro.magnet.fsu.edu/creatures/"&gt;Molecular Expressions&lt;/a&gt; and &lt;a href="http://www.chipworks.com/silicon_art_gallery.aspx"&gt;Chipworks&lt;/a&gt; and see if you really know what's inside your computer...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-9189273506779669032?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/9189273506779669032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=9189273506779669032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/9189273506779669032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/9189273506779669032'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/10/easter-eggs-part-2.html' title='Easter Eggs, part 2...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-6259060754627323125</id><published>2009-10-08T13:45:00.001-07:00</published><updated>2009-10-08T13:53:28.934-07:00</updated><title type='text'>Easter Eggs!</title><content type='html'>OK, not the kind you eat.  It's the wrong time of year for that.&lt;br /&gt;&lt;br /&gt;But, hidden "goodies" in film, software, TV, or whatnot are called easter eggs.&lt;br /&gt;&lt;br /&gt;A common example is a hidden menu selection on a DVD.  If you find the right button combination, you are taken to the "hidden" content (commonly a making-of feature or some such).&lt;br /&gt;&lt;br /&gt;Another common easter egg is a hidden joke or reference.  For example, in &lt;a href="http://en.wikipedia.org/wiki/Lost_(TV_series)"&gt;LOST&lt;/a&gt;, "&lt;a href="http://en.wikipedia.org/wiki/Lost_numbers#The_Numbers"&gt;the numbers&lt;/a&gt;" often show up in unexpected places, such as the &lt;a href="http://www.eeggs.com/items/47889.html"&gt;numbers on police cars in a parking lot&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you're interested in such things, check out &lt;a href="http://www.eeggs.com/"&gt;The Easter Egg Archive&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-6259060754627323125?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/6259060754627323125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=6259060754627323125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6259060754627323125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6259060754627323125'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/10/easter-eggs.html' title='Easter Eggs!'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-1513806105458429334</id><published>2009-10-06T12:24:00.000-07:00</published><updated>2009-10-06T12:28:28.527-07:00</updated><title type='text'>Now with more Fiber!</title><content type='html'>Optical fiber, that is...&lt;br /&gt;&lt;br /&gt;It's finally available in our area, so my wife and I have had Verizon &lt;a href="http://www.verizon.com/fios"&gt;FIOS&lt;/a&gt; installed.&lt;br /&gt;&lt;br /&gt;Even with the "better" package, we have &lt;a href="http://en.wikipedia.org/wiki/Plain_old_telephone_service"&gt;POTS&lt;/a&gt;, internet at 25MBPS down / 15MBPS up, and television, with lots of &lt;a href="http://en.wikipedia.org/wiki/High-definition_television"&gt;HD&lt;/a&gt; channels.&lt;br /&gt;&lt;br /&gt;Pretty, and wonderful waste of time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-1513806105458429334?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/1513806105458429334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=1513806105458429334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1513806105458429334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1513806105458429334'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/10/now-with-more-fiber.html' title='Now with more Fiber!'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-5331225060639139103</id><published>2009-09-30T13:27:00.000-07:00</published><updated>2009-09-30T13:37:54.842-07:00</updated><title type='text'>Down and dirty in unix...</title><content type='html'>Long ago, I used &lt;a href="http://en.wikipedia.org/wiki/Assembly_language"&gt;assembly language&lt;/a&gt; for the &lt;a href="http://en.wikipedia.org/wiki/IBM_PC_compatible"&gt;PC&lt;/a&gt; (in &lt;a href="http://en.wikipedia.org/wiki/MS-DOS"&gt;DOS&lt;/a&gt;) every day.&lt;br /&gt;&lt;br /&gt;These days, working with &lt;a href="http://en.wikipedia.org/wiki/Microcontroller"&gt;microcontrollers&lt;/a&gt;, I only dip into assembly when debugging or writing initilization code.&lt;br /&gt;&lt;br /&gt;But assembly is far from dead.  Even for the PC.&lt;br /&gt;&lt;br /&gt;Even for &lt;a href="http://en.wikipedia.org/wiki/Operating_system"&gt;OSes&lt;/a&gt; like &lt;a href="http://en.wikipedia.org/wiki/Unix"&gt;UNIX&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Yup.  While Unix was written in &lt;a href="http://en.wikipedia.org/wiki/C_language"&gt;C&lt;/a&gt; to be portable, you can get "down and dirty" if you want.&lt;br /&gt;&lt;br /&gt;The interface is via (for a PC-based system) &lt;a href="http://www.int80h.org/"&gt;INT 80h&lt;/a&gt;, which also happens to be the website which teaches an introduction to assembly and UNIX on the PC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-5331225060639139103?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/5331225060639139103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=5331225060639139103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5331225060639139103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5331225060639139103'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/09/down-and-dirty-in-unix.html' title='Down and dirty in unix...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8169197057683942659</id><published>2009-09-28T13:43:00.001-07:00</published><updated>2009-09-28T13:51:07.776-07:00</updated><title type='text'>Not forgotten...</title><content type='html'>You were excited.  Waiting with baited breath.  The new, must-have video game was finally here!&lt;br /&gt;&lt;br /&gt;But that was years ago, and that new, must-have video game is long forgotten.  The people who wrote it may have some memories, but the company that published it (and owns the copyright) is long gone.&lt;br /&gt;&lt;br /&gt;It's call &lt;a href="http://en.wikipedia.org/wiki/Abandonware"&gt;abandonware&lt;/a&gt;.  And while someone, somewhere owns the copyright (it's not really abandoned), they don't care enough to either sell it or make it available.&lt;br /&gt;&lt;br /&gt;So sites like &lt;a href="http://www.abandonia.com/"&gt;abandonia&lt;/a&gt; exist, keeping the files alive.&lt;br /&gt;&lt;br /&gt;Yes, it's technically illegal.  But if the owners don't care enough to actually sell it to you or even tell you to stop distributing it, why should you care?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8169197057683942659?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8169197057683942659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8169197057683942659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8169197057683942659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8169197057683942659'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/09/not-forgotten.html' title='Not forgotten...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2006008000354249810</id><published>2009-09-25T11:03:00.000-07:00</published><updated>2009-09-25T11:06:59.513-07:00</updated><title type='text'>Superheroes:  where to find them...</title><content type='html'>Since you already have the &lt;a href="http://www.superherosupplies.com/"&gt;store&lt;/a&gt; for &lt;a href="http://www.flickr.com/photos/simmermon/sets/72157594462555832/show/"&gt;Superhero Stuff&lt;/a&gt;, keeping an eye on the store would probably be a good place to start.&lt;br /&gt;&lt;br /&gt;Or just check out the &lt;a href="http://www.worldsuperheroregistry.com/"&gt;World Superhero Registry&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2006008000354249810?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2006008000354249810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2006008000354249810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2006008000354249810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2006008000354249810'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/09/superheroes-where-to-find-them.html' title='Superheroes:  where to find them...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-3648512787954239351</id><published>2009-09-23T13:50:00.000-07:00</published><updated>2009-09-23T13:56:06.951-07:00</updated><title type='text'>For the Superhero in you...</title><content type='html'>When you read comics (admit it, you did!), didn't you ever wonder where all the neat toys came from?&lt;br /&gt;&lt;br /&gt;Costumes, masks, gadgets, robots -- everything you needed to combat evil.&lt;br /&gt;&lt;br /&gt;Sure, the Superhero is a genius, but who has the time to do it all?&lt;br /&gt;&lt;br /&gt;Well, it turns out that &lt;a href="http://www.flickr.com/photos/simmermon/sets/72157594462555832/show/"&gt;Brooklyn Superhero Supply&lt;/a&gt; is the source for all your heroic needs.&lt;br /&gt;&lt;br /&gt;Check it out, and maybe you can meet &amp;ltinsert your favorite hero or heroine here&amp;gt and invite them out for coffee...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-3648512787954239351?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/3648512787954239351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=3648512787954239351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3648512787954239351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3648512787954239351'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/09/for-superhero-in-you.html' title='For the Superhero in you...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-7662172974694408643</id><published>2009-09-21T13:57:00.000-07:00</published><updated>2009-09-21T14:02:43.895-07:00</updated><title type='text'>Instead of reality...</title><content type='html'>how about a little fantasy?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Steampunk"&gt;Steampunk&lt;/a&gt; rayguns from &lt;a href="http://www.wetanz.com/"&gt;Weta&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;They're &lt;a href="http://www.wetanz.com/holics/index.php?itemid=20&amp;catid=4"&gt;pretty&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-7662172974694408643?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/7662172974694408643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=7662172974694408643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7662172974694408643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7662172974694408643'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/09/instead-of-reality.html' title='Instead of reality...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-7211477819650591427</id><published>2009-09-14T13:23:00.000-07:00</published><updated>2009-09-14T13:30:17.871-07:00</updated><title type='text'>Daily routine, Part 1...</title><content type='html'>Like most people, I have a number of websites I visit regularly.&lt;br /&gt;&lt;br /&gt;Some are humorous.  Some are news.  Some are educational.  Some are just plain weird.  Some are beautiful.  Some are guilty pleasures.&lt;br /&gt;&lt;br /&gt;And some fall into more than one category.&lt;br /&gt;&lt;br /&gt;Like &lt;a href="http://apod.nasa.gov/apod/"&gt;Astronomy picture of the day&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Often, I get to see a beautiful picture of some marvel of the universe.  Othertimes, I get a lesson on science and how it relates to the world.  And sometimes I try to see if I'm as &lt;a href="http://apod.nasa.gov/apod/ap090712.html"&gt;smart&lt;/a&gt; as a (hypothetical) alien.&lt;br /&gt;&lt;br /&gt;If you're not checking APOD daily, why not?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-7211477819650591427?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/7211477819650591427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=7211477819650591427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7211477819650591427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7211477819650591427'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/09/daily-routine-part-1.html' title='Daily routine, Part 1...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-6656499288782724333</id><published>2009-09-11T12:53:00.000-07:00</published><updated>2009-09-11T13:04:50.671-07:00</updated><title type='text'>Yesterdays innovation is todays toy...</title><content type='html'>Long ago (1980!), Sinclair Research introduced the &lt;a href="http://en.wikipedia.org/wiki/ZX80"&gt;ZX80&lt;/a&gt; computer.  In it's own way, it was a marvel of engineering, bringing a real computer to the home for a low price.&lt;br /&gt;&lt;br /&gt;I remember seeing the original announcement and lusting over one...&lt;br /&gt;&lt;br /&gt;And a few years later, I had some spare money and bought a &lt;a href="http://en.wikipedia.org/wiki/Sinclair_ZX81"&gt;ZX81&lt;/a&gt; kit.  (Didn't work out, though... the PC boards were not &lt;a href="http://en.wikipedia.org/wiki/Solder_mask"&gt;solder masked&lt;/a&gt; and I wound up with an unfixable solder bridge across a number of traces...)&lt;br /&gt;&lt;br /&gt;Today, you can &lt;a href="http://home.micros.users.btopenworld.com/zx80/zx80.html"&gt;build one yourself&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Or do what I did a couple of years back -- buy one (complete with memory expansion pack) at a computer flea market for a couple of bucks.  But building it yourself has a much higher geek factor...&lt;br /&gt;&lt;br /&gt;Just remember that you need an &lt;a href="http://personallyinteresting.blogspot.com/2009/06/end-of-era.html"&gt;analog TV&lt;/a&gt; for display...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-6656499288782724333?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/6656499288782724333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=6656499288782724333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6656499288782724333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6656499288782724333'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/09/yesterdays-innovation-is-todays-toy.html' title='Yesterdays innovation is todays toy...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8282270819604186692</id><published>2009-09-09T13:09:00.000-07:00</published><updated>2009-09-09T13:23:28.645-07:00</updated><title type='text'>Apple update...</title><content type='html'>Well, after my previous &lt;a href="http://personallyinteresting.blogspot.com/2009/06/apple-disappointment.html"&gt;Apple Disappointment&lt;/a&gt;, Apple has finally released it's updated Ipod Touch.  Faster processor, more FLASH, and that's about it for anything I would use.&lt;br /&gt;&lt;br /&gt;Of course, I've also seen a few alternatives in the meantime.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.archos.com/"&gt;Archos&lt;/a&gt; has the &lt;a href="http://www.archos.com/products/imt/archos_5/index.html"&gt;Archos 5&lt;/a&gt; and &lt;a href="http://www.archos.com/products/imt/archos_7/index.html"&gt;Archos 7&lt;/a&gt; "Internet Media Tablets", which have a 800 x 480 screen (compared to the iTouchs' 480 x 320).  But I've heard bad things about reliability and support.&lt;br /&gt;&lt;br /&gt;The Nokia &lt;a href="https://www.nokiausa.com/find-products/phones/nokia-n810"&gt;N810&lt;/a&gt; and &lt;a href="http://www.nokiausa.com/find-products/phones/nokia-n900"&gt;N900&lt;/a&gt; also have 800 x 480 screens, though I've heard that the n810 doesn't have the CPU horsepower to do video at 800 x 480, and I haven't (yet) yeard about the CPU speed on the n900.  And the n900 is expensive...&lt;br /&gt;&lt;br /&gt;I'll probably wind up with a Touch, but there are other players out there...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8282270819604186692?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8282270819604186692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8282270819604186692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8282270819604186692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8282270819604186692'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/09/apple-update.html' title='Apple update...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8254866717081753944</id><published>2009-09-02T13:20:00.001-07:00</published><updated>2009-09-02T13:21:46.505-07:00</updated><title type='text'>I don't want to work today...</title><content type='html'>and so neither should you.&lt;br /&gt;&lt;br /&gt;Instead, go read some &lt;a href="http://www.cs.bgu.ac.il/~omri/Humor/index.html"&gt;computer humor&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Go ahead... your boss never checks up on you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8254866717081753944?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8254866717081753944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8254866717081753944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8254866717081753944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8254866717081753944'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/09/i-dont-want-to-work-today.html' title='I don&apos;t want to work today...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-799739834630249305</id><published>2009-08-28T12:31:00.000-07:00</published><updated>2009-08-28T12:40:37.984-07:00</updated><title type='text'>Kids stuff and old age...</title><content type='html'>&lt;a href="http://personallyinteresting.blogspot.com/2009/08/kids-stuff.html"&gt;Yesterday&lt;/a&gt; I told you about a website (which links to the websites authors blog) full of space art of yesteryear, aimed at children.&lt;br /&gt;&lt;br /&gt;I've spent some time looking at his collection, and I find that it makes me quite sad.&lt;br /&gt;&lt;br /&gt;I remember some of this from when I was young.  Some crude, some wonderful (thank you, &lt;a href="http://www.bonestell.org/"&gt;Chesley Bonestell&lt;/a&gt;).  All of it the stuff of dreams.&lt;br /&gt;&lt;br /&gt;And I can look at today's space art -- beautifully rendered, with real space photographs as backgrounds.  But the soul is gone.&lt;br /&gt;&lt;br /&gt;We (as a people) used to dream of the future.  Show it to our children and ignite their hopes and imaginations.&lt;br /&gt;&lt;br /&gt;Today it seems that we no longer look forward and outward, we just distract ourselves with something shiny and never look behind the curtain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-799739834630249305?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/799739834630249305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=799739834630249305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/799739834630249305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/799739834630249305'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/08/kids-stuff-and-old-age.html' title='Kids stuff and old age...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-7180598272428559674</id><published>2009-08-27T13:12:00.000-07:00</published><updated>2009-08-27T13:28:03.748-07:00</updated><title type='text'>Kids stuff...</title><content type='html'>I almost lost a website (someone else's, not mine...)&lt;br /&gt;&lt;br /&gt;Addresses move on the web.  And they don't always (or even normally) leave forwarding addreses.&lt;br /&gt;&lt;br /&gt;One of these was a &lt;a href="http://www.dreamsofspace.com"&gt;website&lt;/a&gt; by &lt;a href="http://dreamsofspace.nfshost.com/biog.htm"&gt;John Sisson&lt;/a&gt;, full of wonderful old space art, some of which I remember as inspiring me when I was a kid (&lt;a href="http://dreamsofspace.nfshost.com/youmoon.htm"&gt;You Will Go To The Moon&lt;/a&gt; (see &lt;a href="http://www.amazon.com/dp/0394800079"&gt;here&lt;/a&gt;, too.  The original edition is the way to go...)&lt;br /&gt;&lt;br /&gt;Think about this site, I decided to go to &lt;a href="http://www.archive.org/"&gt;archive.org&lt;/a&gt; and see if it had captured any of his stuff.  On one of the last archived pages, I found a pointer to his new website.  Win!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dreamsofspace.com"&gt;Go&lt;/a&gt;, look, and dream.  It's the first step to the stars...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-7180598272428559674?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/7180598272428559674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=7180598272428559674' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7180598272428559674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7180598272428559674'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/08/kids-stuff.html' title='Kids stuff...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-3091172148930896783</id><published>2009-08-24T10:58:00.000-07:00</published><updated>2009-08-24T11:07:07.186-07:00</updated><title type='text'>Back in the day...</title><content type='html'>you didn't fire up your web browser and look for the latest thing.&lt;br /&gt;&lt;br /&gt;Instead, you headed off to the newsstand and bought the latest magazine.&lt;br /&gt;&lt;br /&gt;So, for the electronics hobbiest, this mean you had a set of instructions and minimal distractions.  And intent...&lt;br /&gt;&lt;br /&gt;These days, physical electronics hobby magazines are few and far between.  But some of them are still around, and even have web editions.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nutsvolts.com/"&gt;Nuts and Volts&lt;/a&gt;, &lt;a href="http://www.siliconchip.com.au/"&gt;Silicon Chip&lt;/a&gt;, and &lt;a href="http://www.circuitcellar.com/"&gt;Circuit Cellar&lt;/a&gt; are all still around.&lt;br /&gt;&lt;br /&gt;And &lt;a href="http://www.makezine.com/"&gt;Makezine&lt;/a&gt;, even though not solely dedicated to electronics, started in the age of the web and is very popular.&lt;br /&gt;&lt;br /&gt;Go, read, enjoy, and think of what you can do with all the little goodies around you...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-3091172148930896783?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/3091172148930896783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=3091172148930896783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3091172148930896783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3091172148930896783'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/08/back-in-day.html' title='Back in the day...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-1648935320567938467</id><published>2009-08-18T13:54:00.000-07:00</published><updated>2009-08-18T14:00:34.800-07:00</updated><title type='text'>Some Itty Bitty stuff...</title><content type='html'>Like &lt;a href="http://www.ittybittycomputers.com/IttyBitty/TinyBasic/index.htm"&gt;TinyBasic&lt;/a&gt; and a &lt;a href="http://www.ittybittycomputers.com/IttyBitty/ShortCor.htm"&gt;programming course&lt;/a&gt; based on the &lt;a href="http://en.wikipedia.org/wiki/RCA_1802"&gt;1802&lt;/a&gt; microprocessor.&lt;br /&gt;&lt;br /&gt;And writing a &lt;a href="http://www.ittybittycomputers.com/Essays/Tennis.html"&gt;video game&lt;/a&gt; -- 22 years ago!&lt;br /&gt;&lt;br /&gt;Go have some fun...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-1648935320567938467?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/1648935320567938467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=1648935320567938467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1648935320567938467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1648935320567938467'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/08/some-itty-bitty-stuff.html' title='Some Itty Bitty stuff...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-6420298701532085238</id><published>2009-08-17T13:12:00.000-07:00</published><updated>2009-08-17T13:23:55.763-07:00</updated><title type='text'>Something to peruse...</title><content type='html'>Well, after coming back from the &lt;a href="http://personallyinteresting.blogspot.com/2009/08/away-for-few-days.html"&gt;Worldcon in Montreal&lt;/a&gt;, I was off again for work.&lt;br /&gt;&lt;br /&gt;This time, however, it was an un-airconditioned warehouse in Florida.  Complete with large spiders and a visiting hawk.  In August...&lt;br /&gt;&lt;br /&gt;So, while I'm not having fun, why don't you go to the &lt;a href="http://www.members.tripod.com/~ladsoft/"&gt;LadSoft&lt;/a&gt; website and have fun.&lt;br /&gt;&lt;br /&gt;Among other things, they have a couple of C compilers (with source!)&lt;br /&gt;&lt;br /&gt;(I like C compilers.  With source -- they are fun toys!  Does this show?)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-6420298701532085238?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/6420298701532085238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=6420298701532085238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6420298701532085238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6420298701532085238'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/08/something-to-peruse.html' title='Something to peruse...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-234936328137694248</id><published>2009-08-12T10:48:00.000-07:00</published><updated>2009-08-12T11:08:04.343-07:00</updated><title type='text'>Fannish Express...</title><content type='html'>when it absolutely, positively has to get there eventually.&lt;br /&gt;&lt;br /&gt;Yah, it's a Fan joke.  It's actually fairly common for fans to give something to another fan on their way to a convention, to be passed off at the convention.&lt;br /&gt;&lt;br /&gt;No, I didn't do any of this at Anticiption, but an incident there made me think of it.&lt;br /&gt;&lt;br /&gt;My wife and I used backpacks to carry stuff around the convention.  Very convenient.&lt;br /&gt;&lt;br /&gt;On the last day, my wife and I packed our luggage, and started to relax before driving back on Tuesday.  After a bit, I realized that I hadn't left my "currently reading" book out for the evening.  Looking around, I couldn't find it anywhere in the hotel room.&lt;br /&gt;&lt;br /&gt;I almost never lose things, but it can happen.  I know I was reading it before my last panel on Monday, so I went back to the Palis to see if I had left it there.&lt;br /&gt;&lt;br /&gt;The convention was over, and the place was being cleaned.  Went to the room of the panel, not there.  Check the chair in the hall where I had been reading it.  Not there.&lt;br /&gt;&lt;br /&gt;Head down to the information / lost &amp; found table.  Nobody there, but there was someone at the nearby table.  Lost and found has moved to ConOps at a hotel a few blocks away.  Sorry, too busy to call and see if they have it.&lt;br /&gt;&lt;br /&gt;So, I walk to the other hotel.  I find that Lost &amp; Found was being run by a friend of mine (Hi, Reg!) but she had not see it.  But she did suggest that if one of the Palis workers had found it, it would be in their lost and found.  So, go back to the Palis and try to find a security guard.&lt;br /&gt;&lt;br /&gt;It's getting deserted as the teardown continues.  I walk towards the last panel room, thinking that if a worker had found it, it would most likely be someone who's station is in that area.  Finally find someone (a waiter pushing a cart, but at least he works for the Palis) and ask him where L &amp; F is.&lt;br /&gt;&lt;br /&gt;However, this is overheard by a fan working cleanup.  She found a book, check with the people at the end of the hall.&lt;br /&gt;&lt;br /&gt;Yup, they have it.  They were on their way to ConOps.  I intercepted them just in time, otherwise it would have been ships crossing in the night.&lt;br /&gt;&lt;br /&gt;All is known to Fans, but it might take a while to find it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-234936328137694248?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/234936328137694248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=234936328137694248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/234936328137694248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/234936328137694248'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/08/fannish-express.html' title='Fannish Express...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-3431407731350197388</id><published>2009-08-03T13:28:00.000-07:00</published><updated>2009-08-03T13:34:48.550-07:00</updated><title type='text'>Away for a few days...</title><content type='html'>Not that I'm keeping to my M - W - F schedule, but I'm about to go on back-to-back trips.&lt;br /&gt;&lt;br /&gt;First, my wife and I are going to &lt;a href="http://www.anticipationsf.ca/"&gt;Anticipation&lt;/a&gt;, the 2009 World Science Fiction convention in &lt;a href="http://www.tourisme-montreal.org/"&gt;Montreal&lt;/a&gt;.  No "spock outfits" for us, but books, movies, panels, more books, and general tourism.&lt;br /&gt;&lt;br /&gt;Then, two days after we get back, I'm going to Clearwater, Florida for work.&lt;br /&gt;Current plan is to fly down Thursday, and back either late Saturday or sometime on Sunday.  Definately not as much fun...&lt;br /&gt;&lt;br /&gt;I don't know how much net access I will have in Montreal, so the best bet for a new update is Wednesday, August 12th.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-3431407731350197388?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/3431407731350197388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=3431407731350197388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3431407731350197388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3431407731350197388'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/08/away-for-few-days.html' title='Away for a few days...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-5542905255405820680</id><published>2009-07-30T13:21:00.000-07:00</published><updated>2009-07-30T13:30:02.656-07:00</updated><title type='text'>Rebuilding Apollo...</title><content type='html'>or at least the &lt;a href="http://en.wikipedia.org/wiki/Apollo_Guidance_Computer"&gt;AGC&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;OK, I've been busy.  Between &lt;a href="http://personallyinteresting.blogspot.com/2009/04/work-work-work.html"&gt;work&lt;/a&gt; and &lt;a href="http://personallyinteresting.blogspot.com/2009/07/joy-of-spending.html"&gt;home&lt;/a&gt; I occasionally want to run away screaming.&lt;br /&gt;&lt;br /&gt;But, to follow up on my &lt;a href="http://personallyinteresting.blogspot.com/2009/07/retro-computer-hardware.html"&gt;previous entry&lt;/a&gt;, here's &lt;a href="http://klabs.org/history/build_agc/"&gt;someone&lt;/a&gt; who &lt;a href="http://www.galaxiki.org/web/main/_blog/all/build-your-own-nasa-apollo-landing-computer-no-kidding.shtml"&gt;built a AGC&lt;/a&gt;.  With helpful details and plans to let you follow in their footsteps...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-5542905255405820680?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/5542905255405820680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=5542905255405820680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5542905255405820680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5542905255405820680'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/07/rebuilding-apollo.html' title='Rebuilding Apollo...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-5535492057319910289</id><published>2009-07-20T13:45:00.000-07:00</published><updated>2009-07-20T14:41:43.465-07:00</updated><title type='text'>Retro computer hardware...</title><content type='html'>Before the PC revolution, computers took a lot of dedication.&lt;br /&gt;&lt;br /&gt;You spent lots of money (or time, if you didn't have money) to buy / rent / build a computer.&lt;br /&gt;&lt;br /&gt;Sometimes it took both money and time.  Like building a computer completely out of &lt;a href="http://en.wikipedia.org/wiki/NAND_gate"&gt;NAND gates&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But the results could be very impressive.  After all, one of these &lt;a href="http://www.klabs.org/history/ech/agc_schematics/index.htm"&gt;ancient machines&lt;/a&gt; took us to the &lt;a href="http://en.wikipedia.org/wiki/Apollo_11"&gt;moon 40 years ago today&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-5535492057319910289?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/5535492057319910289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=5535492057319910289' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5535492057319910289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5535492057319910289'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/07/retro-computer-hardware.html' title='Retro computer hardware...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-1044371609521720228</id><published>2009-07-17T10:34:00.000-07:00</published><updated>2009-07-17T10:54:06.919-07:00</updated><title type='text'>In the Beginning...</title><content type='html'>it wasn't the &lt;a href="http://en.wikipedia.org/wiki/In_The_Beginning_Was_The_Command_Line"&gt;command line&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The actual beginning was hardwired logic circuits.&lt;br /&gt;&lt;br /&gt;Then came machine code.&lt;br /&gt;&lt;br /&gt;Then came Assembly language.  That's far enough back for me...&lt;br /&gt;&lt;br /&gt;So, you want to program your little &lt;a href="http://personallyinteresting.blogspot.com/2008/11/what-is-computer.html"&gt;toy&lt;/a&gt;?  I've seen lots of programms think that &lt;a href="http://en.wikipedia.org/wiki/Java_%28software_platform%29"&gt;Java&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/C%2B%2B"&gt;C++&lt;/a&gt; or &amp;ltinsert language of the week here&amp;gt &lt;strong&gt;MUST&lt;/strong&gt; be the way to do it.&lt;br /&gt;&lt;br /&gt;But all of these systems assume lots of system overhead is available.  That isn't true for small systems.  That's why languages like C and Assembly are the standard in microprocessors.&lt;br /&gt;&lt;br /&gt;"But I can do more with &amp;ltFOO&amp;gt!"  Nope... when all is said and done, everything compiles down the instruction set of the target processor.  That's all it can ever be.&lt;br /&gt;&lt;br /&gt;While some languages make it easier to do particular things, they cannot make the processor do things that another language cannot.&lt;br /&gt;&lt;br /&gt;This brings us to &lt;a href="http://en.wikipedia.org/wiki/Assembly_language"&gt;Assembly&lt;/a&gt;.  Anything that can be done in any language can be done in assembly.  No compiler, however smart, can make things more efficient than a good assembly language programmer.&lt;br /&gt;&lt;br /&gt;And, if you understand assembly for the target processor, you know what the hardware is and is not capable of.  Which means that, even if you use a high level language (and whether or not C counts is a matter of debate), you can write better code because you know how your code is going to map onto the target processor.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, go to someplace like &lt;a href="http://webster.cs.ucr.edu/"&gt;Webster&lt;/a&gt; and find out what a compter is actually capable of.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-1044371609521720228?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/1044371609521720228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=1044371609521720228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1044371609521720228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1044371609521720228'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/07/in-beginning.html' title='In the Beginning...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-209861191842667357</id><published>2009-07-14T14:03:00.000-07:00</published><updated>2009-07-14T14:08:02.703-07:00</updated><title type='text'>ET Phone home...</title><content type='html'>or at least Mike S.&lt;br /&gt;&lt;br /&gt;He actually ran across my &lt;a href="http://www.datapackrat.com/"&gt;datapackrat&lt;/a&gt; website while doing a search on Wendin.  And that led him to this blog.&lt;br /&gt;&lt;br /&gt;He emailed me (at the datapackrat address), but never replied to my response.&lt;br /&gt;&lt;br /&gt;Mike, if you're still out there, feel free to email me about old software.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-209861191842667357?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/209861191842667357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=209861191842667357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/209861191842667357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/209861191842667357'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/07/et-phone-home.html' title='ET Phone home...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-7941706173518032152</id><published>2009-07-08T13:33:00.000-07:00</published><updated>2009-07-08T13:48:13.585-07:00</updated><title type='text'>Get them while they're hot...</title><content type='html'>Since Geocities is &lt;a href="http://personallyinteresting.blogspot.com/2009/06/bye-bye-goecities.html"&gt;going away&lt;/a&gt;, I'm going to post all my Geocities links so you can browse them (and maybe archive them) before they are gone.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.geocities.com/rjkuhn_2000/"&gt;R. J. Kunh&lt;/a&gt; has a site for robot enthusiasts, with microcontroller hardware and software links.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.geocities.com/ted_rossin/index.html"&gt;Ted Rossin&lt;/a&gt; has an &lt;a href="http://www.geocities.com/ted_rossin/Electronics/Electronics.html"&gt;electronics&lt;/a&gt; page for PIC microcontrollers, Z8 microcontrollers, and more.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.geocities.com/SiliconValley/Lakes/7156/home.htm"&gt;GKDesign&lt;/a&gt; has a homepage, with plans for a &lt;a href="http://www.geocities.com/SiliconValley/Lakes/7156/articl3.htm"&gt;solid state oscilloscope&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I did have some more, but checking them out I find that they also have independent pages (or, at least, independent DNS).  &lt;a href="http://www.riccibitti.com/index.html"&gt;Ricci Bitti&lt;/a&gt; does electronics, including a &lt;a href="http://www.riccibitti.com/dvm.htm"&gt;video DVM&lt;/a&gt;.  Jason Shayer has moved his 80's Marvel Comics page to a &lt;a href="http://marvel1980s.blogspot.com/"&gt;blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-7941706173518032152?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/7941706173518032152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=7941706173518032152' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7941706173518032152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7941706173518032152'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/07/get-them-while-theyre-hot.html' title='Get them while they&apos;re hot...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-3681868768941998976</id><published>2009-07-06T13:24:00.000-07:00</published><updated>2009-07-06T13:32:54.351-07:00</updated><title type='text'>The joy of spending...</title><content type='html'>Time is money.  So is money...&lt;br /&gt;&lt;br /&gt;It may sound weird, but with the bad economy interest rates took a steep plunge.&lt;br /&gt;&lt;br /&gt;Since my wife and I needed some work on the house (heating and air conditioning, the AC died completely last fall), we decided to refinance at a low rate and take money out to do stuff.&lt;br /&gt;&lt;br /&gt;This works because you basically reset the 30 years (or whatever period you had) of your mortage back to 0.  With a lower interest rate and a lower principle, you get a lower monthly payment.  If you do it right...&lt;br /&gt;&lt;br /&gt;So, HVAC has been installed.  And since (my wife claims) we aren't going to do this again anytime soon (I want to say 20 years...), we're doing a lot of projects around the house.  Some electrical work.  New driveway.  Refinish floors.  New furniture.  Plumbing improvements.  More.&lt;br /&gt;&lt;br /&gt;This is a lot of stuff.  And some of it (like floors and furniture) means that we have to have &lt;b&gt;EVERYTHING&lt;/b&gt; out of the room(s).  So, we're about half moving out of the house to do this.  Much fun.&lt;br /&gt;&lt;br /&gt;And I don't even want to start thinking about what we have to do with the cats when they need to start working on the floors...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-3681868768941998976?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/3681868768941998976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=3681868768941998976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3681868768941998976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3681868768941998976'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/07/joy-of-spending.html' title='The joy of spending...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-4992952645937933548</id><published>2009-06-26T11:47:00.001-07:00</published><updated>2009-06-26T11:53:48.916-07:00</updated><title type='text'>Bye, bye, Goecities...</title><content type='html'>I've heard that &lt;a href="http://www.geocities.com/"&gt;Geocities&lt;/a&gt; is going away.  &lt;br /&gt;&lt;br /&gt;I've mentioned &lt;a href="http://personallyinteresting.blogspot.com/2009/03/vanishing-applications.html"&gt;before&lt;/a&gt; about how history can just vanish on the web.  At least this time, we get some warning.&lt;br /&gt;&lt;br /&gt;If you have any links to Geocities accounts, this is a warning to start &lt;a href="http://personallyinteresting.blogspot.com/2009/01/smoke-and-mirrors.html"&gt;mirroring&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-4992952645937933548?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/4992952645937933548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=4992952645937933548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/4992952645937933548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/4992952645937933548'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/06/bye-bye-goecities.html' title='Bye, bye, Goecities...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2414943751505720659</id><published>2009-06-22T10:47:00.000-07:00</published><updated>2009-06-22T10:56:06.756-07:00</updated><title type='text'>Out of town...</title><content type='html'>I'm going to be in Chicago for the next few days, attending the &lt;a href="http://www.npe.org/"&gt;NPE&lt;/a&gt; trade show.&lt;br /&gt;&lt;br /&gt;In the meantime, relax, have fun, and maybe even enjoy a movie.&lt;br /&gt;&lt;br /&gt;Not sure what to watch?  Well, &lt;a href="http://www.the-numbers.com/"&gt;the numbers&lt;/a&gt; (no, not the &lt;a href="http://abc.go.com/primetime/lost/"&gt;Lost&lt;/a&gt; &lt;a href="http://lostpedia.wikia.com/wiki/The_Numbers"&gt;numbers&lt;/a&gt;...) can give you lots to think about.&lt;br /&gt;&lt;br /&gt;It will tell you about what's currently showing or new on DVD.&lt;br /&gt;&lt;br /&gt;And check out "&lt;a href="http://www.the-numbers.com/movies/"&gt;Movie archives&lt;/a&gt;" under "The movies".  You can see what the top movies were in years gone by, and what movies where released in what years.  That ought to help you find something to watch.&lt;br /&gt;&lt;br /&gt;And check out the DVD release archives, too, for what might be available at your local video store.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2414943751505720659?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2414943751505720659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2414943751505720659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2414943751505720659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2414943751505720659'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/06/out-of-town.html' title='Out of town...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8649719354546339040</id><published>2009-06-17T13:18:00.000-07:00</published><updated>2009-06-17T13:25:19.560-07:00</updated><title type='text'>BOOM!</title><content type='html'>The wife and I just came back from a little weekend vacation in Montreal, Quebec.&lt;br /&gt;&lt;br /&gt;Among other things, we saw&lt;br /&gt;   The &lt;a href="http://www.festivaleureka.ca/en/"&gt;Eureka Festival&lt;/a&gt;, put on by the Montreal science museum.&lt;br /&gt;&lt;br /&gt;   The opening of the &lt;a href="http://www.internationaldesfeuxloto-quebec.com/EN/"&gt;Montreal fireworks festival&lt;/a&gt; (BOOM).&lt;br /&gt;&lt;br /&gt;   The &lt;a href="http://www.cirquedusoleil.com/en/"&gt;Cirque du Soleil&lt;/a&gt; show &lt;a href="http://www.cirquedusoleil.com/en/shows/ovo/default.aspx"&gt;Ovo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pretty good.&lt;br /&gt;&lt;br /&gt;And we'll be going back in August for &lt;a href="http://www.anticipationsf.ca/English/Home"&gt;Anticipation&lt;/a&gt;, the 2009 world science fiction convention.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8649719354546339040?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8649719354546339040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8649719354546339040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8649719354546339040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8649719354546339040'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/06/boom.html' title='BOOM!'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-1412495979836510363</id><published>2009-06-11T13:29:00.000-07:00</published><updated>2009-06-11T13:46:00.107-07:00</updated><title type='text'>End of an era...</title><content type='html'>Analog TV (in the US, at least) ends tomorrow (June 12th).&lt;br /&gt;&lt;br /&gt;While missing "&lt;a href="http://www.imdb.com/title/tt0077053/"&gt;Mork and Mindy&lt;/a&gt;" might be a tragedy for some, I'm going to morn it because of what is being lost in the microcontroller world.&lt;br /&gt;&lt;br /&gt;Yup.  Analog TV and microcontrollers.&lt;br /&gt;&lt;br /&gt;As these little processors have been getting more powerful and faster, they have ventured into the realm of generating TV signals.&lt;br /&gt;&lt;br /&gt;Check out PIC-PONG and PIC-TETRIS at Rickard Gunee's &lt;a href="http://www.rickard.gunee.com/projects/"&gt;website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Or maybe you'd like an &lt;a href="http://www.dos4ever.com/uscope/uscope_e.html"&gt;oscilloscope&lt;/a&gt; (ok, that's PAL, a european TV standard, not the NTSC of US TV.  But it would not be hard to make a NTSC version)?&lt;br /&gt;&lt;br /&gt;And check out Jen's &lt;a href="http://www.cashimor.com/old/jen/PIC/tv.html"&gt;page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This was even taught at &lt;a href="http://instruct1.cit.cornell.edu/courses/ee476/video/"&gt;universities&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can still do microcontroller video with a &lt;a href="http://www.crystalfontz.com/index.html"&gt;LCD screen&lt;/a&gt;, but that takes more hardware (and, important to a hobbyist, more money).  Output to a TV was cheap, easy, and everyone had access to one...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-1412495979836510363?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/1412495979836510363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=1412495979836510363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1412495979836510363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1412495979836510363'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/06/end-of-era.html' title='End of an era...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-222247036419491469</id><published>2009-06-08T13:09:00.000-07:00</published><updated>2009-06-08T13:29:02.490-07:00</updated><title type='text'>Apple disappointment...</title><content type='html'>&lt;a href="http://apple20.blogs.fortune.cnn.com/2009/06/08/live-from-apples-wwdc-2009/"&gt;WWDC&lt;/a&gt; is today.  I've been looking at the "live blogs" occasionally.&lt;br /&gt;&lt;br /&gt;I'm not an apple fanboy.  I don't own any apple hardware.  The software I use daily, and the software and development tools I've used for decades will not run on apple machines (not counting emulation).&lt;br /&gt;&lt;br /&gt;But, I am jonesing for one thing in particular.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.apple.com/ipodtouch/"&gt;touch&lt;/a&gt; is a really nice true portable video player (the cheap "&lt;a href="http://en.wikipedia.org/wiki/Chinese_MP4/MTV_Player"&gt;MP4&lt;/a&gt;" players don't actually do &lt;a href="http://en.wikipedia.org/wiki/MPEG-4_Part_14"&gt;MP4&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;But, being the sort of person I am (and looking at a couple of 8+ hour flights and other assorted "downtime" situations), I'd like to be able to bring lots of video.  And a few games wouldn't hurt.&lt;br /&gt;&lt;br /&gt;I would really love a higher resolution screen (480 x 320 is about 1/2 the resolution of a "standard" TV picture).  While the small size helps make up for some of the problem (you can't see details that small), it's still going to throw away lots of detail.  But not even the new iPhone (the 3GS) has that.&lt;br /&gt;&lt;br /&gt;And more processing power means better frame rates.&lt;br /&gt;&lt;br /&gt;Also, the touch tops out at twice the storage of the iPhone.  That would mean 64GB, so I can bring more than one set of video.  If it turns out I don't like something (or just want a change), I can try something else.&lt;br /&gt;&lt;br /&gt;It will probably come.  Almost certainly before my long flights.  But why make me wait?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-222247036419491469?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/222247036419491469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=222247036419491469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/222247036419491469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/222247036419491469'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/06/apple-disappointment.html' title='Apple disappointment...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-7985807380617104753</id><published>2009-06-03T14:06:00.000-07:00</published><updated>2009-06-03T14:10:28.597-07:00</updated><title type='text'>Some amazing photographs...</title><content type='html'>&lt;a href="http://simplethinking.com/home/rapatronic_photographs.htm"&gt;Rapatronic photos&lt;/a&gt; are pictures taken of nuclear explosions.&lt;br /&gt;&lt;br /&gt;With a duration on the order of 10 microseconds, taken in the first few milliseconds of an explosion, they are quite amazing and beautiful.&lt;br /&gt;&lt;br /&gt;I just don't want to be near one when it's being done...&lt;br /&gt;&lt;br /&gt;Check out more pictures &lt;a href="http://www.damninteresting.com/?p=456"&gt;here&lt;/a&gt; and &lt;a href="http://www.vce.com/Rapatronic/rapa.html"&gt;here&lt;/a&gt;, too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-7985807380617104753?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/7985807380617104753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=7985807380617104753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7985807380617104753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7985807380617104753'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/06/some-amazing-photographs.html' title='Some amazing photographs...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8595839160800232941</id><published>2009-05-26T13:11:00.000-07:00</published><updated>2009-05-26T13:28:55.983-07:00</updated><title type='text'>People are slime...</title><content type='html'>or another word starting with 's'.&lt;br /&gt;&lt;br /&gt;I was hoping to write a really different blog today, but reality got in the way.&lt;br /&gt;&lt;br /&gt;A couple of weeks ago, my wife and I took in a stray cat from the streets that a friend told us about -- a pregnant female.  She was called "Mona", because her meow sounded like she was moaning.&lt;br /&gt;&lt;br /&gt;The next day we got her to the vet.  Nope not pregnant.  Not even close.  "Mona" was a neutered boy...&lt;br /&gt;&lt;br /&gt;Cleaned up, dewormed, treated for fleas, "Mona" was now "Moe."  And we took him out for his first "cat pimping" outing.  At Petsmart, he looked pretty in the playpen and was active.  One couple almost adopted him, but he lost out to a snowshoe siamese lap cat.&lt;br /&gt;&lt;br /&gt;The next weekend, I was doing other things, and didn't take the foster babies out.&lt;br /&gt;&lt;br /&gt;Then, last Tuesday, a woman looking through at the &lt;a href="http://www.petfinder.com/shelters/straycatblues.html"&gt;Stray Cat Blues&lt;/a&gt; website sent an email, saying that she was almost certain that Moe was her lost cat, Bentley.  And her 4 year old daughter missed her cat.&lt;br /&gt;&lt;br /&gt;I sent her more pictures.  We made arrangements that I would bring Moe to Petsmart on Saturday, and she would come and positively identify Moe.&lt;br /&gt;&lt;br /&gt;On Saturday, I was eager and waiting.  But, an hour after she said she would be there, nothing yet.  Call and leave voicemail (including phone number).  Wait more hours.  Try calling again (went to voicemail, but leaving 1 was enough).  After a full day there, Moe was going home with me, and nobody had stopped in to see if Moe was their lost cat.&lt;br /&gt;&lt;br /&gt;It's now Tuesday.  Still no email or phone.  If I thought I had found a lost cat, especially one that was a 4 year old daughters pet, I would make damned sure that I checked it out.  And if I looked closely at the pictures and decided that this really wasn't the cat, I would at least let the people know that.&lt;br /&gt;&lt;br /&gt;As part of cat rescue, we've seen just about everything, including cats thrown out a 4th story window.  This is minor in comparison.&lt;br /&gt;&lt;br /&gt;People are slime...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8595839160800232941?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8595839160800232941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8595839160800232941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8595839160800232941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8595839160800232941'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/05/people-are-slime.html' title='People are slime...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-1442316800586159076</id><published>2009-05-20T13:26:00.000-07:00</published><updated>2009-05-20T13:32:04.932-07:00</updated><title type='text'>Ever want to take a picture...</title><content type='html'>...and all you have is a piece of paper and a roll of film?&lt;br /&gt;&lt;br /&gt;No, me neither...&lt;br /&gt;&lt;br /&gt;But, it can be done.&lt;br /&gt;&lt;br /&gt;It's called a &lt;a href="http://en.wikipedia.org/wiki/Pinhole_camera"&gt;pinhole camera&lt;/a&gt;.  If you trace the rays coming from a distant object through a tiny hole into a box, you see that the object is focused.  If you put a piece of film inside the box, it will be exposed.&lt;br /&gt;&lt;br /&gt;So, try it.  You can make a mock 35mm camera with the instructions &lt;a href="http://www.pinhole.cz/en/pinholecameras/dirkon_01.html"&gt;here&lt;/a&gt;.  And check out the rest of the page, too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-1442316800586159076?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/1442316800586159076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=1442316800586159076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1442316800586159076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1442316800586159076'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/05/ever-want-to-take-picture.html' title='Ever want to take a picture...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2482305838562627161</id><published>2009-05-18T13:20:00.000-07:00</published><updated>2009-05-18T19:38:35.594-07:00</updated><title type='text'>Computational Search Engine Fail...</title><content type='html'>&lt;a href="http://www.wolframalpha.com/"&gt;Wolfram Alpha&lt;/a&gt; launches &lt;a href="http://www.wolframalpha.com/input/?i=May+18+2009"&gt;today&lt;/a&gt;.  It's supposed to be an "intelligent" search engine that can pull together information to answer your questions, not just provide websites that match your keywords.&lt;br /&gt;&lt;br /&gt;But, being a good little geek (and with a little nod to &lt;a href="http://abstrusegoose.com/149"&gt;Abstrusegoose&lt;/a&gt;), I though I would try to break it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wolframalpha.com/input/?i=best+star+trek+captain"&gt;Best Star Trek Captain&lt;/a&gt;&lt;br /&gt;fails miserably.  It doesn't know what to make of the question.&lt;br /&gt;&lt;br /&gt;OK, let's try something simpler&lt;br /&gt;&lt;a href="http://www.wolframalpha.com/input/?i=is+angelina+jolie+hot"&gt;Is Angelina Jolie Hot&lt;/a&gt;.&lt;br /&gt;Nope, still nothing.&lt;br /&gt;&lt;br /&gt;But, humor aside, it doesn't work as a "search engine".  Try searching on  "c compiler" and it has no idea what to do.&lt;br /&gt;&lt;br /&gt;But, if I enter "23.34 * 1.27" into google, it does know what to do with it.&lt;br /&gt;&lt;br /&gt;Nice idea, but chances are I'd type any question into google first, since between it's built in calculator and billions of web page indices the answer is probably already out there.  And it won't tell me it doesn't understand the question.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2482305838562627161?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2482305838562627161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2482305838562627161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2482305838562627161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2482305838562627161'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/05/computational-search-engine-fail.html' title='Computational Search Engine Fail...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-9185262063851009374</id><published>2009-05-15T13:13:00.000-07:00</published><updated>2009-05-15T13:18:05.163-07:00</updated><title type='text'>I feel like being a geek...</title><content type='html'>Actually, I feel like taking a sledge hammer to the prototype board, and deleting with extreme vengence all the source code, including the network backups.&lt;br /&gt;&lt;br /&gt;But, that probably isn't a good idea in this job market...&lt;br /&gt;&lt;br /&gt;So, instead I think I'll go watch Star Wars.&lt;br /&gt;&lt;br /&gt;In glorious ASCII.&lt;br /&gt;&lt;br /&gt;Yup.  I'm not insane (well, no more than usual).&lt;br /&gt;&lt;br /&gt;Make a big bowl of popcorn, fire up your computer, and telnet to towel.blinkenlights.nl and watch the show...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-9185262063851009374?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/9185262063851009374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=9185262063851009374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/9185262063851009374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/9185262063851009374'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/05/i-feel-like-being-geek.html' title='I feel like being a geek...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2165691839242359936</id><published>2009-05-08T13:26:00.000-07:00</published><updated>2009-05-08T13:44:06.306-07:00</updated><title type='text'>Fanboy time...</title><content type='html'>OK, despite being busy, I found time last night (May 7, 2009) to catch an IMAX showing of the new "Star Trek" movie with my wife.&lt;br /&gt;&lt;br /&gt;We both liked it.&lt;br /&gt;&lt;br /&gt;But, despite that, it's not an EXCELLENT movie.&lt;br /&gt;&lt;br /&gt;This movie tried to do several things at once:&lt;br /&gt;&lt;blockquote&gt;* Introduce us to the start of the USS Enterprise saga&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;* Give us fresh young actors in place of our aging heroes&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;* Reboot the franchise in a way that will not cause the continuity freaks to have kittens&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;* Be a "summer blockbuster" to bring in more than just the trekkies&lt;br /&gt;(or trekkers...)&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;* Be "Star Trek"&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That's a tall order.  They seemed to do this by throwing plot to the wind (the first half actually seems to follow a plot.  This did not carry through into the second half).&lt;br /&gt;&lt;br /&gt;They also tried to "compress" the evolution of the characters into one movie, so that everything that comes after this is back to the Star Trek universe we all know.  This results in weird stuff like a "about-to-be-kicked-out-for-cheating" cadet somehow winding up captain of a starship in the space of a couple of days...&lt;br /&gt;&lt;br /&gt;Physical reality was thrown out the window (even more than the original 60's TV series) to make for better eye candy.&lt;br /&gt;&lt;br /&gt;On the other hand, the writers have a great knowledge of Star Trek and the characters, and showed us their love of the universe (mostly... Chekov was way too far over the top...).  There were cheers in the audience when lines were spoken ("I'm a doctor, not a physicist...", for example).  The casting was damned near perfect, and kudos to &lt;a href="http://www.imdb.com/name/nm0339304/"&gt;Bruce Greenwood&lt;/a&gt; for a Captain Christopher Pike that brought a maturity and sense of purpose to a noisy, busy film.&lt;br /&gt;&lt;br /&gt;So, my recommendation:  See the movie on the big screen.  You'll love the visuals.  And the actors.&lt;br /&gt;&lt;br /&gt;And hope the next installment brings in some of the thoughtfulness and philosophy of the original series.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2165691839242359936?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2165691839242359936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2165691839242359936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2165691839242359936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2165691839242359936'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/05/fanboy-time.html' title='Fanboy time...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-1249482173461707400</id><published>2009-04-30T13:44:00.000-07:00</published><updated>2009-04-30T13:52:04.394-07:00</updated><title type='text'>Work, Work, Work...</title><content type='html'>Strange, but the recession hits different people in different ways.&lt;br /&gt;&lt;br /&gt;I write &lt;a href="http://personallyinteresting.blogspot.com/2008/11/what-is-embedded.html"&gt;embedded&lt;/a&gt; code for a living, industrial temperature controllers and similiar things.  We also provide &lt;a href="http://en.wikipedia.org/wiki/Original_equipment_manufacturer"&gt;OEM&lt;/a&gt; controllers for a number of industrial equipment manufacturers.&lt;br /&gt;&lt;br /&gt;Sales are down.  Our customers sales are down.  But software development is so busy we've had to hire a contract programmer.&lt;br /&gt;&lt;br /&gt;Why?  Our customers (particularly the people we do OEM controllers for) are hoping that introducing new products will increase their sales.  Especially with a big trade show just around the corner (&lt;a href="http://www.npe.org/"&gt;NPE&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;That, combined with a couple of extra &lt;a href="http://personallyinteresting.blogspot.com/2008/11/interruptions.html"&gt;foster cats&lt;/a&gt;, and I don't have time to relax anymore...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-1249482173461707400?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/1249482173461707400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=1249482173461707400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1249482173461707400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1249482173461707400'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/04/work-work-work.html' title='Work, Work, Work...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-4760461133380103365</id><published>2009-04-24T13:42:00.000-07:00</published><updated>2009-04-24T13:59:42.924-07:00</updated><title type='text'>Computer archeology...</title><content type='html'>(Doing this quickly, forgive me for lack of links...)&lt;br /&gt;&lt;br /&gt;Long ago, there was a company called Wendin, that made some DOS shells with VMS and UNIX flavors (called PCVMS and PCNX) (and, if you really look deeply, there was the XTC editor, too).&lt;br /&gt;&lt;br /&gt;They also, later, made an Operating System Toolbox (roughly VMS flavored, as I remember) which was intended as the basis of a "roll-your-own" IBM PC operating system.&lt;br /&gt;&lt;br /&gt;They then built a DOS clone with the OST, but with multiuser / multitasking support.  This was called Wendin DOS.&lt;br /&gt;&lt;br /&gt;To help launch this, they had a debugging contest.  Buy the "beta" version for a fairly nominal fee, and whoever finds the most bugs wins $500.00.&lt;br /&gt;&lt;br /&gt;I won.  Since I did assembly language for my anti-virus work and had written my own 8086 machine code interpreter, I went through the DOS functions and COMMAND functions systematically with example programs and found lots of things that didn't work.&lt;br /&gt;&lt;br /&gt;Later, there was internal strife in Wendin (father owned the company, sons worked for him).  The developers left.&lt;br /&gt;&lt;br /&gt;Since I was so good at debugging Wendin DOS, I got hired to keep working on it.&lt;br /&gt;&lt;br /&gt;I think I did an OK job, but some of the stuff was beyond me (at that time).&lt;br /&gt;&lt;br /&gt;What does this have to do with computer archeology?&lt;br /&gt;&lt;br /&gt;Well, as I mentioned &lt;a href="http://personallyinteresting.blogspot.com/2009/01/piles-of-bits.html"&gt;before&lt;/a&gt;, I'm archiving my floppies.&lt;br /&gt;&lt;br /&gt;And I found the source code to Wendin DOS.&lt;br /&gt;&lt;br /&gt;It's an older version.  Since I didn't write the disk label, I think this is the source code provided to me when I started the job.&lt;br /&gt;&lt;br /&gt;Maybe I'll find my development directory in my piles of bits.  Maybe not.&lt;br /&gt;&lt;br /&gt;But at least this part of computer history (and, yes, it's a minor part) has not been lost.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-4760461133380103365?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/4760461133380103365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=4760461133380103365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/4760461133380103365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/4760461133380103365'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/04/computer-archeology.html' title='Computer archeology...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2609239092224238276</id><published>2009-04-17T13:10:00.000-07:00</published><updated>2009-04-17T13:18:48.419-07:00</updated><title type='text'>Encyclopedic knowledge...</title><content type='html'>of cartoons.&lt;br /&gt;&lt;br /&gt;Check out &lt;a href="http://www.toonopedia.com/"&gt;Toonopedia&lt;/a&gt;, the Cartoon encyclopedia.&lt;br /&gt;&lt;br /&gt;While not encyclopedic in it's depth, it will still keep you busy for hours / days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2609239092224238276?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2609239092224238276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2609239092224238276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2609239092224238276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2609239092224238276'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/04/encyclopedic-knowledge.html' title='Encyclopedic knowledge...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-5115339015142836766</id><published>2009-04-15T13:35:00.000-07:00</published><updated>2009-04-15T13:56:04.075-07:00</updated><title type='text'>Technology catches up with history...</title><content type='html'>OK, I'm back.  Sorry I got busy for a few days.&lt;br /&gt;&lt;br /&gt;As I've mentioned &lt;a href="http://personallyinteresting.blogspot.com/2009/01/in-beginning.html"&gt;before&lt;/a&gt;, I started computers when you connected a terminal to the computer, typed in your program, saved it, and then ran it (and hope it worked...)&lt;br /&gt;&lt;br /&gt;However, back then, the computer you connected to was "&lt;a href="http://en.wikipedia.org/wiki/Big_iron"&gt;big iron&lt;/a&gt;", an expensive mainframe that was shared among many users to save on costs.&lt;br /&gt;&lt;br /&gt;However, things have gotten smaller, cheaper, and faster.  You can have the same experience today with a &lt;a href="http://en.wikipedia.org/wiki/Microcontroller"&gt;microcontroller&lt;/a&gt; and telnet (or hyperterminal).&lt;br /&gt;&lt;br /&gt;Yup... you can take your cheap little microcontroller and run it as an interactive, programmable system like an early mainframe.  Only 1 user, but you were only 1 user when you used the mainframe, too...&lt;br /&gt;&lt;br /&gt;Check out &lt;a href="http://www.cpustick.com/index.htm"&gt;StickOS&lt;/a&gt; for an embedded programming host that runs on multiple CPU types, and &lt;a href="http://www.picputer.com/"&gt;PicPuter&lt;/a&gt; for a system that runs on a PIC16F877.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-5115339015142836766?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/5115339015142836766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=5115339015142836766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5115339015142836766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5115339015142836766'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/04/technology-catches-up-with-history.html' title='Technology catches up with history...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2192353524304733230</id><published>2009-04-06T12:40:00.001-07:00</published><updated>2009-04-06T12:44:35.525-07:00</updated><title type='text'>Movie Overload, epilogue...</title><content type='html'>Don't have a lot of time today, so I'll be brief.&lt;br /&gt;&lt;br /&gt;One of the shorts in "Hardcore Heroes and Heroines" at the &lt;a href="http://www.phillycinefest.com/"&gt;Philadelphia Film Festival&lt;/a&gt; was entitiled "Rx/OTC" and part of it's desciption was "Brace yourselves -- there are some things worse than death."&lt;br /&gt;&lt;br /&gt;I agree.&lt;br /&gt;&lt;br /&gt;Watching this was worse than death.&lt;br /&gt;&lt;br /&gt;I had to control myself to keep from shouting out "Can we get this piece of crap off the screen?"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2192353524304733230?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2192353524304733230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2192353524304733230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2192353524304733230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2192353524304733230'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/04/movie-overload-epilogue.html' title='Movie Overload, epilogue...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2703279770627917530</id><published>2009-04-03T12:26:00.000-07:00</published><updated>2009-04-03T12:48:37.164-07:00</updated><title type='text'>Movie Overload 3...</title><content type='html'>Another day, another movie.  Just one this time (Thursday was a day of rest.  Getting to bed before 1am is definately underrated...)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt1077084/"&gt;God's Forgotten Town&lt;/a&gt; is a Spanish Horror/Thriller that's a dash of &lt;a href="http://www.imdb.com/title/tt0106179/"&gt;X-Files&lt;/a&gt; and &lt;a href="http://www.imdb.com/title/tt0082971/"&gt;Raiders of the Lost Arc&lt;/a&gt; in a cozy setting.  A decent movie, and better pacing than other movies I've seen in this film festival.&lt;br /&gt;&lt;br /&gt;This weekend, however, is going to be busy.&lt;br /&gt;&lt;br /&gt;On Friday, my wife and I are seeing (after work) &lt;a href="http://www.imdb.com/title/tt1172203/"&gt;Sita Sings The Blues&lt;/a&gt; (an animated Indian myth) back to back with &lt;a href="http://www.imdb.com/title/tt0113429/"&gt;Institute Benjamenta&lt;/a&gt; (weird as only the Quay brothers can do it).  Another late night...&lt;br /&gt;&lt;br /&gt;Saturday brings us A &lt;a href="http://www.imdb.com/name/nm0703028/"&gt;Quay&lt;/a&gt; &lt;a href="http://www.imdb.com/name/nm0703029/"&gt;Brothers&lt;/a&gt; Sampler (some of their short films) and &lt;a href="http://www.imdb.com/title/tt0409345/"&gt;Surveillance&lt;/a&gt; (FBI agents try to reconcile accounts of a serial killer).&lt;br /&gt;&lt;br /&gt;Sunday is loaded with Straight for the Kill (a series of horror shorts), Hardcore Heroes and Heroines (a series of shorts, not for children or the squeemish), and &lt;a href="http://www.imdb.com/title/tt1278293/"&gt;9 to 5: Days in Porn&lt;/a&gt; (a documentary about being a porn actor as a job) -- all 3 back-to-back.&lt;br /&gt;&lt;br /&gt;Wee...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2703279770627917530?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2703279770627917530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2703279770627917530' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2703279770627917530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2703279770627917530'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/04/movie-overload-3.html' title='Movie Overload 3...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2990156535433062961</id><published>2009-04-01T13:06:00.000-07:00</published><updated>2009-04-01T13:27:25.800-07:00</updated><title type='text'>Movie Overload 2...</title><content type='html'>Two more days, two more movies (for me... my wife has been busier than I've been).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt1190539/"&gt;The Chaser&lt;/a&gt;, a Korean action movie, was pretty good.  It might have been tightened up a bit, but that would have resulted in almost continual action (the "boring" stuff gets cut...).  Definately not a US movie, they avoided the "happy ending" for one character that is pretty much manditory for a US movie.  However, the screenwriter does one thing that I'm finding more and more annoying every time I see it.&lt;br /&gt;&lt;br /&gt;When the "bad guy" is down in a fight, &lt;b&gt;FINISH THE JOB&lt;/b&gt; so that they do not get up again.  You don't put a rabid dog on the floor and turn your back on it. Anyone who ever did this in real life would &lt;b&gt;ONLY DO IT ONCE BEFORE THEY LEARNED&lt;/b&gt;, and for it to happen again and again in movies (even though everyone has seen movies where it happens) makes things annoying, not suspenseful.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt1077089/"&gt;The Magic Hour&lt;/a&gt; is a Japanese comedy, a US 1930's gangster movie set in modern day japan.  Yes, it sounds silly.  Yes, it is silly.  It might have been tightened up (they didn't need to make the same joke several times, even though it was always funny), but it was a a very funny movie and well worth seeing.&lt;br /&gt;&lt;br /&gt;My wife also saw 3 more movies.  A documentary (&lt;a href="http://www.imdb.com/title/tt1333631/"&gt;Art and Copy&lt;/a&gt;), a collecion of shorts about women (My Voice is My Sword) and an Italian drama (&lt;a href="http://www.imdb.com/title/tt1143140/"&gt;A Game for Girls&lt;/a&gt;), all of which she enjoyed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2990156535433062961?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2990156535433062961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2990156535433062961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2990156535433062961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2990156535433062961'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/04/movie-overload-2.html' title='Movie Overload 2...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8330611932978645082</id><published>2009-03-30T13:40:00.001-07:00</published><updated>2009-03-30T13:56:44.145-07:00</updated><title type='text'>Movie overload...</title><content type='html'>This week (well, actually starting on March 26 and going through April 6th) is the &lt;a href="http://www.phillycinefest.com/"&gt;Philadelphia Film Festival&lt;/a&gt;.  Time to overload on movies!&lt;br /&gt;&lt;br /&gt;So far, I've seen 5 movies (&lt;a href="http://www.imdb.com/title/tt1182345/"&gt;Moon&lt;/a&gt;,&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0902290/"&gt;I Sell the Dead&lt;/a&gt;, &lt;a href="http://www.imdb.com/title/tt0984155/"&gt;Before the Fall&lt;/a&gt;, &lt;a href="http://www.imdb.com/title/tt1155705/"&gt;20th Century Boys&lt;/a&gt;, and &lt;a href="http://www.imdb.com/title/tt1181920/"&gt;20th Century Boys Chapter Two&lt;/a&gt;), and my wife has seen 7 (the above, plus &lt;a href="http://www.imdb.com/title/tt0986233/"&gt;Hunger&lt;/a&gt; and &lt;a href="http://www.imdb.com/title/tt1171704/"&gt;The Other One&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;So far, we're actually a bit disappointed.  We would not have seen 20th Century Boys (and Chapter Two) if we had known that it is the start of a trilogy and the 3rd movie has not been released yet, and after seeing the first two I'm not sure it's worth the time to see the third (my wife definately thinks this).&lt;br /&gt;&lt;br /&gt;Moon was technically good with great visuals, but my opinion is that just because an idea is new to you doesn't mean that it's a new idea.&lt;br /&gt;&lt;br /&gt;I Sell the Dead was OK, and had a sense of humor about itself.&lt;br /&gt;&lt;br /&gt;Before the fall could not decide if it was an "end of the world" picture or a "psycho killer" picture.  I understand how these two ideas are supposed to play off each other in the movie, but it left things unfocused.  Grim and gritty, I liked it but my wife found it was so grim that she couldn't decide if she liked it or not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8330611932978645082?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8330611932978645082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8330611932978645082' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8330611932978645082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8330611932978645082'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/03/movie-overload.html' title='Movie overload...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-645905519977135587</id><published>2009-03-27T13:28:00.000-07:00</published><updated>2009-03-27T13:44:42.907-07:00</updated><title type='text'>Retro Old School Hardware</title><content type='html'>Back in "the day", computers were expensive.  So people worked hard to come up with cheap computers to experiment with.  Like the &lt;a href="http://www.cosmacelf.com/"&gt;COSMAC ELF&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Powered by an &lt;a href="http://en.wikipedia.org/wiki/RCA_1802"&gt;1802&lt;/a&gt; (still manufactured by &lt;a href="http://www.intersil.com"&gt;Intersil&lt;/a&gt;) (which, interestingly, was often used in spacecraft -- the large geometry and silicon on sapphire construction of the chip makes it relatively immune to radiation), the ELF&lt;br /&gt;used (in it's basic configuration) 7-segment LEDs and toggle switches for display and input.&lt;br /&gt;&lt;br /&gt;If you want to play with one, you can use a &lt;a href="http://www.elf-emulation.com/"&gt;simulator&lt;/a&gt; (there are &lt;a href="http://incolor.inetnebr.com/bill_r/computer_simulators.htm"&gt;several&lt;/a&gt; available), or even buy/build a modern &lt;a href="http://www.sparetimegizmos.com/Hardware/Elf2K.htm"&gt;ELF&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-645905519977135587?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/645905519977135587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=645905519977135587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/645905519977135587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/645905519977135587'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/03/retro-old-school-hardware.html' title='Retro Old School Hardware'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2416107348590426360</id><published>2009-03-25T13:57:00.000-07:00</published><updated>2009-03-25T14:09:38.554-07:00</updated><title type='text'>They don't make them like they used to...</title><content type='html'>...or do they?&lt;br /&gt;&lt;br /&gt;Movies, that is.&lt;br /&gt;&lt;br /&gt;Last night, my wife and I saw a preview of &lt;a href="http://www.imdb.com/title/tt1122836/"&gt;Alien Tresspass&lt;/a&gt;, which specifically tries to be a 1950's "&lt;a href="http://en.wikipedia.org/wiki/B_movie"&gt;B movie&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;They succeeded.&lt;br /&gt;&lt;br /&gt;It's a cute little movie.  It doesn't try to be anything more.  I've read that it's supposed to be a &lt;a href="http://www.colesmithey.com/capsules/2009/03/alien-trespass.html"&gt;spoof of a B movie&lt;/a&gt;, it's not.  It's an homage, that tries to bring back the matinee popcorn movie.&lt;br /&gt;&lt;br /&gt;Personally, I think they did a good job.&lt;br /&gt;&lt;br /&gt;The one thing that didn't work for me was the flying saucer in flight.  On the ground, the physical saucer was fine.  But the CGI of it flying was too good.  They needed to use a model so it was as cheap and cheezie (though obviously done on a 2008 budget) as the rest of the production.&lt;br /&gt;&lt;br /&gt;*** (out of 4)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2416107348590426360?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2416107348590426360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2416107348590426360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2416107348590426360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2416107348590426360'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/03/they-dont-make-them-like-they-used-to.html' title='They don&apos;t make them like they used to...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8251847660595642111</id><published>2009-03-23T13:26:00.000-07:00</published><updated>2009-03-23T13:32:26.656-07:00</updated><title type='text'>Watch the skies...</title><content type='html'>...but not for anything to worry about.&lt;br /&gt;&lt;br /&gt;Want to see what's (way) over your head?  Check out this real-time, 3-d projection of (some) &lt;a href="http://science.nasa.gov/Realtime/jtrack/3d/jtrack3d.html"&gt;satellites in orbit&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8251847660595642111?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8251847660595642111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8251847660595642111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8251847660595642111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8251847660595642111'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/03/watch-skies.html' title='Watch the skies...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8572523497804945554</id><published>2009-03-18T13:08:00.000-07:00</published><updated>2009-03-18T13:36:25.924-07:00</updated><title type='text'>Gone in a FLASH...</title><content type='html'>In my job, I work with &lt;a href="http://en.wikipedia.org/wiki/Microcontroller"&gt;microcontroller&lt;/a&gt; based &lt;a href="http://www.athenacontrols.com/"&gt;industrial controllers&lt;/a&gt;.  The products are increasing &lt;a href="http://en.wikipedia.org/wiki/Flash_memory"&gt;FLASH&lt;/a&gt; based program memory.&lt;br /&gt;&lt;br /&gt;This can be a bad thing.  People don't often think of it, but FLASH memory is not permanent storage (in fact, just about anything other than &lt;a href="http://en.wikipedia.org/wiki/Masked_ROM"&gt;MASKED ROM&lt;/a&gt; is not permanent storage, but I'm going to keep refering to FLASH as it is the most common storage these days).  That's why the startup code in the controllers contains a checksum routine.  If the checksum fails, we try to tell the user and don't run the controller.  That way, we will not do the wrong thing.&lt;br /&gt;&lt;br /&gt;The FLASH lifetime can vary from long to short (see &lt;a href="http://focus.ti.com/lit/an/slaa392/slaa392.pdf"&gt;this paper&lt;/a&gt; from Texas Insturments, page 5 figure 1.  While it is talking about a specific processor, it is similiar for all processors.)  About 100 years (at room temperature, 25C) is pretty good.  About 4.6 years (at max operating temperature, 70C) is not.  (Note that this is under one set of conditions.  Under a different set, the rention times are 1315 years and 61 years.  Much better, but will everyone, especially "cheap" parts, take the extra time/effort?)&lt;br /&gt;&lt;br /&gt;What that means is that, at some point, the product will fail, even though all the components are still "good."  What then?&lt;br /&gt;&lt;br /&gt;Well, if the manufacturer (us, or someone else) is still in business, they can be "repaired" by re-flashing them.  Providing that the code is still around...&lt;br /&gt;If the manufacturer is gone, so is the repair.  And no replacements, either.  Even a pre-purchased replacement could be useless, unless it was stored under cool conditions.&lt;br /&gt;&lt;br /&gt;And what does this mean for consumer electronics?  Well, take just one example:  computer motherboards.&lt;br /&gt;&lt;br /&gt;The BIOS on modern motherboards is FLASH based, not ROM based.  That is why it is field upgradeable.  But computers tend to run a bit warm.  So the FLASH retention lifetime is reduced.  And when the FLASH forgets, the BIOS and system bootability is gone.  You can't even re-flash it, there is no way to bring up the system to run the FLASH utility, and there is no on-board connector.&lt;br /&gt;&lt;br /&gt;So, as you look around your house or work, think of all the intelligent devices.  Your clock/radio.  Your DVD player.  Your toaster.  Your programmable thermostat.  Your kid's flashing sneakers.  All of them waiting to forget their function, and become useless even without any actual failure...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8572523497804945554?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8572523497804945554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8572523497804945554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8572523497804945554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8572523497804945554'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/03/gone-in-flash.html' title='Gone in a FLASH...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8515286087467750759</id><published>2009-03-16T13:14:00.000-07:00</published><updated>2009-03-16T13:18:53.678-07:00</updated><title type='text'>Retro hardware...</title><content type='html'>Along with &lt;a href="http://personallyinteresting.blogspot.com/2009/03/old-bits.html"&gt;old bits&lt;/a&gt;, one often needs hold hardware to use them.&lt;br /&gt;&lt;br /&gt;While &lt;a href="http://www.vmware.com/"&gt;VMware&lt;/a&gt; and &lt;a href="http://mamedev.org/"&gt;MAME&lt;/a&gt; can help, sometimes you really do need old hardware.  But old hardware can be hard to find, and even harder to find in working condition.&lt;br /&gt;&lt;br /&gt;Fortunately, some people are creating "new" old hardware.  Want to run an APPLE I?  &lt;a href="http://www.brielcomputers.com/"&gt;Briel Computers&lt;/a&gt; can let you do it....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8515286087467750759?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8515286087467750759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8515286087467750759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8515286087467750759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8515286087467750759'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/03/retro-hardware.html' title='Retro hardware...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8823112488822892134</id><published>2009-03-11T13:30:00.000-07:00</published><updated>2009-03-11T13:43:34.853-07:00</updated><title type='text'>Vanishing applications...</title><content type='html'>I've talked before about the &lt;a href="http://personallyinteresting.blogspot.com/2009/01/smoke-and-mirrors.html"&gt;weakness in the web&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's happened again.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microchip.com/"&gt;Microchip&lt;/a&gt;, the manufactures of PIC microcontrollers, has acquired &lt;a href="http://htsoft.com/"&gt;Hi-Tech Software&lt;/a&gt;, who used to produce, among other things a C compiler for PICs.  And a freeware compiler for DOS/Windows.  An &lt;a href="http://www.8052.com/"&gt;8051&lt;/a&gt; C compiler.  A &lt;a href="http://focus.ti.com/mcu/docs/mcuprodoverview.tsp?sectionId=95&amp;tabId=140&amp;familyId=342"&gt;TI MSP430&lt;/a&gt; compiler.  A &lt;a href="http://www.cypress.com/psoc2/?id=1353"&gt;Cypress PSOC&lt;/a&gt; compiler.&lt;br /&gt;&lt;br /&gt;But, it's not in Microchip's interest to support competing microcontrollers.&lt;br /&gt;&lt;br /&gt;So, all the compilers except for Microchip PIC C have vanished from their webstite.  They will support their customers until the end of their contract, but I would not expect much.  Nor can anyone download the trial version just to experiment with the chip.&lt;br /&gt;&lt;br /&gt;More software has vanished into the "&lt;a href="http://en.wikipedia.org/wiki/Bit_bucket"&gt;bit bucket&lt;/a&gt;..."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8823112488822892134?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8823112488822892134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8823112488822892134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8823112488822892134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8823112488822892134'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/03/vanishing-applications.html' title='Vanishing applications...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8535637195248349103</id><published>2009-03-09T13:40:00.000-07:00</published><updated>2009-03-09T13:50:21.965-07:00</updated><title type='text'>Old bits...</title><content type='html'>I've mentioned before that I save "&lt;a href="http://personallyinteresting.blogspot.com/2009/01/piles-of-bits.html"&gt;old bits&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;Why?  Well, a lot of hard work went into them by someone.  There is a lot of good software and wisdom encoded in them.&lt;br /&gt;&lt;br /&gt;And I'm not the only one.&lt;br /&gt;&lt;br /&gt;Back "in the day", the &lt;a href="http://en.wikipedia.org/wiki/Bulletin_board_system"&gt;BBS&lt;/a&gt; ruled the roost.  &lt;a href="http://en.wikipedia.org/wiki/Fidonet"&gt;Fidonet&lt;/a&gt; allowed the interchange of files between computers before the internet became easily accessable.&lt;br /&gt;&lt;br /&gt;And the BBS' had files.  Lots of them.  Some good, many bad, and all of them the apple of someone's eye.&lt;br /&gt;&lt;br /&gt;Fortunately, they are not all lost.  Places like &lt;a href="http://textfiles.com/"&gt;textfiles.com&lt;/a&gt; keep the old stuff alive.  And even archive the &lt;a href="http://cd.textfiles.com/"&gt;CD's full of files&lt;/a&gt; that were published in the 90's.&lt;br /&gt;&lt;br /&gt;Are they what you're looking for for your new PC?  Probably not.  But there is wisdom deep in the piles of bits...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8535637195248349103?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8535637195248349103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8535637195248349103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8535637195248349103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8535637195248349103'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/03/old-bits.html' title='Old bits...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-492160676203782919</id><published>2009-03-06T14:02:00.001-08:00</published><updated>2009-03-06T14:02:52.541-08:00</updated><title type='text'>Man and Superman...</title><content type='html'>The &lt;a href="http://www.imdb.com/title/tt0409459/"&gt;Watchmen&lt;/a&gt; movie is coming out.  I'm looking forward to it.&lt;br /&gt;&lt;br /&gt;There have been good comic book movies before, but if they did it right (and early reviews are good), this should be great.&lt;br /&gt;&lt;br /&gt;But the Watchmen are a far cry from the origin of the superhero.  Check out &lt;a href="http://xroads.virginia.edu/~UG02/yeung/actioncomics/cover.html"&gt;Action Comics #1&lt;/a&gt;, and then more early Superman &lt;a href="http://xroads.virginia.edu/~ug02/superman/"&gt;arcana&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And, while you are watching the movie, you may want to keep an eye out for some &lt;a href="http://www.mtv.com/news/articles/1606068/20090227/story.jhtml"&gt;easter eggs&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-492160676203782919?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/492160676203782919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=492160676203782919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/492160676203782919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/492160676203782919'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/03/man-and-superman.html' title='Man and Superman...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-4710810755453904119</id><published>2009-03-03T12:18:00.000-08:00</published><updated>2009-03-03T12:27:52.616-08:00</updated><title type='text'>Another Insane kitty...</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_jtzOtyECENw/Sa2SqPxkFaI/AAAAAAAAABk/xaKV_so_9hM/s1600-h/hocuspocus2.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_jtzOtyECENw/Sa2SqPxkFaI/AAAAAAAAABk/xaKV_so_9hM/s200/hocuspocus2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5309060790226261410" /&gt;&lt;/a&gt;&lt;br /&gt;You may remember &lt;a href="http://personallyinteresting.blogspot.com/2008/11/interruptions.html"&gt;insane kitty&lt;/a&gt; from before.  You might even remember that there were two insane cats, not just one.&lt;br /&gt;&lt;br /&gt;The sister of insane kitty is Hocus Pocus (so named because she had a habit of vanishing as a kitten).  She also had &lt;a href="http://en.wikipedia.org/wiki/Gingivitis"&gt;gingivitis&lt;/a&gt; problems, though not as bad.&lt;br /&gt;&lt;br /&gt;Well, she went to the vet yesterday, and is coming home today (since she needs to be tranquilized to be caught, she can't be given anesthetic when she comes in, so she needs to go a day early).  She has lost 4 teeth (poor baby), and so I'll be dealing with an insane kitty in a playpen.  Sigh...&lt;br /&gt;&lt;br /&gt;(Add this to the other &lt;a href="http://www.nivenspaws.com/jul102005/ashes01.jpg"&gt;two&lt;/a&gt; &lt;a href="http://www.nivenspaws.com/marmee/DSCN0950.JPG"&gt;cats&lt;/a&gt; that went to the vet yesterday for dental problems, and I'm the one feeling the pain...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-4710810755453904119?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/4710810755453904119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=4710810755453904119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/4710810755453904119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/4710810755453904119'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/03/another-insane-kitty.html' title='Another Insane kitty...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_jtzOtyECENw/Sa2SqPxkFaI/AAAAAAAAABk/xaKV_so_9hM/s72-c/hocuspocus2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-3361835032113415735</id><published>2009-02-27T13:22:00.000-08:00</published><updated>2009-02-27T13:29:48.994-08:00</updated><title type='text'>Compiler goodies, part 2...</title><content type='html'>The &lt;a href="http://www.desmet-c.com/"&gt;DeSmet C&lt;/a&gt; compiler uses a "hand-built" parser.&lt;br /&gt;&lt;br /&gt;Most compilers these days start with &lt;a href="http://en.wikipedia.org/wiki/Lex_programming_tool"&gt;Lex&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Yacc"&gt;Yacc&lt;/a&gt;.  It's simple to &lt;a href="http://www.epaperpress.com/lexandyacc/index.html"&gt;build a compiler&lt;/a&gt; with them.&lt;br /&gt;&lt;br /&gt;But it loses the "personal" flavor...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-3361835032113415735?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/3361835032113415735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=3361835032113415735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3361835032113415735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3361835032113415735'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/02/compiler-goodies-part-2.html' title='Compiler goodies, part 2...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-1029926233102264059</id><published>2009-02-25T13:35:00.000-08:00</published><updated>2009-02-25T13:43:46.998-08:00</updated><title type='text'>Catching up with history...</title><content type='html'>OK, I'll admit it.  I read comic books as a kid.&lt;br /&gt;&lt;br /&gt;I even collected them, since&lt;br /&gt;   1) I'm a bit of a packrat&lt;br /&gt;   2) I wanted to see how the story started&lt;br /&gt;&lt;br /&gt;But this makes me feel bad for people today, who are even furthur away from the characters origins, and have even more to catch up with (who is really going to track down and buy 500+ old issues?).  Fortunately, it's easier today.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gitcorp.com/"&gt;GIT corp&lt;/a&gt; has (for at least some titles) tracked them down for you, and put them conveniently on &lt;a href="http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Daps&amp;field-keywords=git+corp&amp;x=15&amp;y=23"&gt;DVD&lt;/a&gt;.  Now all you have to do is spend (mumble) hours on your computer reading them all...&lt;br /&gt;&lt;br /&gt;Or wait for a Kindle with high resolution color screen and take them all with you...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-1029926233102264059?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/1029926233102264059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=1029926233102264059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1029926233102264059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1029926233102264059'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/02/catching-up-with-history.html' title='Catching up with history...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-9212046437970664169</id><published>2009-02-18T12:50:00.000-08:00</published><updated>2009-02-18T12:52:55.567-08:00</updated><title type='text'>Compiler goodies...</title><content type='html'>Want to know more about compilers?  Read the book (for free)!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www-old.oberon.ethz.ch/WirthPubl/CBEAll.pdf"&gt;_Compiler Construction_&lt;/a&gt; by Nikulas Wirth.&lt;br /&gt;&lt;br /&gt;And, a note:  I will be out of town for a few days.  Next blog update will be on Wednesday, Feb 25th.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-9212046437970664169?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/9212046437970664169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=9212046437970664169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/9212046437970664169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/9212046437970664169'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/02/compiler-goodies.html' title='Compiler goodies...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-3010293841616453725</id><published>2009-02-16T10:30:00.000-08:00</published><updated>2009-02-18T12:50:24.401-08:00</updated><title type='text'>The infinite circuit...</title><content type='html'>Some years ago (2004?) I was writing a simulator for a &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=74&amp;param=en537888"&gt;PIC microcontroller&lt;/a&gt;.  I though it was a neat project, and maybe someon else would be intersted.  So, I put up a &lt;a href="http://www.picemulator.com/"&gt;website&lt;/a&gt; for it.&lt;br /&gt;&lt;br /&gt;I wanted to make it look better, so I did a background for it.&lt;br /&gt;&lt;br /&gt;Website backgrounds often (though not always) consist of a image that is repeated "forever" (or at least enough to fill the page).  So, for a good background, the image should "make sense" when the right/left/top/bottom of one image connets to the corresponding left/right/bottom/top of the adject image (think of the image as the 2-D equivalent to the &lt;a href="http://en.wikipedia.org/wiki/Crystal_lattice"&gt;unit cell in crystalography&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Since I was dealing with microcontrollers and circuits, I decided to make a large "mesh" circuit that could go on forever.&lt;br /&gt;&lt;br /&gt;I started with a simple circuit:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_jtzOtyECENw/SZmzMOw2koI/AAAAAAAAAA8/K7y0-8njWWw/s1600-h/8pinmesh.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 152px; height: 152px;" src="http://2.bp.blogspot.com/_jtzOtyECENw/SZmzMOw2koI/AAAAAAAAAA8/K7y0-8njWWw/s200/8pinmesh.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5303467058908271234" /&gt;&lt;/a&gt;&lt;br /&gt;that was drawn so that connections on the top would match the connections on the bottom, and connections on the right would match the connections on the left.&lt;br /&gt;&lt;br /&gt;So, doing a cut-and-paste, you can see how the circuit matches on top, bottom, right, and left (click on the picture for a better view):&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_jtzOtyECENw/SZxz6MlmOzI/AAAAAAAAABU/fJZ8rLZ0-_8/s1600-h/mesh_stage1.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_jtzOtyECENw/SZxz6MlmOzI/AAAAAAAAABU/fJZ8rLZ0-_8/s200/mesh_stage1.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5304241904784128818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And since each of the new circuit placements can have their own connections, you get a complete grid (click on the picture for a better view):&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_jtzOtyECENw/SZx0E1WLtJI/AAAAAAAAABc/JpJ43UOCkFg/s1600-h/mesh_stage2.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_jtzOtyECENw/SZx0E1WLtJI/AAAAAAAAABc/JpJ43UOCkFg/s200/mesh_stage2.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5304242087524021394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For the website background, I greyed-out the image so that the text could be read.&lt;br /&gt;&lt;br /&gt;I occasionally toyed with the idea of writing software for the processors in the mesh -- something simple that would do a state change based on the linkages to it's neighbors, and see what would evolve in the system.  Differences in startup timing and power-up RAM values would create a random starting point for every power cycle, and a new pattern every time.&lt;br /&gt;&lt;br /&gt;Why did I use the full-featured (i.e. expensive) &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1335&amp;dDocName=en010114"&gt;12F675&lt;/a&gt; instead of it's cheaper cousin, the &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1335&amp;dDocName=en010113"&gt;12F629&lt;/a&gt;, or even the lowly &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1335&amp;dDocName=en020094"&gt;12F508&lt;/a&gt;?  Because I was working my &lt;a href="http://www.picemulator.com/download.shtml"&gt;12F675 simulator&lt;/a&gt; at the time.  If it ever gets built, save yourself some money with a simpler chip.&lt;br /&gt;&lt;br /&gt;(Note: Edited 2/18/2009 -- I was off by a pixel on my tiled images)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-3010293841616453725?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/3010293841616453725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=3010293841616453725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3010293841616453725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3010293841616453725'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/02/infinite-circuit.html' title='The infinite circuit...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_jtzOtyECENw/SZmzMOw2koI/AAAAAAAAAA8/K7y0-8njWWw/s72-c/8pinmesh.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-6822481491224308305</id><published>2009-02-11T10:52:00.001-08:00</published><updated>2009-02-11T11:01:29.617-08:00</updated><title type='text'>Net Neutrality is important!</title><content type='html'>Sure, you've heard it before.&lt;br /&gt;&lt;br /&gt;I'm going to say it again.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_jtzOtyECENw/SZMeuOQqwfI/AAAAAAAAAA0/O-Dd2RTfOq4/s1600-h/net_neutrality.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 273px;" src="http://4.bp.blogspot.com/_jtzOtyECENw/SZMeuOQqwfI/AAAAAAAAAA0/O-Dd2RTfOq4/s400/net_neutrality.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5301614965796028914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And, right now (Feb 11th, 2009), it is under &lt;a href="http://news.slashdot.org/article.pl?sid=09/02/11/1454246"&gt;attack&lt;/a&gt; by Senator &lt;a href="http://www.feinstein.senate.gov/public/index.cfm?FuseAction=ContactUs.WashingtonDCOffice"&gt;Diane Feinstein&lt;/a&gt;.  She is trying to put a &lt;a href="http://en.wikipedia.org/wiki/Rider_(legislation)"&gt;rider&lt;/a&gt; on the bailout bill.  It failed when attached in public, but she's trying to put it again, without public knowledge or comment, when the house and senate versions are reconciled.&lt;br /&gt;&lt;br /&gt;Don't you love how your rights are sold for a &lt;a href="http://www.opensecrets.org/industries/indus.php?ind=B02"&gt;pittace&lt;/a&gt; to corporations?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-6822481491224308305?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/6822481491224308305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=6822481491224308305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6822481491224308305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6822481491224308305'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/02/net-neutrality-is-important.html' title='Net Neutrality is important!'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_jtzOtyECENw/SZMeuOQqwfI/AAAAAAAAAA0/O-Dd2RTfOq4/s72-c/net_neutrality.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-6592445575571925710</id><published>2009-02-10T11:26:00.000-08:00</published><updated>2009-02-10T11:38:38.424-08:00</updated><title type='text'>Fanboys...</title><content type='html'>...the movie.&lt;br /&gt;&lt;br /&gt;Many years ago, the movie &lt;a href="http://www.imdb.com/title/tt0086567/"&gt;Wargames&lt;/a&gt; came out.  I saw it with a bunch of my "&lt;a href="http://en.wikipedia.org/wiki/Hacker_(programmer_subculture)"&gt;hacker&lt;/a&gt;" friends (before the word gained it's negative connotations).  We really enjoyed the movie.  Yah, it's a good movie, but it was *REAL*.  We knew the people in the movie.  They had the culture right.  We caught all the little in-jokes, and had a better time than the rest of the audience.&lt;br /&gt;&lt;br /&gt;This weekend, my wife and I saw &lt;a href="http://www.imdb.com/title/tt0489049/"&gt;Fanboys&lt;/a&gt;.  OK, it's not as good as Wargames, but it doesn't deserve the &lt;a href="http://www.rottentomatoes.com/m/fanboys/"&gt;bad reviews&lt;/a&gt; it has been getting.  If you don't understand the culture it is lampooning, you won't get the jokes.&lt;br /&gt;&lt;br /&gt;For us, we know the people in the movie.  We understand the culture.  We laughed and had a good time.&lt;br /&gt;&lt;br /&gt;It's not a "general release" movie, because the general public doesn't know the culture.  I want to see the DVD release, to see what it was before they tried to make it "accessable" to the general public.  I'll bet it's even better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-6592445575571925710?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/6592445575571925710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=6592445575571925710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6592445575571925710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6592445575571925710'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/02/fanboys.html' title='Fanboys...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2731674184235553816</id><published>2009-02-04T12:21:00.001-08:00</published><updated>2009-02-04T12:27:04.632-08:00</updated><title type='text'>Satisfy your urges...</title><content type='html'>Want to indulge your craving for "Space Geek" porn?  Head over to &lt;a href="http://www.hobbyspace.com/index.html"&gt;Hobbyspace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Be sure to check out &lt;a href="http://www.hobbyspace.com/AAdmin/archive/SpecialTopics/RocketCom/titlePage.html"&gt;_The Rocket Company_&lt;/a&gt;.  It's availble at Amazon (buy it through the hobbyspace website, give them some money...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2731674184235553816?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2731674184235553816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2731674184235553816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2731674184235553816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2731674184235553816'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/02/satisfy-your-urges.html' title='Satisfy your urges...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-7550986459548789108</id><published>2009-02-02T11:46:00.000-08:00</published><updated>2009-02-02T12:00:00.317-08:00</updated><title type='text'>The metric of a man...</title><content type='html'>So, my manager decides to talk to myself and two other people (the other software engineer and the EE) the other day, and says that they will be starting an "incentive bonus" plan.  We can write our own performance metrics for the bonuses.&lt;br /&gt;&lt;br /&gt;In a recession...  When sales are flat...&lt;br /&gt;&lt;br /&gt;The theory is that we will be going to a 4 day work week, but since the three of us will need to keep working full time, this is a way to keep paying us full salary, despite the fiction of not working full time.&lt;br /&gt;&lt;br /&gt;But, this brings up an interesting question -- I write very low level software, to satisfy some very vague specifications.  I normally get the schematics from the EE, and start planning, and later get the prototype hardware.  Then I have to test the prototype to make sure the EE didn't make any mistakes (I often find one or two, usually something like a missing trace.  His layout software is very good, and it uses the netlist from the schematic to try to make sure that all connections are accounted for, but in the last couple of boards we have found that somehow a ground trace gets lost by the software, and so a ground trace is missing.  Very annoying...).&lt;br /&gt;&lt;br /&gt;Then, I have to get the "application" working.  Occasionally I get to write it from scratch.  Often I have to take some code written 10 years ago (or longer...) for a different system (that writes down to the bare metal), and get it working on new hardware.&lt;br /&gt;&lt;br /&gt;I can give an estimate, but the larger the project (and the more the customer gets to change the specs in the middle), the harder it is to give any estimate at all, let alone one with any accuracy.&lt;br /&gt;&lt;br /&gt;So, how do you setup "performace metrics" for such a situation?  I sure don't know, and my income will depend on it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-7550986459548789108?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/7550986459548789108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=7550986459548789108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7550986459548789108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7550986459548789108'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/02/metric-of-man.html' title='The metric of a man...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-7324041232845773829</id><published>2009-01-29T11:07:00.000-08:00</published><updated>2009-01-29T11:12:36.598-08:00</updated><title type='text'>In the beginning...</title><content type='html'>I played games on a dial-up &lt;a href="http://en.wikipedia.org/wiki/ASR-33_Teletype"&gt;teletype&lt;/a&gt; connected to a &lt;a href="http://en.wikipedia.org/wiki/HP_2000C"&gt;HP 2000C mainframe&lt;/a&gt;.  Slow and frustrating, it did get me into computers, and I've been there ever since.&lt;br /&gt;&lt;br /&gt;Today, I can look back at my &lt;a href="http://www.dunnington.u-net.com/public/startrek/"&gt;humble origins&lt;/a&gt;, but I still can't decide if the latest whiz-bang computer game is more fun or not...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-7324041232845773829?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/7324041232845773829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=7324041232845773829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7324041232845773829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7324041232845773829'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/01/in-beginning.html' title='In the beginning...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2369380622526300000</id><published>2009-01-26T13:14:00.000-08:00</published><updated>2009-01-26T13:39:01.558-08:00</updated><title type='text'>Smoke and Mirrors...</title><content type='html'>The web is a linked world.  That's what it was designed to be, and it works.&lt;br /&gt;&lt;br /&gt;But, sometimes that can be a problem.&lt;br /&gt;&lt;br /&gt;Basically, all information on the web is ephemeral.  If you look at a page today, you pull it from the server.  If you look at the same page tomorrow, you pull it from the server again.  The information that was here today can be gone, like a puff of smoke, tomorrow.&lt;br /&gt;&lt;br /&gt;For lots of things, this doesn't matter.  Who cares what was on &lt;a href="http://digg.com/"&gt;diggs&lt;/a&gt;' homepage last year?&lt;br /&gt;&lt;br /&gt;But for &lt;a href="http://www.cnn.com/"&gt;CNN&lt;/a&gt;(for example), we have completely different expectations.  If I want to look up which politicians were indicited on Jan 21, 2009 (I can dream, can't I?), but CNN pulled the page after 1 month, how do I look back into history?&lt;br /&gt;&lt;br /&gt;Even worse, the &lt;a href="http://en.wikipedia.org/wiki/Orwellian"&gt;Orwellian&lt;/a&gt; prospect that history has been changed.  Has a name been dropped from the list, or has one been added?  A publisher can't recall and change all his "&lt;a href="http://en.wikipedia.org/wiki/Dead_tree_edition"&gt;dead tree editions&lt;/a&gt;" overnight, but a minute with a keyboard and everyone's history has changed.  What, this isn't what was there yesterday?  Prove it... (this is why &lt;a href="http://groklaw.net/"&gt;groklaw&lt;/a&gt; keeps an archive of all legal documents related to the SCO vs IBM and related cases.)&lt;br /&gt;&lt;br /&gt;Sorry, veered off into politics.  I must watch myself.&lt;br /&gt;&lt;br /&gt;Getting back to my &lt;a href="http://personallyinteresting.blogspot.com/2009/01/because-newer-is-not-always-better.html"&gt;last post&lt;/a&gt;, the linked nature of the web's information can be it's weak point.  If something happened to me, what would become of (for example) &lt;a href="http://www.desmet-c.com/"&gt;DeSmet C&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;In a month or so, my provider would notice that I've stopped paying my bill, and cut off my service.  The webserver would no longer be online, and the pages would vanish.&lt;br /&gt;&lt;br /&gt;Could the &lt;a href="http://www.archive.org/"&gt;internet archive&lt;/a&gt; carry on?  To an extent -- it can't save everything, and has a size limit on what it does copy.  The files aren't there, only the text.&lt;br /&gt;&lt;br /&gt;There are links to the site and it's content, but everyone assumes that the information will be there (effectively) forever.  I'm guilty of it, too...&lt;br /&gt;&lt;br /&gt;What needs to be done is to not just link, but mirror.  &lt;a href="http://en.wikipedia.org/wiki/Wget"&gt;Wget&lt;/a&gt; is your friend.  Disk is cheap.&lt;br /&gt;&lt;br /&gt;Has an interesting / worthy site gone away?  It doesn't have to vanish forever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2369380622526300000?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2369380622526300000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2369380622526300000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2369380622526300000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2369380622526300000'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/01/smoke-and-mirrors.html' title='Smoke and Mirrors...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2223424441802295377</id><published>2009-01-23T12:24:00.000-08:00</published><updated>2009-01-23T12:31:39.524-08:00</updated><title type='text'>Because newer is not always better...</title><content type='html'>Sometimes, "new and improved" means it breaks things.&lt;br /&gt;&lt;br /&gt;Your favorite feature may not work anymore...&lt;br /&gt;&lt;br /&gt;It might not work with your system...&lt;br /&gt;&lt;br /&gt;It might not be compatible with older files...&lt;br /&gt;&lt;br /&gt;The UI was designed by a color-blind dyslexic student during a Saturday night bender...&lt;br /&gt;&lt;br /&gt;And, with the linked nature of the web, chances are everyone links to the "canonical" download site (which will come up in a rant for another day...), so that you don't have a choice about what you are getting.&lt;br /&gt;&lt;br /&gt;Unless you go to a site like &lt;a href="http://www.oldversion.com/"&gt;oldversion.com&lt;/a&gt;, where the past versions of software are still available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2223424441802295377?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2223424441802295377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2223424441802295377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2223424441802295377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2223424441802295377'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/01/because-newer-is-not-always-better.html' title='Because newer is not always better...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-1275571774237968333</id><published>2009-01-21T11:18:00.000-08:00</published><updated>2009-01-21T11:21:15.977-08:00</updated><title type='text'>Geek relaxation...</title><content type='html'>After all the source code reconstruction articles, it's time for some geeky relaxation.&lt;br /&gt;&lt;br /&gt;Go over to &lt;a href="http://www.comic-images.com/"&gt;comic-images.com&lt;/a&gt; and wallow in it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-1275571774237968333?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/1275571774237968333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=1275571774237968333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1275571774237968333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1275571774237968333'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/01/geek-relaxation.html' title='Geek relaxation...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2720177733526334883</id><published>2009-01-19T12:09:00.001-08:00</published><updated>2009-01-19T12:16:26.487-08:00</updated><title type='text'>Re-creating source code, epilogue</title><content type='html'>So, what's the status of the DeSmet 2.51 recreation?&lt;br /&gt;&lt;br /&gt;As of Jan 19, 2009:&lt;br /&gt;&lt;br /&gt;The C88 souce has been recreated, compiled, and code equivalency (it's &lt;a href="http://personallyinteresting.blogspot.com/2009/01/re-creating-source-code-part-8.html"&gt;not identical&lt;/a&gt;, unfortunately) has been verified.&lt;br /&gt;&lt;br /&gt;The GEN source is a work in progress. GEN has actually changed a lot between the versions (GEN was given the ability to generate object code directly, not just assembly), and backtracking it is tedious. That, and &lt;a href="http://personallyinteresting.blogspot.com/2008/11/interruptions.html"&gt;our&lt;/a&gt; &lt;a href="http://www.nivenspaws.com/"&gt;cats&lt;/a&gt; (ok, that last page is very out of date.  But it gives you an idea...) and work are taking a lot of time.&lt;br /&gt;&lt;br /&gt;ASM88 has also changed, but I expect the changes to be fairly minor.&lt;br /&gt;&lt;br /&gt;BIND has changed, but again I expect the changes to be fairly minor.&lt;br /&gt;&lt;br /&gt;I really need to get off my ass and post at least the C88 source I worked so hard on...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2720177733526334883?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2720177733526334883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2720177733526334883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2720177733526334883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2720177733526334883'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/01/re-creating-source-code-epilogue.html' title='Re-creating source code, epilogue'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-3397185765025632563</id><published>2009-01-16T08:12:00.000-08:00</published><updated>2009-01-16T09:04:22.991-08:00</updated><title type='text'>Re-creating source code, Part 8</title><content type='html'>OK, enough suspense...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.desmet-c.com/"&gt;DeSmet C&lt;/a&gt; was written in &lt;a href="http://www.desmet-c.com/"&gt;DeSmet C&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But which version?  Aye, there's the rub.&lt;br /&gt;&lt;br /&gt;I don't know.&lt;br /&gt;&lt;br /&gt;As I said &lt;a href="http://personallyinteresting.blogspot.com/2009/01/re-creating-source-code-part-6.html"&gt;before&lt;/a&gt;, later versions of the compiler have additional functionality and improvements.  Part of the improvements is better code generation and register utilization.&lt;br /&gt;&lt;br /&gt;For example, the C source file&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;int i;&lt;br /&gt;char *j&lt;br /&gt;main(argc,argv)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int argc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;char *argv[];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (i = 0; i &lt; argc; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;j = argv[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;compiled with either version 2.51 or 3.03 generates (for the "j = argv[i];")&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;si,word i_&lt;br /&gt;shl&amp;nbsp;&amp;nbsp;&amp;nbsp;si,1&lt;br /&gt;add&amp;nbsp;&amp;nbsp;&amp;nbsp;si,word [bp+6]&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;si,word [si]&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;word j_,si&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;but compiled with version 2.40, we get&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;ax,word i_&lt;br /&gt;shl&amp;nbsp;&amp;nbsp;&amp;nbsp;ax,1&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;si,ax&lt;br /&gt;add&amp;nbsp;&amp;nbsp;&amp;nbsp;si,word [bp+6]&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;si,word [si]&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;word j_,si&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;In addition, the x86 architecture has both "short JMPs" (for locations within&lt;br /&gt;-126 to +129 bytes of the current location) and "long JMPs" (for locations within the current 64K segment).  (It also has FAR JMPs, but we don't have to concern ourselves with this for the small memory model of DeSmet C).&lt;br /&gt;&lt;br /&gt;All conditional JMPs are "short JMPs" (also called near JMPs).  If your conditional has to send you to a location that is furthur away, you have to do a reverse-sense conditional JMP around a long JMP.&lt;br /&gt;&lt;br /&gt;The compiler tries to use short JMPs wherever possible (both unconditional and conditional) to produce smaller executables.  But, trying to guess how far away a forward JMP is is tricky, and sometimes it errs on the side of safety and uses a longer JMP just to make sure that it doesn't try to go "out of bounds".  The exact rules, however, vary from compiler version to compiler version.&lt;br /&gt;&lt;br /&gt;The result of all this is that, even after re-creating the source to version 2.51, I cannot get the same executable as the distributed 2.51.  All the code sequences are equivalent, but the details of register useage and short JMP / long JMP are different.  Very close, but no cigar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-3397185765025632563?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/3397185765025632563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=3397185765025632563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3397185765025632563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3397185765025632563'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/01/re-creating-source-code-part-8.html' title='Re-creating source code, Part 8'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-1222051213199735220</id><published>2009-01-14T11:29:00.000-08:00</published><updated>2009-01-14T11:30:07.823-08:00</updated><title type='text'>Busy today...</title><content type='html'>Blog tomorrow.&lt;br /&gt;&lt;br /&gt;Sorry about that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-1222051213199735220?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/1222051213199735220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=1222051213199735220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1222051213199735220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1222051213199735220'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/01/busy-today.html' title='Busy today...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-90008080207576193</id><published>2009-01-12T10:51:00.000-08:00</published><updated>2009-01-12T11:26:27.582-08:00</updated><title type='text'>Re-creating source code, Part 7</title><content type='html'>So, how do you compile a compiler?&lt;br /&gt;&lt;br /&gt;It seems pretty straight forward, something like&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;make compiler&lt;br /&gt;and in many cases this is all that is necessary.  But not always.&lt;br /&gt;&lt;br /&gt;Many languages (like &lt;a href="http://en.wikipedia.org/wiki/C_(programming_language)"&gt;C&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Pascal_(programming_language)"&gt;Pascal&lt;/a&gt;) are written in themselves (i.e. C compilers are written in C, Pascal compilers are written in Pascal).  But, how do you get the first compiler compiled?  This is known as &lt;a href="http://en.wikipedia.org/wiki/Bootstrapping_(compilers)"&gt;bootstrapping&lt;/a&gt; a compiler.&lt;br /&gt;&lt;br /&gt;If this is really the first instance of the language (i.e. you are &lt;a href="http://en.wikipedia.org/wiki/Dennis_Ritchie"&gt;Dennis Ritchie&lt;/a&gt; triumphantly creating the C language), your &lt;a href="http://www.cs.bell-labs.com/who/dmr/primevalC.html"&gt;first compiler&lt;/a&gt;, however primitive, is written in another language.  Later versions of the compiler are then written in the language itself.&lt;br /&gt;&lt;br /&gt;If the language already exists on one computer and you are bringing it to a new system, you can either write the compiler in an already existing language for the new system, or you can use a &lt;a href="http://en.wikipedia.org/wiki/Cross-compiling"&gt;cross compiler&lt;/a&gt; to generate the first generation of the compiler for a new system.&lt;br /&gt;&lt;br /&gt;So, what does this have to do with re-creating an early version of the DeSmet C source?&lt;br /&gt;&lt;br /&gt;Well, what compiler was used to compile DeSmet C?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-90008080207576193?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/90008080207576193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=90008080207576193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/90008080207576193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/90008080207576193'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/01/re-creating-source-code-part-7.html' title='Re-creating source code, Part 7'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-4884455372607994493</id><published>2009-01-09T11:02:00.000-08:00</published><updated>2009-01-09T11:22:10.501-08:00</updated><title type='text'>Piles of bits...</title><content type='html'>I don't have time to do the blog entry I was planning for today (if you're curious and want to get a head start, look up up &lt;a href="http://en.wikipedia.org/wiki/Bootstrapping_(compilers)"&gt;bootstrapping&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;In my spare time (probably 10 minutes a day...), I've been &lt;a href="http://www.datapackrat.com/"&gt;archiving&lt;/a&gt; my old floppies.  That isn't anywhere near a complete list (I probably have over a thousand floating around), I was interrupted by a lawsuit (not aimed at me, but that didn't matter).  But I'm back to work at it now.&lt;br /&gt;&lt;br /&gt;It amazes me, however, at all the stuff I've collected over the years.  Who remembers the &lt;a href="http://en.wikipedia.org/wiki/PLATO_system"&gt;CDC Plato system&lt;/a&gt;?  I found some source code for lessons.  I have my virus zoo.  Old games.  Early programming attempts.  Drivers for long gone and forgotten (by everyone, including their manufacturers) hardware.  Commerical software where I wish I had kept the manual instead of the disk.  And so much stuff that makes me wonder "Why the hell did I ever have that in the first place, and why have I kept it all these years?"&lt;br /&gt;&lt;br /&gt;Ahhh... nostalgia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-4884455372607994493?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/4884455372607994493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=4884455372607994493' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/4884455372607994493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/4884455372607994493'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/01/piles-of-bits.html' title='Piles of bits...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-129594275492740752</id><published>2009-01-07T13:00:00.000-08:00</published><updated>2009-01-07T13:14:57.993-08:00</updated><title type='text'>Re-creating source code, Part 6</title><content type='html'>So, what toys do I have?&lt;br /&gt;&lt;br /&gt;Well, I have the &lt;a href="http://www.desmet-c.com/ver_303.shtml"&gt;source&lt;/a&gt; to a later version of the compiler I use daily.&lt;br /&gt;&lt;br /&gt;I have the &lt;a href="http://www.desmet-c.com/ver_251.shtml"&gt;compiler&lt;/a&gt; I use daily in binary form.&lt;br /&gt;&lt;br /&gt;I have a &lt;a href="http://www.datapackrat.com/source/codegen.html"&gt;disassembler&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I know how to &lt;a href="http://personallyinteresting.blogspot.com/2008/12/re-creating-source-code-part-4.html"&gt;decompile&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The magic trick is realize that the later version of the compiler is (almost always) a superset of the earlier compiler.  It has the functionality of the earlier compiler, plus additional features and improvements.&lt;br /&gt;&lt;br /&gt;So, I can compile the later version of the compiler, the disassemble it.  This gives me source, binary, disassembly, and labels.&lt;br /&gt;&lt;br /&gt;I can disassemble the binary of the earlier compiler.  This gives binary and disassembly.&lt;br /&gt;&lt;br /&gt;I can now compare the disassemblies.  This will let me generate labels for the disassembly of the earlier compiler.  It will also let me (thinking about decompiling) see what source statements were / were not in the source to the earlier compiler.&lt;br /&gt;&lt;br /&gt;So, as I compare the disassemblies, I can edit the later compiler source to backtrack it to the earlier compiler source.&lt;br /&gt;&lt;br /&gt;Good, right?  Well, it turns out that there is one more thing that must be considered in doing this.  I'll talk about it next time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-129594275492740752?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/129594275492740752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=129594275492740752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/129594275492740752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/129594275492740752'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/01/re-creating-source-code-part-6.html' title='Re-creating source code, Part 6'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-7536433520445669272</id><published>2009-01-05T13:23:00.001-08:00</published><updated>2009-01-05T13:34:50.916-08:00</updated><title type='text'>Re-creating source code, Part 5</title><content type='html'>So, looking at the previous example, it's obvious that &lt;a href="http://en.wikipedia.org/wiki/Decompilation"&gt;decompiling&lt;/a&gt; is a lot harder than &lt;a href="http://en.wikipedia.org/wiki/Disassembly"&gt;disassembly&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, it would be stupid (or really masochistic) to try to decompile a big program.  Like a compiler.&lt;br /&gt;&lt;br /&gt;But, before I got the source code to &lt;a href="http://www.desmet-c.com/"&gt;DeSmet C&lt;/a&gt;, I tried just that.  Ran the compiler (at least the 1st pass of the compiler) through a disassembler, and went in and started decompiling.&lt;br /&gt;&lt;br /&gt;This took me a few months of spare time.  In the end, I had a decompiled compiler, but there was too much ambiguity (like unknown variable names -- even badly named variables are much better documentation than no names at all) to be of any use.  Oh, well...&lt;br /&gt;&lt;br /&gt;Fortunately, I did track down the source code sometime later, and had the toy I wanted.  Almost...&lt;br /&gt;&lt;br /&gt;I had the source code to a later version of the compiler.  And later means more features and bug fixes.  This is good.&lt;br /&gt;&lt;br /&gt;But, I've also learned that you don't change compilers (or even compiler versions) unless you have a good reason to do so.&lt;br /&gt;&lt;br /&gt;Most of my early code was in an earlier version, and since it worked, I kept on using it.  And this was not the version I had the source to.  This is not so good.&lt;br /&gt;&lt;br /&gt;But then I had an idea.  I'll talk about it next time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-7536433520445669272?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/7536433520445669272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=7536433520445669272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7536433520445669272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7536433520445669272'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/01/re-creating-source-code-part-5.html' title='Re-creating source code, Part 5'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-4585867066762387045</id><published>2009-01-02T16:24:00.000-08:00</published><updated>2009-01-02T16:25:45.795-08:00</updated><title type='text'>Nothing to do with Re-creating source code</title><content type='html'>Happy New Year!&lt;br /&gt;&lt;br /&gt;Next time, more tech geek stuff...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-4585867066762387045?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/4585867066762387045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=4585867066762387045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/4585867066762387045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/4585867066762387045'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2009/01/nothing-to-do-with-re-creating-source.html' title='Nothing to do with Re-creating source code'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8963933496359867326</id><published>2008-12-31T10:43:00.000-08:00</published><updated>2008-12-31T11:35:29.717-08:00</updated><title type='text'>Re-creating source code, Part 4</title><content type='html'>Now, on to &lt;a href="http://en.wikipedia.org/wiki/Decompilation"&gt;decompilation&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;I talked briefly &lt;a href="http://personallyinteresting.blogspot.com/2008/12/re-creating-source-code-part-2.html"&gt;before&lt;/a&gt; about disassembly, which is the first step in decompilation.&lt;br /&gt;&lt;br /&gt;So, for example, if the output from your &lt;a href="http://www.datapackrat.com/source/codegen.html"&gt;disassembler&lt;/a&gt; is:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;bp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;bp,sp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;word ptr [d_0021],0000h&lt;br /&gt;c_000c:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;word ptr [d_0021],+0ah&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;jge&amp;nbsp;&amp;nbsp;&amp;nbsp;c_0026&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;si,[d_0021]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;shl&amp;nbsp;&amp;nbsp;&amp;nbsp;si,1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;ax,[d_0021]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;[si+d_0023],ax&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;inc&amp;nbsp;&amp;nbsp;&amp;nbsp;word ptr [d_0021]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmp&amp;nbsp;&amp;nbsp;&amp;nbsp;short c_000c&lt;br /&gt;c_0026:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;bp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ret     &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;what is the corresponding C code?&lt;br /&gt;&lt;br /&gt;Well, let's look at this in pieces:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;bp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;bp,sp&lt;br /&gt;this is standard C entry code for a function:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;fn()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;Notice that no local variables are allocated -- this would shown by&lt;br /&gt;a statement like:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;sp,+02h&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The next standard piece is at the end:&lt;br /&gt;c_0026:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;bp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ret     &lt;br /&gt;this is standard C exit code for a function:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;In the actual code block, we have a 2-byte integer being set:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;word ptr [d_0021],0000h&lt;br /&gt;So we know we have a global integer:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int d_0021;&lt;br /&gt;that is set in a C statement:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;d_0021 = 0;&lt;br /&gt;note that we don't know what the integer was originally named.&lt;br /&gt;&lt;br /&gt;Next we check the variable we just set:&lt;br /&gt;c_000c:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;word ptr [d_0021],+0ah&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;jge&amp;nbsp;&amp;nbsp;&amp;nbsp;c_0026&lt;br /&gt;In C:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (d_0021 &lt; 10)&lt;br /&gt;&lt;br /&gt;We notice that d_0021 is being used as an index (the SI addressing&lt;br /&gt;in the following):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;si,[d_0021]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;shl&amp;nbsp;&amp;nbsp;&amp;nbsp;si,1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;ax,[d_0021]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;[si+d_0023],ax&lt;br /&gt;and that this is a 2-byte data reference (the SHL SI,1 is a&lt;br /&gt;multiply by 2).  This also tells us that we have a global array&lt;br /&gt;of integers:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int d_0023[some size];&lt;br /&gt;If we think about it, since we know that the index variable is&lt;br /&gt;limited to 0 .. 9 by the previous IF statement, we can guess that&lt;br /&gt;the size is 10.  Or, we could just look furthur down in the&lt;br /&gt;disassembly:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;d_0021&amp;nbsp;&amp;nbsp;dw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0000h&lt;br /&gt;d_0023&amp;nbsp;&amp;nbsp;dw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000ah dup (0000h)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;and realize that this is really&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int d_0023[10];&lt;br /&gt;Again, we don't know what it was originally named.&lt;br /&gt;&lt;br /&gt;The previous block also shows d_0021 being used as a data value&lt;br /&gt;as well as an index and a counter.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;d_0023[d_0021] = d_0021;&lt;br /&gt;&lt;br /&gt;Next, we have:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;inc&amp;nbsp;&amp;nbsp;&amp;nbsp;word ptr [d_0021]&lt;br /&gt;Or, in C:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;d_0021++;&lt;br /&gt;&lt;br /&gt;And, finally, we have:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmp&amp;nbsp;&amp;nbsp;&amp;nbsp;short c_000c&lt;br /&gt;which goes back to the&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (d_0021 &lt; 10)&lt;br /&gt;statement.  Since GOTO is almost never used in C, this means that&lt;br /&gt;the original translation was wrong, and this really should be&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (d_0021 &lt; 10)&lt;br /&gt;&lt;br /&gt;Putting this all together, the decompiled fuction is:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;int d_0021;&lt;br /&gt;int d_0023[10];&lt;br /&gt;fn()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;d_0021 = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (d_0021 &lt; 10)&lt;br /&gt;&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;d_0023[d_0021] = d_0021;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d_0021++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Compare this to the original C code:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;int i, j[10];&lt;br /&gt;main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (i = 0; i &lt; 10; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;j[i] = i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;And you'll note that this is the same ambiguity I mentioned &lt;a href="http://personallyinteresting.blogspot.com/2008/12/re-creating-source-code-part-3.html"&gt;before&lt;/a&gt;.  Also, while I could have determined that this was really the main() function, not a general function, it would involve a few more steps that I didn't want to get into at this time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8963933496359867326?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8963933496359867326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8963933496359867326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8963933496359867326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8963933496359867326'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2008/12/re-creating-source-code-part-4.html' title='Re-creating source code, Part 4'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-815940577338186399</id><published>2008-12-29T08:12:00.000-08:00</published><updated>2008-12-29T08:47:16.600-08:00</updated><title type='text'>Re-creating source code, Part 3</title><content type='html'>Before I talk about &lt;a href="http://en.wikipedia.org/wiki/Decompilation"&gt;decompilation&lt;/a&gt; I need to talk a little about &lt;a href="http://en.wikipedia.org/wiki/Compiler"&gt;compilers&lt;/a&gt; and compilation.&lt;br /&gt;&lt;br /&gt;If you don't know it already, a compiler is a computer program that translates source code into machine code.  Source code is (supposedly) readable by people, while machine code is what the processor actually executes.&lt;br /&gt;&lt;br /&gt;Source code is different than languages that people use with each other, in that language has very sloppy "rules" and much is based on context.  With source code, there is no room for sloppyness, as the compiler cannot guess what you really wanted to do.&lt;br /&gt;&lt;br /&gt;(Side note:  Some computer languages do try to guess what you are trying to do and "help" you.  I hate them.  They never get it right and are much harder to deal with than a "dumb" compliler.  If the computer could guess what I wanted and write it for me, I wouldn't be writing it myself.)&lt;br /&gt;&lt;br /&gt;If you have any interest in compilers, look at &lt;a href="http://compilers.iecc.com/crenshaw/"&gt;_Let's Build A Compiler_&lt;/a&gt; by &lt;a href="http://www.embedded.com/staff/jackc.htm"&gt;Jack Crenshaw&lt;/a&gt;.  It's a bit dated now (it uses &lt;a href="http://en.wikipedia.org/wiki/Turbo_Pascal"&gt;Turbo Pascal&lt;/a&gt; to write the compiler examples.  While this is still available from places like the &lt;a href="http://dn.codegear.com/museum"&gt;Borland community museum&lt;/a&gt;, when I played with it I wrote the examples in C instead and targeted the processor as the x86 instead of the 68000.), it will give you the basics of token parsing, recursive decent expression handling, and code generation.&lt;br /&gt;&lt;br /&gt;One important thing to consider when looking at compiler in regards to decompilation is that different source code sequences produce the same machine code sequence.  For example,&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;int i, j[10];&lt;br /&gt;main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (i = 0; i &lt; 10; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;j[i] = i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;produces the same code as&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;int i, j[10];&lt;br /&gt;main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;i = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (i &lt; 10)&lt;br /&gt;&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;j[i] = i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;While this may be a trivial example, it shows that you can't assume that anything you have decompiled is actually the "original" source code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-815940577338186399?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/815940577338186399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=815940577338186399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/815940577338186399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/815940577338186399'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2008/12/re-creating-source-code-part-3.html' title='Re-creating source code, Part 3'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-1077031700036152449</id><published>2008-12-22T11:27:00.000-08:00</published><updated>2008-12-22T11:53:51.683-08:00</updated><title type='text'>Re-creating source code, Part 2</title><content type='html'>As I said &lt;a href="http://personallyinteresting.blogspot.com/2008/12/re-creating-source-code-part-1.html"&gt;before&lt;/a&gt;, I'm going to talk more about &lt;a href="http://en.wikipedia.org/wiki/Disassembly"&gt;disassembly&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;With a von Neumann architecture processor like the &lt;a href="http://en.wikipedia.org/wiki/X86"&gt;x86&lt;/a&gt;, there has to be an algorithm to distinguish code from data.&lt;br /&gt;&lt;br /&gt;Long ago, when I was writing anti-virus software, I wrote my own disassembler called &lt;a href="http://www.datapackrat.com/source/codegen.html"&gt;codegen&lt;/a&gt;.  The algorithm I used to separate code from data was based on noticing that processor instructions came in 4 "flavors" of flow control:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_jtzOtyECENw/SU_r6_od50I/AAAAAAAAAAU/7N-KSh2WDKU/s1600-h/normal.bmp"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 43px; height: 46px;" src="http://2.bp.blogspot.com/_jtzOtyECENw/SU_r6_od50I/AAAAAAAAAAU/7N-KSh2WDKU/s200/normal.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5282700286674986818" /&gt;&lt;/a&gt;&lt;br /&gt;NORMAL flow control is standard instruction like ADD or SUB.  The instruction does not change the instruction sequence, and so the next instruction is the one after the current instruction.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_jtzOtyECENw/SU_srvqSVLI/AAAAAAAAAAc/RWxcDyAah8w/s1600-h/goto.bmp"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 43px; height: 46px;" src="http://2.bp.blogspot.com/_jtzOtyECENw/SU_srvqSVLI/AAAAAAAAAAc/RWxcDyAah8w/s200/goto.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5282701124201239730" /&gt;&lt;/a&gt;&lt;br /&gt;GOTO flow control is an instruction like JMP.  The instruction changes the instruction sequence, and the next instruction is the target of the instruction.  It is not known if there is an instruction after this one, that must be determined elsewhere.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_jtzOtyECENw/SU_tNjbExyI/AAAAAAAAAAk/xkrAeBGLKRE/s1600-h/call.bmp"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 43px; height: 46px;" src="http://4.bp.blogspot.com/_jtzOtyECENw/SU_tNjbExyI/AAAAAAAAAAk/xkrAeBGLKRE/s200/call.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5282701705031763746" /&gt;&lt;/a&gt;&lt;br /&gt;CALL flow control is an instruction like CALL or INT or JNE.  The instruction can change the instruction sequence, and there are instructions both at the target of the instruction and after the current instruction.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_jtzOtyECENw/SU_t_NAlj_I/AAAAAAAAAAs/al4aw59HIps/s1600-h/exit.bmp"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 43px; height: 46px;" src="http://3.bp.blogspot.com/_jtzOtyECENw/SU_t_NAlj_I/AAAAAAAAAAs/al4aw59HIps/s200/exit.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5282702558008545266" /&gt;&lt;/a&gt;&lt;br /&gt;EXIT flow control is an instruction like INT 20H.  While the processor does not really "stop" processing, there is no target instruction associated with this instruction, the program has exited and it is not known if there is an instruction after this one, that must be determined elsewhere.&lt;br /&gt;&lt;br /&gt;These 4 rules, combined with the known entry point for the program, can find most of the code in a program.  By examining the instructions found more closely, it can be determined if they access data, and if so where, thus finding the data in the program.&lt;br /&gt;&lt;br /&gt;There are some places where this algorithm needs a little human intervention, such as an &lt;a href="http://en.wikipedia.org/wiki/Interrupt_vector"&gt;interrupt vector&lt;/a&gt; set by the program (which is data access that determines a code location that is not able to be found by the 4 "flavors" of flow control described above), or a memory indirect JMP (for an x86 processor, this would be an instruction like&lt;br /&gt;   JMP BX&lt;br /&gt;or&lt;br /&gt;   JMP WORD PTR [SI+1234H]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-1077031700036152449?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/1077031700036152449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=1077031700036152449' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1077031700036152449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/1077031700036152449'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2008/12/re-creating-source-code-part-2.html' title='Re-creating source code, Part 2'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_jtzOtyECENw/SU_r6_od50I/AAAAAAAAAAU/7N-KSh2WDKU/s72-c/normal.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-3461741624237373942</id><published>2008-12-18T10:26:00.000-08:00</published><updated>2008-12-18T10:42:00.994-08:00</updated><title type='text'>Re-creating source code, Part 1</title><content type='html'>As I talked about last time, I've started re-creating the source to DeSmet C version 2.51 (aka PCC 1.2d, and the version I use the most).&lt;br /&gt;&lt;br /&gt;How do you re-create the source to a program you don't have?  Well, if you think about it, you have the program -- sort of.&lt;br /&gt;&lt;br /&gt;You have the executable.&lt;br /&gt;&lt;br /&gt;When the compiler source is run through a compiler, you get an executable program.  So, there is a mapping from the source code to the executable.  What you want to do is reverse, that and go from the executable to the source.&lt;br /&gt;&lt;br /&gt;There are two levels to doing this, &lt;a href="http://en.wikipedia.org/wiki/Disassembly"&gt;disassembly&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Decompilation"&gt;decompilation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Disassembly is fairly straight forward, it translates the object code into &lt;a href="http://en.wikipedia.org/wiki/Assembly_language"&gt;assembly&lt;/a&gt; statements.  For an x86 program, there can be a little ambiguity, as code and data are in the same memory space (&lt;a href="http://en.wikipedia.org/wiki/Von_Neumann_architecture"&gt;von Neumann architecture&lt;/a&gt;) , and so you have to have some algorithm to determine if the object byte you are looking at is code or data, but this is a minor obstacle (typical embedded processors are &lt;a href="http://en.wikipedia.org/wiki/Harvard_architecture"&gt;Harvard architecture&lt;/a&gt;, and so this problem does not exist).&lt;br /&gt;&lt;br /&gt;I'll talk more about disassembly in my next post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-3461741624237373942?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/3461741624237373942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=3461741624237373942' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3461741624237373942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3461741624237373942'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2008/12/re-creating-source-code-part-1.html' title='Re-creating source code, Part 1'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-7293895510620605690</id><published>2008-12-15T10:38:00.000-08:00</published><updated>2008-12-15T11:12:45.089-08:00</updated><title type='text'>Back again...</title><content type='html'>AAAARRRRRGGGGGHHHHHHH!!!!!!!!!!!!!&lt;br /&gt;&lt;br /&gt;Ok, that makes me feel a little better.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://personallyinteresting.blogspot.com/2008/11/interruptions.html"&gt;Insane kitty&lt;/a&gt; is getting wise to the "medicine hidden in the food" trick, and I had to catch her without her being medicated.  Got her to the vet, and it's not what we had originally though (infection with abcess).  Test results for fungal infection (&lt;a href="http://en.wikipedia.org/wiki/Ringworm"&gt;ringworm&lt;/a&gt;) should be back today, but we expect it to be negative.  Now, assuming it is negative, we just have to catch her twice a day to put ointment on it and hope it heals...&lt;br /&gt;&lt;br /&gt;On the technical side, I've mentioned my &lt;a href="http://www.desmet-c.com/"&gt;favorite C compiler&lt;/a&gt; &lt;a href="http://personallyinteresting.blogspot.com/2008/11/sometimes-i-annoy-my-employer-with-my.html"&gt;before&lt;/a&gt;.  It really is.&lt;br /&gt;&lt;br /&gt;I've been using it long enough so that my fingers "think" in this dialect. And a few years ago, I found myself doing (as usual) a &lt;a href="http://www.picemulator.com/"&gt;big project&lt;/a&gt; in DeSmet C.  And started thinking about C compilers and playing with them.&lt;br /&gt;&lt;br /&gt;So, I went on a hunt for the source to the compiler (the compiler vendor had long since vanished).  With a little help from &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt; and &lt;a href="http://www.superpages.com/"&gt;Superpages&lt;/a&gt;, I managed to find the people, and recovered the source.&lt;br /&gt;&lt;br /&gt;But the one thing I couldn't get was the source to the version I use all the time, and the most common version out there -- version 2.51 (found around the net as PCC 1.2d).  So, a while back I started re-creating it.  I'll talk more about that next time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-7293895510620605690?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/7293895510620605690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=7293895510620605690' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7293895510620605690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/7293895510620605690'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2008/12/back-again.html' title='Back again...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-968877134442477993</id><published>2008-12-08T08:05:00.000-08:00</published><updated>2008-12-08T08:08:19.083-08:00</updated><title type='text'>No time today...</title><content type='html'>to do a real post.  &lt;a href="http://personallyinteresting.blogspot.com/2008/11/interruptions.html"&gt;Insane kitty&lt;/a&gt; needs to go back to vet today, and I have to take off from work (among other things) to drug her in time for her to calm down enough to catch her to take her to vet...&lt;br /&gt;&lt;br /&gt;{ sigh }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-968877134442477993?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/968877134442477993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=968877134442477993' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/968877134442477993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/968877134442477993'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2008/12/no-time-today.html' title='No time today...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-6082466504329049062</id><published>2008-12-05T10:34:00.000-08:00</published><updated>2008-12-05T10:44:08.022-08:00</updated><title type='text'>Geek credit...</title><content type='html'>When you're a computer &lt;a href="http://en.wikipedia.org/wiki/Geek"&gt;geek&lt;/a&gt;, you really should be proud and proclaim it to the world.&lt;br /&gt;&lt;br /&gt;Almost everyone carries a calculator (check out your cell phone).&lt;br /&gt;&lt;br /&gt;Having an &lt;a href="http://en.wikipedia.org/wiki/Reverse_Polish_Notation"&gt;RPN&lt;/a&gt; calculator shows low level geekdom.&lt;br /&gt;&lt;br /&gt;Having a &lt;a href="http://en.wikipedia.org/wiki/Calculator_watch"&gt;calculator watch&lt;/a&gt; shows moderate level geekdom.&lt;br /&gt;&lt;br /&gt;Having a calculator you built yourself shows high level geekdom.&lt;br /&gt;&lt;br /&gt;Having a RPN calculator watch that you &lt;a href="http://www.calcwatch.com/index.html"&gt;built yourself&lt;/a&gt; will make all other geeks bow down before you (with the possible exception of those few who built a &lt;a href="http://www.cathodecorner.com/nixiewatch/"&gt;nixie&lt;/a&gt; &lt;a href="http://www.amug.org/~jthomas/watch.html"&gt;tube&lt;/a&gt; &lt;a href="http://www.selectric.org/nixie/"&gt;watch&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-6082466504329049062?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/6082466504329049062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=6082466504329049062' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6082466504329049062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/6082466504329049062'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2008/12/geek-credit.html' title='Geek credit...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-3565892988018525837</id><published>2008-12-03T11:58:00.000-08:00</published><updated>2008-12-03T12:09:38.248-08:00</updated><title type='text'>And if you think that's bad...</title><content type='html'>As I mentioned &lt;a href="http://personallyinteresting.blogspot.com/2008/11/sometimes-i-annoy-my-employer-with-my.html"&gt;before&lt;/a&gt;, sometimes my programming doesn't sit well with my employer.&lt;br /&gt;&lt;br /&gt;It's not because I'm a bad programmer (at least I think so), but other people may have other opinions.&lt;br /&gt;&lt;br /&gt;But what if you were &lt;bold&gt;trying&lt;/bold&gt; to write bad code?  What if you were trying to confuse, confound, and mislead someone else?&lt;br /&gt;&lt;br /&gt;In that case, you should enter the &lt;a href="http://www.ioccc.org/"&gt;IOCCC&lt;/a&gt; (The International Obfuscated C Code Contest).  Look over the past winners, and see if your code is legendary.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-3565892988018525837?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/3565892988018525837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=3565892988018525837' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3565892988018525837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/3565892988018525837'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2008/12/and-if-you-think-thats-bad.html' title='And if you think that&apos;s bad...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-2832367542319378136</id><published>2008-12-01T11:23:00.000-08:00</published><updated>2008-12-01T11:49:18.772-08:00</updated><title type='text'>Microcontrollers and code protection (with pictures!)</title><content type='html'>A &lt;a href="http://en.wikipedia.org/wiki/Microcontroller"&gt;microcontroller&lt;/a&gt; is generally considered to be a &lt;a href="http://en.wikipedia.org/wiki/Microprocessor"&gt;microprocessor&lt;/a&gt; with built-in program memory (usually &lt;a href="http://en.wikipedia.org/wiki/Flash_memory"&gt;FLASH&lt;/a&gt;) and data memory, plus (maybe) EEPROM and peripherals.  It is a "system on a chip".&lt;br /&gt;&lt;br /&gt;If you look at many embedded hardware designs, you will see that the circuitry varies from incredibly complex (think cell phone) to fairly straight-forward (although considerable effort may have been put into the printed circuit board layout).&lt;br /&gt;&lt;br /&gt;For the straight-forward embedded system, the electronics are reasonably easy to copy.  The real value of the system is in the code controlling it.  To help protect this, most (if not all) microcontrollers include some sort of code protection, so that the program memory cannot be read out of the microcontroller.  That way, someone cannot copy your design without having to re-develop the code.&lt;br /&gt;&lt;br /&gt;Of course, there is a value to getting someone else's code instead of developing your own.  And where there is money, there are people to do the job.  This does not make them bad people, but it does make you consider if it would be quicker / cheaper to get someone else's code instead of writing your own.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flylogic.net/"&gt;Flylogic&lt;/a&gt; can, among other things, break into a microcontroller and read out the program code.  There are even valid reasons for the company that produces the embedded system to do this (the programmer dropped dead and nobody can find his source code).  They also do security analysis of chips to make sure that they are as hard as possible to break into.&lt;br /&gt;&lt;br /&gt;And, if you check out their &lt;a href="http://www.flylogic.net/blog/"&gt;blog&lt;/a&gt;, you will see how they tear apart microcontrollers, and they have many wonderful and beautiful photos of the actual silicon chips they contain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-2832367542319378136?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/2832367542319378136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=2832367542319378136' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2832367542319378136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/2832367542319378136'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2008/12/microcontrollers-and-code-protection.html' title='Microcontrollers and code protection (with pictures!)'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-8002317268623049466</id><published>2008-11-24T12:57:00.000-08:00</published><updated>2008-11-24T13:20:29.697-08:00</updated><title type='text'>Interruptions...</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_jtzOtyECENw/SSsYZI9hzBI/AAAAAAAAAAM/xpUlqg1JTOQ/s1600-h/tange.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_jtzOtyECENw/SSsYZI9hzBI/AAAAAAAAAAM/xpUlqg1JTOQ/s200/tange.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5272334608948644882" /&gt;&lt;/a&gt;&lt;br /&gt;Well, as &lt;a href="http://personallyinteresting.blogspot.com/2008/11/what-is-computer.html"&gt;mentioned before&lt;/a&gt;, sometimes life gets in the way of doing stuff.&lt;br /&gt;&lt;br /&gt;Last Tuesday, it interrupted me again.&lt;br /&gt;&lt;br /&gt;My wife and I foster kittens for a &lt;a href="http://www.petfinder.com/shelters/straycatblues.html"&gt;local cat rescue group&lt;/a&gt;.  As we have found out, sometimes this is a lifelong (the cats life, hopefully not ours...) obligation.&lt;br /&gt;&lt;br /&gt;We have four cats that, while technically not "ours", are going to be with us for (their) lives.  Two refuse to have anything to do with being adopted out, two are insane.&lt;br /&gt;&lt;br /&gt;Yes, insane.  We have been fostering them since they were about 10 weeks old, and someone else was fostering them before that.  It was a litter of six kittens.  Four of them were normal.  These two were afraid of people, and never got any better (we've taken in half-feral kittens from &lt;a href="http://www.neighborhoodcats.org/whatistnr.htm"&gt;TNR&lt;/a&gt; projects that we have made into lap cats.  Not these two...).  I call them my "indoor ferals".&lt;br /&gt;&lt;br /&gt;One of them, Tange (pictured above), has, for some reason, terrible &lt;a href="http://en.wikipedia.org/wiki/Gingivitis"&gt;gingivitis&lt;/a&gt;.  We finally got her to the vet to get her teeth cleaned.  Things were so bad, the vet wound up removing 7 of her teeth (poor kitty).&lt;br /&gt;&lt;br /&gt;Because of this, she needs special food and medication until she heals.  But, since we can't put on hands on her, we've had to put her in a &lt;a href="http://www.petsmart.com/product/index.jsp?productId=2753757&amp;utm_source=cse&amp;utm_campaign=1821930&amp;utm_medium=nextag&amp;mr:referralID=fb912f52-ba6c-11dd-ad8a-000423bb4e79"&gt;playpen&lt;/a&gt; that we normally use to keep kittens so that we don't have to hunt her down and catch her twice a day.  Of course, she acts about how you would expect...&lt;br /&gt;&lt;br /&gt;So, I haven't had much time for the last week or so.  I'll try to get back into it soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-8002317268623049466?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/8002317268623049466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=8002317268623049466' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8002317268623049466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/8002317268623049466'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2008/11/interruptions.html' title='Interruptions...'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_jtzOtyECENw/SSsYZI9hzBI/AAAAAAAAAAM/xpUlqg1JTOQ/s72-c/tange.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3298420732815848714.post-5177730877915134006</id><published>2008-11-17T10:44:00.000-08:00</published><updated>2008-11-17T10:58:46.825-08:00</updated><title type='text'>I can't see what I'm doing</title><content type='html'>Being an "old fart", I have special glasses to view a computer screen.  Not my normal bifocals for both distance and reading, these are for "intermediate distance" like looking at a computer screen.&lt;br /&gt;&lt;br /&gt;Today, I can't find them.  Maybe the cats are using them...&lt;br /&gt;&lt;br /&gt;In the mean time, go check out this &lt;a href="http://www.mindsontoys.com/kits.htm"&gt;mechanical computer&lt;/a&gt; that you might remember from the back pages of comic books when you were young (if you're an "old fart" like me...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3298420732815848714-5177730877915134006?l=personallyinteresting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://personallyinteresting.blogspot.com/feeds/5177730877915134006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3298420732815848714&amp;postID=5177730877915134006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5177730877915134006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3298420732815848714/posts/default/5177730877915134006'/><link rel='alternate' type='text/html' href='http://personallyinteresting.blogspot.com/2008/11/i-cant-see-what-im-doing.html' title='I can&apos;t see what I&apos;m doing'/><author><name>Bill</name><uri>http://www.blogger.com/profile/07366596323806580342</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
