<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Prodigal Boyfriend &#187; Bug</title>
	<atom:link href="http://blog.theprodigalboyfriend.com/category/bug/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.theprodigalboyfriend.com</link>
	<description>Why are you even reading this?</description>
	<lastBuildDate>Sat, 01 May 2010 00:37:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Palm Desktop, I stab at thee!</title>
		<link>http://blog.theprodigalboyfriend.com/2009/01/09/palm-desktop-i-stab-at-thee/</link>
		<comments>http://blog.theprodigalboyfriend.com/2009/01/09/palm-desktop-i-stab-at-thee/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 19:59:00 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Bug]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[shitcode]]></category>
		<category><![CDATA[WTF]]></category>

		<guid isPermaLink="false">http://blog.theprodigalboyfriend.com/?p=264</guid>
		<description><![CDATA[Firstly, I&#8217;m starting P90X tomorrow. Should be interesting. Secondly, I miss you guys :/ I&#8217;m living with somebody who asked me what the Dead Sea Scrolls are this morning, since it was on the news that they&#8217;re coming to the Science Museum. By the way, ever planning on touching your blogs again (Sewpbox and Rattributes [...]]]></description>
			<content:encoded><![CDATA[<p>Firstly, I&#8217;m starting P90X tomorrow.  Should be interesting.  Secondly, I miss you guys :/  I&#8217;m living with somebody who asked me what the Dead Sea Scrolls are this morning, since it was on the news that they&#8217;re coming to the Science Museum.</p>
<p>By the way, ever planning on touching your blogs again (Sewpbox and Rattributes not included)?</p>
<p>So I&#8217;m migrating Heather&#8217;s Palm Desktop crap to Google Calendar (I have no idea why no tool exists to do this).  Google Calendar doesn&#8217;t really like the CSV I massaged out of it (only importing about half the records), and I&#8217;m starting to see why.  Half the records are fucking duplicates in every way but one.  I wrote a Python script to do it for me anyway.</p>
<p>The long and short of it amounts to this:<br />
If you want the easy way, export the Palm data to a .mda, import it into Yahoo Calendar, then into Google Calendar from there. Otherwise, export it to a CSV, and hit it with this script:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#!/usr/bin/ruby</span>
<span style="color:#008000; font-style:italic;">#</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'csv'</span>
&nbsp;
input = <span style="color:#996600;">&quot;export.csv&quot;</span>
output = <span style="color:#996600;">&quot;gcal.csv&quot;</span>
&nbsp;
csvfile = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>input<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span> f.<span style="color:#9900CC;">read</span><span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Parsing...&quot;</span>
&nbsp;
csv = CSV::parse<span style="color:#006600; font-weight:bold;">&#40;</span>csvfile<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
fields = csv.<span style="color:#9900CC;">shift</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Writing...&quot;</span>
<span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>output, <span style="color:#996600;">&quot;w&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span>
   f.<span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;Subject, Start Date, Start Time, End Date, End Time<span style="color:#000099;">\n</span>&quot;</span>
   csv.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>line<span style="color:#006600; font-weight:bold;">|</span>
     startdate, starttime = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">at</span><span style="color:#006600; font-weight:bold;">&#40;</span>line<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">6</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">to_i</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">strftime</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;%m/%d/%Y,%I:%M:%S %p&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#CC0066; font-weight:bold;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">','</span><span style="color:#006600; font-weight:bold;">&#41;</span>
     enddate, endtime = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">at</span><span style="color:#006600; font-weight:bold;">&#40;</span>line<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">7</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">to_i</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">strftime</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;%m/%d/%Y,%I:%M:%S %p&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#CC0066; font-weight:bold;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">','</span><span style="color:#006600; font-weight:bold;">&#41;</span>
     f.<span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\&quot;</span>#{line[11]}<span style="color:#000099;">\&quot;</span>,#{startdate},#{starttime},#{enddate},#{endtime}<span style="color:#000099;">\n</span>&quot;</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Done.&quot;</span></pre></div></div>

<p>If you don&#8217;t feel like exporting, and are running on Windows:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#!/usr/bin/ruby</span>
<span style="color:#008000; font-style:italic;">#</span>
<span style="color:#008000; font-style:italic;">#</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'win32ole'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'dbi'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> Access
   attr_accessor <span style="color:#ff3333; font-weight:bold;">:mdb</span>, <span style="color:#ff3333; font-weight:bold;">:conn</span>, <span style="color:#ff3333; font-weight:bold;">:data</span>, <span style="color:#ff3333; font-weight:bold;">:fields</span>
&nbsp;
   <span style="color:#9966CC; font-weight:bold;">def</span> initialize<span style="color:#006600; font-weight:bold;">&#40;</span>mdb=<span style="color:#0000FF; font-weight:bold;">nil</span><span style="color:#006600; font-weight:bold;">&#41;</span>
       <span style="color:#0066ff; font-weight:bold;">@mdb</span> = mdb
       <span style="color:#0066ff; font-weight:bold;">@conn</span> = <span style="color:#0000FF; font-weight:bold;">nil</span>
       <span style="color:#0066ff; font-weight:bold;">@data</span> = <span style="color:#0000FF; font-weight:bold;">nil</span>
       <span style="color:#0066ff; font-weight:bold;">@fields</span> = <span style="color:#0000FF; font-weight:bold;">nil</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
   <span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#CC0066; font-weight:bold;">open</span>
       connstring = <span style="color:#996600;">&quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=#{@mdb}&quot;</span>
       <span style="color:#0066ff; font-weight:bold;">@conn</span> = WIN32OLE.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'ADODB.Connection'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
       <span style="color:#0066ff; font-weight:bold;">@conn</span>.<span style="color:#CC0066; font-weight:bold;">Open</span><span style="color:#006600; font-weight:bold;">&#40;</span>connstring<span style="color:#006600; font-weight:bold;">&#41;</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
   <span style="color:#9966CC; font-weight:bold;">def</span> query<span style="color:#006600; font-weight:bold;">&#40;</span>sql<span style="color:#006600; font-weight:bold;">&#41;</span>
       set = WIN32OLE.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'ADODB.Recordset'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
       set.<span style="color:#CC0066; font-weight:bold;">Open</span><span style="color:#006600; font-weight:bold;">&#40;</span>sql, <span style="color:#0066ff; font-weight:bold;">@conn</span><span style="color:#006600; font-weight:bold;">&#41;</span>
       <span style="color:#0066ff; font-weight:bold;">@fields</span> = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
       set.<span style="color:#9900CC;">Fields</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>field<span style="color:#006600; font-weight:bold;">|</span>
           <span style="color:#0066ff; font-weight:bold;">@fields</span> <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> field.<span style="color:#9900CC;">Name</span>
       <span style="color:#9966CC; font-weight:bold;">end</span>
       <span style="color:#0066ff; font-weight:bold;">@data</span> = set.<span style="color:#9900CC;">GetRows</span>.<span style="color:#9900CC;">transpose</span>
       set.<span style="color:#9900CC;">Close</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
   <span style="color:#9966CC; font-weight:bold;">def</span> close
       <span style="color:#0066ff; font-weight:bold;">@conn</span>.<span style="color:#9900CC;">Close</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
output = <span style="color:#996600;">&quot;gcal.csv&quot;</span>
&nbsp;
rows = <span style="color:#CC0066; font-weight:bold;">Array</span>.<span style="color:#9900CC;">new</span>
&nbsp;
db = Access.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'c:<span style="color:#000099;">\p</span>ath<span style="color:#000099;">\t</span>o<span style="color:#000099;">\m</span>db'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
db.<span style="color:#CC0066; font-weight:bold;">open</span>
&nbsp;
db.<span style="color:#9900CC;">query</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;SELECT * FROM Main;&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
names = db.<span style="color:#9900CC;">fields</span>
rows = db.<span style="color:#9900CC;">data</span>
&nbsp;
<span style="color:#008000; font-style:italic;">#Alternatively</span>
DBI.<span style="color:#9900CC;">connect</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;DBI:ODBC:driver=Microsoft Access Driver (*.mdb);&quot;</span><span style="color:#006600; font-weight:bold;">+</span><span style="color:#996600;">&quot;dbq=c:/path/to/mdb&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>dbh<span style="color:#006600; font-weight:bold;">|</span>
   dbh.<span style="color:#9900CC;">select_all</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'select * from Main'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>row<span style="color:#006600; font-weight:bold;">|</span> rows <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> row<span style="color:#006600; font-weight:bold;">&#125;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Writing...&quot;</span>
<span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>output, <span style="color:#996600;">&quot;w&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span>
   f.<span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;Subject, Start Date, Start Time, End Date, End Time<span style="color:#000099;">\n</span>&quot;</span>
   rows.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>line<span style="color:#006600; font-weight:bold;">|</span>
     startdate, starttime = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">at</span><span style="color:#006600; font-weight:bold;">&#40;</span>line<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">6</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">to_i</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">strftime</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;%m/%d/%Y,%I:%M:%S %p&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#CC0066; font-weight:bold;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">','</span><span style="color:#006600; font-weight:bold;">&#41;</span>
     enddate, endtime = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">at</span><span style="color:#006600; font-weight:bold;">&#40;</span>line<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">7</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">to_i</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">strftime</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;%m/%d/%Y,%I:%M:%S %p&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#CC0066; font-weight:bold;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">','</span><span style="color:#006600; font-weight:bold;">&#41;</span>
     f.<span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\&quot;</span>#{line[11]}<span style="color:#000099;">\&quot;</span>,#{startdate},#{starttime},#{enddate},#{endtime}<span style="color:#000099;">\n</span>&quot;</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Done.&quot;</span></pre></div></div>

<p>If you want the details&#8230;</p>
<p>Essentially, Palm&#8217;s Datebook dumps everything into an Access database.  No keys or relations (granted, only 3 tables, but still), and no idea what most of the columns do.  Tools for working with Jet on Linux are minimal, and I didn&#8217;t feel like going through win32ole just to get to Jet, plus this sort of thing is nicer to do in downtime at work.  So, I exported it via ODBC to a Postgres database on my Solaris box.  Not pretty.</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">access<span style="color: #66cc66;">=</span><span style="color: #808080; font-style: italic;"># \d main</span>
                 <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">&quot;public.main&quot;</span>
     <span style="color: #993333; font-weight: bold;">COLUMN</span>     <span style="color: #66cc66;">|</span>          Type          <span style="color: #66cc66;">|</span> Modifiers 
<span style="color: #808080; font-style: italic;">----------------+------------------------+-----------</span>
 record_id      <span style="color: #66cc66;">|</span> bigint                 <span style="color: #66cc66;">|</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>
 <span style="color: #993333; font-weight: bold;">STATUS</span>         <span style="color: #66cc66;">|</span> integer                <span style="color: #66cc66;">|</span> 
 placement      <span style="color: #66cc66;">|</span> bigint                 <span style="color: #66cc66;">|</span> 
 private        <span style="color: #66cc66;">|</span> smallint               <span style="color: #66cc66;">|</span> 
 category       <span style="color: #66cc66;">|</span> character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span>  <span style="color: #66cc66;">|</span> 
 start_time     <span style="color: #66cc66;">|</span> bigint                 <span style="color: #66cc66;">|</span> 
 end_time       <span style="color: #66cc66;">|</span> bigint                 <span style="color: #66cc66;">|</span> 
 untimed        <span style="color: #66cc66;">|</span> smallint               <span style="color: #66cc66;">|</span> 
 time_zone      <span style="color: #66cc66;">|</span> character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">40</span><span style="color: #66cc66;">&#41;</span>  <span style="color: #66cc66;">|</span> 
 location       <span style="color: #66cc66;">|</span> character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">|</span> 
 summary        <span style="color: #66cc66;">|</span> text                   <span style="color: #66cc66;">|</span> 
 alarm_advance  <span style="color: #66cc66;">|</span> character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>  <span style="color: #66cc66;">|</span> 
 alarm_unit     <span style="color: #66cc66;">|</span> character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>  <span style="color: #66cc66;">|</span> 
 repeated_event <span style="color: #66cc66;">|</span> character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">|</span> 
 alarm          <span style="color: #66cc66;">|</span> smallint               <span style="color: #66cc66;">|</span> 
 note           <span style="color: #66cc66;">|</span> character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">|</span> 
access<span style="color: #66cc66;">=</span><span style="color: #808080; font-style: italic;">#</span></pre></div></div>

<p>Ok, so record_id seems to be some sort of key, and Heather doesn&#8217;t bother with notes or alarms, so this doesn&#8217;t seem like it&#8217;d be so bad.  To figure why Google is only taking some of the records, though:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> count<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> main;
 count 
<span style="color: #808080; font-style: italic;">-------</span>
  <span style="color: #cc66cc;">5094</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> row<span style="color: #66cc66;">&#41;</span>
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> count<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">DISTINCT</span> record_id<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> main;
 count 
<span style="color: #808080; font-style: italic;">-------</span>
  <span style="color: #cc66cc;">5074</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> row<span style="color: #66cc66;">&#41;</span>
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> count<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">DISTINCT</span> start_time<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> main;
 count 
<span style="color: #808080; font-style: italic;">-------</span>
  <span style="color: #cc66cc;">2488</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> row<span style="color: #66cc66;">&#41;</span>
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> count<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">DISTINCT</span> end_time<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> main;
 count 
<span style="color: #808080; font-style: italic;">-------</span>
  <span style="color: #cc66cc;">2490</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> row<span style="color: #66cc66;">&#41;</span>
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> count<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">DISTINCT</span> summary<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> main;
 count 
<span style="color: #808080; font-style: italic;">-------</span>
  <span style="color: #cc66cc;">2264</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> row<span style="color: #66cc66;">&#41;</span>
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> record_id<span style="color: #66cc66;">,</span> start_time<span style="color: #66cc66;">,</span> end_time<span style="color: #66cc66;">,</span> summary 
<span style="color: #993333; font-weight: bold;">FROM</span> main 
<span style="color: #993333; font-weight: bold;">WHERE</span> record_id <span style="color: #993333; font-weight: bold;">IN</span> 
    <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> record_id 
     <span style="color: #993333; font-weight: bold;">FROM</span> main 
     <span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> record_id 
     <span style="color: #993333; font-weight: bold;">HAVING</span> count<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
 record_id <span style="color: #66cc66;">|</span> start_time <span style="color: #66cc66;">|</span>  end_time  <span style="color: #66cc66;">|</span>                                 summary                                 
<span style="color: #808080; font-style: italic;">-----------+------------+------------+-------------------------------------------------------------------------</span>
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231437600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231441200</span> <span style="color: #66cc66;">|</span> tammy 
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231869600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231873200</span> <span style="color: #66cc66;">|</span> nb chanber lunch
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1229642100</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1229645700</span> <span style="color: #66cc66;">|</span> tammy <span style="color: #993333; font-weight: bold;">AND</span> joe photos st claire broiler
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231959600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231963200</span> <span style="color: #66cc66;">|</span> dr hunt
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230505200</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230508800</span> <span style="color: #66cc66;">|</span> tilsen photos
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230568200</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230571800</span> <span style="color: #66cc66;">|</span> meet gary at studio
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230571800</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230584400</span> <span style="color: #66cc66;">|</span> bri <span style="color: #993333; font-weight: bold;">AND</span> kids
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230744600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230748200</span> <span style="color: #66cc66;">|</span> tilsen<span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">AND</span> sandy <span style="color: #993333; font-weight: bold;">ORDER</span> y membership mail
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230681600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230681600</span> <span style="color: #66cc66;">|</span> Dan<span style="color: #66cc66;">,</span> missy <span style="color: #993333; font-weight: bold;">AND</span> the kids<span style="color: #66cc66;">.</span>
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231610400</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231614000</span> <span style="color: #66cc66;">|</span>  james j hill houseOngoing Daily <span style="color: #cc66cc;">11</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">15</span><span style="color: #66cc66;">/</span>08 <span style="color: #66cc66;">-</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">22</span><span style="color: #66cc66;">/</span>09  m<span style="color: #66cc66;">-</span>sat <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span> sun <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span>
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230663600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230667200</span> <span style="color: #66cc66;">|</span> tammys house glasses shopping
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1229727600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1229731200</span> <span style="color: #66cc66;">|</span> ryan help at studio
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231889400</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231893000</span> <span style="color: #66cc66;">|</span> 
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231889400</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231903800</span> <span style="color: #66cc66;">|</span> EMS 
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1237161600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1237161600</span> <span style="color: #66cc66;">|</span> spring break
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1229983200</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1229986800</span> <span style="color: #66cc66;">|</span> msp <span style="color: #993333; font-weight: bold;">WITH</span> the girls
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1241049600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1241049600</span> <span style="color: #66cc66;">|</span> DISH
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1232233200</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1232244000</span> <span style="color: #66cc66;">|</span> jordan senior photos excel <span style="color: #993333; font-weight: bold;">AND</span> studio 
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230055200</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230058800</span> <span style="color: #66cc66;">|</span> paige studio
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230314400</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1230318000</span> <span style="color: #66cc66;">|</span> amanda tg
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1229968800</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1229972400</span> <span style="color: #66cc66;">|</span> sara <span style="color: #993333; font-weight: bold;">AND</span> nolan 
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">21</span> rows<span style="color: #66cc66;">&#41;</span>
&nbsp;
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> record_id<span style="color: #66cc66;">,</span> start_time<span style="color: #66cc66;">,</span> end_time<span style="color: #66cc66;">,</span> summary 
<span style="color: #993333; font-weight: bold;">FROM</span> main 
<span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> start_time 
<span style="color: #993333; font-weight: bold;">ASC</span> <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">10</span>;
 record_id <span style="color: #66cc66;">|</span> start_time <span style="color: #66cc66;">|</span> end_time <span style="color: #66cc66;">|</span> summary 
<span style="color: #808080; font-style: italic;">-----------+------------+----------+---------</span>
   <span style="color: #cc66cc;">7128069</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> c
   <span style="color: #cc66cc;">7128068</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> a
   <span style="color: #cc66cc;">7123605</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> a
   <span style="color: #cc66cc;">7128070</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">3</span>
   <span style="color: #cc66cc;">7124866</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> c
   <span style="color: #cc66cc;">7124107</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">3</span>
   <span style="color: #cc66cc;">7124145</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> o
   <span style="color: #cc66cc;">7124141</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> ;
   <span style="color: #cc66cc;">7128072</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> ;
   <span style="color: #cc66cc;">7128071</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">31449600</span> <span style="color: #66cc66;">|</span> o
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span> rows<span style="color: #66cc66;">&#41;</span>
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> record_id<span style="color: #66cc66;">,</span> start_time<span style="color: #66cc66;">,</span> end_time<span style="color: #66cc66;">,</span> summary <span style="color: #993333; font-weight: bold;">FROM</span> main <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> start_time <span style="color: #993333; font-weight: bold;">DESC</span> <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">10</span>;
 record_id <span style="color: #66cc66;">|</span> start_time <span style="color: #66cc66;">|</span>  end_time  <span style="color: #66cc66;">|</span>           summary           
<span style="color: #808080; font-style: italic;">-----------+------------+------------+-----------------------------</span>
   <span style="color: #cc66cc;">7127485</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1256774400</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1256774400</span> <span style="color: #66cc66;">|</span> lawerance wedding
   <span style="color: #cc66cc;">7125815</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1256774400</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1256774400</span> <span style="color: #66cc66;">|</span> lawerance wedding
   <span style="color: #cc66cc;">7128114</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1244167200</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1244170800</span> <span style="color: #66cc66;">|</span> NB senior <span style="color: #993333; font-weight: bold;">ALL</span> night party
   <span style="color: #cc66cc;">7125941</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1242489600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1242493200</span> <span style="color: #66cc66;">|</span> nyquist edding
   <span style="color: #cc66cc;">7125827</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1242489600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1242493200</span> <span style="color: #66cc66;">|</span> nyquist edding
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1241049600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1241049600</span> <span style="color: #66cc66;">|</span> DISH
   <span style="color: #cc66cc;">7128073</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1238079600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1238083200</span> <span style="color: #66cc66;">|</span> books <span style="color: #993333; font-weight: bold;">IN</span> the woods
   <span style="color: #cc66cc;">7125623</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1238079600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1238083200</span> <span style="color: #66cc66;">|</span> books <span style="color: #993333; font-weight: bold;">IN</span> the woods
   <span style="color: #cc66cc;">7125697</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1238025600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1238025600</span> <span style="color: #66cc66;">|</span> gunflint books <span style="color: #993333; font-weight: bold;">IN</span> the woods
   <span style="color: #cc66cc;">7126175</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1238025600</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1238025600</span> <span style="color: #66cc66;">|</span> gunflint books <span style="color: #993333; font-weight: bold;">IN</span> the woods
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span> rows<span style="color: #66cc66;">&#41;</span>
&nbsp;
access<span style="color: #66cc66;">=</span>$</pre></div></div>

<p>Oh, yeah!  What I&#8217;ve gathered: </p>
<ul>
<li>There are duplicate record_ids (which I&#8217;d hoped would have been unique).</li>
<li>There are events set to start and end at duplicate times</li>
<li>Palm, at some point, duplicated a lot of the other records, <em>except</em> for the record_id.</li>
<li>Times are stored in epoch seconds (oddly, Unix epoch seconds, not Windows)</li>
<li>Some of the times correlate to 1970?  WTF</li>
</ul>
<p>A working solution:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">DISTINCT</span> a<span style="color: #66cc66;">.</span>start_time<span style="color: #66cc66;">,</span> a<span style="color: #66cc66;">.</span>end_time<span style="color: #66cc66;">,</span> a<span style="color: #66cc66;">.</span>summary 
<span style="color: #993333; font-weight: bold;">INTO</span> holdkey 
<span style="color: #993333; font-weight: bold;">FROM</span> main a
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> 
    <span style="color: #66cc66;">&#40;</span> <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #ff0000;">'x'</span> <span style="color: #993333; font-weight: bold;">FROM</span> main b <span style="color: #993333; font-weight: bold;">WHERE</span> a<span style="color: #66cc66;">.</span>start_time <span style="color: #66cc66;">=</span> b<span style="color: #66cc66;">.</span>start_time
      <span style="color: #993333; font-weight: bold;">AND</span> a<span style="color: #66cc66;">.</span>end_time <span style="color: #66cc66;">=</span> b<span style="color: #66cc66;">.</span>end_time
      <span style="color: #993333; font-weight: bold;">AND</span> a<span style="color: #66cc66;">.</span>summary <span style="color: #66cc66;">=</span> b<span style="color: #66cc66;">.</span>summary<span style="color: #66cc66;">&#41;</span> 
<span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> a<span style="color: #66cc66;">.</span>start_time <span style="color: #993333; font-weight: bold;">DESC</span>;
<span style="color: #993333; font-weight: bold;">SELECT</span>
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> count<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> holdkey;
 count 
<span style="color: #808080; font-style: italic;">-------</span>
  <span style="color: #cc66cc;">2597</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> row<span style="color: #66cc66;">&#41;</span>
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">DELETE</span> <span style="color: #993333; font-weight: bold;">FROM</span> main 
<span style="color: #993333; font-weight: bold;">USING</span> holdkey 
<span style="color: #993333; font-weight: bold;">WHERE</span> main<span style="color: #66cc66;">.</span>start_time <span style="color: #66cc66;">=</span> holdkey<span style="color: #66cc66;">.</span>start_time 
    <span style="color: #993333; font-weight: bold;">AND</span> main<span style="color: #66cc66;">.</span>end_time <span style="color: #66cc66;">=</span> holdkey<span style="color: #66cc66;">.</span>end_time 
    <span style="color: #993333; font-weight: bold;">AND</span> main<span style="color: #66cc66;">.</span>summary <span style="color: #66cc66;">=</span> holdkey<span style="color: #66cc66;">.</span>summary;
<span style="color: #993333; font-weight: bold;">DELETE</span> <span style="color: #cc66cc;">5085</span>
&nbsp;
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> record_id<span style="color: #66cc66;">,</span> start_time<span style="color: #66cc66;">,</span> end_time<span style="color: #66cc66;">,</span> summary <span style="color: #993333; font-weight: bold;">FROM</span> main;
 record_id <span style="color: #66cc66;">|</span> start_time <span style="color: #66cc66;">|</span>  end_time  <span style="color: #66cc66;">|</span> summary 
<span style="color: #808080; font-style: italic;">-----------+------------+------------+---------</span>
   <span style="color: #cc66cc;">5280360</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31536000</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31536000</span> <span style="color: #66cc66;">|</span> 
   <span style="color: #cc66cc;">5280298</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31536000</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31536000</span> <span style="color: #66cc66;">|</span> 
   <span style="color: #cc66cc;">5280429</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31536000</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31536000</span> <span style="color: #66cc66;">|</span> 
   <span style="color: #cc66cc;">7125497</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1193437800</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1193437800</span> <span style="color: #66cc66;">|</span> 
   <span style="color: #cc66cc;">7128378</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31536000</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31536000</span> <span style="color: #66cc66;">|</span> 
   <span style="color: #cc66cc;">7128376</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31536000</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31536000</span> <span style="color: #66cc66;">|</span> 
   <span style="color: #cc66cc;">7128374</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31536000</span> <span style="color: #66cc66;">|</span>   <span style="color: #cc66cc;">31536000</span> <span style="color: #66cc66;">|</span> 
   <span style="color: #cc66cc;">7127620</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1193437800</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1193437800</span> <span style="color: #66cc66;">|</span> 
         <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231889400</span> <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">1231893000</span> <span style="color: #66cc66;">|</span> 
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">9</span> rows<span style="color: #66cc66;">&#41;</span>
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> main;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span>
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">INTO</span> main <span style="color: #993333; font-weight: bold;">FROM</span> holdkey;
<span style="color: #993333; font-weight: bold;">SELECT</span></pre></div></div>

<p>That works.  Of course there&#8217;s the quick and dirty way which doesn&#8217;t involve munging about with temp tables:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">DELETE</span> <span style="color: #993333; font-weight: bold;">FROM</span> main t1
<span style="color: #993333; font-weight: bold;">USING</span> main 
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> 
    <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> main t2 
         <span style="color: #993333; font-weight: bold;">WHERE</span> t1<span style="color: #66cc66;">.</span>start_time <span style="color: #66cc66;">=</span> t2<span style="color: #66cc66;">.</span>start_time 
         <span style="color: #993333; font-weight: bold;">AND</span> t1<span style="color: #66cc66;">.</span>end_time <span style="color: #66cc66;">=</span> t2<span style="color: #66cc66;">.</span>end_time 
         <span style="color: #993333; font-weight: bold;">AND</span> t1<span style="color: #66cc66;">.</span>summary <span style="color: #66cc66;">=</span> t2<span style="color: #66cc66;">.</span>summary 
         <span style="color: #993333; font-weight: bold;">AND</span> t1<span style="color: #66cc66;">.</span>record_id <span style="color: #66cc66;">&lt;</span> t2<span style="color: #66cc66;">.</span>record_id<span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold;">DELETE</span> <span style="color: #cc66cc;">2488</span>
&nbsp;
access<span style="color: #66cc66;">=</span>$ <span style="color: #993333; font-weight: bold;">SELECT</span> count<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> test;
 count 
<span style="color: #808080; font-style: italic;">-------</span>
  <span style="color: #cc66cc;">2606</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> row<span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>It gives a slightly different result, but operates under the assumption that Palm&#8217;s record_id means something (it may not, for all I know).  On the upside, it preserves all the columns in case they&#8217;re useful for something (doubtful).  I could order by start_time and select into another table, add an index, and do the same thing, but it&#8217;s easier the quick and dirty way.  There&#8217;s probably a trivial way to do this with joins, but I couldn&#8217;t think of one, and it leaves 9 records with a record_id of 0..</p>
<p>Here&#8217;s the code which it turns out I didn&#8217;t need, but it might be useful to somebody:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#Rips data from Palm Desktop.  Uploads it to Google Calendar</span>
<span style="color: #808080; font-style: italic;">#Written with Python 2.5 (though imports should work anyway)</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;">#Currently, the Access MDB Palm Datebook uses has been exported to a </span>
<span style="color: #808080; font-style: italic;">#PostgreSQL server via ODBC, so I'll be connecting to that</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;">#There's code in here for getting through Access also, but I haven't tested it.</span>
<span style="color: #808080; font-style: italic;">#Use at your own risk (kinda like Access).</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;">#This is mostly due to the Postgres ODBC driver, and the fact that I didn't</span>
<span style="color: #808080; font-style: italic;">#want to bother with quoting all the queries for Postgres to allow spaces</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">try</span>:
    <span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">xml</span>.<span style="color: black;">etree</span> <span style="color: #ff7700;font-weight:bold;">import</span> ElementTree <span style="color: #808080; font-style: italic;">#Python 2.5, probably 2.6/3.0 also</span>
<span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">ImportError</span>:
    <span style="color: #ff7700;font-weight:bold;">from</span> elementtree <span style="color: #ff7700;font-weight:bold;">import</span> ElementTree <span style="color: #808080; font-style: italic;">#Python &lt;2.4</span>
<span style="color: #ff7700;font-weight:bold;">import</span> gdata.<span style="color: #dc143c;">calendar</span>.<span style="color: black;">service</span>
<span style="color: #ff7700;font-weight:bold;">import</span> gdata.<span style="color: black;">service</span>
<span style="color: #ff7700;font-weight:bold;">import</span> atom.<span style="color: black;">service</span>
<span style="color: #ff7700;font-weight:bold;">import</span> gdata.<span style="color: #dc143c;">calendar</span>
<span style="color: #ff7700;font-weight:bold;">import</span> atom
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">getopt</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">string</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>
<span style="color: #ff7700;font-weight:bold;">import</span> psycopg2 <span style="color: #808080; font-style: italic;">#Talk to Postgres</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> Struct:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, <span style="color: #66cc66;">*</span>args, <span style="color: #66cc66;">**</span>kwargs<span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">for</span> k,v <span style="color: #ff7700;font-weight:bold;">in</span> kwargs.<span style="color: black;">items</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
            <span style="color: #008000;">setattr</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, k, v<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> GCalMigrate:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">conn</span> = <span style="color: #008000;">None</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">cur</span> = <span style="color: #008000;">None</span>
        <span style="color: #008000;">self</span>.<span style="color: #dc143c;">calendar</span> = <span style="color: #008000;">None</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">records</span> = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> connect<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
       <span style="color: #ff7700;font-weight:bold;">try</span>:
           <span style="color: #008000;">self</span>.<span style="color: black;">conn</span> = psycopg2.<span style="color: black;">connect</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;dbname='whatever' user='yournamehere' host='server'&quot;</span><span style="color: black;">&#41;</span>
       <span style="color: #ff7700;font-weight:bold;">except</span>:
           <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Can't connect to the database!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
           <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
       <span style="color: #008000;">self</span>.<span style="color: black;">cur</span> = conn.<span style="color: black;">cursor</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
       query<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> accessconnect<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>,mdbpath<span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">import</span> odbc
        <span style="color: #008000;">self</span>.<span style="color: black;">conn</span> = odbc.<span style="color: black;">odbc</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;driver=Microsoft Access Driver (*.mdb);DBQ=%s&quot;</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">%</span> mdbpath
        <span style="color: #008000;">self</span>.<span style="color: black;">cur</span> = conn.<span style="color: black;">cursor</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        queryaccess<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> queryaccess<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        rows = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">cur</span>.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SELECT Main.[Start Time], Main.[End Time], Main.[Summary] FROM Main&quot;</span><span style="color: black;">&#41;</span>
        rows = cur.<span style="color: black;">fetchall</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        conn.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        parserows<span style="color: black;">&#40;</span>rows<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> query<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
       rows = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
       <span style="color: #ff7700;font-weight:bold;">try</span>:
           <span style="color: #008000;">self</span>.<span style="color: black;">cur</span>.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SELECT start_time, end_time, summary FROM main&quot;</span><span style="color: black;">&#41;</span>
           rows = cur.<span style="color: black;">fetchall</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
       <span style="color: #ff7700;font-weight:bold;">except</span>:
           <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Couldn't query the database.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
       conn.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
       parserows<span style="color: black;">&#40;</span>rows<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> parserows<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, rows<span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">for</span> row <span style="color: #ff7700;font-weight:bold;">in</span> rows:
            starttime = <span style="color: #dc143c;">time</span>.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;%Y-%m-%dT%H:%M:%S.000Z&quot;</span>, <span style="color: #dc143c;">time</span>.<span style="color: black;">gmtime</span><span style="color: black;">&#40;</span>row<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
            endtime = <span style="color: #dc143c;">time</span>.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;%Y-%m-%dT%H:%M:%S.000Z&quot;</span>, <span style="color: #dc143c;">time</span>.<span style="color: black;">gmtime</span><span style="color: black;">&#40;</span>row<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
            title = row<span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>
            record = Struct<span style="color: black;">&#40;</span>start_time=starttime, end_time=enddtime, title=title<span style="color: black;">&#41;</span>
            <span style="color: #008000;">self</span>.<span style="color: black;">records</span>.<span style="color: black;">append</span><span style="color: black;">&#40;</span>record<span style="color: black;">&#41;</span>
        login<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> login<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, username, password<span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: #dc143c;">calendar</span> = gdata.<span style="color: #dc143c;">calendar</span>.<span style="color: black;">service</span>.<span style="color: black;">CalendarService</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: #dc143c;">calendar</span>.<span style="color: #dc143c;">email</span> = username
        <span style="color: #008000;">self</span>.<span style="color: #dc143c;">calendar</span>.<span style="color: black;">password</span> = password
        <span style="color: #008000;">self</span>.<span style="color: #dc143c;">calendar</span>.<span style="color: black;">source</span> = <span style="color: #483d8b;">&quot;Palm_Desktop_Migrator&quot;</span>
        <span style="color: #008000;">self</span>.<span style="color: #dc143c;">calendar</span>.<span style="color: black;">ProgrammaticLogin</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        batchsubmit<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> batchsubmit<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        feed = gdata.<span style="color: #dc143c;">calendar</span>.<span style="color: black;">CalendarEventFeed</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">for</span> record <span style="color: #ff7700;font-weight:bold;">in</span> records:
            insertme = gdata.<span style="color: #dc143c;">calendar</span>.<span style="color: black;">CalendarEventEntry</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
            insertme.<span style="color: black;">title</span> = atom.<span style="color: black;">Title</span><span style="color: black;">&#40;</span>record.<span style="color: black;">title</span><span style="color: black;">&#41;</span>
            insertme.<span style="color: black;">content</span> = atom.<span style="color: black;">Content</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&quot;</span><span style="color: black;">&#41;</span>
            insertme.<span style="color: black;">when</span>.<span style="color: black;">append</span><span style="color: black;">&#40;</span>gdata.<span style="color: #dc143c;">calendar</span>.<span style="color: black;">When</span><span style="color: black;">&#40;</span>start_time=record.<span style="color: black;">start_time</span>, end_time=record.<span style="color: black;">end_time</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
            insertme.<span style="color: black;">batch_id</span> = gdata.<span style="color: black;">BatchId</span><span style="color: black;">&#40;</span>text=<span style="color: #483d8b;">'Palm_Migration'</span><span style="color: black;">&#41;</span>
&nbsp;
            feed.<span style="color: black;">Add_Insert</span><span style="color: black;">&#40;</span>entry=insertme<span style="color: black;">&#41;</span>
        response = <span style="color: #008000;">self</span>.<span style="color: #dc143c;">calendar</span>.<span style="color: black;">ExecuteBatch</span><span style="color: black;">&#40;</span>feed, gdata.<span style="color: #dc143c;">calendar</span>.<span style="color: black;">service</span>.<span style="color: black;">DEFAULT_BATCH_URL</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> response
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
    runner = GCalMigrate<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    responses = runner.<span style="color: black;">connect</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> entry <span style="color: #ff7700;font-weight:bold;">in</span> responses.<span style="color: black;">entry</span>:
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Batch ID: %s&quot;</span> <span style="color: #66cc66;">%</span> entry.<span style="color: black;">batch_id</span>.<span style="color: black;">text</span>
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Status: %s&quot;</span> <span style="color: #66cc66;">%</span> entry.<span style="color: black;">batch_status</span>.<span style="color: #dc143c;">code</span>
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Reason: %s&quot;</span> <span style="color: #66cc66;">%</span> entry.<span style="color: black;">batch_status</span>.<span style="color: black;">reason</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.theprodigalboyfriend.com/2009/01/09/palm-desktop-i-stab-at-thee/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Just a taste &#8211;</title>
		<link>http://blog.theprodigalboyfriend.com/2008/03/11/just-a-taste/</link>
		<comments>http://blog.theprodigalboyfriend.com/2008/03/11/just-a-taste/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 22:58:36 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Bug]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[shitcode]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[WTF]]></category>

		<guid isPermaLink="false">http://blog.theprodigalboyfriend.com/2008/03/11/just-a-taste/</guid>
		<description><![CDATA[Since I&#8217;ve been bitching to Dan lately about the code I inherited, here are a few examples: System.DateTime answer = today.AddDays&#40;-1&#41;; YesterdayTemp = answer.ToString&#40;&#34;dd&#34;&#41;; TodayTemp = today.ToString&#40;&#34;dd&#34;&#41;; string TodayMonth = today.ToString&#40;&#34;MM&#34;&#41;; string currlogdir = @&#34;C:\Faxserver\Logs\&#34;; int currHour = DateTime.Now.Hour; int currMinute = DateTime.Now.Minute; int currSecond = DateTime.Now.Second; if &#40;currHour == 00 &#38;&#38; currMinute == 00 [...]]]></description>
			<content:encoded><![CDATA[<p>Since I&#8217;ve been bitching to Dan lately about the code I inherited, here are a few examples:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #000000;">System</span>.<span style="color: #0000FF;">DateTime</span> answer <span style="color: #008000;">=</span> today.<span style="color: #0000FF;">AddDays</span><span style="color: #000000;">&#40;</span><span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
YesterdayTemp <span style="color: #008000;">=</span> answer.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;dd&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
TodayTemp <span style="color: #008000;">=</span> today.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;dd&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">string</span> TodayMonth <span style="color: #008000;">=</span> today.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;MM&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">string</span> currlogdir <span style="color: #008000;">=</span> <span style="color: #666666;">@&quot;C:\Faxserver\Logs\&quot;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">int</span> currHour <span style="color: #008000;">=</span> DateTime.<span style="color: #0000FF;">Now</span>.<span style="color: #0000FF;">Hour</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">int</span> currMinute <span style="color: #008000;">=</span> DateTime.<span style="color: #0000FF;">Now</span>.<span style="color: #0000FF;">Minute</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">int</span> currSecond <span style="color: #008000;">=</span> DateTime.<span style="color: #0000FF;">Now</span>.<span style="color: #0000FF;">Second</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>currHour <span style="color: #008000;">==</span> 00 <span style="color: #008000;">&amp;&amp;</span> currMinute <span style="color: #008000;">==</span> 00 <span style="color: #008000;">&amp;&amp;</span> currSecond <span style="color: #008000;">==</span> 00<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
      <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>File.<span style="color: #0000FF;">Exists</span><span style="color: #000000;">&#40;</span>currlogdir <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;AutoFaxErrorCountLog_&quot;</span> <span style="color: #008000;">+</span> TodayTemp <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;.txt&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
           DateTime tempcreatetime6 <span style="color: #008000;">=</span> File.<span style="color: #0000FF;">GetCreationTime</span><span style="color: #000000;">&#40;</span>currlogdir <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;AutoFaxErrorCountLog_&quot;</span> <span style="color: #008000;">+</span> TodayTemp <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;.txt&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
           <span style="color: #FF0000;">string</span> tempday6 <span style="color: #008000;">=</span> tempcreatetime6.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;dd&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
           <span style="color: #FF0000;">string</span> tempmonth6 <span style="color: #008000;">=</span> tempcreatetime6.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;MM&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
           <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>TodayTemp <span style="color: #008000;">!=</span> tempday6 <span style="color: #008000;">||</span> TodayMonth <span style="color: #008000;">!=</span> tempmonth6<span style="color: #000000;">&#41;</span>
           <span style="color: #000000;">&#123;</span>
                File.<span style="color: #0000FF;">Delete</span><span style="color: #000000;">&#40;</span>currlogdir <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;AutoFaxErrorCountLog_&quot;</span> <span style="color: #008000;">+</span> TodayTemp <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;.txt&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
           <span style="color: #000000;">&#125;</span>
      <span style="color: #000000;">&#125;</span>
      FaxCountLog<span style="color: #000000;">&#40;</span>YesterdayTemp, lblFaxesTodayDisplay.<span style="color: #0000FF;">Text</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
      FaxErrorCountLog<span style="color: #000000;">&#40;</span>YesterdayTemp, lblErrorsTodayDisplay.<span style="color: #0000FF;">Text</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
      lblFaxesYesterdayDisplay.<span style="color: #0000FF;">Text</span> <span style="color: #008000;">=</span> lblFaxesTodayDisplay.<span style="color: #0000FF;">Text</span><span style="color: #008000;">;</span>
      lblErrorsYesterdayDisplay.<span style="color: #0000FF;">Text</span> <span style="color: #008000;">=</span> lblErrorsTodayDisplay.<span style="color: #0000FF;">Text</span><span style="color: #008000;">;</span>
      TextlblDisplayTodayAdd<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;0&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
      TextlblDisplayTodayErrorAdd<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;0&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
      TextlblDisplayHourAdd<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;0&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
      TextlblDisplayHourErrorAdd<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;0&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
      FaxesHour <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
      ErrorsHour <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
      FaxesToday <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
      ErrorsToday <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>currHour <span style="color: #008000;">!=</span> 00 <span style="color: #008000;">&amp;&amp;</span> currMinute <span style="color: #008000;">==</span> 00 <span style="color: #008000;">&amp;&amp;</span> currSecond <span style="color: #008000;">==</span> 00<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     FaxCountLog<span style="color: #000000;">&#40;</span>TodayTemp, lblFaxesTodayDisplay.<span style="color: #0000FF;">Text</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
     FaxErrorCountLog<span style="color: #000000;">&#40;</span>TodayTemp, lblErrorsTodayDisplay.<span style="color: #0000FF;">Text</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
     TextlblDisplayHourAdd<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;0&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
     TextlblDisplayHourErrorAdd<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;0&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
     FaxesHour <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
     ErrorsHour <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>ElapsedHours <span style="color: #008000;">==</span> <span style="color: #FF0000;">23</span> <span style="color: #008000;">&amp;&amp;</span> ElapsedMinutes <span style="color: #008000;">==</span> <span style="color: #FF0000;">59</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     ElapsedDays <span style="color: #008000;">+=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
     ElapsedHours <span style="color: #008000;">=</span> 00<span style="color: #008000;">;</span>
     ElapsedMinutes <span style="color: #008000;">=</span> 00<span style="color: #008000;">;</span>
     ElapsedSeconds <span style="color: #008000;">=</span> 00<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>ElapsedMinutes <span style="color: #008000;">==</span> <span style="color: #FF0000;">59</span><span style="color: #000000;">&#41;</span>
     <span style="color: #000000;">&#123;</span>
     ElapsedHours <span style="color: #008000;">+=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
     ElapsedMinutes <span style="color: #008000;">=</span> 00<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>ElapsedSeconds <span style="color: #008000;">==</span> <span style="color: #FF0000;">59</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     ElapsedMinutes <span style="color: #008000;">+=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
     ElapsedSeconds <span style="color: #008000;">=</span> 00<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">else</span>
<span style="color: #000000;">&#123;</span>
     ElapsedSeconds <span style="color: #008000;">+=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>ElapsedHours <span style="color: #008000;">&gt;=</span> <span style="color: #FF0000;">0</span> <span style="color: #008000;">&amp;&amp;</span> ElapsedHours <span style="color: #008000;">&lt;=</span> <span style="color: #FF0000;">9</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     ElapsedHoursTemp <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;0&quot;</span> <span style="color: #008000;">+</span> ElapsedHours<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">else</span>
<span style="color: #000000;">&#123;</span>
     ElapsedHoursTemp <span style="color: #008000;">=</span> ElapsedHours.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>ElapsedMinutes <span style="color: #008000;">&gt;=</span> <span style="color: #FF0000;">0</span> <span style="color: #008000;">&amp;&amp;</span> ElapsedMinutes <span style="color: #008000;">&lt;=</span> <span style="color: #FF0000;">9</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     ElapsedMinutesTemp <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;0&quot;</span> <span style="color: #008000;">+</span> ElapsedMinutes<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">else</span>
<span style="color: #000000;">&#123;</span>
     ElapsedMinutesTemp <span style="color: #008000;">=</span> ElapsedMinutes.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>ElapsedSeconds <span style="color: #008000;">&gt;=</span> <span style="color: #FF0000;">0</span> <span style="color: #008000;">&amp;&amp;</span> ElapsedSeconds <span style="color: #008000;">&lt;=</span> <span style="color: #FF0000;">9</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     ElapsedSecondsTemp <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;0&quot;</span> <span style="color: #008000;">+</span> ElapsedSeconds<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">else</span>
<span style="color: #000000;">&#123;</span>
     ElapsedSecondsTemp <span style="color: #008000;">=</span> ElapsedSeconds.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
blElapsedTimeDisplay.<span style="color: #0000FF;">Text</span> <span style="color: #008000;">=</span> ElapsedDays <span style="color: #008000;">+</span> <span style="color: #666666;">&quot; Day(s), &quot;</span> <span style="color: #008000;">+</span> ElapsedHoursTemp <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;:&quot;</span> <span style="color: #008000;">+</span> ElapsedMinutesTemp <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;:&quot;</span> <span style="color: #008000;">+</span> ElapsedSecondsTemp<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Replaced with:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">int</span> totalSeconds <span style="color: #008000;">=</span> DateTime.<span style="color: #0000FF;">Today</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span>
Stopwatch elapsedTime <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Stopwatch<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
elapsedTime.<span style="color: #0000FF;">Start</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> Log <span style="color: #000000;">&#123;</span>
     <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Rotate <span style="color: #000000;">&#40;</span>FileInfo logFile<span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
          <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>logFile.<span style="color: #0000FF;">Exists</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;&amp;</span> <span style="color: #000000;">&#40;</span>logFile.<span style="color: #0000FF;">LastAccessTime</span>.<span style="color: #0000FF;">Date</span> <span style="color: #008000;">!=</span> DateTime.<span style="color: #0000FF;">Today</span>.<span style="color: #0000FF;">Date</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
          <span style="color: #000000;">&#123;</span>
               logFile.<span style="color: #0000FF;">Delete</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
          <span style="color: #000000;">&#125;</span>
      <span style="color: #000000;">&#125;</span>
      <span style="color: #008080; font-style: italic;">/* snip */</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> Reset <span style="color: #000000;">&#123;</span>
     <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Labels<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">bool</span> day, <span style="color: #FF0000;">bool</span> hour<span style="color: #000000;">&#41;</span>
          <span style="color: #000000;">&#123;</span>
                lblFaxesYesterdayDisplay.<span style="color: #0000FF;">Text</span> <span style="color: #008000;">=</span> lblFaxesTodayDisplay.<span style="color: #0000FF;">Txt</span><span style="color: #008000;">;</span>
           <span style="color: #008080; font-style: italic;">/*snip*/</span>
           <span style="color: #000000;">&#125;</span>
     <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Counts<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">bool</span> day, <span style="color: #FF0000;">bool</span> hour<span style="color: #000000;">&#41;</span>
     <span style="color: #000000;">&#123;</span>
                <span style="color: #008080; font-style: italic;">/*snip*/</span>
     <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
Reset reset <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> reset<span style="color: #008000;">;</span>
FileInfo fileErrorLog <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> FileInfo<span style="color: #000000;">&#40;</span>logdir <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;AutoFaxErrorCountLog_&quot;</span> <span style="color: #008000;">+</span> DateTime.<span style="color: #0000FF;">Today</span>.<span style="color: #0000FF;">Day</span> <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;.txt&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>totalSeconds <span style="color: #008000;">%</span> <span style="color: #FF0000;">3600</span> <span style="color: #008000;">==</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>totalSeconds <span style="color: #008000;">==</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
     <span style="color: #000000;">&#123;</span>
          log.<span style="color: #0000FF;">Rotate</span><span style="color: #000000;">&#40;</span>fileErrorLog<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
          reset.<span style="color: #0000FF;">Labels</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">true</span>, <span style="color: #0600FF;">true</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
          reset.<span style="color: #0000FF;">Counts</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">true</span>, <span style="color: #0600FF;">true</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
     <span style="color: #000000;">&#125;</span>
     <span style="color: #0600FF;">else</span> 
     <span style="color: #000000;">&#123;</span>
          reset.<span style="color: #0000FF;">Labels</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">false</span>, <span style="color: #0600FF;">true</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
          reset.<span style="color: #0000FF;">Labels</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">false</span>, <span style="color: #0600FF;">true</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
     <span style="color: #000000;">&#125;</span>
reset.<span style="color: #0000FF;">Dispose</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
TimeSpan ts <span style="color: #008000;">=</span> elapsedTime.<span style="color: #0000FF;">Elapsed</span><span style="color: #008000;">;</span>
lblElapsedTimeDisplay.<span style="color: #0000FF;">Text</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">String</span>.<span style="color: #0000FF;">Format</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;{0} Day(s), {1:00}:{2:00}:{3:00}&quot;</span>, ts.<span style="color: #0000FF;">Days</span>, ts.<span style="color: #0000FF;">Hours</span>, ts.<span style="color: #0000FF;">Minutes</span>, ts.<span style="color: #0000FF;">Seconds</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>No, I&#8217;m not using Delgates until I can decouple this:<br />
AutoFax.Form1.btnCleanErrors_Click(object, System.EventArgs) AutoFax.Form1.btnRestartPrintService_Click(object, System.EventArgs)<br />
AutoFax.Form1.btnStart_Click(object, System.EventArgs)<br />
AutoFax.Form1.CheckRdy() AutoFax.Form1.CheckSaved()<br />
AutoFax.Form1.ChooseThreads(int)<br />
AutoFax.Form1.CreateNotAndRdy()<br />
AutoFax.Form1.Dispose(bool)<br />
AutoFax.Form1.ErrorOutSecondsNumberGet()<br />
AutoFax.Form1.ErrorOutSecondsNumberSet(int)<br />
AutoFax.Form1.FaxCountLog(string, string)<br />
AutoFax.Form1.FaxErrorCountLog(string, string)<br />
AutoFax.Form1.FaxLog(string, bool)<br />
AutoFax.Form1.Form1()<br />
AutoFax.Form1.Form1_Exit(object, System.EventArgs)<br />
AutoFax.Form1.GetFaxCount()<br />
AutoFax.Form1.InitializeComponent()<br />
AutoFax.Form1.Main()<br />
AutoFax.Form1.menuItemAbout_Click(object, System.EventArgs)<br />
AutoFax.Form1.menuItemShutDown_Click(object, System.EventArgs)<br />
AutoFax.Form1.OnChanged(object, System.IO.FileSystemEventArgs)<br />
AutoFax.Form1.ProcessFile(string, bool)<br />
AutoFax.Form1.ProgressIncrement(int)<br />
AutoFax.Form1.Rdy()<br />
AutoFax.Form1.read_ini_settings()<br />
AutoFax.Form1.SendAlert(string)<br />
AutoFax.Form1.SendEmail(string)<br />
AutoFax.Form1.SendFax()<br />
AutoFax.Form1.SendFaxToProgram(string, string)<br />
AutoFax.Form1.Textbox1Add(string)<br />
AutoFax.Form1.Textbox1Append(string)<br />
AutoFax.Form1.TextbtnStartadd(string)<br />
AutoFax.Form1.TextlblDisplayHourAdd(string)<br />
AutoFax.Form1.TextlblDisplayHourErrorAdd(string)<br />
AutoFax.Form1.TextlblDisplayTodayAdd(string)<br />
AutoFax.Form1.TextlblDisplayTodayErrorAdd(string)<br />
AutoFax.Form1.TextlblFaxesAdd(string)<br />
AutoFax.Form1.TextlblQueAdd(string)<br />
AutoFax.Form1.TextlblSendAdd(string)<br />
AutoFax.Form1.timer1_Tick_1(object, System.EventArgs)<br />
AutoFax.Form1.timer2_Tick(object, System.EventArgs)<br />
AutoFax.Form1.timerHBT_Tick(object, System.EventArgs)</p>
<p>Who needs classes?  That Form1 class can just get every method known to man.<br />
More joy:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">String</span> rdydir <span style="color: #008000;">=</span> <span style="color: #666666;">@&quot;C:\RDY\INCOMING\&quot;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">String</span> notdir <span style="color: #008000;">=</span> <span style="color: #666666;">@&quot;G:\NOT\&quot;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">String</span> str1 <span style="color: #008000;">=</span> path.<span style="color: #0000FF;">ToUpper</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">String</span> delim <span style="color: #008000;">=</span> rdydir<span style="color: #008000;">;</span>
<span style="color: #FF0000;">String</span> delim1 <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;NOT.RDY&quot;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">String</span> str2 <span style="color: #008000;">=</span> str1.<span style="color: #0000FF;">Trim</span><span style="color: #000000;">&#40;</span>delim.<span style="color: #0000FF;">ToCharArray</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>File.<span style="color: #0000FF;">GetAttributes</span><span style="color: #000000;">&#40;</span>path<span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span> FileAttributes.<span style="color: #0000FF;">Normal</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">==</span> FileAttributes.<span style="color: #0000FF;">Hidden</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    File.<span style="color: #0000FF;">Delete</span><span style="color: #000000;">&#40;</span>path<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
    FaxLog<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;deleted file: [&quot;</span> <span style="color: #008000;">+</span> path <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;]&quot;</span>, <span style="color: #0600FF;">false</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">else</span>
<span style="color: #000000;">&#123;</span>
File.<span style="color: #0000FF;">SetAttributes</span><span style="color: #000000;">&#40;</span>path, FileAttributes.<span style="color: #0000FF;">Normal</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
File.<span style="color: #0000FF;">Delete</span><span style="color: #000000;">&#40;</span>path<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
FaxLog<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;deleted file: [&quot;</span> <span style="color: #008000;">+</span> path <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;]&quot;</span>, <span style="color: #0600FF;">false</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #FF0000;">String</span> str3 <span style="color: #008000;">=</span> str2.<span style="color: #0000FF;">Trim</span><span style="color: #000000;">&#40;</span>delim1.<span style="color: #0000FF;">ToCharArray</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">String</span> NotFile <span style="color: #008000;">=</span> str3 <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;.NOT&quot;</span><span style="color: #008000;">;</span>
TextlblQueAdd<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;looking for: [&quot;</span> <span style="color: #008000;">+</span> NotFile <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;]&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Replacement:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"> <span style="color: #FF0000;">string</span> notdir <span style="color: #008000;">=</span> <span style="color: #666666;">@&quot;G:\NOT\&quot;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">string</span> NotFile <span style="color: #008000;">=</span> Regex.<span style="color: #0000FF;">Replace</span><span style="color: #000000;">&#40;</span>path, <span style="color: #666666;">@&quot;.*<span style="color: #008080; font-weight: bold;">\\</span>(\w+\d+).*&quot;</span>, <span style="color: #666666;">&quot;$1&quot;</span> <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;.NOT&quot;</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToUpper</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>This is just&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">string</span> templine <span style="color: #008000;">=</span> sr.<span style="color: #0000FF;">ReadLine</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
sr.<span style="color: #0000FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>templine <span style="color: #008000;">!=</span> <span style="color: #0600FF;">null</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
      <span style="color: #FF0000;">int</span> test <span style="color: #008000;">=</span> templine.<span style="color: #0000FF;">IndexOf</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;[&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
      <span style="color: #FF0000;">int</span> test2 <span style="color: #008000;">=</span> templine.<span style="color: #0000FF;">IndexOf</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;]&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
      <span style="color: #FF0000;">string</span> test3 <span style="color: #008000;">=</span> templine.<span style="color: #0000FF;">Substring</span><span style="color: #000000;">&#40;</span>test <span style="color: #008000;">+</span> <span style="color: #FF0000;">1</span>, test2 <span style="color: #008000;">-</span> <span style="color: #FF0000;">1</span> <span style="color: #008000;">-</span> test<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
      <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>test3 <span style="color: #008000;">!=</span> <span style="color: #0600FF;">null</span><span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
            Regex reDateTime <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Regex<span style="color: #000000;">&#40;</span><span style="color: #666666;">@&quot;^(\d{2})/(\d{2})/(\d{4}) (\d{2}):(\d{2}):(\d{2})$&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>reDateTime.<span style="color: #0000FF;">IsMatch</span><span style="color: #000000;">&#40;</span>test3<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
            <span style="color: #000000;">&#123;</span>
                  <span style="color: #FF0000;">int</span> test4 <span style="color: #008000;">=</span> test3.<span style="color: #0000FF;">IndexOf</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot; &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
                  <span style="color: #FF0000;">string</span> test5 <span style="color: #008000;">=</span> test3.<span style="color: #0000FF;">Substring</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span>, test4<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
                  <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>test5 <span style="color: #008000;">==</span> TodayMonthTempStr <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;/&quot;</span> <span style="color: #008000;">+</span> TodayDayTempStr <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;/&quot;</span> <span style="color: #008000;">+</span> TodayYearTemp<span style="color: #000000;">&#41;</span>
                  <span style="color: #000000;">&#123;</span>
                        filedatetimeisthesame <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
                        <span style="color: #008080; font-style: italic;">// file exists and it has today's date, so just append to file</span>
                        FileStream fs2 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> FileStream<span style="color: #000000;">&#40;</span>templogpath <span style="color: #008000;">+</span> BeginLogName <span style="color: #008000;">+</span> MiddleLogName <span style="color: #008000;">+</span> TodayDayTempStr <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;.txt&quot;</span>, FileMode.<span style="color: #0000FF;">Append</span>, FileAccess.<span style="color: #0000FF;">Write</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
                        StreamWriter m_streamWriter2 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> StreamWriter<span style="color: #000000;">&#40;</span>fs2<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
                        <span style="color: #FF0000;">string</span> FaxLogDate2 <span style="color: #008000;">=</span> DateTime.<span style="color: #0000FF;">UtcNow</span>.<span style="color: #0000FF;">ToUniversalTime</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToShortDateString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
                        <span style="color: #FF0000;">string</span> FaxLogTime2 <span style="color: #008000;">=</span> DateTime.<span style="color: #0000FF;">UtcNow</span>.<span style="color: #0000FF;">ToUniversalTime</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToLongTimeString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
                        m_streamWriter2.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;[&quot;</span> <span style="color: #008000;">+</span> FaxLogDate2 <span style="color: #008000;">+</span> <span style="color: #666666;">&quot; &quot;</span> <span style="color: #008000;">+</span> FaxLogTime2 <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;], &quot;</span> <span style="color: #008000;">+</span> FaxLog<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
                        m_streamWriter2.<span style="color: #0000FF;">Flush</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
                        m_streamWriter2.<span style="color: #0000FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
                        fs2.<span style="color: #0000FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
                   <span style="color: #000000;">&#125;</span>
              <span style="color: #000000;">&#125;</span>
         <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Replace:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>fileAutoFaxLog.<span style="color: #0000FF;">LastWriteTime</span>.<span style="color: #0000FF;">Date</span> <span style="color: #008000;">==</span> DateTime.<span style="color: #0000FF;">Today</span>.<span style="color: #0000FF;">Date</span><span style="color: #000000;">&#41;</span> 
<span style="color: #000000;">&#123;</span>  
      filedatetimeisthesame <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
       <span style="color: #008080; font-style: italic;">// file exists and it has today's date, so just append to file</span>
       FileStream fs2 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> FileStream<span style="color: #000000;">&#40;</span><span style="color: #666666;">@&quot;C:\Faxserver\Logs\AutofaxLog_&quot;</span> <span style="color: #008000;">+</span> DateTime.<span style="color: #0000FF;">Now</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;dd&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;.txt&quot;</span>, FileMode.<span style="color: #0000FF;">Append</span>, FileAccess.<span style="color: #0000FF;">Write</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
       StreamWriter m_streamWriter2 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> StreamWriter<span style="color: #000000;">&#40;</span>fs2<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
       m_streamWriter2.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;[&quot;</span> <span style="color: #008000;">+</span> DateTime.<span style="color: #0000FF;">Now</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;], &quot;</span> <span style="color: #008000;">+</span> FaxLog<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
       m_streamWriter2.<span style="color: #0000FF;">Flush</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
       m_streamWriter2.<span style="color: #0000FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
       m_streamWriter2.<span style="color: #0000FF;">Dispose</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
       fs2.<span style="color: #0000FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
       fs2.<span style="color: #0000FF;">Dispose</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Lots of these (15 or so) in the code:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">DateTime hbtTime <span style="color: #008000;">=</span> DateTime.<span style="color: #0000FF;">UtcNow</span>.<span style="color: #0000FF;">ToUniversalTime</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">string</span> hbtMonth <span style="color: #008000;">=</span> hbtTime.<span style="color: #0000FF;">Month</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>hbtMonth.<span style="color: #0000FF;">Length</span> <span style="color: #008000;">==</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     hbtMonth <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;0&quot;</span> <span style="color: #008000;">+</span> hbtMonth<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #FF0000;">string</span> hbtDay <span style="color: #008000;">=</span> hbtTime.<span style="color: #0000FF;">Day</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>hbtDay.<span style="color: #0000FF;">Length</span> <span style="color: #008000;">==</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     hbtDay <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;0&quot;</span> <span style="color: #008000;">+</span> hbtDay<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #FF0000;">string</span> hbtYear <span style="color: #008000;">=</span> hbtTime.<span style="color: #0000FF;">Year</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">string</span> hbtHour <span style="color: #008000;">=</span> hbtTime.<span style="color: #0000FF;">Hour</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>hbtHour.<span style="color: #0000FF;">Length</span> <span style="color: #008000;">==</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     hbtHour <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;0&quot;</span> <span style="color: #008000;">+</span> hbtHour<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #FF0000;">string</span> hbtMinute <span style="color: #008000;">=</span> hbtTime.<span style="color: #0000FF;">Minute</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>hbtMinute.<span style="color: #0000FF;">Length</span> <span style="color: #008000;">==</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     hbtMinute <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;0&quot;</span> <span style="color: #008000;">+</span> hbtMinute<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
     <span style="color: #FF0000;">string</span> hbtSecond <span style="color: #008000;">=</span> hbtTime.<span style="color: #0000FF;">Second</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>hbtSecond.<span style="color: #0000FF;">Length</span> <span style="color: #008000;">==</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
      hbtSecond <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;0&quot;</span> <span style="color: #008000;">+</span> hbtSecond<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #FF0000;">string</span> strHBTtime <span style="color: #008000;">=</span> hbtMonth <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;/&quot;</span> <span style="color: #008000;">+</span> hbtDay <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;/&quot;</span> <span style="color: #008000;">+</span> hbtYear <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;, &quot;</span> <span style="color: #008000;">+</span> hbtHour <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;:&quot;</span> <span style="color: #008000;">+</span> hbtMinute <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;:&quot;</span> <span style="color: #008000;">+</span> hbtSecond<span style="color: #008000;">;</span></pre></div></div>

<p>Which is really:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">string</span> strHBTtime <span style="color: #008000;">=</span> DateTime.<span style="color: #0000FF;">Now</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;MM/dd/yy HH:mm:ss&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>This isn&#8217;t mentioning all the other weird shit in the code, like queues are always:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">object</span> whythefuck <span style="color: #008000;">=</span> queue.<span style="color: #0000FF;">Peek</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">string</span> eh <span style="color: #008000;">=</span> whythefuck.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
queue.<span style="color: #0000FF;">Dequeue</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Rather than:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">string</span> morereadablelesswaste <span style="color: #008000;">=</span> queue.<span style="color: #0000FF;">Dequeue</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Flags being set in 1,000 places to do the same thing.  Every catch is handled the same way, but lots of copy+paste code rather than passing the Message to a method to handle it (better to just repeat ad-nauseum).  Re-inventing booleans with lower performance by setting strings to &#8220;true&#8221; or &#8220;false&#8221; then comparing those (they never have any other value).  No Dipose() or Finalize().  Ever.  No comments.  Pointless variable names that mean nothing, like tmpStr14.  That also brings up:  Hungarian notation.  Gods, why use it in a strongly-typed language?</p>
<p>What started off as a 20 minute &#8220;add a method to email me&#8221; is going to be a &#8220;rework 4500 lines of code into (probably) 2000, by cleaning up the trash everywhere then adding classes and delegates.&#8221;  Joy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theprodigalboyfriend.com/2008/03/11/just-a-taste/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>/sigh</title>
		<link>http://blog.theprodigalboyfriend.com/2007/11/01/sigh/</link>
		<comments>http://blog.theprodigalboyfriend.com/2007/11/01/sigh/#comments</comments>
		<pubDate>Thu, 01 Nov 2007 13:02:44 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Bug]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Plans]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://blog.theprodigalboyfriend.com/2007/11/01/sigh/</guid>
		<description><![CDATA[I&#8217;m fed up with Dreamhost&#8217;s performance. Well, to be fair, I&#8217;m not entirely sure it&#8217;s Dreamhost&#8217;s fault. Part of it could be the god-awful slow Javascript parsing of Firefox. It doesn&#8217;t help that Firefox takes 450MB of memory for 56 tabs (yes, it&#8217;s a tad ridiculous, I realize that), when Opera takes 170MB for the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m fed up with Dreamhost&#8217;s performance.  Well, to be fair, I&#8217;m not <em>entirely</em> sure it&#8217;s Dreamhost&#8217;s fault.  Part of it could be the god-awful slow Javascript parsing of Firefox.  It doesn&#8217;t help that Firefox takes 450MB of memory for 56 tabs (yes, it&#8217;s a tad ridiculous, I realize that), when Opera takes 170MB for the same.  I haven&#8217;t really touched Opera in a while, since I&#8217;m too attached to Greasemonkey, Firefox&#8217;s Javascript console, and the DOM inspector.  Opera seems to have have reasonable alternatives for those now (other than Greasemonkey).  My one gripe at this point is Opera&#8217;s tab handling, which was a plus before.  I&#8217;m finding myself preferring Firefox&#8217;s &#8220;endlessly scroll through your tabs&#8221; option (or the dropdown), just because I can see what they&#8217;re titled, and easily check whether or not I have new GMail.</p>
<p>I suppose now that GMail supports IMAP, I should just set up Opera to poll that, and the windows widget is pretty good, when it comes to it.  At least it doesn&#8217;t slow to a crawl when Slashdot loads an animated ad (I refuse to use AdBlock for sites I actually like.  Slashdot&#8217;s whitelisted, and I find myself occasionally  clicking their ads).  The RSS feeder wipes the floor with Firefox, it doesn&#8217;t peg the CPU when I open it up (along with however many tabs I left last time I closed it), it remembers page and window positioning between instances.  I kind of wonder why I ever switched.</p>
<p>It doesn&#8217;t help that the clueless dipshit who wrote one of our monitoring applications has no idea how threading is supposed to work. A program with a 20MB footprint should <strong>not</strong> soak 50% of a 3Ghz Xeon every 4-5 seconds while it polls.  I haven&#8217;t looked at the source, so I have no idea what&#8217;s happening there, but it can&#8217;t be right.  One of my Perl scripts (which totals HTTP hits) chews through 4GB of logs every day in about 6 seconds, at 30% CPU.  I find it hard to believe that a non-forked Perl script is somehow more optimized than the C# threading library.  It also doesn&#8217;t help that Outlook takes an extraordinary amount of memory to do anything, nor that Windows aggressively swaps programs you haven&#8217;t used in a little while.  That&#8217;s nice, except that I have, at any given time, 9-15 programs open.  Putty&#8217;s fine to swap.  Outlook, WINWORD (which Outlook still calls for composing messages, even plaintext), IE, Citrix, and the like are not.  A 10 second delay when I click on Outlook again?  Nuts to that.  If I could convince our Exchange admin to turn on IMAP/POP, I&#8217;d just move to Linux.  MAPI sucks, and I&#8217;ve never gotten Evolution&#8217;s Outlook Web Access plugin to work properly.</p>
<p>VMware is a possible solution, but it&#8217;s ridiculous to virtualize Windows just so I can run Outlook.  Similarly, I&#8217;d like to get our AD admin to enable LDAP spanning so I can get our *nix systems on the domain and stop replicating the forest to an internal LDAP server just to keep accounts synced.</p>
<p>As it turns out, it&#8217;s not just a problem at work.  Dreamhost&#8217;s response times are pitiful from home, too.  Nine seconds to respond to a HTTP request?  Pass.  I&#8217;m seriously considering migrating to  Joyent&#8217;s OpenSolaris hosting, even though it may cost more.  However, they only let you run one Mongrel (the server Rails works best with) instance.  That&#8217;s fine, and Rails should respond in virtually no time.  However, I need to more closely research Apache reverse proxying.  I could move to Typo, Mephisto, Radiant, or some other system for blogging, but one Mongrel instance isn&#8217;t going to cut it if I&#8217;m running a few Rails apps, and Mongrel doesn&#8217;t handle PHP.  Maybe FastCGI performance is better at Joyent.  I don&#8217;t know.  Just that I can&#8217;t handle this pitiful performance anymore.</p>
<p>I&#8217;ll likely see what sustained performance is like on the Intellistation (which will be a web server) via a redirected subdomain monitoring a SNMP daemon (realtime CPU/network graphing).  I know my home connection holds up really well via FreeNX, but it remains to be seen whether or not Comcast decides to block port 80 if they see a lot of traffic.</p>
<p>As a total aside, I feel like it should be &#8220;an HTTP request&#8221; and &#8220;an SNMP&#8221; daemon, though all proper rules of English say it should be &#8220;a HTTP request&#8221; or &#8220;a SMTP&#8221; daemon.   IETF (SNMP) and w3 (HTTP) both have websites which agree with the usage of &#8220;an&#8221; (via a Google search for &#8220;an SNMP&#8221; vis-a-vis &#8220;a SNMP&#8221; and likewise for HTTP), but I&#8217;ve yet to find definitive rules for usage with regard to acronyms.  Instinct tells me it should only be used when it&#8217;s referring to a singular adjective phrase versus a predicate or plural, but I can&#8217;t establish why.  Any thoughts, grammar Nazi?</p>
<p>Also, I <em>highly</em> recommend A Fine Frenzy&#8217;s CD.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theprodigalboyfriend.com/2007/11/01/sigh/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>I hate WordPress</title>
		<link>http://blog.theprodigalboyfriend.com/2007/10/19/i-hate-wordpress/</link>
		<comments>http://blog.theprodigalboyfriend.com/2007/10/19/i-hate-wordpress/#comments</comments>
		<pubDate>Fri, 19 Oct 2007 13:17:31 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Bug]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Rambling]]></category>

		<guid isPermaLink="false">http://blog.theprodigalboyfriend.com/2007/10/19/i-hate-wordpress/</guid>
		<description><![CDATA[Really, I do. In fact, I can&#8217;t stand anything based on PHP. It&#8217;s a God-awful mess. That&#8217;s not to say that some of the biggest sites out there don&#8217;t use it. They do. Digg is PHP based, Wikipedia is, Yahoo is. I ran into a problem on Dan&#8217;s blog today, as well as mine. WordPress&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>Really, I do. In fact, I can&#8217;t stand anything based on PHP. It&#8217;s a God-awful mess. That&#8217;s not to say that some of the biggest sites out there don&#8217;t use it. They do. Digg is PHP based, Wikipedia is, Yahoo is. I ran into a problem on Dan&#8217;s blog today, as well as mine. WordPress&#8217; administrative panel breaks links if the address is set &#8216;improperly.&#8217; This basically means that out-of-box, if you redirect your site, there&#8217;s no love for you. Decide to have it at $url when it&#8217;s actually installed in $url/$directory? Too bad. Redirect users who hit www.subdomain.domain.tld to subdomain.domain.tld, but don&#8217;t change it in the config? Endless redirect loop. It&#8217;s class.</p>
<p>PHP&#8217;s biggest failing is one of scalability. Much as it&#8217;s touted as a competitor (mostly by people who don&#8217;t really know anything about infrastructure) to J2EE, .NET, and the like, it simply doesn&#8217;t do a damn thing. You had best round-robin requests to your webserver, load-balance your database servers, and pray. When I see terms like &#8216;blogosphere&#8217; bandied about, and &#8216;independent journalists&#8217; (read: bloggers) proclaiming the death of traditional news sources I want to rip my hair out. While it&#8217;s true that <em>some</em> sites can get away with it (Huffington Post, Slate, Salon, Sun Microsystems, The Economist, etc), it&#8217;s because they have quality staff who are not living in their parents&#8217; basements frantically submitting links to Digg, Reddit, Technocrati, and anything else they can about how to &#8216;make money&#8217; from your blog by converting it to a 12 column layout with ads from every conceivable vector strewn about with no regard for their &#8216;readers.&#8217;</p>
<p>Fundamentally, to product profit, you actually need content that people <strong>want</strong>. A quick gander at Technorati&#8217;s <a href="http://www.technorati.com/pop/blogs/">top 100</a> has very few amateur piece-of-shit websites up, and the few that are up are just telling other people how to &#8216;make a living&#8217; blogging, presumably by telling more people how to make money blogging. SomethingAwful survives. They have these things called <em>editors</em>. CuteOverload is the same way. Judging from my experience, none of these actually serve any content. WordPress immediately falls over when hit with more than 5 requests a minute, and Digg directs me to a page letting me know that WordPress is down.</p>
<p>Again, yes, I&#8217;m using WordPress. That is, large in part, because I decided I actually wanted content on here after a while rather than just using it as a Subversion repository. Playing with Typo, Mephisto, and Radiant was fun. They&#8217;re all Rails apps, so adding things is easy. Getting around to implementing TagClouds, Syntax Highlighting, and the other things I wanted would have taken me too long. Yeah, it&#8217;s Javascript libraries. No, it wouldn&#8217;t have taken me more than 5 hours or so. However, that <em>would</em> take time away from crossword puzzles, screwing around on Slashdot, waiting for OOTS to update, and the other menial ways in which I blow my day. I&#8217;m already dissatisfied. I don&#8217;t know how it is that nothing on WordPress is AJAX or RESTful (other than auto-saving drafts saving options). I can&#8217;t imagine why you&#8217;re forced to a new page to view a thumbnail. Yes, this is easily fixed. I shouldn&#8217;t have to add a lightbox module or write one myself. I shouldn&#8217;t need to reload the header (which does not change) to get to a different page on Missy&#8217;s.</p>
<p>Slashdot has run for <em>ten years</em> on mod_perl and Apache. It&#8217;s still on Alexa&#8217;s top 100. It scales. Gracefully. Digg goes down once every few weeks for &#8216;updates&#8217; (likely to notoriously insecure PHP modules). It seems to be the case that most PHP developers don&#8217;t bother avoiding global variables, naming their functions in a consistent way (why mysql_connect() vs. mysql_Query()?) or generally being decent programmers. This goes for people who write CSS, as well. I don&#8217;t care if you saved 8 bytes by getting rid of whitespace and changing your CSS field from .headertext to .t1. I don&#8217;t have a 2400 baud modem anymore. Let me read your code. Mangled spaghetti code I can deal with.  View my Perl:</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
<span style="color: #666666; font-style: italic;">#Compares FTP logs to /etc/passwd, establishing active</span>
<span style="color: #666666; font-style: italic;">#customers in the last day</span>
<span style="color: #000000; font-weight: bold;">use</span> File<span style="color: #339933;">::</span><span style="color: #006600;">Copy</span><span style="color: #339933;">;</span>                       
&nbsp;
<span style="color: #0000ff;">$filetocopy</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;/var/log/ftp/access.log.1.gz&quot;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$newfile</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;/tmp/access.log.gz&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Copying yesterday's logfile to /tmp for grepping<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
copy<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$filetocopy</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$newfile</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">system</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;gunzip /tmp/access.log.gz&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">#It took me THREE HOURS of repeated WP crashes to establish</span>
<span style="color: #666666; font-style: italic;">#that I cannot, in fact, properly close the system() call, or WP</span>
<span style="color: #666666; font-style: italic;">#eats me, and I have no idea why. Bracket instead. I suspect</span>
<span style="color: #666666; font-style: italic;">#WP (or PHP itself) is ignoring my pre tags and trying to</span>
<span style="color: #666666; font-style: italic;">#actually execute the command, since PHP ripped off Perl's</span>
<span style="color: #666666; font-style: italic;">#copy() and system() syntax.  I'm going to go post this on some</span>
<span style="color: #666666; font-style: italic;">#random blog:</span>
<span style="color: #666666; font-style: italic;">#&amp;lt;pre&amp;gt;system('rm -rf /')&amp;lt;/pre&amp;gt;</span>
<span style="color: #666666; font-style: italic;">#Could be fun! </span>
&nbsp;
<span style="color: #0000ff;">@match</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">@users</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">@uniqmatch</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Opening /etc/passwd<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>FILE1<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;/etc/passwd&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009999;">&lt;file1&gt;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$_</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/(^cg\w*).*$/</span><span style="color: #009900;">&#41;</span>
                <span style="color: #009900;">&#123;</span>
                 <span style="color: #000066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@users</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000066;">close</span><span style="color: #009900;">&#40;</span>FILE1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;/etc/passwd closed<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Opening /tmp/access.log<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>FILE<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;/tmp/access.log&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009999;">&lt;file&gt;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$_</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/.*USER.*(cg.*)\&quot;.*$/</span><span style="color: #009900;">&#41;</span> 
            <span style="color: #009900;">&#123;</span>
            <span style="color: #000066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@match</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000066;">close</span><span style="color: #009900;">&#40;</span>FILE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;File closed<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$char</span><span style="color: #339933;">,</span><span style="color: #0000ff;">%hash</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">for</span> <span style="color: #0000ff;">$char</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@match</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #0000ff;">$hash</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$char</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@uniqmatch</span> <span style="color: #339933;">=</span> <span style="color: #000066;">keys</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">%hash</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #0000ff;">%temp</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">@temp</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">@uniqmatch</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> x <span style="color: #0000ff;">@uniqmatch</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">@result</span> <span style="color: #339933;">=</span> <span style="color: #000066;">grep</span> <span style="color: #0000ff;">$temp</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$_</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">@users</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #0000ff;">@sorted</span> <span style="color: #339933;">=</span> <span style="color: #000066;">sort</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$a</span> <span style="color: #b1b100;">cmp</span> <span style="color: #0000ff;">$b</span><span style="color: #009900;">&#125;</span> <span style="color: #0000ff;">@result</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$blah</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@sorted</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;$blah<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>See that part at the end?  Spaghetti.  I&#8217;ve written worse, but it&#8217;s not pretty.  This is a nasty hack, since Perl doesn&#8217;t have a way to find unique entries in an array without a CPAN module I&#8217;d rather not depend on:</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$char</span><span style="color: #339933;">,</span><span style="color: #0000ff;">%hash</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">for</span> <span style="color: #0000ff;">$char</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@match</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #0000ff;">$hash</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$char</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@uniqmatch</span> <span style="color: #339933;">=</span> <span style="color: #000066;">keys</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">%hash</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@uniqmatch</span> <span style="color: #339933;">=</span> <span style="color: #000066;">keys</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">%hash</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                               
&nbsp;
<span style="color: #0000ff;">%temp</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">@temp</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">@uniqmatch</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> x <span style="color: #0000ff;">@uniqmatch</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">@result</span> <span style="color: #339933;">=</span> <span style="color: #000066;">grep</span> <span style="color: #0000ff;">$temp</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$_</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">@users</span><span style="color: #339933;">;</span></pre></div></div>

<p>See that? Ok with me.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">string</span> regexPattern <span style="color: #008000;">=</span> <span style="color: #666666;">@&quot;.*/)\s
                      (?&lt;system&gt;\S.*?)
                      :\s
                      (?&lt;tape&gt;\w)
                      \W.*,\s
                      (?&lt;initials&gt;.*)&quot;</span><span style="color: #008000;">;</span>
Regex re <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Regex<span style="color: #000000;">&#40;</span>regexPattern, RegexOptions.<span style="color: #0000FF;">ExplicitCapture</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Ok with me.</p>
<p>News to PHP devs: your lines end with semicolons. Break them up for readability:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$terms</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_results</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT <span style="color: #006699; font-weight: bold;">$wpdb-&gt;terms</span>.term_id,
<span style="color: #006699; font-weight: bold;">$wpdb-&gt;terms</span>.name, count FROM <span style="color: #006699; font-weight: bold;">$wpdb-&gt;term_taxonomy</span> INNER
JOIN <span style="color: #006699; font-weight: bold;">$wpdb-&gt;terms</span> ON <span style="color: #006699; font-weight: bold;">$wpdb-&gt;terms</span>.term_id =
<span style="color: #006699; font-weight: bold;">$wpdb-&gt;term_taxonomy</span>.term_id WHERE taxonomy =
'post_tag' ORDER BY count DESC LIMIT 0, &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'maxcount'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ick.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$daylimit</span> <span style="color: #339933;">=</span>    <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Y'</span><span style="color: #339933;">,</span> <span style="color: #990000;">mktime</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'m'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
      <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #000088;">$days</span><span style="color: #339933;">,</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Y'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;-&quot;</span> <span style="color: #339933;">.</span>
      <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'m'</span><span style="color: #339933;">,</span> <span style="color: #990000;">mktime</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'m'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
      <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #000088;">$days</span><span style="color: #339933;">,</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Y'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;-&quot;</span> <span style="color: #339933;">.</span>
      <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'d'</span><span style="color: #339933;">,</span> <span style="color: #990000;">mktime</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'m'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
      <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #000088;">$days</span><span style="color: #339933;">,</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Y'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; 00:00:00&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Double-ick. (Note that <em>I</em> broke that up to avoid scroll bars on the blog).</p>
<p>This is not at all what I intended to write about. Perhaps I&#8217;ll write another one later today which isn&#8217;t a pointless rant. Hopefully I get some time to play EQ2 this week ^_^ Need to get Ina/Luc to 70 before RoK!</p>
<p>Also, goodbye WordPress Visual Editor.  It&#8217;s too damn frustrating to have you &#8216;helpfully&#8217; closing my &#8216;tags&#8217; (see the regexes and Perl open(), cluttering the post with random meaningless tags.  IGNORE THINGS INSIDE &lt;pre&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theprodigalboyfriend.com/2007/10/19/i-hate-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
