<?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"
	>

<channel>
	<title>Adventures As Me</title>
	<atom:link href="http://blog.tel-cor.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tel-cor.com</link>
	<description>Programming, life, oddities</description>
	<pubDate>Fri, 05 Sep 2008 04:17:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>From Tech Support to QA</title>
		<link>http://blog.tel-cor.com/2008/09/04/from-tech-support-to-qa/</link>
		<comments>http://blog.tel-cor.com/2008/09/04/from-tech-support-to-qa/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 04:17:10 +0000</pubDate>
		<dc:creator>telcor</dc:creator>
		
		<category><![CDATA[Information Technology (IT)]]></category>

		<category><![CDATA[Software]]></category>

		<category><![CDATA[Work]]></category>

		<category><![CDATA[QA]]></category>

		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://blog.tel-cor.com/?p=291</guid>
		<description><![CDATA[Resolve the issue and move to the next one. This is a common mind set among the Tech Support personnel where I work. This is certainly commendable from the customer&#8217;s view point as the customer certainly wants the issue resolved and in a timely fashion. However, what benefits the customer more:

Resolve the immediate problem; or
Resolve [...]]]></description>
			<content:encoded><![CDATA[<p>Resolve the issue and move to the next one. This is a common mind set among the Tech Support personnel where I work. This is certainly commendable from the customer&#8217;s view point as the customer certainly wants the issue resolved and in a timely fashion. However, what benefits the customer more:</p>
<ol>
<li>Resolve the immediate problem; or</li>
<li>Resolve the underlying issue (wherein the problem reported by the customer is merely a symptom of a different problem)</li>
</ol>
<p>A key question for transitioning from point 1 to 2 is &#8220;why?&#8221; E.g.</p>
<ul>
<li>Why did this problem occur?</li>
<li>What data or environment change caused this?</li>
<li>Why does the ( data or environment ) cause this issue?</li>
</ul>
<p>Asking the questions and tracing symptoms to the source is invaluable. Once the source is identified, one can determine reproducibility and define a test, all of which can lead to a fix. Once the issue is fixed, we can Assure the problem will not reoccur in the future, for this customer or others.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tel-cor.com/2008/09/04/from-tech-support-to-qa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Writing Bug Reports</title>
		<link>http://blog.tel-cor.com/2008/07/14/writing-bug-reports/</link>
		<comments>http://blog.tel-cor.com/2008/07/14/writing-bug-reports/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 19:57:14 +0000</pubDate>
		<dc:creator>telcor</dc:creator>
		
		<category><![CDATA[Information Technology (IT)]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.tel-cor.com/?p=290</guid>
		<description><![CDATA[ 
A key thought to remember when writing a bug report is:
&#8220;The information provided must facilitate reproduction of the bug&#8221;
In other words, could a complete stranger read the report and be able to reproduce the bug in the system?
Many times, when reading bug reports submitted by customers, there are enough details missing that cause the report [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>A key thought to remember when writing a bug report is:</p>
<p>&#8220;The information provided must facilitate reproduction of the bug&#8221;</p>
<p>In other words, could a complete stranger read the report and be able to reproduce the bug in the system?</p>
<p>Many times, when reading bug reports submitted by customers, there are enough details missing that cause the report to marked as non-reproducible. Or it entails much back and forth with the reporter to obtain the missing details. Either method results in frustration for both the reporter and the tester.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tel-cor.com/2008/07/14/writing-bug-reports/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Welcome back to the beginning</title>
		<link>http://blog.tel-cor.com/2008/07/13/welcome-back-to-the-beginning/</link>
		<comments>http://blog.tel-cor.com/2008/07/13/welcome-back-to-the-beginning/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 06:20:10 +0000</pubDate>
		<dc:creator>telcor</dc:creator>
		
		<category><![CDATA[SiteNews]]></category>

		<guid isPermaLink="false">http://blog.tel-cor.com/?p=289</guid>
		<description><![CDATA[I have returned&#8230;to Wordpress. This time likely for good. Crafting ones own blogging software is fun, but requires too much time to do correctly. Moving to Wordpress, despite past misgivings, this choice opens to me a wide field of themes and plugins from which to choose. My quibble over the project&#8217;s implementation of the semantic [...]]]></description>
			<content:encoded><![CDATA[<p>I have <a title="Site changes" href="http://blog.tel-cor.com/?p=82">returned</a>&#8230;to Wordpress. This time likely for good. Crafting ones own blogging software is fun, but requires too much time to do correctly. Moving to Wordpress, despite <a title="Wordpress Release 1.5" href="http://blog.tel-cor.com/?p=33">past</a> <a title="Publishing Home Page" href="http://blog.tel-cor.com/?p=12">misgivings</a>, this choice opens to me a wide field of themes and plugins from which to choose. My quibble over the project&#8217;s implementation of the semantic web was really just that, a quibble.</p>
<p>The last few days I took the time to import all my old blog posts, dating from when I first started blogging in 2003. It is quite interesting, humorous rather, reading those older posts. It&#8217;s also surprising how many typos exist (although in truth some typos were likely caused by the conversion process).No comments were brought over and some of the post &lt;-&gt; category mappings are goofy.</p>
<p>With the conversion done, I can at last do something I&#8217;ve wanted and needed for quite a while: remove unused databases and application directories from my web site. I&#8217;ve a full backup in place (just in case).</p>
<p>Anyway, I hope this spurs a return to blogging.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tel-cor.com/2008/07/13/welcome-back-to-the-beginning/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Xen to the process</title>
		<link>http://blog.tel-cor.com/2008/05/15/</link>
		<comments>http://blog.tel-cor.com/2008/05/15/#comments</comments>
		<pubDate>Thu, 15 May 2008 03:52:50 +0000</pubDate>
		<dc:creator>telcor</dc:creator>
		
		<category><![CDATA[Information Technology (IT)]]></category>

		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[For two years now my testing platform has consisted of half a dozen physical machines (running a mixture of CentOS Linux and FreeBSD) and two powerful servers running VMware server. During that time I&#8217;ve had a couple instances to introduce Xen into the mix, but never on a permanent basis, usually due to time constraints. [...]]]></description>
			<content:encoded><![CDATA[<p>For two years now my testing platform has consisted of half a dozen physical machines (running a mixture of <a href="http://centos.org">CentOS</a> Linux and <a href="http://freebsd.org">FreeBSD</a>) and two powerful servers running <a href="http://www.vmware.com/products/server/">VMware server</a>. During that time I&#8217;ve had a couple instances to introduce <a href="http://xen.org">Xen</a> into the mix, but never on a permanent basis, usually due to time constraints. With two people my department now, I&#8217;ve had the opportunity to setup a more permanent Xen server. The Host itself is modest: AMD 3800+, 3 GiB RAM and A few hundred GB of Drive space.</p>
<p>The VMware server experience has soured me on the OS-in-a-loop-back-file method. Yes it can support <a href="http://tldp.org/HOWTO/LVM-HOWTO/">LVM</a> partitions, but only with some trickery, which I don&#8217;t want to do. Xen, however, needs no trickery.</p>
<p>With the help of LVM and images from jailme.org, I&#8217;ve been working out a nice routine which I will eventually automate. The process itself is rather simple:</p>
<ul>
<li> Create a new LVM partition for the OS ( e.g. lvcreate &#8211;size 20G -l OsName GroupName )
<li> Create a new LVM partition for swap ( e.g. lvcreate &#8211;size 1G -l OsSwap GroupName )
<li> Format the OS partition ( e.g. mkfs.ext3 -L OsPart /dev/GroupName/OsName )
<li> Format the Swap partition ( e.g. mkswap /dev/GroupName/OsSwap )
<li> Mount the Jailme.org image ( e.g. mount -o loop image.img /mnt )
<li> Mount the OS Partition ( e.g. mount /dev/GroupName/OsName /xen )
<li> Use rsync to copy the image contents to the OS Partition ( e.g. rsync -aP /mnt/* /xen )
<li> Make changes to some configuration files on the OS Partition
<li> Unmount the image and OS Partition
<li> Customize the Xen configuration file
<li> Start the image</ul>
<p>My requirements only necessitate having a few setups like the above. My goal in automating the process is not just to remove the tedium, but to improve the speed. With a rough estimate, I think the above could be automated to occur in less than 10 minutes (accounting for load on the system).</p>
<p>Once that is automated, my next goal is to tackle taking &#8217;snapshots&#8217; of the Xen guest. I&#8217;m still undecided as to the exact method, although I am currently leaning toward creating a tarball of the partition.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tel-cor.com/2008/05/15/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Loquacity - Alive again</title>
		<link>http://blog.tel-cor.com/2008/02/17/</link>
		<comments>http://blog.tel-cor.com/2008/02/17/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 05:06:55 +0000</pubDate>
		<dc:creator>telcor</dc:creator>
		
		<category><![CDATA[Loquacity]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[After a very long hiatus, I&#8217;m working on Loquacity development again. This past year has taught me something: don&#8217;t shoot for the stars. Having a road map is very useful, but it must be realistic according to the resources at hand.
Since there is only one developer, myself, I need to restructure my goals and the [...]]]></description>
			<content:encoded><![CDATA[<p>After a very long hiatus, I&#8217;m working on Loquacity development again. This past year has taught me something: don&#8217;t shoot for the stars. Having a road map is very useful, but it must be realistic according to the resources at hand.</p>
<p>Since there is only one developer, myself, I need to restructure my goals and the road map to reflect that. Hence, many features I&#8217;ve planned for Loquacity 1.0 will not be. What I am considering is:</p>
<ul>
<li> cleaning the current code
<li> fix known bugs
<li> removing code/features that don&#8217;t work
<li> make the installer work near flawless
<li> release</ul>
<p> Along with the above, I need to remove people from the project that never did anything. This is more a management type thing, only on Berlios.</p>
<p> To start, I&#8217;ve fixed a nasty bug in the Comment admin interface. The SQL statement to retrieve the comments was very broken; a junior level mistake that caused a match of <strong>LIKE &#8220;%&#8221;</strong>. Of course, that won&#8217;t work.</p>
<p>Deleting comments is much faster now, as some redundant queries were removed.</p>
<p>In the interests of improving the speed of Loquacity, I&#8217;ve begin keeping a list of Database tables that need indexes added. These changes will be implemented in the Upgrader and base Database schema.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tel-cor.com/2008/02/17/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Securing PHP in Shared Hosting Environment</title>
		<link>http://blog.tel-cor.com/2007/03/23/</link>
		<comments>http://blog.tel-cor.com/2007/03/23/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 22:54:27 +0000</pubDate>
		<dc:creator>telcor</dc:creator>
		
		<category><![CDATA[Information Technology (IT)]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[WWW]]></category>

		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[One of the problems inherent to using an Apache Module in a shared web hosting environment is the fact Apache modules gain all the permissions of Apache. Hence, using something like PHP as an Apache module can create serious security vulnerabilities. Since the PHP scripts run in the Apache context, users can easily cause problems [...]]]></description>
			<content:encoded><![CDATA[<p>One of the problems inherent to using an Apache Module in a shared web hosting environment is the fact Apache modules gain all the permissions of Apache. Hence, using something like PHP as an Apache module can create serious security vulnerabilities. Since the PHP scripts run in the Apache context, users can easily cause problems (e.g. peeking in other users&#8217; directories, overwritting other peoples files, etc). The easy way to solve this issue is to run PHP as CGI only. This means a user&#8217;s scripts will run in the context of the user&#8217;s permissions, rather than Apache&#8217;s.</p>
<p>Running as a CGI presents other problems. For example, the majority of 3rdparty PHP Applications assume one is running PHP as an Apache module. To use a script via CGI, one has to use something called a she-bang. The first line in the script is a special line that points to the binary that actually executes the script. Thus, if the PHP CGI binary is /usr/bin/php, then the first line in the script must be:</p>
<pre class="code">#!/usr/bin/php</pre>
<p>Another (mainly superficial) problem is often CGI scripts must be placed in a cgi-bin directory. This means the URI to your blog won&#8217;t be www.example.com or blog.example.com but www.example.com/cgi-bin/blog.php or blog.example.com/cgi-bin/ Not exactly pretty. There are ways around that particular problem. There are still bigger problems, even running PHP as a CGI binary: how to lock down the user? You are essentially giving the user a lot of system access (the same is true when running Perl, bash, Ruby and other Scripting languages), how can we prevent a user from stomping all over the system? Even as CGI, the scripts are still executed as the Apache user.</p>
<p>Two common ways are <a href="http://httpd.apache.org/docs/1.3/suexec.html">PHPSuExec</a>(*) and <a href="http://www.suphp.org/Home.html">SuPHP</a>. Both provide means of changing the UID/GID of the executing process to that of the end user, and many, many other safeguards. However, they both fail on one common problem with PHP: by default, PHP allows users to place their own php.ini file in their Document Root, which will be used to the exclusion of the system php.ini Thus if you have disabled various functions (e.g. dl, system, passthru, etc), a user can easily override it by dropping a blank php.ini file in his Document Root (typically ~/public_html)</p>
<h2>Disabling user php.ini files</h2>
<p>There are several ways to disable user php.ini files.</p>
<ul>
<li> Configure php with <strong>&#8211;with-config-file-path=/usr/local/lib &#8211;with-config-file-scan-dir=/usr/local/lib</strong>
<li> (<strong> Won&#8217;t work with PHP 4.4.x</strong>) Install the Zend Optimizer
<li> (<strong> Won&#8217;t work with PHP 4.4.x</strong>) Create a wrapper script</ul>
<p>As noted, only the first option works for all modern versions of PHP. The directory path provided should match where your system php.ini file is located. Once compiled with these options, PHP is essentially &#8220;jailed&#8221; into using a php.ini file where configure stipulated. One odd thing to note with this, <em>phpinfo()</em> will lie. Try the following in a user account:</p>
<ul>
<li> In your user Document Root directory, create an empty file named php.ini\
<li> In a separate file, place <strong>&lt;?php phpinfo(); ?&gt;</strong>
<li> Access the <strong>phpinfo</strong> file via your web browser
<li> Note that <strong>phpinfo()</strong> reports it is using the php.ini file located in your Document Root</ul>
<p>An easy way to verify which is being used is to disable a function in the system php.ini file (such as ini_get). In the user php.ini, override that (disable_functions=). Create a short script that tries to use the disabled function. You&#8217;ll receive an error stating the function is disabled for security purposes.</p>
<p>What about the other methods? In PHP 5.2.x, installing the Zend Optimizer forces PHP to use the one stipulated in the Zend configuration, thus overriding the user php.ini file. And the wrapper script?</p>
<p>Locate your PHP CGI binary (we&#8217;ll use /usr/bin/php as an example) and rename it to php-cgi (thus /usr/bin/php-cgi). In the same directory, create a file named php. Give it the same permissions as php-cgi and insert the following contents:</p>
<pre>#!/bin/sh/usr/bin/php-cgi -c /usr/local/lib/php.ini</pre>
<p>The -c parameter instructs PHP to use the configuration file stipulated and ignore all others. Astute readers/users will notice this doesn&#8217;t filter out the possiblility of a user passing -c/path/to/user/php.ini If you are concerned with that, a script similar to the following will work (as contents of /usr/bin/php):</p>
<pre>#!/usr/bin/perl --use strict;use warnings;die '-c not allowed' if grep { $_ } map { $_ eq '-c' } @ARGV;exec( qw(/usr/bin/php-cgi -c /usr/local/lib/php.ini), @ARGV );</pre>
<p>Now, if a user attemps to pass -c/path/to/user/php.ini to the script, it will die. If done via a web-accessible script, Apache will return a 500 error and the die message will be in the error_log The use of Perl is just an example, you could do something in BASH, Python, C or whatever. Unfortunately, PHP 4.4.x ignores -c when compiled as a CGI binary, hence this trick only works on PHP 5.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tel-cor.com/2007/03/23/feed/</wfw:commentRss>
		</item>
		<item>
		<title>My First Program</title>
		<link>http://blog.tel-cor.com/2007/01/09/</link>
		<comments>http://blog.tel-cor.com/2007/01/09/#comments</comments>
		<pubDate>Tue, 09 Jan 2007 23:02:20 +0000</pubDate>
		<dc:creator>telcor</dc:creator>
		
		<category><![CDATA[Information Technology (IT)]]></category>

		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[My First Program
Back in 1998 I took my first job in &#8220;the industry&#8221;: an EDI Clerk/IT Assistant. Being completly self-taught, from the corner or nowhere, I was extremely happy to have the job. It offered potential to learn about the IT field and would give me real-world experience, not only in solving problems, but dealing [...]]]></description>
			<content:encoded><![CDATA[<p>My First Program
<p>Back in 1998 I took my first job in &#8220;the industry&#8221;: an EDI Clerk/IT Assistant. Being completly self-taught, from the corner or nowhere, I was extremely happy to have the job. It offered potential to learn about the IT field and would give me real-world experience, not only in solving problems, but dealing with users in a manufacturing environment.</p>
<p>Soon after being hired I was introduced to &#8220;Sears day.&#8221; This referred to every Wednesday when the Company shipped the orders to Sears, and only Sears. At that time, and still today, Sears has some of the worst Shipping requirements of the large retailers. It was nothing for them to generate 300+ 2 line orders, with a total value of ~USD$50 per order. To process the orders, from receiving them to closing the door on the truck, was very taxing. True, part of the processing was like ever other order, but there were aspects of the Sears orders that were unique.</p>
<p>For example, the Bill of Lading required a manifest, which was merely a list the cross-indexed each order with the Distribution Center (DC) that would receive the order. The stack of orders needed verified with the Manifest to be certain each was routed properly. This was done by comparing the order number and DC number as printed on the order, with the same information printed on the Manifest. The comparison was needed because the manifest was keyed to the Bill of Lading number. The Bill of Lading number was not known at time of order, but rather generated (read: invented by the Shipping Supervisor using a consistent pattern) when scheduling the pickup with the Carrier.</p>
<p>That was not the only comparison, two additional reports were generated, each needing data matched with the order, all to ensure correctness. To make matters worse, the entire cross-referencing was performed manually. It would take four people, myself, the shipping clerk, the IT Manager and the Assistant Plant Manager, the full ten hour work day, at minimum, to perform the entire process. Something needed done, the entire process was error prone, highly repetitive and consumed too many resources.</p>
<p>Taking stock of the situation, I considered the tools available. My workstation used DOS 6 and Windows 3.11. Our ERP (Enterprise Resource Planning) system was accessed via a Terminal application. Joy of joys, the Terminal application, <a href="http://www-306.ibm.com/software/data/u2/wintegrate/">wIntegrate</a> could be scripted. The script file was a simple text file containing the raw text commands one would actually perform when using the ERP System. All I needed to do was find a way to take the order numbers and generate the necessary script.</p>
<p>The problem was there were no development tools available, save two: DOS Batch and MS Word. Being young, green really, I chose the lesser of two evils: MS Word. On reason I chose it was for the eroneous view &#8216;If someone else needs to use this program, they will be more comfortable using MS Word than typing a command on the commandline.&#8217; A noble thought in a sense, but ultimately wrong
<li> Thus in the end I use MS Word to generate the necessary script. It was simple really using built in <a href="http://msdn.microsoft.com/vba/">VBA</a> to process information in a loop and generate a plain text file.</p>
<p>Given:</p>
<ul>
<li> A list of order numbers, newline separated (\r\n on DOS/Windows)
<li> The Bill of Lading number
<li> The Carrier <a href="http://nmfta.org/StandardCarrierAlphaCode/tabid/59/Default.aspx">SCAC</a>
<li> Quantity shipped on the order (this was simple as all orders had the same quantity)</ul>
<p>the &#8220;program&#8221; generated a script which processed every order and generated the necessary reports. With that automated, the cross-referencing could happen sooner since the majority of resource consumption was in the data-entry.</p>
<p>After performing a few test runs, I was ready for the next Sears Day. Wednesday came, I took the stack of orders and went to my workstation. Earlier in the week I had generated the text file with the order numbers. Using a variation of my VBA Program, I had created a script that automated the generation of the shipping labels. Its successful execution told me my Program was capable of creating wIntegrator capable scripts. As everyone bustled around beginning their work day, my work station was busy feeding the script to wIntegrator.</p>
<p>Within 10 minutes every order was processed and the reports were generated. Printing all the reports took another hour, cross-referencing, another hour (you can really tell now what took the bulk of time: order-entry). By first break (9:30), the entire process was done. Around the same time my boss came rushing into my office. She had just remembered it was Sears Day. One can easily image the surprise she experienced when I told her everything was done. After a few minutes of checking everything herself, she left.</p>
<p>We continued using that system the rest of the shipping season. The following year they replaced the old Unix-based ERP with a newer system, one that was far more data-intensive and not scriptable. Plus different routing requirements caused further disruption to the previous flow rendering my continued automation worthless.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tel-cor.com/2007/01/09/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ethicity: Gift or Bribe?</title>
		<link>http://blog.tel-cor.com/2006/12/29/</link>
		<comments>http://blog.tel-cor.com/2006/12/29/#comments</comments>
		<pubDate>Fri, 29 Dec 2006 00:11:34 +0000</pubDate>
		<dc:creator>telcor</dc:creator>
		
		<category><![CDATA[blogging]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Joel presents a very fine analysis of the situation: should highly visible bloggers accept gifts?
His conclusion? No, because such gifts amount to a bribe. With this I agree. Afterall, the same metric is often applied against other people in &#8216;positions&#8217; of trust. Public Officials, for example must follow explicit, detailed guidlines when accepting gifts, especially [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.joelonsoftware.com">Joel</a> presents a very fine analysis of the situation: should highly visible bloggers accept gifts?</p>
<p>His conclusion? No, because such gifts amount to a bribe. With this I agree. Afterall, the same metric is often applied against other people in &#8216;positions&#8217; of trust. Public Officials, for example must follow explicit, detailed guidlines when accepting gifts, especially gifts that are intended to sway the opinion of the receiver, or those the receiver has dealings with.</p>
<p>However, one scenario makes me wonder? What if the <a href="http://www.microsoft.com">Microsoft</a> laptop arrived on Mr. Spolsky&#8217;s doorstep unannounced, without accompanying instructions. To me at least, this is a different dynamic, a gift without strings, if you will. Under such circumstances, I could see acceptance as being ethically valid. Of course, who could expect a <a href="http://www.edelman.com">Public Relations</a> to do something like that?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tel-cor.com/2006/12/29/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Loquacity Feature - Automatic Backups</title>
		<link>http://blog.tel-cor.com/2006/12/22/</link>
		<comments>http://blog.tel-cor.com/2006/12/22/#comments</comments>
		<pubDate>Fri, 22 Dec 2006 13:36:05 +0000</pubDate>
		<dc:creator>telcor</dc:creator>
		
		<category><![CDATA[Loquacity]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[A new feature available in Loquacity alpha2 is automatic backups. The data in yourdatabase, along with your configuration file, will be archived:

 During software upgrades
 Periodically
 That should provide plenty of safeguards for a person&#8217;s data, as long as the backup is downloaded.
 Later I want to extend the backup management to allow 3rd parties [...]]]></description>
			<content:encoded><![CDATA[<p>A new feature available in <a href="http://www.loquacity.info">Loquacity</a> alpha2 is automatic backups. The data in yourdatabase, along with your configuration file, will be archived:</p>
<ul>
<li> During software upgrades
<li> Periodically</ul>
<p> That should provide plenty of safeguards for a person&#8217;s data, as long as the backup is downloaded.</p>
<p> Later I want to extend the backup management to allow 3rd parties to provide plugins that allow a person to backupother items. For example, if a 3rd party creates a photo album plugin, part of the plugin could be a module that causes the backup to also include the photo albums.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tel-cor.com/2006/12/22/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Mighty Mouse - a Great Disappointment</title>
		<link>http://blog.tel-cor.com/2006/12/22/</link>
		<comments>http://blog.tel-cor.com/2006/12/22/#comments</comments>
		<pubDate>Fri, 22 Dec 2006 10:58:44 +0000</pubDate>
		<dc:creator>telcor</dc:creator>
		
		<category><![CDATA[Information Technology (IT)]]></category>

		<category><![CDATA[Miscellaneous]]></category>

		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[My workplace recently bequeathed a G5 Mac to me, my first &#8220;real&#8221; Apple computer. With it came two mice:

 A mighty mouse
 A wireless mighty mouse
After using the Mighty Mouse for a couple months, I can honestly say this is the worst mouse design I&#8217;ve everused. Oh, don&#8217;t get me wrong, aesthetically, the mice are [...]]]></description>
			<content:encoded><![CDATA[<p>My workplace recently bequeathed a G5 Mac to me, my first &#8220;real&#8221; Apple computer. With it came two mice:</p>
<ul>
<li> A mighty mouse
<li> A wireless mighty mouse</ul>
<p>After using the Mighty Mouse for a couple months, I can honestly say this is the worst mouse design I&#8217;ve everused. Oh, don&#8217;t get me wrong, aesthetically, the mice are very appealing. My Microsoft and Logitech mice cannotcompete with the smooth curves and the simple lines of the Mighty Mouse. The Mighty Mouse is somewhat comfortable, albeit a little on the small sideHowever, the Mighty Mouse is a very poor performer. What do I mean by this?</p>
<p> The Mighty Mouse is not designed to be functional. Consider the buttons. It has a total of four buttons:</p>
<ul>
<li> Left Mouse Button (LMB)
<li> Center Mouse Button (CMB)
<li> Right Mouse Button (RMB)
<li> Side &#8220;Squeezable&#8221; Button (SSB)</ul>
<p> The first three require precise placement of the fingers inorder to work properly, except for the left mouse button (note: I&#8217;m using the mouseright-handed). More often then not, when I attempt a RMB Click, the mouse produces a LMB Click. Only after several attempts do I obtain a RMB Click. Thisalso happens, although with less frequency, when I attempt a CMB Click. It&#8217;s always the LMB Click the mouse generates. It happens with both mice. The SSBsare merely a joke. Attempting to use them is an exercise in finger contortions that usually result in generating LMB or RMB Clicks before a SSB Click.</p>
<p>After more than two months of this, I&#8217;m returning to my Logitech mouse, which never gave me such issues. Please Apple, make your hardware functional aswell as aesthetic.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tel-cor.com/2006/12/22/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
