<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Tech Memoirs</title>
	
	<link>http://www.techmemoirs.com</link>
	<description>[a tongue-in-cheek rememberance of my tech adventures]</description>
	<lastBuildDate>Mon, 15 Nov 2010 18:38:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TechMemoirs" /><feedburner:info uri="techmemoirs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item>
		<title>A brief summary of unit testing</title>
		<link>http://www.techmemoirs.com/a-brief-summary-of-unit-testing/</link>
		<comments>http://www.techmemoirs.com/a-brief-summary-of-unit-testing/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 18:38:40 +0000</pubDate>
		<dc:creator>Derek</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[principles]]></category>

		<guid isPermaLink="false">http://www.techmemoirs.com/?p=268</guid>
		<description><![CDATA[A brief description of the programming principle of unit testing and how it can improve your code.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.techmemoirs.com%2Fa-brief-summary-of-unit-testing%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.techmemoirs.com%2Fa-brief-summary-of-unit-testing%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.techmemoirs.com/wp-content/uploads/2010/11/spellcheck.png"><img class="alignleft size-full wp-image-269" title="Checking off unit tests, paper and pen style" src="http://www.techmemoirs.com/wp-content/uploads/2010/11/spellcheck.png" alt="Unit test checkboxes" width="128" height="128" /></a>In my third of three related postings on some <a href="../a-matter-of-principles/">core programming principles</a>, I&#8217;ll be talking about unit testing.  In the first part, we discussed <a href="../a-matter-of-principles/">code reuse</a>, and in the second, I went over <a href="../controlling-your-code-through-versioning/">version control</a>.</p>
<p><a href="http://en.wikipedia.org/wiki/Unit_testing">Unit testing</a> is a methodology by which you run tests on individual bits of your programming code.  I have to admit that this is the topic of the three with which I am the least familiar.  The concept of &#8220;testing&#8221; in my past jobs has largely been comprised of this:</p>
<ul>
<li>Write your program</li>
<li>Test it out as thoroughly as you can when done</li>
<li>Turn it over to a user for them to test thoroughly.</li>
</ul>
<p>This is actually a very broad generalization, and I would, in fact, test out bits of code that I wrote as I wrote them, making sure that functions returned the desired results before I was anywhere near to having a final product.  While this is a step in the right direction towards unit testing, it is no means <em>formal </em>unit testing.<span id="more-268"></span></p>
<p>Ideally, you would want an easily replicable suite of unit tests that you can run at any point in the lifetime of your project to see that the various parts of your code work and return the desired results. There are many tools available now that can automate your unit testing; after making a change to your code base, you can run your unit test tool and see if you accidentally broke anything.</p>
<p>The benefits of this should be obvious &#8211; you can find errors in your code MUCH sooner than by completing your program and then testing it out.  Unit testing involves a lot of additional work beyond just writing a program (you need to keep your tests up to date, also), but the end result should be that you are much more confident in your program being error-free.</p>
<p>An extension of this concept is <a href="http://en.wikipedia.org/wiki/Test-driven_development">test-driven development</a>.  You design your tests around a theoretical programming unit first, and then you write the program unit to pass your tests.  This is an area into which I&#8217;ve been doing some research, and I plan to try out this programming technique in my next major project.  Just like with version control, I&#8217;m eager to hear others&#8217; experiences with unit testing so that I can learn from you, too!</p>
<p>To conclude this brief series on some very important programming principles, I&#8217;ll mention that studying and learning new programming techniques is a very important methodology, as well.  No one starts their programming career knowing every best practice there is to know, and keeping abreast of the latest programming methodologies is one of the best ways to ensure your success in the field.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techmemoirs.com/a-brief-summary-of-unit-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Controlling your code through versioning</title>
		<link>http://www.techmemoirs.com/controlling-your-code-through-versioning/</link>
		<comments>http://www.techmemoirs.com/controlling-your-code-through-versioning/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 18:25:31 +0000</pubDate>
		<dc:creator>Derek</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[principles]]></category>
		<category><![CDATA[teamwork]]></category>

		<guid isPermaLink="false">http://www.techmemoirs.com/?p=259</guid>
		<description><![CDATA[Today, I move on to another key programming methodology, that of version control.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.techmemoirs.com%2Fcontrolling-your-code-through-versioning%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.techmemoirs.com%2Fcontrolling-your-code-through-versioning%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.techmemoirs.com/wp-content/uploads/2010/11/adobe_version_cue_cs3_overlay.png"><img class="alignleft size-full wp-image-262" title="adobe_version_cue_cs3_overlay" src="http://www.techmemoirs.com/wp-content/uploads/2010/11/adobe_version_cue_cs3_overlay.png" alt="Version Control" width="128" height="128" /></a>In my last posting, I talked about the benefits of <a href="../a-matter-of-principles/">code reuse</a> and how any good programmer should swear by that coding principle.  Today, I move on to another key programming methodology, that of version control.</p>
<p><a href="http://en.wikipedia.org/wiki/Version_control">Version control</a> (revision control, source control, or any of a number of other similar names) is a method for archiving and documenting changes to programming code, web pages, XML files, and, frankly, any other type of file of which you might want to store multiple versions in one centralized location.  A benefit of this is that multiple programmers can work on the same code base without interfering with each other, and that you can easily track or back out changes to a file and go back to an earlier version, should a new change cause problems.<span id="more-259"></span></p>
<p>This is something that has been hit or miss at the jobs I&#8217;ve worked at.  My first position at a larger software vendor company had a version control system for their main programming code base, but any custom tweaking that we did for clients was not included.  The smaller organizations that I&#8217;ve worked at since then haven&#8217;t had an official version control process either.  So, this is always something that I&#8217;ve been clamoring for, but I don&#8217;t have years of experience with it to list out my own version control best practices.</p>
<p>I&#8217;ve resorted to tactics like manually backing up my code to a new folder for each change, to installing the single-user version of <a href="http://www.perforce.com/">Perforce</a> onto my computer.  Neither of these would work in a large team setting, though in my recent jobs, where I worked on applications largely on my own, they sufficed.  Using Perforce on your own, however, is a terrific solution if you are a single-person company.</p>
<p>Getting back to the core concept of version control, it&#8217;s absolutely necessary to avoid situations where a change adversely affects an application and you need to back it out.  If you can&#8217;t readily restore to an old version of your application in case of emergency, then you better start working on setting up such a system.  The idea of Disaster Recovery in IT departments usually refers to how to get your organization back up and running should the worst happens, but version control is very much a disaster recovery system in itself.</p>
<p>Here are some of the more common software packages for version control, if you&#8217;d like to learn more:</p>
<ul>
<li><a href="http://www.nongnu.org/cvs/">CVS</a></li>
<li><a href="http://git-scm.com/">Git</a></li>
<li><a href="http://www.perforce.com">Perforce</a></li>
<li><a href="http://subversion.apache.org/">Subversion</a></li>
<li><a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/team-foundation-server">Visual Studio Team Foundation Server</a></li>
</ul>
<p>Feel free to share your experiences working with or implementing various version control solutions.  I&#8217;d love to hear about them.  Coming up next: unit testing!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techmemoirs.com/controlling-your-code-through-versioning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A matter of principles</title>
		<link>http://www.techmemoirs.com/a-matter-of-principles/</link>
		<comments>http://www.techmemoirs.com/a-matter-of-principles/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 18:41:04 +0000</pubDate>
		<dc:creator>Derek</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[principles]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.techmemoirs.com/?p=251</guid>
		<description><![CDATA[In the more than a decade that I've been programming, I've found that there are three programming principles that I really wish were included in the computer science program that I enrolled in during the late 1990s.  This article discusses the idea of code reuse.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.techmemoirs.com%2Fa-matter-of-principles%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.techmemoirs.com%2Fa-matter-of-principles%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><img class="alignleft size-full wp-image-254" title="programming" src="http://www.techmemoirs.com/wp-content/uploads/2010/11/programming.png" alt="zeroes and ones" width="128" height="128" />In the more than a decade that I&#8217;ve been programming, I&#8217;ve found that there are three programming principles that I really wish were included in the computer science program that I enrolled in during the late 1990s:</p>
<ul>
<li>Code reuse (the DRY principle)</li>
<li>Implementing version control</li>
<li>Unit testing your code</li>
</ul>
<p>There&#8217;s really no excuse for these topics not being covered, but it perhaps reflects upon how the academic world differs from the professional business world.  Academia considers you successful if you&#8217;ve studied all sorts of general aspects of computer science, while success in the business world requires following general coding principles, and not necessarily a grasping a thorough understanding of say, machine code or Artificial Intelligence (of course, my argument falls apart if you are designing computer processors, robotics, or video games!).</p>
<p>Covering all three topics in one article would be a bit much, so I&#8217;m going to split this up over the course of a few days.<span id="more-251"></span></p>
<h2>Code reuse</h2>
<p>My biggest programming pet peeve is when my fellow programmers don&#8217;t write code that is reusable, or worse yet, &#8220;reuse&#8221; their code by copying and pasting it into a multitude of different program files.  As a developer, you ideally shouldn&#8217;t write the same bit of code twice, which is known as the <a href="http://en.wikipedia.org/wiki/DRY">DRY principle</a> (or Don&#8217;t Repeat Yourself).  As soon as you find yourself writing one or more lines of code that resemble something you already wrote, you should evaluate it for use in a function or utility class.  That way, if you need to make a change to your repeated logic, you only have to do it in one place, and the various places in your code where you reference it should all automatically work the same way.</p>
<p>One of my fellow programmers is absolutely notorious for copying and pasting code.  I&#8217;ve had to drastically <a href="http://en.wikipedia.org/wiki/Code_refactoring">refactor</a> a few of his web applications, because he had copied and pasted the same script and HTML outline into numerous files.  His worst offending application had 30 files containing much of the same code in each!  It took me several weeks of cleaning it up just to get it into an easily maintainable shape &#8211; and I hadn&#8217;t even gotten to adding any of the new requested functionality that I was <em>supposed</em> to be working on by that point!</p>
<p>I probably don&#8217;t need to mention that I had thoughts of poking him with sharp pointy objects if I ever ran into him again.  After refactoring his code, it felt good looking at the result and knowing that I now only needed to make a change in one place to affect all the files at the same time, but to the end user, there was no difference in the application and I wasn&#8217;t helping to make it do &#8220;cool&#8221; new stuff.  If you develop your code the right from from the beginning, you can get at that &#8220;cool stuff&#8221; that much sooner.</p>
<p>Later in the week: we discuss <a href="../controlling-your-code-through-versioning/">version control</a> and then unit testing!  Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techmemoirs.com/a-matter-of-principles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The similarities between JavaScript and English</title>
		<link>http://www.techmemoirs.com/245/</link>
		<comments>http://www.techmemoirs.com/245/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 01:46:18 +0000</pubDate>
		<dc:creator>Derek</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[language]]></category>

		<guid isPermaLink="false">http://www.techmemoirs.com/?p=245</guid>
		<description><![CDATA[There are lots of similarities between programming languages and spoken languages.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.techmemoirs.com%2F245%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.techmemoirs.com%2F245%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.techmemoirs.com/wp-content/uploads/2010/10/edu_languages.png"><img class="alignleft size-full wp-image-247" title="edu_languages" src="http://www.techmemoirs.com/wp-content/uploads/2010/10/edu_languages.png" alt="language bubble" width="128" height="128" /></a>While doing some research into one of the more recently hyped techs-of-the-moment, <a href="http://nodejs.org/">node.js</a>, I came across this quote from <a href="http://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb">debuggable</a>:</p>
<p style="padding-left: 30px;">&#8220;Another reason is JavaScript. You can use node to share code between the browser and your backend. JavaScript is also on its way to become a really universal language. No matter if you did python, ruby, java, php, &#8230; in the past, you&#8217;ve probably picked up some JS along the way, right?&#8221;</p>
<p>I&#8217;m not sure that&#8217;s a very compelling reason on its own to use node.js, but the author&#8217;s point is that most people know some JavaScript, so if you wish to use an evented programming framework, node.js is a wiser choice over, say, Ruby&#8217;s <a href="http://rubyeventmachine.com/">EventMachine</a>, assuming you are more familiar with JavaScript than Ruby.</p>
<p>Regardless, I was fascinated by the part of the quote above that mentions how JavaScript is on its way to becoming a universal programming language.  There are lots of similarities between programming languages and spoken languages, with my personal favorite being how after you&#8217;ve picked up at least two languages, you can pick up virtually any after that very easily.<span id="more-245"></span></p>
<p>If JavaScript is indeed becoming the &#8220;universal&#8221; programming language, then it very well may be the programming version of the English spoken language.  Let&#8217;s see what I mean:</p>
<ul class="bulletpoints">
<li>Both can be tricky to pick up at first.  I&#8217;d actually argue that JavaScript is actually less tricky to pick up, but that might be because I learned quite a few other languages first.</li>
<li>JavaScript is a bit loose in its rules and doesn&#8217;t require well-formed syntax.  You can write a program in JavaScript that looks horrendous, but most programmers could probably generally follow what you mean.  Similarly, the English language lets you mix up the parts of a sentence is so many different ways that new speakers might say or write something that seems odd but understandable to native speakers.</li>
<li>English has become a universal language among scientists, professors, highly ranked politicians, etc., not because it&#8217;s a superb and easy language, but rather because the old British Empire and, later on, the United States&#8217; cultural influence spread around the world.  The world at large is now stuck with a tricky language as its common tongue.  In the world of programming, web development has been gaining steam for years, replacing a lot of desktop development.  The &#8220;cultural influence&#8221; of our web browsers, where JavaScript is the main scripting language supported, appears to be making JavaScript the language &#8220;spoken&#8221; by the masses of programmers out there.  Like English, it too is often derided for not being a great language.</li>
</ul>
<p>There are probably many more similarities that I don&#8217;t have listed.  What does this all mean?  Perhaps linguists can learn something from computer programming, and vice-versa.  I&#8217;d definitely be interested in studies looking further into this.</p>
<hr />I apologize for the seemingly abandonment of my regular postings here &#8211; events in the real world took precedence for quite a while, and I didn&#8217;t have time to get back to what is essentially a hobby of mine here.  I&#8217;ve been tossing around ideas of how to further develop this site or what to turn it into, so stay tuned for that.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techmemoirs.com/245/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>An apologetic old program</title>
		<link>http://www.techmemoirs.com/an-apologetic-old-program/</link>
		<comments>http://www.techmemoirs.com/an-apologetic-old-program/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 17:41:56 +0000</pubDate>
		<dc:creator>Derek</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.techmemoirs.com/?p=237</guid>
		<description><![CDATA[An old program apologizes for never being completed.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.techmemoirs.com%2Fan-apologetic-old-program%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.techmemoirs.com%2Fan-apologetic-old-program%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>This gave me a good chuckle &#8212; I ran into this recently on the old systems I still work on (yes, this comes from a terminal session!):</p>
<pre class="code">          Transaction Editing Database
              Charge Batch Proof

THIS ACTIVITY PROVIDES DETAIL VOUCHER INFORMATION BY
SELECTED BATCH NUMBER(S).

     HOW DO YOU WANT YOUR BATCH PROOF SORTED
               A. BY NUMBER
               B. BY PATIENT

          PLEASE SELECT A OR B : B

<strong>Sorry this portion of the program is being fixed !!!

Please selection A from the option menu.

Thank you for using the TE Batch Proof System</strong></pre>
<p>In short, I selected option <strong>B</strong>, only to be presented with the last three lines above.  This program first apologizes that <strong>B</strong> is not a working option and is currently being fixed (which is news to me &#8211; the last time I can tell that any programmer did any significant work to it was 10 years ago).  Then, it directs me to option <strong>A</strong> (why even bother listing an option B in the first place?).  And then perhaps my favorite part, it thanks me for using this system, apparently not realizing that it neglected to produce any useful output for me.</p>
<p>So, apparently, what we can learn from this is that if you don&#8217;t plan to eventually finish your program, at least make it sound like a pleasant convenience store worker.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techmemoirs.com/an-apologetic-old-program/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More on email ettiquette and the habits that drive me crazy</title>
		<link>http://www.techmemoirs.com/more-on-email-ettiquette-and-the-habits-that-drive-me-crazy/</link>
		<comments>http://www.techmemoirs.com/more-on-email-ettiquette-and-the-habits-that-drive-me-crazy/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 03:09:15 +0000</pubDate>
		<dc:creator>Derek</dc:creator>
				<category><![CDATA[email]]></category>
		<category><![CDATA[annoyances]]></category>

		<guid isPermaLink="false">http://www.techmemoirs.com/?p=226</guid>
		<description><![CDATA[More email etiquette tips!]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.techmemoirs.com%2Fmore-on-email-ettiquette-and-the-habits-that-drive-me-crazy%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.techmemoirs.com%2Fmore-on-email-ettiquette-and-the-habits-that-drive-me-crazy%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.techmemoirs.com/wp-content/uploads/2010/04/outlook.png"><img class="alignleft size-full wp-image-230" title="outlook" src="http://www.techmemoirs.com/wp-content/uploads/2010/04/outlook.png" alt="Outlook logo" width="39" height="34" /></a>I&#8217;m so chalk full of email pointers that I thought that I&#8217;d share some more. Incidentally, not all of these are as relatable to the new forms of internet communication as my last list (e.g., the idea of &#8220;read receipts&#8221; doesn&#8217;t quite make sense in something like <a href="http://www.facebook.com">Facebook</a>&#8230; though they might surprise me one day with another one of their privacy-challenged new features).  And so, here&#8217;s another list of email DON&#8217;Ts:<span id="more-226"></span></p>
<ul class="bulletpoints">
<li><strong>Attaching huge files.</strong> Extremely large attachments can slow down a person&#8217;s email program and make the user think the program or internet connection is busted. This isn&#8217;t quite true with web-based email clients, though depending on the person&#8217;s email service, you still are risking maxing out their storage limit.  Consider using an online service for sharing documents with others (publicly or privately), like Microsoft&#8217;s <a href="http://skydrive.live.com">SkyDrive</a> service or <a href="http://docs.google.com">Google Docs</a>.</li>
<li><strong>Really long emails with no summary of the talking points.</strong> I mentioned <a href="http://www.techmemoirs.com/how-to-not-tick-off-your-coworkers-via-email/">last time</a> about avoiding really long emails.  If you absolutely insist on doing that, at least provide a brief summary of your points at the start of your email (concise bullet points are good attention getters).  There&#8217;s a good chance the recipient will nod off in the middle of the email, so if you hammer home your main points at the beginning, there&#8217;s a somewhat decent chance the person will understand your main ideas and hang on until the end. But again, it&#8217;s a really bad idea to start a new email conversation with an enormous email message.  You&#8217;ll lose the recipient&#8217;s attention span before you even had it.</li>
<li><strong>Replying to an email and just saying &#8220;Thanks!&#8221;</strong> This one is debatable, and some people actually might like receiving one word emails of appreciation, but there&#8217;s quite a few others that can&#8217;t stand them.  <strong>At the very least,</strong> don&#8217;t press the Reply All button and send a one-word reply and end up copying everyone and their brother on your email.  If you do want to tell someone thanks, consider making it a full sentence such as, &#8220;Thank you very much, I really needed someone to help with that!&#8221;</li>
</ul>
<p>And lastly, perhaps two of my biggest pet peeves, the kind that make me want to pull out my hair or jam pens into my eyes:</p>
<ul class="bulletpoints">
<li><strong>Using <a href="http://en.wikipedia.org/wiki/E-mail_tracking">read receipts</a></strong>.  There was perhaps once a good use for these, back in the day when email wasn&#8217;t so ubiquitous and spam was hardly a glimmer in the eye of the con artists, asshole advertisers, and &#8220;adult entertainers&#8221; of the world.  Now, however, they are seen as a major annoyance and a sign that you don&#8217;t trust the other recipient to respond to your message.  Plus, since programs like Outlook let you turn off the sending of read receipts and some email clients don&#8217;t even support the concept of them, is there really any guaranteed use for them anymore?
<p><div id="attachment_231" class="wp-caption aligncenter" style="width: 347px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/04/no_read_receipt.png"><img class="size-full wp-image-231" title="no_read_receipt" src="http://www.techmemoirs.com/wp-content/uploads/2010/04/no_read_receipt.png" alt="Read receipt option crossed out" width="337" height="71" /></a><p class="wp-caption-text">Just say NO to read receipts!</p></div></li>
<li><strong>Using email &#8216;stationary&#8217; for the background of your message.</strong> I don&#8217;t think I&#8217;ve ever seen one used tastefully. If I wanted a gaudy picture of some flowery decorative scheme, I&#8217;d go visit an art fair. Using a lined sheet of paper design for the background of your message doesn&#8217;t make your email any more readable or memorable.  In fact, I&#8217;m more than likely going to remember how badly I scowled at the appearance of your message rather than recall what your actual content really was.  Thankfully, this tends to be more of a problem that&#8217;s internal to organizations that enforce a standard email program, as email stationary usually doesn&#8217;t translate well across differing email clients. However, it&#8217;s just as annoying to receive an email with stationary in a program that differs from the sender: the message in your inbox will more likely than not have an attachment indication, and if curiosity gets the better of you, you will open the attachment&#8230; only to be annoyed to find a gaudy picture of flowers or a virtual sheet of paper. Of course, I shouldn&#8217;t have to remind you of the danger of email attachments and how they can contain all sorts of nasty stuff that can infect your computer, so you should only open them when you&#8217;re expecting one.
<p><div id="attachment_232" class="wp-caption aligncenter" style="width: 674px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/04/tacky_stationary.png"><img class="size-full wp-image-232" title="tacky_stationary" src="http://www.techmemoirs.com/wp-content/uploads/2010/04/tacky_stationary.png" alt="Tacky stationary" width="664" height="222" /></a><p class="wp-caption-text">Tacky-looking nature images do NOT lend a professional look to your email</p></div></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.techmemoirs.com/more-on-email-ettiquette-and-the-habits-that-drive-me-crazy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to NOT tick off your coworkers via email</title>
		<link>http://www.techmemoirs.com/how-to-not-tick-off-your-coworkers-via-email/</link>
		<comments>http://www.techmemoirs.com/how-to-not-tick-off-your-coworkers-via-email/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 17:57:01 +0000</pubDate>
		<dc:creator>Derek</dc:creator>
				<category><![CDATA[email]]></category>
		<category><![CDATA[annoyances]]></category>

		<guid isPermaLink="false">http://www.techmemoirs.com/?p=203</guid>
		<description><![CDATA[Some tips on how to write better, more professionally-sounding emails.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.techmemoirs.com%2Fhow-to-not-tick-off-your-coworkers-via-email%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.techmemoirs.com%2Fhow-to-not-tick-off-your-coworkers-via-email%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.techmemoirs.com/wp-content/uploads/2010/03/send-button.png"><img class="alignleft size-full wp-image-202" title="send-button" src="http://www.techmemoirs.com/wp-content/uploads/2010/03/send-button.png" alt="Email send button" width="77" height="54" /></a>My last few posts have been very instructional and aimed at a very specific audience, so let&#8217;s take a look at something from which we all could benefit. Being that it&#8217;s Friday and a beautiful day outside (hopefully your weather is gorgeous, too), let&#8217;s all roll up our sleeves, unbutton that top button, and enjoy a topic that&#8217;s both obvious and often overlooked at the same time.  It&#8217;s time&#8230; to talk about email etiquette.<span id="more-203"></span></p>
<p>It&#8217;s a method of communication that many people say is dying, though that &#8220;many&#8221; does not seem to encompass a single person at the organization where I work, where emails fly back and forth like migratory birds confused by climate change.  At my job, email exchanges are the norm for project communication, problem reporting, questions, and yes, even those most important messages of the day, what to do for lunch.  While other methods of electronic communication are becoming more and more prevalent, be it texting, <a href="http://twitter.com">Twittering</a>, <a href="http://wave.google.com">Waving</a>, etc., email is in no danger of going away just yet, which is why it&#8217;s always a good idea to review the following points from time to time.  These points also have relevance in the new forms of communication, so they are definitely worth noting.</p>
<p>Speaking of texting, I can&#8217;t wait to see how the kids of today, who are quite adept at going over their monthly text message plan using less words than I&#8217;ve written in the above paragraph, manage communication in their careers in about 10-15 years.  I&#8217;d bet it&#8217;s a popular topic of language arts grad students&#8217; dissertations.  But I digress.</p>
<p>Here are some email best practices in the workplace that I&#8217;ve noted over the years.  Follow these, and you almost assuredly won&#8217;t be secretly hated by those sitting around you&#8230; assuming you follow good hygiene, too.</p>
<ul class="bulletpoints">
<li><strong>Keep your messages as concise as possible.</strong> Long emails tend to put off the receiver, who may start to despise you and curse your unborn children before he or she even begins to read your message.  If you must, save additional talking points or questions for a follow-up email after you&#8217;ve gotten the receiver&#8217;s attention.  Include just your most important point or question in the beginning.</li>
<li><img src="http://www.techmemoirs.com/wp-content/uploads/2010/03/signature.png" alt="Signature button" title="signature" width="57" height="68" class="alignright size-full wp-image-220" /><strong>Unless your forwarding pictures of talking cats to your fellow coworkers, include a full email signature in at least the very first message you send or to which you reply. </strong> Important email conversations have a way of taking on a life of their own and getting forwarded to others later on.  However, after a message has had a few responses, many email programs only show the name but not the email address of past recipients (I&#8217;m looking at you, Outlook!).  So, if your message is one of the first in the email chain and one of the later recipients wants to get a hold of you, you can save him or her a lot of time by including a signature containing your email address or phone number so that they know how to to contact you.  Oh, and if you <em>are </em>forwarding pictures of talking cats to your coworkers, there&#8217;s a good chance they are starting to despise you and curse your unborn children.</li>
<li><strong>Be selective of who you CC: on your emails.</strong> Back when I was fresh out of college, I had a bit of a rabble-rouser in me.  I sent an email to our managers and copied my entire department about how our support issues weren&#8217;t being fairly distributed amongst our various regions, acknowledging our unspoken common frustration.  The shared frustration became clear as I nearly caused an uprising among the ranks, something for which I got scolded. Our managers had no problem with me bringing up the issue, though I should have brought it up just with them and not copied everyone else.  Without working out a solution to the problem with them first, I should have thought twice about copying everyone in our area on my message.</li>
<li>
<div id="attachment_204" class="wp-caption alignright" style="width: 85px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/03/reply-all.png"><img class="size-full wp-image-204   " title="reply-all" src="http://www.techmemoirs.com/wp-content/uploads/2010/03/reply-all.png" alt="Reply to All button" width="46" height="66" /></a><p class="wp-caption-text">Careful with this button!</p></div>
<p><strong>Be <em>very </em>careful with the Reply All button.</strong> Only use it when everyone on the original email needs to see your response.  One of my most memorable work memories is the follow-up to the above story. Even worse than my action, one of my fellow teammates sent me an enthusiastic follow-up email stating, &#8220;You go, Derek!&#8221;.  Only, she too copied everyone in the department.  Accidentally.  Her scolding was worse than mine.</li>
<li><strong><img class="alignright size-full wp-image-205" title="no-smiley-face" src="http://www.techmemoirs.com/wp-content/uploads/2010/03/no-smiley-face.png" alt="Crossed-out smiley face" width="126" height="125" />Know your audience and keep your message professional where necessary.</strong> If you are contacting for the first time a senior manager from a different department or even a new client, don&#8217;t add a smiley face to your email. And for heaven sakes, watch your exclamation points (&#8220;Thanks!!!!!!!!!&#8221; actually appears to be part of the email signature of one individual I hear from a lot). Repeated punctuation is not very becoming of a professional email &#8212; this especially includes &#8220;???&#8221;.</li>
<li><strong><img class="alignright size-full wp-image-213" title="phone" src="http://www.techmemoirs.com/wp-content/uploads/2010/03/phone.png" alt="telephone" width="45" height="54" />Perhaps most importantly, use the phone once in awhile.</strong> Every little question you have for someone doesn&#8217;t have to be done over email.  You might actually save the other person some time in the process too, and make the world a happier place as a result.</li>
</ul>
<p>If you have additional email tips that you&#8217;d love to share, let us know in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techmemoirs.com/how-to-not-tick-off-your-coworkers-via-email/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making a splash… page.</title>
		<link>http://www.techmemoirs.com/making-a-splash-page/</link>
		<comments>http://www.techmemoirs.com/making-a-splash-page/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 05:02:20 +0000</pubDate>
		<dc:creator>Derek</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.techmemoirs.com/?p=186</guid>
		<description><![CDATA[An in-depth look into the design of splash pages on the web.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.techmemoirs.com%2Fmaking-a-splash-page%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.techmemoirs.com%2Fmaking-a-splash-page%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://wallpaper-s.org/11__Atomic_Water_Splash.htm"><img class="alignleft size-full wp-image-194" title="water_splash" src="http://www.techmemoirs.com/wp-content/uploads/2010/03/water_splash.png" alt="Splash of water" width="222" height="223" /></a>If you were with us <a href="http://www.techmemoirs.com/how-not-to-do-software-versioning/">last time,</a> we were discussing the numbering of a product called Studio Enterprise by <a href="http://www.componentone.com/">Component One</a>.  I raised some concerns about their versioning scheme, stating that it likely would raise lots of confusion among their userbase.  This time, I&#8217;d like to focus on a <a href="http://en.wikipedia.org/wiki/Splash_screen">splash page</a> on their site that is advertising this product.  Again, let me make the disclaimer that I am not reviewing the product itself or making any claims about it being good or bad.  I&#8217;m simply using the advertising on their site as a lesson in web design.</p>
<p>Since there&#8217;s a good chance the page will eventually come down or change (as it is, after all, advertising a product labeled &#8220;2009&#8243;, and the last time I checked, we were well into the year 2010), here is a small screenshot of <a href="http://www.componentone.com/prepare/">the splash page in question</a> (if this link does eventually kick the metaphorical bucket, just imagine this image blown up to 960 pixels wide and 1050 pixels tall):</p>
<div id="attachment_187" class="wp-caption aligncenter" style="width: 390px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/03/splash_page_small.png"><img class="size-full wp-image-187" title="splash_page_small" src="http://www.techmemoirs.com/wp-content/uploads/2010/03/splash_page_small.png" alt="Splage page ad" width="380" height="402" /></a><p class="wp-caption-text">The splash page advertising Studio Enterprise 2009 v3.</p></div>
<p><span id="more-186"></span>Artistically, it&#8217;s kind of cool and employs a 1950s retro sci-fi vibe.  Whether that helps or hurts the product is up for debate, though. The programmers that ultimately would be the end users of this tool might really dig it (after all, what programmer doesn&#8217;t have a little geek in them?), though Mr. or Mrs. Senior Executive that ultimately pays the bills might be discouraged and instead keep looking for something that has that certain &#8220;professional IT&#8221; look to it.</p>
<p>Regardless, implementing a splash page like this can be bad for several reasons:</p>
<ul>
<li>They can take a long time to load.</li>
<li>Some may only slightly resemble an actual web page, and users may be confused or discouraged when clicking in certain places on the screen does not result in the expected behavior.</li>
<li>They aren&#8217;t as accessible as a proper web page, and people with certain disabilities may not be able to use/read the screen.</li>
<li>They take the page&#8217;s content out of the underlying HTML, which searches engines may not understand (Flash content has historically had a similar problem).</li>
</ul>
<p>Let&#8217;s go through each point in depth.</p>
<h3>Page load time</h3>
<p>Splash pages can often take a long time to load, and when a page takes longer than a few seconds to display, your potential readers, users, and/or customers are very likely bolting for the virtual door and heading to a different site.  Let&#8217;s look at Component One&#8217;s splash page advertising Studio Enterprise.  On my fast broadband connection at home, it took a good 8 seconds to fully load!  That is <em>way</em> longer than what a good page should take.  A big bulk of your potential site viewers won&#8217;t stick around past the 4-5 second mark.  While it&#8217;s a few years old, <a href="http://www.akamai.com/html/about/press/releases/2006/press_110606.html">Akamai </a>has an interesting article on how this affects online shoppers.</p>
<p>To Component One&#8217;s credit, their splash page is divided into two main images that can be downloaded simultaneously to cut down the load time. I hesitate to think how small the percentage of potential customers would stick around if it <em>was</em> just a single huge image! There&#8217;s still a problem, however &#8212; each image averages over 750KB in size!  That&#8217;s a nearly 1.5 MB download just to see an ad on a page, which is pretty darn insane.</p>
<p>Both images are PNG files, and each one appears to be saved as a high quality 32-bit image. Re-saving the images as 8-bit using the free <a href="http://www.getpaint.net/">Paint.NET</a> utility, I was able to cut the images down to under 25% of their original size.  You lose some of the sharpness of the original image, but when your intent is to entice a custom to click on the image right away and come into your site, who is going to stick around long enough to enjoy the quality of artwork in your ad?  Certainly not the web surfers that have already left and gone on to a different site.</p>
<h3>Splash page interaction</h3>
<p>When a splash page is set up like Component One&#8217;s, they often lose any semblance of an interactive web page.  In the case of their ad, the images that are used to make up the page contain what look like clickable buttons:</p>
<p style="text-align: center;"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/03/component_one_ad_buttons.png"><img class="aligncenter size-full wp-image-189" title="component_one_ad_buttons" src="http://www.techmemoirs.com/wp-content/uploads/2010/03/component_one_ad_buttons.png" alt="The &quot;buttons&quot; on the page" width="225" height="104" /></a></p>
<p>In fact, if you hover over them, the mouse cursor turns into a hand which gives the appearance that they are indeed clickable. However, upon closer inspection, each of the two images making up the page are entirely clickable!</p>
<p>Rather cleverly, they&#8217;ve placed the &#8220;buttons&#8221; in the above picture right along the middle of the page, which is the dividing point of the images.  &#8220;Download free trial&#8221; falls just above the border of the two images, and &#8220;Learn more&#8221; falls just under it. As it turns out, each image is actually a link to a specific page on their site.  Not surprisingly, clicking on the top half of the page takes you to a download page, and clicking on the bottom half of the page takes you to a Studio Enterprise overview page.</p>
<p>So how is this bad when the &#8220;links&#8221; basically work?  For starters, modern web design conventions are being ignored.  Hovering over the &#8220;buttons&#8221; doesn&#8217;t change the color or style of the buttons to indicate that you should click on them.  There&#8217;s other text on the page too:</p>
<div id="attachment_190" class="wp-caption aligncenter" style="width: 574px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/03/component_one_ad_text.png"><img class="size-full wp-image-190" title="component_one_ad_text" src="http://www.techmemoirs.com/wp-content/uploads/2010/03/component_one_ad_text.png" alt="The footer of the ad" width="564" height="73" /></a><p class="wp-caption-text">The text at the bottom of the ad</p></div>
<p>Why don&#8217;t these words have their own context-specific links? As a user, I might assume that clicking on &#8220;scheduling&#8221; will take me to the overview of a scheduling product, and when I see that this is not the case, I may move on to another site.</p>
<h3>Accessibility</h3>
<p>Can blind web users that utilize screen readers make sense of the page?  There&#8217;s no <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/embedded-content-1.html#alt">alt text</a> set up for the images on the page for such a user to know what they are viewing. The &#8220;buttons&#8221; mentioned above are in no way identifiable to such a user.</p>
<h3>Content</h3>
<p>Building upon accessibility, Component One&#8217;s splash page inextricably mixes the content on the page with its style. There&#8217;s no way to easily update the look of it without needing to change the entirety of the content.  Now, given that the content is simply an ad for a product that will probably be replaced by a new version (and thus a new ad) in the near future, Component One probably didn&#8217;t give this issue much thought.  In fact, I&#8217;d agree that in their situation, this really isn&#8217;t that big a of a problem.</p>
<p>For other sites that have a permanent splash page, though, presenting the content in this way makes for a real maintenance challenge, should the site owner ever want to update the look of the page.  You either do a complete redesign, or you do nothing at all.</p>
<h3>Conclusion</h3>
<p>If you&#8217;re thinking you want a splash page to be the first thing a visitor sees when entering your site, then you have to carefully weight the pros and cons of doing so.  A carefully designed page should pass the above tests and not discourage potential visitors.  However, in Component One&#8217;s case, their splash page is likely turning away more potential customers than it&#8217;s luring.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techmemoirs.com/making-a-splash-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How NOT to do software versioning</title>
		<link>http://www.techmemoirs.com/how-not-to-do-software-versioning/</link>
		<comments>http://www.techmemoirs.com/how-not-to-do-software-versioning/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 03:11:22 +0000</pubDate>
		<dc:creator>Derek</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[advertising]]></category>

		<guid isPermaLink="false">http://www.techmemoirs.com/?p=167</guid>
		<description><![CDATA[A dissection of what makes or breaks the version numbering of a piece of software.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.techmemoirs.com%2Fhow-not-to-do-software-versioning%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.techmemoirs.com%2Fhow-not-to-do-software-versioning%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Inadvertently, I recently came across a software product that seemed rather odd to me.  It, in turn, also led me to a web site that I thought would work great for a quick web design lesson, but we&#8217;ll get to in my next posting.</p>
<p>Before I delve into what struck me as odd regarding this software, though, let me first point out that <strong>I in no way endorse this product, nor am I implying that it&#8217;s bad</strong>.  Frankly, I don&#8217;t have a use for it and don&#8217;t plan to test it out. In fact, it may actually be the best thing since Windows XP/Windows 7/Mac OS X (circle one).  That&#8217;s none of my concern, and I want to make it clear up front that this is not a review or critique of the actual software being discussed. In fact, I&#8217;m actually going to be focusing more on the <strong>advertising </strong>of said product.</p>
<p>So, what exactly <em>is </em>it that caught my eye?  I was looking at a page on <a href="http://stackoverflow.com/">Stack Overflow</a> and noticed this ad at the top of the page:</p>
<div id="attachment_168" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/SE-ad.png"><img class="size-medium wp-image-168" title="SE-ad" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/SE-ad-300x39.png" alt="Studio Enterprise ad" width="300" height="39" /></a><p class="wp-caption-text">The noteworthy ad</p></div>
<p><span id="more-167"></span>Now, my brain has gotten pretty good at filtering out ads on web pages.  I would guess many, if not most, people are getting good at that game based on how advertisers keep trying to up the ante in how dramatic they can make their online ads.  I usually don&#8217;t stop and do a double-take when my eyes scan past an ad embedded on a page. However, this one caught my eye for a couple reasons:</p>
<ul>
<li>Due to its coloring, logo on the left, and font used, the ad looked like it was for Microsoft&#8217;s <a href="http://www.microsoft.com/visualstudio/en-us/default.mspx">Visual Studio</a>, but for a version that I wasn&#8217;t familiar.  Visual Studio &#8220;Enterprise?&#8221;  Knowing that version 2010 is about to be dropped into the world and is replacing version 2008, I was surprised by its versioning also: &#8220;2009??&#8221;</li>
<li>Realizing that this wasn&#8217;t actually a Microsoft product but one from a company called <a href="http://www.componentone.com/">Component One</a>, the next odd thing that I noticed was that it was essentially marketing itself as version 2009 version 3.  &#8230;Wait, what???</li>
</ul>
<p>I have to admit that my curiosity was really piqued now.  Who versions their software twice?  Was this really the third major version of this software released in 2009, and do they restart their numbering each year?  Has Component One named their product &#8220;Studio Enterprise 2009&#8243; for the last several years, patiently waiting for a larger company to gobble them up and force them to change their software&#8217;s name, all to avoid the paperwork headache of patenting a new version?</p>
<p>Actually, I can think of one example software product that&#8217;s near and dear to me that did something arguably similar: a healthcare solution that I&#8217;ve used time and time again and is now part of <a href="http://www.gehealthcare.com">GE Healthcare&#8217;s</a> stable of products. It was suddenly renumbered after years of each version simply being one number higher than the last.  In the middle of the release of version 9, however, it was retroactively renumbered as version 2.  The reason?  The vendor was trying to change its platform emphasis and decided to make the second version of its newer web-based product its flagship platform.  It&#8217;s older terminal-based solution (then up to version 9) wasn&#8217;t being phased out, per se, but it was kind of getting swept under the rug.</p>
<p>So, it was decided that their entire product line would be renumbered to 2.0.  While they weren&#8217;t advertising this using Component One&#8217;s numbering model as &#8220;version 10 version 2,&#8221; it was known <strong>internally </strong>amongst the vendor&#8217;s employees and to their older clients as version 10, and <strong>externally, </strong>it was advertised as version 2.  This, as you can imagine, led to all sorts of confusion.  Granted, the end users that relied on this software didn&#8217;t care if it was version 10.0, version 3.14159 or version Purple, as long as they were able to get their work done.  But for our managers and support staff that dealt directly with the vendor, it certainly was confusing when we would be in dealings for a new version, or if we received a notification about an emergency update for a specific version that we may or may not have had.</p>
<p>Let&#8217;s jump back to my new obsession, Studio Enterprise 2009 v3.  Curiosity got the best of me, and I had to click on their link to see what the deal with their software was. I was brought to a <a href="http://www.componentone.com/prepare/">rather annoying splash page</a>, an element of web design that I plan to cover next. I had to go digging through their site a bit, but I finally came across this page which had their <a href="http://www.componentone.com/SuperProducts/StudioEnterprise/Release+History/">versioning history</a>:</p>
<div id="attachment_172" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/03/SE-versions.png"><img class="size-medium wp-image-172" title="SE-versions" src="http://www.techmemoirs.com/wp-content/uploads/2010/03/SE-versions-300x96.png" alt="List of SE releases" width="300" height="96" /></a><p class="wp-caption-text">The list of releases of Studio Enterprise</p></div>
<p>Much to my surprise, they actually do start over with their numbering each year! Again, not being familiar with their product or the vendor, I can&#8217;t say what their users think of this, but I can imagine that confusion occasionally sets in.  Imagine two users, one with 2008 v3 and the other with 2009 v2, having a conversation about this software:</p>
<p style="padding-left: 30px;"><strong>User 1:</strong> &#8220;What do you think of this terrific software from Component One?&#8221;<br />
<strong>User 2:</strong> &#8220;I love it!  Especially for feature <strong>ABC</strong>!&#8221;<br />
<strong>User 1:</strong> &#8220;ABC?  I don&#8217;t think we have that feature&#8230; what version are you running?&#8221;<br />
<strong>User 2:</strong> &#8220;Version 2.&#8221;<br />
<strong>User 1:</strong> &#8220;Version 2?  Hmm&#8230; we have version 3.  They must have taken that feature out of the program.  In fact, if you like it that much, you may want to consider not upgrading again!&#8221;</p>
<p>Both users are confused and don&#8217;t realize that each has a different year of the program, and the result is possibly a lost sale for the vendor.</p>
<p>So, what could Component One do differently for future versions of their software?  Let&#8217;s quickly go over two of the most general guidelines on how to do software versioning:</p>
<ul>
<li><strong>Each major release should be a new whole number or year.</strong> Examples: Firefox 2 and 3, and MS Office 2007 and 2010.  This very often coincides with a complete rewrite of the application&#8217;s underlying programming code.  For software that is not free, these are the upgrades you pay for.</li>
<li><strong>A minor update to a major release adding new features should be a point release</strong> (e.g., Firefox 3.5) or possibly, in Microsoft&#8217;s terminology, a service pack (e.g., Windows XP SP3).  Usually free, vendors sometimes charge for these (such as Apple with its operating system upgrades).</li>
</ul>
<p>Beyond that, you often see an additional number, e.g., the &#8220;.8&#8243; in Firefox 3.5.8, that represents minor fixes in the product.  I won&#8217;t go further into that, though, as things get less standard at that numbering level, plus I couldn&#8217;t do a better job of summing up the entire scope of version numbering than <a href="http://en.wikipedia.org/wiki/Software_versioning">the article on Wikipedia</a>.</p>
<p>Instead of numbering their product with a year and then a &#8220;v2&#8243; or &#8220;v3&#8243;, Component One would probably be better off going with a dot numbering after their year, like what <a href="http://www.intersystems.com/">Intersystems </a>does with its <a href="http://www.intersystems.com/cache/technology/product-tables/archive-prodlist.html">Cache database product</a>.  For instance, instead of 2009 version 1, they should just label it 2009.1 or even just plain old 2009 with no additional number trailing it.  2009 version 2 then becomes 2009.2, and so on.  How does this help the customer?  They immediately know if the product they have installed is older or newer than a differing version, and for prospective customers, they will have the confidence that &#8220;2009.1&#8243; is a product with an established codebase, compared to something simply labeled &#8220;2009 version 1.&#8221;</p>
<p>Coming next: a dissection of <a href="http://www.componentone.com/prepare/">the splash page</a> advertising Studio Enterprise 2009 that leads you into their site!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techmemoirs.com/how-not-to-do-software-versioning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A better way to do rounded corners</title>
		<link>http://www.techmemoirs.com/a-better-way-to-do-rounded-corners/</link>
		<comments>http://www.techmemoirs.com/a-better-way-to-do-rounded-corners/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 23:51:22 +0000</pubDate>
		<dc:creator>Derek</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.techmemoirs.com/?p=132</guid>
		<description><![CDATA[Walks through and describes a better way to handle a tab design on a web page.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.techmemoirs.com%2Fa-better-way-to-do-rounded-corners%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.techmemoirs.com%2Fa-better-way-to-do-rounded-corners%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>You may want to catch up on <a href="http://www.techmemoirs.com/how-not-to-design-rounded-corners/">my initial rounded corner discussion</a> before reading this.</p>
<p>If you remember, we left off with a nice-looking tab design for use on a web page:</p>
<p><img class="aligncenter" title="Nice looking tab" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/8-nice-tab.png" alt="A nice looking tab design" width="120" height="79" /></p>
<p>There are still several flaws with this that I’d like to fix.  To recap:</p>
<ul>
<li>There is no <a href="http://en.wikipedia.org/wiki/Doctype">doctype </a>defined for the page, so the page is being rendering in <a href="http://en.wikipedia.org/wiki/Quirks_mode">quirks mode</a>.</li>
<li>We’re using a table layout for the tab design, which is a no-no, being that we’re not actually dealing with a table of data.</li>
</ul>
<p><span id="more-132"></span>So, let&#8217;s fix the first problem right away.  I&#8217;m going to declare that my web page is 4.01 strict by inserting this at the very top of the document:</p>
<pre class="code">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;</pre>
<p>Let&#8217;s see if this affected our tab design at all.  When viewed through Internet Explorer 7 (which, like I pointed out last time, I&#8217;m using since it&#8217;s the browser my company&#8217;s users have to use), it looks like this:</p>
<div id="attachment_135" class="wp-caption aligncenter" style="width: 113px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-doctype-IE.png"><img class="size-full wp-image-135" title="tab-doctype-IE" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-doctype-IE.png" alt="tab design in IE after doctype" width="103" height="78" /></a><p class="wp-caption-text">View of the tab design in IE after adding a doctype</p></div>
<p>Not bad – it still looks the same!  Let’s see what it looks like in Firefox, since it’s always a good idea to see what your web designs look like in as many browsers as possible:</p>
<div id="attachment_143" class="wp-caption aligncenter" style="width: 135px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-doctype-FireFox.png"><img class="size-full wp-image-143" title="tab-doctype-FireFox" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-doctype-FireFox.png" alt="The tab as seen in Firefox" width="125" height="70" /></a><p class="wp-caption-text">The same exact tab design with the doctype set, as viewed in Firefox</p></div>
<p>Woah!  Our tab has grown a little hat!  Definitely not good.  As seen in Firefox, our tab design is getting rendered differently now when the doctype is clearly defined. No problem, we’re going to get rid of the table layout anyway.  The idea is to use SPANs and DIVs instead &#8212; spans are generally for styling inline page elements (text and other HTML that is meant to be displayed on one line without any line breaks) and DIVs are generally for styling block page elements (sections of your page where you want a line-break after them).</p>
<p>As a side note, you may also be asking why I&#8217;m concerned about Firefox when I said in my last post that we force our users to use Internet Explorer.  While true, you never know what we may make them use in the future, so making my HTML as clean and valid as possible now ensures that it should keep on working in the future, no matter what browser we end up using.</p>
<p>Back to SPANs and DIVs &#8212; here&#8217;s the general idea of what I want:</p>
<pre class="code">&lt;span class="tab"&gt;
    &lt;img src="images/left.png"&gt;Tab&lt;img src="images/right.png"&gt;
&lt;/span&gt;</pre>
<p>It’s fairly simple: I’m simply surrounding the name of my tab (&#8220;Tab&#8221;) with my rounded corner images and putting it all in an inline grouping element (the SPAN tag).  Let&#8217;s give it some basic styling for color and add a basic DIV block afterwards to act as a placeholder for the content that will eventually be associated with this tab:</p>
<pre class="code">&lt;style type="text/css"&gt;
span.tab {
    background-color:#faa344;
    color: #ffffff;
    font-weight: bold;
}
div.tab_content {
    border: 0.1em solid #faa344;
    padding: .5em .5em .5em .5em;
}
&lt;/style&gt;
.
.
.
&lt;span class="tab"&gt;
    &lt;img src="images/left.png"&gt;Tab&lt;img src="images/right.png"&gt;
&lt;/span&gt;
&lt;div class="tab_content"&gt;
    Tab content
&lt;/div&gt;</pre>
<p>This ends up looking like this in Internet Explorer:</p>
<div id="attachment_141" class="wp-caption aligncenter" style="width: 125px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-1.png"><img class="size-full wp-image-141" title="tab-span-1" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-1.png" alt="The tab as a SPAN" width="115" height="61" /></a><p class="wp-caption-text">The tab done as a basic SPAN design</p></div>
<p>Interestingly, the little &#8220;hat&#8221; is now present in IE, though it&#8217;s simply because our rounded corner images are hovering in the center of the SPAN, rather than being aligned to the top edge of the SPAN.  One way to correct this is to float the images, which will align them to the top edge of the container they are in (meaning, in our case, the SPAN tag).  Let&#8217;s see what happens when we add a new style to our code to float the images:</p>
<pre class="code">span.tab img {
    float:left;
}</pre>
<p>This results in this in our browser:</p>
<div id="attachment_145" class="wp-caption aligncenter" style="width: 143px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-float-IE.png"><img class="size-full wp-image-145" title="tab-span-float-IE" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-float-IE.png" alt="Span with floated image" width="133" height="61" /></a><p class="wp-caption-text">Tab with floated images in IE</p></div>
<div id="attachment_147" class="wp-caption aligncenter" style="width: 143px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-float-firefox.png"><img class="size-full wp-image-147" title="tab-span-float-firefox" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-float-firefox.png" alt="Tab with floated images" width="133" height="60" /></a><p class="wp-caption-text">Tab with floated images in Firefox</p></div>
<p>This was about as expected as the Spanish Inquisition!  Where did our rounded edges go?  In fact, they&#8217;re still there, but IE7 and Firefox handle floats slightly differently.  Allow me to highlight our tab design to show where they went, since they&#8217;re hard to see considering they are colored white and are currently lying against a white background:</p>
<div id="attachment_149" class="wp-caption aligncenter" style="width: 143px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-float-IE-highlight.png"><img class="size-full wp-image-149" title="tab-span-float-IE-highlight" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-float-IE-highlight.png" alt="Highlighted tab with floated images" width="133" height="61" /></a><p class="wp-caption-text">Highlighting the tab design in IE</p></div>
<div id="attachment_150" class="wp-caption aligncenter" style="width: 143px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-float-firefox-highlight.png"><img class="size-full wp-image-150" title="tab-span-float-firefox-highlight" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-float-firefox-highlight.png" alt="Highlighted tab design in Firefox" width="133" height="60" /></a><p class="wp-caption-text">Highlighting the tab design in Firefox</p></div>
<p>Interestingly, IE inserts a line break between the floated images, as it sees a non-floated element between them, whereas Firefox does not. More importantly, though, neither browser is actually containing the floated images in the SPAN element itself.  The solution?  Float the SPAN, too! If a parent element (in our case, the SPAN tag) is floated, then it will contain any floated children elements (in our case, the images).  So, let&#8217;s edit our &#8220;span.tab&#8221; style to include a float setting:</p>
<pre class="code">span.tab {
    background-color:#faa344;
    color: #ffffff;
    font-weight: bold;
    <strong>float:left;</strong>
}</pre>
<p>This looks like this:</p>
<div id="attachment_154" class="wp-caption aligncenter" style="width: 143px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-float2-IE.png"><img class="size-full wp-image-154" title="tab-span-float2-IE" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-float2-IE.png" alt="Floating SPAN in IE" width="133" height="47" /></a><p class="wp-caption-text">The results of floating the SPAN in IE</p></div>
<div id="attachment_155" class="wp-caption aligncenter" style="width: 143px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-float2-firefox.png"><img class="size-full wp-image-155" title="tab-span-float2-firefox" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-span-float2-firefox.png" alt="Floating SPAN in Firefox" width="133" height="47" /></a><p class="wp-caption-text">The results of floating the SPAN in Firefox</p></div>
<p>The good news?  Our rounded corner images are now back in the SPAN element!  The bad news?  There’s actually two bits of it:</p>
<ul>
<li>The tab name is to the right of what we want to be the right corner image, which makes the tab design look… odd.</li>
<li>The entire SPAN is now sitting in the DIV element, due to how it’s floating on its own.</li>
</ul>
<p>Our floating images aren’t playing well with the plain text tab name, so what should we do?  Put the tab name in its own floating element, too! Let’s wrap it in its own floating SPAN.  Here&#8217;s a new style I&#8217;m adding, followed by the revised tab design:</p>
<pre class="code">span.tab_label {
    float:left;
}</pre>
<pre class="code">&lt;span class="tab"&gt;
    &lt;img src="images/left.png"&gt;
    <strong>&lt;span class="tab_label"&gt;Tab&lt;/span&gt;</strong>
    &lt;img src="images/right.png"&gt;
&lt;/span&gt;</pre>
<p>As for the SPAN running into the DIV, this can be cleared up by setting the clear CSS option for the DIV:</p>
<pre class="code">div.tab_content {
    border: 0.1em solid #faa344;
    padding: .5em .5em .5em .5em;
    <strong>clear:both;</strong>
}</pre>
<p>Let&#8217;s see what this gives us:</p>
<div id="attachment_157" class="wp-caption aligncenter" style="width: 143px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-div-clear-IE.png"><img class="size-full wp-image-157" title="tab-div-clear-IE" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-div-clear-IE.png" alt="Tab design with clear setting" width="133" height="62" /></a><p class="wp-caption-text">The tab design in IE with &#39;clear:both&#39; in the following DIV</p></div>
<div id="attachment_158" class="wp-caption aligncenter" style="width: 143px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-div-clear-Firefox.png"><img class="size-full wp-image-158" title="tab-div-clear-Firefox" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-div-clear-Firefox.png" alt="Tab design with clear setting" width="133" height="62" /></a><p class="wp-caption-text">The tab design in Firefox with &#39;clear:both&#39; in the following DIV</p></div>
<p>Wow!  This is terrific &#8212; we have the same general tab design that we originally started with, but we have it set up in a better designed approach that should look good in future browsers.  In fact, I&#8217;d like to see the tab be a bit more prominent, so I’m going to tweak the padding in the SPAN element that surrounds the tab name (the one labeled &#8220;tab_label&#8221;).  Here’s my final styling and HTML:</p>
<pre class="code">&lt;style type="text/css"&gt;
span.tab {
    background-color:#faa344;
    color: #ffffff;
    font-weight: bold;
    float:left;
}
span.tab img {
    float:left;
}
span.tab_label {
    float:left;
    padding: .3em .3em .3em .3em;
}
div.tab_content {
    border: 0.1em solid #faa344;
    padding: .5em .5em .5em .5em;
    clear:both;
}
&lt;/style&gt;
.
.
.
&lt;span class="tab"&gt;
    &lt;img src="images/left.png"&gt;
    &lt;span class="tab_label"&gt;Tab&lt;/span&gt;
    &lt;img src="images/right.png"&gt;
&lt;/span&gt;
&lt;div class="tab_content"&gt;
    Tab content
&lt;/div&gt;
</pre>
<p>Here&#8217;s the end result, as seen in both browsers:</p>
<div id="attachment_159" class="wp-caption aligncenter" style="width: 143px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-final-IE.png"><img class="size-full wp-image-159" title="tab-final-IE" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-final-IE.png" alt="Final tab - IE" width="133" height="70" /></a><p class="wp-caption-text">Our final tab design, as seen in IE</p></div>
<div id="attachment_160" class="wp-caption aligncenter" style="width: 143px"><a href="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-final-Firefox.png"><img class="size-full wp-image-160" title="tab-final-Firefox" src="http://www.techmemoirs.com/wp-content/uploads/2010/02/tab-final-Firefox.png" alt="Tab - final" width="133" height="70" /></a><p class="wp-caption-text">Our final tab design, as seen in Firefox</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.techmemoirs.com/a-better-way-to-do-rounded-corners/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

