<?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>Always Get Better</title>
	
	<link>http://www.alwaysgetbetter.com/blog</link>
	<description>Never stop looking for ways to improve</description>
	<lastBuildDate>Sat, 07 Aug 2010 00:50:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AlwaysGetBetter" /><feedburner:info uri="alwaysgetbetter" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Life in Linux</title>
		<link>http://feedproxy.google.com/~r/AlwaysGetBetter/~3/DH6At6h4pyE/</link>
		<comments>http://www.alwaysgetbetter.com/blog/2010/08/06/life/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 00:50:36 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Windows Vista]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.alwaysgetbetter.com/blog/?p=326</guid>
		<description><![CDATA[So I wiped my hard drive and installed Ubuntu. After struggling with the decision to switch from Windows for some time, I finally resolved to move. So far the results have been very good. My system boots up and is ready to use in less than a minute, there is no lag loading and switching [...]


Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2010/08/02/thinking-switching-ubuntu/' rel='bookmark' title='Permanent Link: Thinking About Switching to Ubuntu'>Thinking About Switching to Ubuntu</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>So I wiped my hard drive and installed Ubuntu. After <a href="http://www.alwaysgetbetter.com/blog/2010/08/02/thinking-switching-ubuntu/">struggling with the decision to switch from Windows</a> for some time, I finally resolved to move.</p>
<p>So far the results have been very good. My system boots up and is ready to use in less than a minute, there is no lag loading and switching programs, and everything I need for my day-to-day programming is available much more readily than it was with the other operating system.</p>
<p>The most striking difference to me is the amount of disk space I now have available to me. With all of my software, work projects, and operating system overhead, Windows left 80Gb free from my 285Gb drive. With all of my projects, code libraries, files and operating system installed, Ubuntu uses <em>just 6.7Gb</em>, leaving 97% of the drive available for my use. I am blown away by how much less clutter I have now.</p>
<p>I haven&#8217;t tried to do very much with Mono yet; we&#8217;ll see how it works when I try making improvements to my <a href="http://www.alwaysgetbetter.com/blog/category/siteassistant/">SiteAssistant</a> project. I&#8217;ve been reading about <a href="http://www.mono-project.com/Winforms">Mono&#8217;s Winforms</a> capabilities and so far am impressed by the possibilities. We&#8217;ll see how well it works with my fairly simple project; with any luck I may have found a cross-platform .NET solution with this one. Maybe the Winforms explorations will be a good topic for a future post.</p>
<p>Not missing Office yet, either. My Quicken financial software has been running perfectly under Wine, and all of my files appear to have made the move intact. I still own licenses to all my software, so on those rare instances if I really need it I can install Windows with <a href="http://www.virtualbox.org/">VirtualBox</a> and fill up some of that hard drive space I&#8217;ve earned.</p>


<p>Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2010/08/02/thinking-switching-ubuntu/' rel='bookmark' title='Permanent Link: Thinking About Switching to Ubuntu'>Thinking About Switching to Ubuntu</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/AlwaysGetBetter/~4/DH6At6h4pyE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.alwaysgetbetter.com/blog/2010/08/06/life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alwaysgetbetter.com/blog/2010/08/06/life/</feedburner:origLink></item>
		<item>
		<title>Installing Git on Ubuntu 10.04</title>
		<link>http://feedproxy.google.com/~r/AlwaysGetBetter/~3/NZX_hxrXcNs/</link>
		<comments>http://www.alwaysgetbetter.com/blog/2010/08/05/installing-git-ubuntu-1004/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 02:50:50 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.alwaysgetbetter.com/blog/?p=324</guid>
		<description><![CDATA[Here&#8217;s how to install Git on Ubuntu 10.04 sudo apt-get install git-core (The package name is git-core, not git) Related posts:Thinking About Switching to Ubuntu Wamp Server Crashes Installing X-Cart Life in Linux


Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2010/08/02/thinking-switching-ubuntu/' rel='bookmark' title='Permanent Link: Thinking About Switching to Ubuntu'>Thinking About Switching to Ubuntu</a></li>
<li><a href='http://www.alwaysgetbetter.com/blog/2010/01/24/wamp-server-crashes-installing-xcart/' rel='bookmark' title='Permanent Link: Wamp Server Crashes Installing X-Cart'>Wamp Server Crashes Installing X-Cart</a></li>
<li><a href='http://www.alwaysgetbetter.com/blog/2010/08/06/life/' rel='bookmark' title='Permanent Link: Life in Linux'>Life in Linux</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s how to install Git on Ubuntu 10.04</p>
<p><code><br />
sudo apt-get install git-core<br />
</code></p>
<p>(The package name is <em>git-core</em>, not <em>git</em>)</p>


<p>Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2010/08/02/thinking-switching-ubuntu/' rel='bookmark' title='Permanent Link: Thinking About Switching to Ubuntu'>Thinking About Switching to Ubuntu</a></li>
<li><a href='http://www.alwaysgetbetter.com/blog/2010/01/24/wamp-server-crashes-installing-xcart/' rel='bookmark' title='Permanent Link: Wamp Server Crashes Installing X-Cart'>Wamp Server Crashes Installing X-Cart</a></li>
<li><a href='http://www.alwaysgetbetter.com/blog/2010/08/06/life/' rel='bookmark' title='Permanent Link: Life in Linux'>Life in Linux</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/AlwaysGetBetter/~4/NZX_hxrXcNs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.alwaysgetbetter.com/blog/2010/08/05/installing-git-ubuntu-1004/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alwaysgetbetter.com/blog/2010/08/05/installing-git-ubuntu-1004/</feedburner:origLink></item>
		<item>
		<title>Thinking About Switching to Ubuntu</title>
		<link>http://feedproxy.google.com/~r/AlwaysGetBetter/~3/1YyMVM-gLKQ/</link>
		<comments>http://www.alwaysgetbetter.com/blog/2010/08/02/thinking-switching-ubuntu/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 17:40:07 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.alwaysgetbetter.com/blog/?p=320</guid>
		<description><![CDATA[photo credit: Jeffpro57 In the last number of weeks I have been seriously considering taking the plunge and wiping my Windows laptop clean in order to switch to Ubuntu as my primary machine. Although Windows 7 has gone a long way toward smoothing over the problems Vista brought, it isn&#8217;t perfect. Windows isn&#8217;t a bad [...]


Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2010/08/05/installing-git-ubuntu-1004/' rel='bookmark' title='Permanent Link: Installing Git on Ubuntu 10.04'>Installing Git on Ubuntu 10.04</a></li>
<li><a href='http://www.alwaysgetbetter.com/blog/2010/08/06/life/' rel='bookmark' title='Permanent Link: Life in Linux'>Life in Linux</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="alignright"><a title="Ubuntu-logo-unique-image" href="http://www.flickr.com/photos/37357703@N08/4821912137/" target="_blank"><img src="http://farm5.static.flickr.com/4117/4821912137_3a64f583e9.jpg" border="0" alt="Ubuntu-logo-unique-image" /></a><br />
<small><a title="Attribution License" href="http://creativecommons.org/licenses/by/2.0/" target="_blank"><img src="http://www.alwaysgetbetter.com/blog/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="Jeffpro57" href="http://www.flickr.com/photos/37357703@N08/4821912137/" target="_blank">Jeffpro57</a></small></div>
<p>In the last number of weeks I have been seriously considering taking the plunge and wiping my Windows laptop clean in order to switch to Ubuntu as my primary machine. Although Windows 7 has gone a long way toward smoothing over the problems Vista brought, <a href="http://www.alwaysgetbetter.com/blog/2009/02/05/six-flavours-of-windows-7/">it isn&#8217;t perfect</a>.</p>
<p>Windows isn&#8217;t a bad operating system, by any means. Like OS X and Ubuntu, it has its strengths and weaknesses. However, as a developer whose primary work involves web pages, I definitely see Windows as more of a barrier to efficient workflow. There are a few pieces of software that have kept me on Windows for awhile but which just don&#8217;t hold me back anymore:</p>
<p><strong>1. Microsoft Office</strong><br />
I definitely qualify as a power user for this software. Yes, OpenOffice can do most of what MS Office can, but I will sorely miss the features that &#8220;most people&#8221; don&#8217;t use. However, the majority of my work doesn&#8217;t touch Office &#8211; in fact, it&#8217;s relatively rare that I will need Access, or Word, or even Excel. When I do use these programs, it only tends to be in support of a client who has used them inappropriately for some data storage.</p>
<p>I&#8217;ve long outgrown Outlook due to the amount of mail I keep; I don&#8217;t like to delete anything because true professionals are able to refer back to projects no matter how old. I don&#8217;t have a replacement mail program yet; but so far <a href="http://www.alwaysgetbetter.com/blog/2008/12/09/gmail-for-company-mail/">the Gmail interface has been more than sufficient</a>.</p>
<p><strong>2. Visual Studio</strong><br />
This software is giving me pause. If I switch over, I will be giving up my ability to truly work in the .NET world, which is where I have largely been for the past decade. Most of my workflow recently has been with the open source, PHP-driven web world and I&#8217;m not sure that I&#8217;m excited about going back to a pure Microsoft environment. That said, I want to be sure I&#8217;m not closing any doors.</p>
<p>Mono has made great strides in bringing the .NET platform, specifically C#, over to Mac and Unix, but the more Windows-centric database and GUI interfaces don&#8217;t translate over very well. I can always run a Windows Virtual Machine for the rare instances I will need to work on that platform, but it seems a bit counter-productive to keep around an environment that I don&#8217;t use for the sake of a few days each year.</p>
<p><strong>3. Quicken</strong><br />
My other strong reason for staying with Windows has been my love for Quicken &#8211; the Mac version just doesn&#8217;t compare to the Windows version &#8211; and my inability to manage my finances on paper after years of dependence. Since so much of my data is tied into this software, any switch will involve either years of data entry or a major hit to my forecasting abilities.</p>
<p>Fortunately, Wine has come to the rescue &#8211; last night I was able to get a full install of Quicken on my test/Ubuntu machine with absolutely no problems! The fonts looked a little weird in the reports, but otherwise all of the functionality was there and working beautfully. It even <em>looked</em> like a Linux app &#8211; unbelievable!</p>
<p><strong>Should I Stay or Should I Go?</strong><br />
So the big thing I&#8217;m weighing in my head right now is whether I can stand to give up the .NET programming I have been involved with for so long and switch to a full Linux environment. I still love my Windows environment and software, but it just doesn&#8217;t seem to make sense to keep it given my current open source focus.</p>


<p>Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2010/08/05/installing-git-ubuntu-1004/' rel='bookmark' title='Permanent Link: Installing Git on Ubuntu 10.04'>Installing Git on Ubuntu 10.04</a></li>
<li><a href='http://www.alwaysgetbetter.com/blog/2010/08/06/life/' rel='bookmark' title='Permanent Link: Life in Linux'>Life in Linux</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/AlwaysGetBetter/~4/1YyMVM-gLKQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.alwaysgetbetter.com/blog/2010/08/02/thinking-switching-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alwaysgetbetter.com/blog/2010/08/02/thinking-switching-ubuntu/</feedburner:origLink></item>
		<item>
		<title>Resumes Are Better Without Alphabet Soup</title>
		<link>http://feedproxy.google.com/~r/AlwaysGetBetter/~3/PmznFB3sYbM/</link>
		<comments>http://www.alwaysgetbetter.com/blog/2010/06/02/resumes-alphabet-soup/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 12:16:01 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Employment]]></category>
		<category><![CDATA[customer service]]></category>
		<category><![CDATA[ethics]]></category>
		<category><![CDATA[work/life balance]]></category>

		<guid isPermaLink="false">http://www.alwaysgetbetter.com/blog/?p=301</guid>
		<description><![CDATA[You can spot them a mile away &#8211; resumes that look like someone loaded up a Microsoft Word template, punched in their information, then sent it to every job posting they could find. Does this sound at all like your resume? They probably start with an Objective statement proclaiming the candidate&#8217;s desire to secure a [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>You can spot them a mile away &#8211; resumes that look like someone loaded up a Microsoft Word template, punched in their information, then sent it to every job posting they could find.</p>
<p><strong>Does this sound at all like <em>your</em> resume?</strong></p>
<p>They probably start with an <strong>Objective</strong> statement proclaiming the candidate&#8217;s desire to secure a position among a progressive and upward-mobile organization.</p>
<p>Next up is the candidate&#8217;s skills, a veritable alphabet soup of every technology they ever came across. Honestly, does anybody really have useful knowledge of everything including ASP, Java, C++, Assembly, COBOL, Lisp, Python, Erlang, Ruby, PHP and Haskell? Yes, we get that you are smart and can work in any environment we throw at you, but what are you <em>awesome</em> at? I can&#8217;t tell.</p>
<p>Next is education, usually just the program name and sometimes a GPA. No real details about what the program consisted of &#8211; the point, after all, is that the candidate has an education, right?</p>
<p>Finally, the awful listing of every company the candidate has ever worked at going all the way back to the summer job they had in high school. Each is illustrated with so many jargon-filled bullet points that the resume takes up three pages and gives no really useful information about the candidate or their skills.</p>
<p>Sad to say, most resumes fit this pattern. The good news for you is the bar is set low which means it can be incredibly easy to stand out from the crowd.</p>
<p><strong>Lose the Objective</strong><br />
The objective statement is the biggest sin academia has thrust into the world. The company you&#8217;re applying for does not care about your objectives and long term plan; their concern is finding a skilled worker who can meet <em>their</em> objects. Sorry to re-use a tired paraphrase, but <strong>ask yourself what you can do for the company, not what the company can do for you</strong>. Leave your expectations out of the mix until you hit the negotiation stage.</p>
<p><strong>Less is More</strong><br />
Rather than listing every programming language you&#8217;ve ever heard of, list the top 2 or 3 you&#8217;re best at. If that means you can only list PHP because you live breathe and eat it, do so.</p>
<p>This is a bit intuitive: Showing a dozen skills will not keep the doors open for the best possible job. The reverse is true &#8211; rather than leaving recruiters confused as to whether you&#8217;re a good fit for their job, let them filter you if need be. Think about it &#8211; if you are that amazing PHP programmer, do you really want to be developing COBOL on mainframes all day?</p>
<p><strong>Tell a Story</strong><br />
Try to put yourself in the shoes of the person who will be reading your resume. They will be reading other people&#8217;s resumes as well, most of which will look alike except for the author name at the top of each page. It should be a fairly easy job &#8211; just pick the candidate whose skill set matches the requirements of the job and hire them.</p>
<p>The reality is much more difficult. Even if a manager has the budget needed to hire someone, they may not be able to find the right person to fill the job. Skill is only part of the story &#8211; personality also plays a large factor. It isn&#8217;t enough to have someone who knows the job; it has to be someone who will fit in with the team and be a pleasure to work with.</p>
<p>Don&#8217;t just talk about your skills &#8211; talk about <em>you</em>. What do you bring to your work that no one else on earth can duplicate? You could start with a &#8216;hobbies&#8217; section on your resume, but I recommend injecting as much of your own voice everywhere you can.</p>
<p>Rather than simply describing your job functions for each position you held, write about what your learned during your time at each company. What contributions were you able to make to the bottom line? Remember, your potential employer is hiring you because they want to make money.</p>


<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/AlwaysGetBetter/~4/PmznFB3sYbM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.alwaysgetbetter.com/blog/2010/06/02/resumes-alphabet-soup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alwaysgetbetter.com/blog/2010/06/02/resumes-alphabet-soup/</feedburner:origLink></item>
		<item>
		<title>Tethering the Internet, Week One</title>
		<link>http://feedproxy.google.com/~r/AlwaysGetBetter/~3/qBrFjVbxVwE/</link>
		<comments>http://www.alwaysgetbetter.com/blog/2010/05/29/tethering-internet-week/#comments</comments>
		<pubDate>Sat, 29 May 2010 19:31:32 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[broadband]]></category>
		<category><![CDATA[networking]]></category>

		<guid isPermaLink="false">http://www.alwaysgetbetter.com/blog/?p=313</guid>
		<description><![CDATA[So I&#8217;ve been tethering my phone and using it as a backup Internet connection for just over a week now and so far I have been pretty happy with the results. Using Xplornet as my primary source and my cell phone tethered into my computer via USB, I&#8217;m actually able to get fairly reliable service [...]


Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2010/05/24/cell-phone-backup-internet/' rel='bookmark' title='Permanent Link: Using a Cell Phone as Backup Internet'>Using a Cell Phone as Backup Internet</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been tethering my phone and using it as a backup Internet connection for just over a week now and so far I have been pretty happy with the results.</p>
<p>Using Xplornet as my primary source and my cell phone tethered into my computer via USB, I&#8217;m actually able to get fairly reliable service &#8211; the computer switches back and forth between whichever connection happens to have access to the Internet.</p>
<p>This could work&#8230;</p>
<p>I see that Bell is now offering a 2Mbps modem for rural residents. I&#8217;d like to try that as an alternative to Xplornet &#8211; maybe I&#8217;ll be able to drop my contract in March and have reliable net.</p>


<p>Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2010/05/24/cell-phone-backup-internet/' rel='bookmark' title='Permanent Link: Using a Cell Phone as Backup Internet'>Using a Cell Phone as Backup Internet</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/AlwaysGetBetter/~4/qBrFjVbxVwE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.alwaysgetbetter.com/blog/2010/05/29/tethering-internet-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alwaysgetbetter.com/blog/2010/05/29/tethering-internet-week/</feedburner:origLink></item>
		<item>
		<title>Using a Cell Phone as Backup Internet</title>
		<link>http://feedproxy.google.com/~r/AlwaysGetBetter/~3/cVNE92E0RXw/</link>
		<comments>http://www.alwaysgetbetter.com/blog/2010/05/24/cell-phone-backup-internet/#comments</comments>
		<pubDate>Mon, 24 May 2010 14:48:33 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[broadband]]></category>
		<category><![CDATA[connectivity]]></category>
		<category><![CDATA[customer service]]></category>
		<category><![CDATA[Palm Pre]]></category>

		<guid isPermaLink="false">http://www.alwaysgetbetter.com/blog/?p=311</guid>
		<description><![CDATA[Since we live in the country and rely on line-of-sight Internet for our connectivity, I&#8217;ve been increasingly frustrated with service quality and uptime programs. There are a lot of reasons I want to move to a denser population area but access to a proper Internet connection is high on my list. photo credit: abulhussain My [...]


Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2010/05/29/tethering-internet-week/' rel='bookmark' title='Permanent Link: Tethering the Internet, Week One'>Tethering the Internet, Week One</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Since we live in the country and rely on <a href="http://www.alwaysgetbetter.com/blog/2008/12/03/ontario-government-builds-rural-internet-infrastructure/">line-of-sight Internet</a> for our connectivity, I&#8217;ve been increasingly frustrated with service quality and uptime programs. There are a lot of reasons I want to move to a denser population area but access to a proper Internet connection is high on my list.</p>
<div class="alignright"><a title="Palm Pre front1" href="http://www.flickr.com/photos/7678586@N06/4505473681/" target="_blank"><img src="http://farm5.static.flickr.com/4056/4505473681_27527ee8a0_m.jpg" border="0" alt="Palm Pre front1" /></a><br />
<small><a title="Attribution License" href="http://creativecommons.org/licenses/by/2.0/" target="_blank"><img src="http://www.alwaysgetbetter.com/blog/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="abulhussain" href="http://www.flickr.com/photos/7678586@N06/4505473681/" target="_blank">abulhussain</a></small></div>
<p> My phone has turned out to be a decent alternative; using <a href="http://palmpre-hacks.com/palm-pre-hacks/how-to-hacktether-palm-pre-into-a-wifi-router/">instructions I found online</a> I was able to re-purpose my Palm Pre as a WiFi router. It&#8217;s still not broadband but it gives me a way to check my email when my <del datetime="2010-05-24T14:15:44+00:00">Xplornet</del> fixed wireless (often) fails.</p>
<p>Although Bell Canada supports tethering with their smartphone plans, they don&#8217;t go out of their way to make it obvious how to do it. <a href="http://mytether.net/">My Tether</a> turned out to be worth the cost; even though there is a free version you can use if you want to play with the settings.</p>


<p>Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2010/05/29/tethering-internet-week/' rel='bookmark' title='Permanent Link: Tethering the Internet, Week One'>Tethering the Internet, Week One</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/AlwaysGetBetter/~4/cVNE92E0RXw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.alwaysgetbetter.com/blog/2010/05/24/cell-phone-backup-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alwaysgetbetter.com/blog/2010/05/24/cell-phone-backup-internet/</feedburner:origLink></item>
		<item>
		<title>Display Class Objects in CheckedListBox</title>
		<link>http://feedproxy.google.com/~r/AlwaysGetBetter/~3/hOrJPIOptHM/</link>
		<comments>http://www.alwaysgetbetter.com/blog/2010/03/28/display-class-objects-checkedlistbox/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 17:10:43 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[SiteAssistant]]></category>
		<category><![CDATA[data types]]></category>
		<category><![CDATA[interfaces]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.alwaysgetbetter.com/blog/?p=303</guid>
		<description><![CDATA[If you want to use anything more complex than a list of strings in a ListBox, you&#8217;re in luck because the control accepts all types of objects. In this case, I want to display a list of posts found in a blog. Blog is a class which contains Posts, an array of Post classes. To [...]


Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2009/11/14/living-firstperson-shooter-disease/' rel='bookmark' title='Permanent Link: Living With First-Person Shooter Disease'>Living With First-Person Shooter Disease</a></li>
<li><a href='http://www.alwaysgetbetter.com/blog/2009/11/11/microsoft-xbox-owners-mod-consoles/' rel='bookmark' title='Permanent Link: Microsoft to Xbox Owners: Don&#8217;t Mod Your Consoles'>Microsoft to Xbox Owners: Don&#8217;t Mod Your Consoles</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>If you want to use anything more complex than a list of strings in a ListBox, you&#8217;re in luck because the control accepts all types of objects.</p>
<div id="attachment_304" class="wp-caption aligncenter" style="width: 654px"><a href="http://www.alwaysgetbetter.com/blog/wp-content/uploads/2010/03/CheckedListBox.png"><img src="http://www.alwaysgetbetter.com/blog/wp-content/uploads/2010/03/CheckedListBox.png" alt="Custom Objects (Blog Posts) Displayed in a CheckListBox" title="Custom Objects (Blog Posts) Displayed in a CheckListBox" width="644" height="480" class="size-full wp-image-304" /></a><p class="wp-caption-text">Custom Objects (Blog Posts) Displayed in a CheckListBox</p></div>
<p>In this case, I want to display a list of posts found in a blog. <strong>Blog</strong> is a class which contains <em>Posts</em>, an array of <strong>Post</strong> classes. To start, I created the CheckedListBox in the form designer, and I add the posts to it like this:</p>
<pre class="brush: csharp; light: true;">
clbPages.Items.AddRange(_blog.Posts);
</pre>
<p>If I do nothing else, the ListBox will call the Post&#8217;s ToString() method and will display as:</p>
<pre>
Post
Post
Post
Post
</pre>
<p>We have two options for displaying this correctly:</p>
<p>1. Override the <strong>ToString()</strong> method. I don&#8217;t recommend doing this because ToString() is much more appropriately used in a debugging context.</p>
<p>2. Add a string converter: This will automatically convert each post object to a usable string when called by an object like a ListBox. ListBox uses Convert.ToString() &#8211; this uses that converter more appropriately. ToString() should only be used as a fallback.</p>
<pre class="brush: csharp; wrap-lines: false;">
&lt;pre&gt;
// Use System for the Type object
using System;
// Use ComponentModel for the TypeConvert base class
using System.ComponentModel;

namespace SiteAssistant.Blog
{
    /// &lt;summary&gt;
    /// Converts a post into a list-friendly string, for checkbox lists
    /// &lt;/summary&gt;
    class PostConverter : TypeConverter
    {
        /// &lt;summary&gt;
        /// Indicates whether the Post can be converted to a destination type
        /// &lt;/summary&gt;
        /// &lt;remarks&gt;
        /// We only support conversions to STRING at present
        /// &lt;/remarks&gt;
        /// &lt;param name=&quot;context&quot;&gt;&lt;/param&gt;
        /// &lt;param name=&quot;destinationType&quot;&gt;&lt;/param&gt;
        /// &lt;returns&gt;&lt;/returns&gt;
        public override bool CanConvertTo(ITypeDescriptorContext context,
            Type destinationType)
        {
            if (destinationType == typeof(string))
                return true;
            else
                return base.CanConvertTo(context, destinationType);
        }

        /// &lt;summary&gt;
        /// Converts the post to the destination type. If the destination
        /// type is not supported, the base Conversion is applied.
        /// &lt;/summary&gt;
        /// &lt;remarks&gt;
        /// We only support converting posts to strings at present.
        /// &lt;/remarks&gt;
        /// &lt;param name=&quot;context&quot;&gt;&lt;/param&gt;
        /// &lt;param name=&quot;culture&quot;&gt;&lt;/param&gt;
        /// &lt;param name=&quot;value&quot;&gt;&lt;/param&gt;
        /// &lt;param name=&quot;destinationType&quot;&gt;&lt;/param&gt;
        /// &lt;returns&gt;&lt;/returns&gt;
        public override object ConvertTo(ITypeDescriptorContext context,
            System.Globalization.CultureInfo culture, object value,
            Type destinationType)
        {
            if (destinationType == typeof(string))
            {
                string text = &quot;&quot;;
                Post p = value as Post;
                // Ensure that the Post is not null, avoid errors
                if (null != p)
                {
                    text = p.Title;
                }
                return text;
            }
            else
            {
                return base.ConvertTo(context, culture, value, destinationType);
            }
        }
    }
}
&lt;/pre&gt;
</pre>
<p>The code we write in .NET is like the meat inside a sandwich. The framework is the bread that wraps around our logic and keeps our application together. Our new Posts string converter will be called by the application without us needing to override the <strong>Convert</strong> function.</p>
<p>It doesn&#8217;t happen by magic of course. The final change we have to make is to add information about our conversion function to the posts class:</p>
<pre class="brush: csharp; wrap-lines: false;">
&lt;pre&gt;
    [System.ComponentModel.TypeConverter(typeof(PostConverter))]
    public class Post
    {
        // Rest of the code goes here
    }
&lt;/pre&gt;
</pre>
<p>That&#8217;s all there is to it! Now we can pass a list of Posts to the CheckedListBox and manipulate each item directly. In this application, I will be using this technique to provide the Post object to the text editor with a double-click.</p>


<p>Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2009/11/14/living-firstperson-shooter-disease/' rel='bookmark' title='Permanent Link: Living With First-Person Shooter Disease'>Living With First-Person Shooter Disease</a></li>
<li><a href='http://www.alwaysgetbetter.com/blog/2009/11/11/microsoft-xbox-owners-mod-consoles/' rel='bookmark' title='Permanent Link: Microsoft to Xbox Owners: Don&#8217;t Mod Your Consoles'>Microsoft to Xbox Owners: Don&#8217;t Mod Your Consoles</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/AlwaysGetBetter/~4/hOrJPIOptHM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.alwaysgetbetter.com/blog/2010/03/28/display-class-objects-checkedlistbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alwaysgetbetter.com/blog/2010/03/28/display-class-objects-checkedlistbox/</feedburner:origLink></item>
		<item>
		<title>CSS Sanity: Remember Best Practices When Using New Tools</title>
		<link>http://feedproxy.google.com/~r/AlwaysGetBetter/~3/3P6CBs52ihA/</link>
		<comments>http://www.alwaysgetbetter.com/blog/2010/02/15/css-sanity-remember-practices-tools/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 21:54:24 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Web Programming]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.alwaysgetbetter.com/blog/?p=299</guid>
		<description><![CDATA[Now that the rebellion against IE6 has hit mainstream, a brave new world of CSS3 and HTML5 has been opened to web professionals. Beware Mixing Purposes CSS is intended to define the appearance of elements, not their behaviour. Be very careful about &#8220;overloading&#8221; CSS to accomplish tasks best performed by JavaScript. A popular example of [...]


Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2009/11/13/browsrcamp-test-web-designs-mac/' rel='bookmark' title='Permanent Link: BrowsrCamp &#8211; Test Web Designs on Mac'>BrowsrCamp &#8211; Test Web Designs on Mac</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Now that the rebellion against IE6 has hit mainstream, a brave new world of CSS3 and HTML5 has been opened to web professionals. </p>
<p><strong>Beware Mixing Purposes</strong><br />
CSS is intended to define the appearance of elements, not their behaviour. Be very careful about &#8220;overloading&#8221; CSS to accomplish tasks best performed by JavaScript.</p>
<p>A popular example of poor CSS usage is drop-down menu lists. Some web programmers use CSS&#8217; :hover selector to instruct the web browser to display sub-navigation when the user hovers over a list item.<br />
<code><br />
ul#menu li:hover ul { display: block; }<br />
</code></p>
<p>This is much better accomplished using a touch of jQuery:<br />
<code><br />
jQuery("ul#menu ul").css({display: "none"}); // For Opera<br />
	jQuery("ul#menu li").hover(function(){<br />
		jQuery(this).find('ul:first').css({visibility: "visible", display: "none"}).show(268);<br />
		},function(){<br />
		jQuery(this).find('ul:first').css({visibility: "hidden"});<br />
		});<br />
</code><br />
Not only is this example less dependent on consistent web browser support for the CSS :hover selector, we&#8217;ve even thrown in a spiffy little roll-out animation.</p>
<p><strong>Keep It Simple</strong><br />
The <a href="http://css-tricks.com/how-nth-child-works/">nth-child selector is one that stands to be abused</a> by overzealous developers. Imagine this: change the display of every n<sup>th</sup> element as defined through an algebraic expression.</p>
<p>Why is this a bad thing? CSS is run in the same memory space as the general web page &#8211; that&#8217;s why it&#8217;s so fast. JavaScript tends to be isolated; meaning if you make an infinite loop in JavaScript, the web browser will eventually stop it from running. If the same thing happens in CSS, your web session is probably toast.</p>
<p><strong>Separate Logic from Presentation</strong><br />
CSS was a leap forward because it separated presentation from structure; rather than programming font and colour elements, designers were able to explicitly control the way their web page appeared on screen. HTML was being used to serve the purpose CSS was designed to cover.</p>
<p>More recently, CSS has become a crutch to enable functionality better suited for JavaScript. When unsure about which to use, ask yourself: Does this solution affect only the display, or is some action happening?</p>


<p>Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2009/11/13/browsrcamp-test-web-designs-mac/' rel='bookmark' title='Permanent Link: BrowsrCamp &#8211; Test Web Designs on Mac'>BrowsrCamp &#8211; Test Web Designs on Mac</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/AlwaysGetBetter/~4/3P6CBs52ihA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.alwaysgetbetter.com/blog/2010/02/15/css-sanity-remember-practices-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alwaysgetbetter.com/blog/2010/02/15/css-sanity-remember-practices-tools/</feedburner:origLink></item>
		<item>
		<title>iTunes – The Future, or Just a Toy?</title>
		<link>http://feedproxy.google.com/~r/AlwaysGetBetter/~3/UJXbHoJyOqE/</link>
		<comments>http://www.alwaysgetbetter.com/blog/2010/02/06/itunes-future-toy/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 01:29:29 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[General Programming]]></category>

		<guid isPermaLink="false">http://www.alwaysgetbetter.com/blog/?p=296</guid>
		<description><![CDATA[Following iTunes&#8217; development has been an interesting experience. We&#8217;re moving toward a world in which physical packages of music is a thing of a past; in the meantime we&#8217;re stuck with a middling service. My complaint goes something like this: My wife recorded Grey&#8217;s Anatomy; when she was watching her tape the next day, she [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Following iTunes&#8217; development has been an interesting experience. We&#8217;re moving toward a world in which physical packages of music is a thing of a past; in the meantime we&#8217;re stuck with a middling service.</p>
<p>My complaint goes something like this:</p>
<p>My wife recorded Grey&#8217;s Anatomy; when she was watching her tape the next day, she was surprised to find advertisements telling her the story from her episode was being continued in a crossover Private Practice on a different channel. Oops.</p>
<p>So I went on iTunes and bought her the episode she missed. $3.50 is pretty steep for a 40 minute TV show but that&#8217;s the price you pay for the convenience. After enjoying the program, my wife decided she wanted to see the rest of the season &#8211; so I bought that for her too.</p>
<p>When you buy a season of TV, iTunes warns you that any previously purchased episode will be downloaded again &#8211; essentially you&#8217;d be paying for it again. I can handle that &#8211; it makes sense that an item would be sold individually and part as a collection.</p>
<p>Two problems (both stemming from me not digging deep enough into the literature, but also totally unreasonable):<br />
1. When I was billed for the season, I was billed individually for every episode, at the full $3.50 rate. So there was no reason to double-bill me for the episode I&#8217;d already purchased since the billing wasn&#8217;t based on a &#8216;full season&#8217; &#8211; why is the system unable to correlate previous purchases and prevent the double-purchase?</p>
<p>2. I thought I was buying a whole season of the show &#8211; in fact I only bought the episodes that had already been released. A &#8220;Season Pass&#8221; (pay for the season and new episodes download as they become available) is something completely different&#8230; it would have been nice to have been informed of the difference.</p>
<p>$42 is a lot of money to pay for 11 episodes of TV. I don&#8217;t think I&#8217;ll be dropping a lot of money into iTunes when I can pay half that amount for a full season on DVD &#8211; not to mention get the benefits of hard copy, physical media.</p>
<p>My verdict: iTunes is an interesting model and was a fun experiment for us, but <strong>not at all</strong> cost effective. Bandwidth can be expensive, but the cost of distributing digital media is essentially $0. I would have thought TV episodes could be sold for less than $1 and still make a healthy profit for the content creators (no manufacturing costs, no distribution, no retail partners &#8212; Apple takes a cut and the rest is pure profit). What can I say, I was the one who got suckered into paying double the price for half the product.</p>


<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/AlwaysGetBetter/~4/UJXbHoJyOqE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.alwaysgetbetter.com/blog/2010/02/06/itunes-future-toy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alwaysgetbetter.com/blog/2010/02/06/itunes-future-toy/</feedburner:origLink></item>
		<item>
		<title>Wamp Server Crashes Installing X-Cart</title>
		<link>http://feedproxy.google.com/~r/AlwaysGetBetter/~3/X2BkC8YPDOg/</link>
		<comments>http://www.alwaysgetbetter.com/blog/2010/01/24/wamp-server-crashes-installing-xcart/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 02:38:32 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Windows Vista]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[x-cart]]></category>

		<guid isPermaLink="false">http://www.alwaysgetbetter.com/blog/?p=294</guid>
		<description><![CDATA[When running a default installation, WAMP Server&#8217;s Apache crashes when installing X-Cart. The error happens immediately after setting up the MySQL tables and is caused by the curl extension in PHP. To resolve, click on the WAMP Server icon in the task tray, go to Apache -> Version -> Get More. Download one of the [...]


Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2010/08/05/installing-git-ubuntu-1004/' rel='bookmark' title='Permanent Link: Installing Git on Ubuntu 10.04'>Installing Git on Ubuntu 10.04</a></li>
<li><a href='http://www.alwaysgetbetter.com/blog/2009/11/05/vista-fix-sql-server-express-error-create-database-permission-denied-database-master/' rel='bookmark' title='Permanent Link: VISTA: How to fix SQL Server Express Error &#8211; CREATE DATABASE permission denied in database &#8216;master&#8217;'>VISTA: How to fix SQL Server Express Error &#8211; CREATE DATABASE permission denied in database &#8216;master&#8217;</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>When running a default installation, WAMP Server&#8217;s Apache crashes when installing X-Cart. The error happens immediately after setting up the MySQL tables and is caused by the curl extension in PHP.</p>
<p>To resolve, click on the WAMP Server icon in the task tray, go to Apache -> Version -> Get More. Download one of the 2.0 series Apache servers and install it.</p>
<p>Repeat the process for PHP; download one of the 5.0 series PHP versions and install it.</p>
<p>Switch WAMP Server to the new versions and run the install again &#8211; it should work with no problems.</p>


<p>Related posts:<ol><li><a href='http://www.alwaysgetbetter.com/blog/2010/08/05/installing-git-ubuntu-1004/' rel='bookmark' title='Permanent Link: Installing Git on Ubuntu 10.04'>Installing Git on Ubuntu 10.04</a></li>
<li><a href='http://www.alwaysgetbetter.com/blog/2009/11/05/vista-fix-sql-server-express-error-create-database-permission-denied-database-master/' rel='bookmark' title='Permanent Link: VISTA: How to fix SQL Server Express Error &#8211; CREATE DATABASE permission denied in database &#8216;master&#8217;'>VISTA: How to fix SQL Server Express Error &#8211; CREATE DATABASE permission denied in database &#8216;master&#8217;</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/AlwaysGetBetter/~4/X2BkC8YPDOg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.alwaysgetbetter.com/blog/2010/01/24/wamp-server-crashes-installing-xcart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alwaysgetbetter.com/blog/2010/01/24/wamp-server-crashes-installing-xcart/</feedburner:origLink></item>
	</channel>
</rss>
