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

<channel>
	<title>Chris Mallinson &#187; Chris</title>
	<atom:link href="http://mallinson.ca/post/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://mallinson.ca</link>
	<description>Technological Things</description>
	<lastBuildDate>Fri, 07 May 2010 06:09:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0-beta2</generator>
		<item>
		<title>iPad Can Bridge a Gap</title>
		<link>http://mallinson.ca/post/ipad/</link>
		<comments>http://mallinson.ca/post/ipad/#comments</comments>
		<pubDate>Wed, 05 May 2010 16:46:20 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Macs]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://mallinson.ca/?p=292</guid>
		<description><![CDATA[Multi-touch is the new interface buzz-word of the last few years, inciting a geek-frenzy after its big screen debut in &#8220;Minority Report&#8221;.  While such an interface is still a little bit far fetched for the consumer market, the multi-touch concept has made its way to consumers, notably via the iPhone and the trackpads of the [...]]]></description>
			<content:encoded><![CDATA[<p>Multi-touch is the new interface buzz-word of the last few years, inciting a geek-frenzy after its big screen debut in &#8220;Minority Report&#8221;.  While such an interface is still a little bit far fetched for the consumer market, the multi-touch concept has made its way to consumers, notably via the iPhone and the trackpads of the Apple notebook computers. Other companies are embracing multi-touch, but I think it&#8217;s fair to say that no company has nailed it like Apple. I&#8217;ve used many smart phones and computer screens with touch interfaces, and nothing comes close to the natural feel achieved by Apple engineers.</p>
<p><span class="video"><object width="300" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7528413&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7528413&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="300" height="225"></embed></object></span></p>
<p>Now, full disclosure &#8211; I&#8217;ve been called an Apple fanboy &#8211; but in this case I have objective proof, and his name is <a href="http://mallinson.ca/scott">Scott</a>. My son Scott is six years old, and his first six years have been difficult. He was born at 24 weeks gestation, just over a pound and barely able to survive.  He followed an all too common path familiar to his preemie peer group, and came through the experience with several conditions that will challenge him in life.  He is completely deaf, and has also lost much of his vision. The combination of hearing and vision loss make it very difficult to learn communication skills, and to use the tools on which our society has become dependant. Using a mouse is hard, since he finds it difficult to relate the movements of the mouse to a screen that he can only partially see.  Now Scott is a smart kid &#8211; he can figure out a lot of complex things by employing his curiosity, and he&#8217;s not afraid to try again and again.  He loves looking at pictures of people (and trains/trucks/wheels or course) and since we spend a lot of time in doctors&#8217; offices, his Mom showed him the pictures on her iPhone one time, and he soon figured out that moving his fingers on the screen &#8220;did stuff&#8221;.  The moment he figured that out, he knew how to use an iPhone. It didn&#8217;t take him long to figure out how to switch apps, use the home button, &#8220;swipe to unlock&#8221; and make phone calls to random people. He even came within a button press of replying to an email from the CEO of my company. We now restrict him to an iPod Touch.</p>
<p>Apple&#8217;s touch interface removes a lot of the learning that is required to use a new high-tech device.  One almost needs to forget some of the conditioned impulses, and regress a little bit to use it. The iPad takes this a step further, more closely representing the form factor of everyday objects that we may interact with. This removes a barrier for people with disabilities.</p>
<p>I&#8217;ve met a lot of people with challenges that have been overcome with the use of technology. A well known example of this is Stephen Hawking, who speaks with the assistance of a computerized voice. He uses a speech synthesis system that runs on a laptop attached to his wheelchair. This is a fairly common set-up for people with disabilities, whether their disability is purely physical or if they need their device to help them form their thoughts as well as communicate.  A set-up like this can get really expensive.  A touch-screen laptop like the <a href="http://www.words-plus.com/website/products/syst/tufftalk_convertible.htm">TuffTalker Convertible</a> costs close to $10,000.  Simpler devices that only show a group of pictures and say a phrase when a picture is touched can cost well over $1000. An iPhone or an iPad, with some rudimentary software (examples of which are already showing up in the Apple app store) can do all of this, cost far far less.</p>
<p>People with disabilities will never be a market with huge buying power, but the trend towards accessible, simple products is making the world a more welcoming place, and the classroom more inclusive.</p>
]]></content:encoded>
			<wfw:commentRss>http://mallinson.ca/post/ipad/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Make Your MacBook Pro Scream</title>
		<link>http://mallinson.ca/post/expresscard-ssd-2/</link>
		<comments>http://mallinson.ca/post/expresscard-ssd-2/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 17:50:10 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Do It Yourself]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mallinson.ca/?p=308</guid>
		<description><![CDATA[I have a late 2008 15&#8243; MacBook Pro &#8211; the first of the unibody models. It&#8217;s got 4GB RAM, and it&#8217;s an amazing machine.  But like anything I&#8217;ve had for more than a year, it&#8217;s starting to feel a little slower than I remember. A fresh installation of Leopard always helps, and although defragging hard [...]]]></description>
			<content:encoded><![CDATA[<p>I have a late 2008 15&#8243; MacBook Pro &#8211; the first of the unibody models. It&#8217;s got 4GB RAM, and it&#8217;s an amazing machine.  But like anything I&#8217;ve had for more than a year, it&#8217;s starting to feel a little slower than I remember. A fresh installation of Leopard always helps, and although defragging hard drives is not something that is often required on a mac, large virtual machine files in the 40-60GB range can mess with the hard drive a bit, and defragging helps this.</p>
<p><img title="expresscard" src="http://chris.mallinson.ca/wp-content/uploads/2010/01/expresscard.gif" alt="" width="250" height="168" align="right" />This post applies to those people with an ExpressCard slot on a fairly new machine. This will work for all unibody models, as well as some models released prior to that. New MacBook Pro machines, as of summer 2009, have had their ExpressCard slots replaced with SD card readers, with the exception of the 17&#8243; (surfboard) model.</p>
<p>Like 90% of MacBook Pro users, I&#8217;ve never used my ExpressCard Slot for anything, and I&#8217;ve kept my eye on the market for useful things to put in there. There have always been flash drives made for ExpressCard slots, but the access times have been too slow to make them very useful. Then along came the Wintec Filemate 48GB ExpressCard drive (currently $140 from <a href="http://www.tigerdirect.com/applications/SearchTools/item-details.asp?EdpNo=4505183&amp;CatId=4218" target="_blank">Tiger Direct</a>).  It has access speeds of 65MB/s for write, and 115MB/s read &#8211; fast enough to use as a boot disk, and to handle file operations faster than the fastest hard disks available for the MacBook Pro.</p>
<p><img title="Wintec Filemate 48GB ExpressCard Drive" src="http://chris.mallinson.ca/wp-content/uploads/2010/01/filemate48.gif" alt="Filemate 48GB" width="250" height="180" align="right" />I&#8217;ve read lots of reviews of this device, and people seem to have different opinions about the best way to use this fast drive.  Some people suggest that it should be used as a scratch disk for Photoshop, or other programs that do a lot of reading/writing to the HD. A few others have used it as a boot drive for Leopard. That&#8217;s what I wanted to try.</p>
<p>I have to say that the first drive I ordered was a dud. It worked as a USB drive (the drive actually can be plugged in via USB, which is immensely helpful) and I even installed Leopard on it via USB, and booted from it. It was very fast, even on a USB interface, but when in the ExpressCard slot, the machine froze when transferring any files larger than a few megs. Had to exchange it. When the new one came, I was all ready.</p>
<h3>Here are the steps I took:</h3>
<ol>
<li>Partitioned my 250GB drive into 50GB and 200GB partitions, with my old version of Snow Leopard on the 200GB Partition, and an Empty 50GB partition to be used later.</li>
<li>Backed up everything via Time Machine, and double backed up my important files to a firewire drive.</li>
<li>Installed Snow Leopard to the ExpressCard Drive, making sure to exclude extra language files and printer drivers.</li>
<li>Booted into the new instance and ran software update a couple of times. At this point you can migrate your settings from your old system via Time Machine or your hard drive, but I decided to start fresh with a smaller set of applications, and moved my settings over manually and selectively.</li>
<li>Install all your applications. I was able to fit all my applications on the new drive for optimum performance, but if you use some huge apps, you may need to install some on your old hard drive.  As you add new applications, you can put them in the default &#8220;Applications&#8221; directory, or in an applications directory on your old hard drive.</li>
<li>Move your user directory. You don&#8217;t need to store all your music and videos on your solid state drive. <a href="http://www.macgurus.com/productpages/guides/MoveUsers_part1.php" target="_blank">Instructions here</a>.</li>
<li>Trim the fat. I used <a href="http://monolingual.sourceforge.net/" target="_blank">Monolingual</a> and <a href="http://www.xslimmer.com/" target="_blank">xSlimmer</a> to remove extra language files from installed applications and to remove PowerPC binaries (do this at your own risk!). Surprisingly, this reduces the size of native Apple applications significantly &#8211; sometimes 70%. Saved over 3GB doing this.</li>
<li>Start dumping redundant files on the 200GB drive, removing system files and everything you don&#8217;t need. Do this carefully!  Organize your drive well. Leave your user directory intact, as it is still your main user directory.  I moved my web root over as well (copy your web root, and update Apache to point to it &#8211; if you&#8217;re into that sort of thing).</li>
</ol>
<p>At this point, I had used 20GB on my solid state drive, leaving me almost 30GB for new apps. I flirted with the idea of putting a Parallels virtual machine file on the SSD, but I&#8217;m not sure I want to fill another 15-20 GB there, and I&#8217;m not sure the speed improvements would be worth it. I&#8217;m going to try it briefly, and I&#8217;ll update this post if it&#8217;s worth doing.</p>
<p>The next steps are optional, but since this is a new way of doing things, I wasn&#8217;t sure I was ready to trust the drive completely.  I created the 50GB partition so I could have a clone of the drive on my old HD. This way, if the card fails one day, I won&#8217;t be screwed. I cloned the drive using <a href="http://www.bombich.com/" target="_blank">Carbon Copy Cloner</a> and I now have an exact copy of my initial installation. You may want to do this every so often, so your clone is up to date. Point your user directory to your other partition for consistency, and you should be able to boot into either one seamlessly.  If you want to free up that 50GB eventually, you can put a boot drive on a firewire or USB drive for safety.</p>
<p>If you want to get all hard core about it, you could even buy multiple ExpressCard drives, and swap between them, loading Windows or Linux on the others.</p>
<h3>And now for the results</h3>
<p>This thing screams. Seriously. You would not believe how fast this machine is, and it was already a very fast machine.  Safari opens instantly. It was quick before, but now it opens in about 100ms. Most native apps are the same &#8211; opening in less than a second. Photoshop opens in four seconds &#8211; practically blew my mind.  I&#8217;m not going to bother running benchmarks, since those depend so much on other factors, and I&#8217;m satisfied that the machine is faster, and significantly so.</p>
<p>I&#8217;m not counting on much as far as battery life improvements, since the hard drive will still be doing a lot of the work, but I do notice that the drive does not spin up much at all, and I like the silence.</p>
]]></content:encoded>
			<wfw:commentRss>http://mallinson.ca/post/expresscard-ssd-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to Win More Money in the Lottery</title>
		<link>http://mallinson.ca/post/win-the-lottery/</link>
		<comments>http://mallinson.ca/post/win-the-lottery/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 21:38:01 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[The Web]]></category>

		<guid isPermaLink="false">http://mallinson.ca/?p=281</guid>
		<description><![CDATA[First thing&#8217;s first. Don&#8217;t play the lottery. It&#8217;s a tax on people who are bad at math. Spend your money on something else that brightens your day, or put it in a savings account and go on a vacation every few years on what you will save. However &#8211; if you feel pressured into joining an [...]]]></description>
			<content:encoded><![CDATA[<p>First thing&#8217;s first. Don&#8217;t play the lottery. It&#8217;s a tax on people who are bad at math. Spend your money on something else that brightens your day, or put it in a savings account and go on a vacation every few years on what you will save. However &#8211; if you feel pressured into joining an office lottery pool, or if you just cannot resist the urge for some low risk gambling, here are the ONLY ways you can help your chances.</p>
<blockquote><p>You cannot increase your chance of winning. Period.</p></blockquote>
<p>This important. The numbers you pick, no matter what they are, have no better or worse chance of winning, no matter what they are and no matter what numbers came up last week. <strong>But you can increase the amount you will win, if you do win.</strong> Many lottery jackpots are shared between multiple winners, and many smaller prizes are determined by the amount of winners at that level.  In both of these cases, you have the opportunity to choose numbers that are <strong>less likely</strong> to be chosen by others.  How many people will choose the numbers 20,21,22,23,24,25,26?  Most people tend to think that it would be super unlikely for those numbers to show up.  But the truth is that they have just as good of a chance as any combination.</p>
<p>The fact is that a lot of people use &#8220;quick pick&#8221; options to choose their numbers, but many office pools choose their own numbers, and use them every week.  Also, many superstitious people like to pick their own number.  The key is that those numbers are very often related to numbers that have personal meaning.  Like dates.  This is key.  The numerical range of dates does not have the same distribution as the possible lottery numbers. There are no months with 32 days &#8211; 32 is a good number to start with when picking numbers for the lottery.</p>
<p>So. If you must play the lottery, pick high numbers, and group them in ways that look like they would never be picked.</p>
]]></content:encoded>
			<wfw:commentRss>http://mallinson.ca/post/win-the-lottery/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Burned Out? Try this.</title>
		<link>http://mallinson.ca/post/burnout/</link>
		<comments>http://mallinson.ca/post/burnout/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 23:01:28 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work Habits]]></category>

		<guid isPermaLink="false">http://mallinson.ca/?p=123</guid>
		<description><![CDATA[<p>I'm always torn between reading a book about a new technology that could potentially further my career and a book about something totally cool and fascinating, but unrelated to my field. There are many times when I find a book that satisfies both criteria, like some of the books I've read on cryptography (The Code Book, by Simon Singh is fantastic), but often, the books I'm interested in reading have nothing to do with my field.</p>

<p><a href="http://mallinson.ca/post/learning/">Keep Reading</a></p>]]></description>
			<content:encoded><![CDATA[<p>There are lots of way to recovered from being burned out. Physical activity is near the top of my list, as is a beer and a hockey game. Another good way is to direct your brain in a different direction for a while. Reading about something new works great.</p>
<p>I&#8217;m always torn between reading a book about a new technology that could potentially further my career and a book about something totally cool and fascinating, but unrelated to my field. There are many times when I find a book that satisfies both criteria, like some of the books I&#8217;ve read on cryptography (<a href="http://www.amazon.com/Code-Book-Science-Secrecy-Cryptography/dp/0385495323">The Code Book</a>, by <a href="http://www.simonsingh.net">Simon Singh</a> is fantastic).  I&#8217;ve also been reading a lot of books focussed on Biology lately too.  I find it fascinating that the process of natural selection, by definition, can always find the best solution to a problem, given a specific toolset, and enough time. Often though, the books I&#8217;m interested in reading have nothing to do with my field.</p>
<p>I often fall into the habit of reading programming book after programming book, and I find that after a while I start to skim, just trying to finish the book as quickly as I can, which is a terrible way to learn. It&#8217;s not a lack of interest in the subject matter, but a desire to let a different part of my brain take the reigns from time to time. It&#8217;s been shown that sleep can actually help your brain learn a concept more than staying up all night reading about it. I think that letting your mind switch gears for a little while does the same sort of thing.</p>
<p>My Conclusion?  When you feel burned out, find a book that totally fascinates you.  Read a bit of it every day, even in the time you set a side for work. It will rejuvenate your mind and make you work harder.</p>
]]></content:encoded>
			<wfw:commentRss>http://mallinson.ca/post/burnout/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>This is Completely Off-Topic</title>
		<link>http://mallinson.ca/post/food/</link>
		<comments>http://mallinson.ca/post/food/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 15:30:12 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://mallinson.ca/?p=267</guid>
		<description><![CDATA[This has nothing to do with programming, ColdFusion, JavaScript, or things nerdy. It&#8217;s far more important that that. Eat food. Not too much. Mostly plants. That&#8217;s the &#8220;seven word summary&#8221; of the book, In Defence of Food by Michael Pollan, and it should be required reading for all people who eat. It&#8217;s a relatively quick [...]]]></description>
			<content:encoded><![CDATA[<p>This has nothing to do with programming, ColdFusion, JavaScript, or things nerdy.  It&#8217;s far more important that that.</p>
<blockquote class="quote"><p>Eat food. Not too much. Mostly plants.</p></blockquote>
<p><a href="http://www.amazon.com/Defense-Food-Michael-Pollan/dp/1594201455"><img class="book" src="http://chris.mallinson.ca/wp-content/uploads/2009/08/idf_bookcover.jpg" border="0" alt="" hspace="20" align="right" /></a>That&#8217;s the &#8220;seven word summary&#8221; of the book, <a href="http://www.amazon.com/Defense-Food-Michael-Pollan/dp/1594201455">In Defence of Food</a> by <a href="http://www.michaelpollan.com/">Michael Pollan</a>, and it should be required reading for all people who eat.  It&#8217;s a relatively quick read, and it covers our history of eating from an evolutionary perspective, to the way it has changed in the past hundred or so years.  His premise is that most of the things we eat are <strong>not actually food</strong>. He does not advocate vegetarianism, or any specific diet at all, or the eating of any specific food.  He takes a holistic approach to eating that focuses on a total diet of foods that are fresh, unprocessed, and when possible, local.  When you eat fresh plants and animals that come from a natural source, it is difficult to go wrong.</p>
<p>He ends the book with some good tips for picking out things that are, in fact, food, and are therefore, good to eat.  In summary, they are:</p>
<ol>
<li>If your great-grandmother would not recognize it as food, it is probably not food (squeezable yoghurt tubes, for example.)</li>
<li>If it has more than five ingredients, it is likely processed to the point where it is no longer food.</li>
<li>If it has any ingredients that you have never heard of, or cannot pronounce, it is probably not food.</li>
<li>If it contains high-fructose corn syrop, it is most definately not food.</li>
</ol>
<p>Read it. It&#8217;s only 15 bucks.</p>
]]></content:encoded>
			<wfw:commentRss>http://mallinson.ca/post/food/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sending Yourself a Bill</title>
		<link>http://mallinson.ca/post/billing-yoursel/</link>
		<comments>http://mallinson.ca/post/billing-yoursel/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 22:13:43 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[billing]]></category>
		<category><![CDATA[clients]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://mallinson.ca/?p=263</guid>
		<description><![CDATA[I&#8217;ve been using Billings for about a year now. It&#8217;s a great OSX application for managing clients, projects, and invoices. It&#8217;s currently $40, and for the price, it has saved me enough time to be worth it. On the downside, I&#8217;ve found it to be less than intuitive on occasion, and I&#8217;ve often had to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://www.billingsapp.com/">Billings</a> for about a year now.  It&#8217;s a great OSX application for managing clients, projects, and invoices.  It&#8217;s currently $40, and for the price, it has saved me enough time to be worth it.  On the downside, I&#8217;ve found it to be less than intuitive on occasion, and I&#8217;ve often had to search for a function that really should be apparent.  It allows me to create custom invoices, and generate them based on project work, or even monthly invoices for hosting or maintenance.</p>
<p>All that is great, but I&#8217;ve begun to expand my use of the program.<br />
<span id="more-263"></span></p>
<p>Billings comes with a little menu bar timer that allows you to record the time you spend on different tasks.  I set up &#8220;projects&#8221; in Billings for things like work on personal projects, and personal development.  You can give each project a different &#8220;rate of pay&#8221; and apply a discount to it.  I bill myself $75 an hour for personal projects, and then give myself a 100% discount.  The software still keeps track of the time spent, and the money which it represents, which gives me an idea of how much I have committed to a project.</p>
<p>If you do any pro bono work for charity, I&#8217;d also recommend tracking your time and generating an invoice, using your regular rate with a 100% discount to send to the organization.  Many people who get a free website (for whatever reason) do not have an idea about how much work goes into it, and what the regular rate is.</p>
<p>I also work full time during the week. I start the timers whenever I&#8217;m at work as well, or if I&#8217;m working after hours, as that helps me make sure I&#8217;m putting in my hours, and gives me an idea of how much time I spend on each project, which can be valuable later on.</p>
]]></content:encoded>
			<wfw:commentRss>http://mallinson.ca/post/billing-yoursel/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Blueprint CSS Framework</title>
		<link>http://mallinson.ca/post/blueprint-css-framework/</link>
		<comments>http://mallinson.ca/post/blueprint-css-framework/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 17:05:10 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[Blueprint]]></category>
		<category><![CDATA[Frameworks]]></category>

		<guid isPermaLink="false">http://mallinson.ca/?p=228</guid>
		<description><![CDATA[I&#8217;ve hated almost every CSS framework I have come across. I&#8217;ve always viewed CSS as something very unique to every site. Since every single view of your content involves parsing a CSS file, I feel it really needs to be as optimized as possible. CSS frameworks have always added a bunch of code that would [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve hated almost every CSS framework I have come across. I&#8217;ve always viewed CSS as something very unique to every site. Since every single view of your content involves parsing a CSS file, I feel it really needs to be as optimized as possible.  CSS frameworks have always added a bunch of code that would never be used.<br />
<span id="more-228"></span><br />
Let me step back a bit for a minute on that thought. I&#8217;ve become a bit of a handyman lately. I&#8217;ve got a really old house, and I&#8217;m always fixing or building something. I&#8217;ve got lots of tools, and I&#8217;m always misplacing them. A while back, I found a cheap tool-bag at a hardware store. It&#8217;s a small bag that I can carry anywhere, so I went through all my tools, and everything that I&#8217;ve used in the past year, I put into the bag &#8211; all nicely organized. When I&#8217;m working around the house, the bag comes with me, and even though there are a few things in the bottom of the bag that I don&#8217;t use too often, having them at my fingertips saves me a trip to the basement, and prevents me from stripping a bolt by using vice-grips instead of the proper crescent wrench.</p>
<p>I&#8217;m coming around to the idea that 12k of CSS isn&#8217;t going to hurt anyone. That&#8217;s the size of my compressed version of Blueprint CSS, including basic reset, and base typography directives, and the grid. The grid is the key to Blueprint CSS.  The reset and typography stuff is nicely done, and tremendously useful, but the grid holds the power. Now I&#8217;m pretty comfortable laying out even a complex site using floats, clears, and block level elements, but in programming, whenever you find yourself repeating similar tasks over and over again, it&#8217;s time re-use some code.</p>
<p>Blueprint&#8217;s grid framework allows you to assign each of your div elements a column span value, which corresponds to a 24 column (by default) grid, 950 pixels wide. Your divs are assigned a width using classes, and can be nested in any way you like.  It is also possible to apply padding and adjustment to divs using the same grid. I&#8217;ve used Blueprint CSS for only a couple of sites now. One was adapted from an existing design, and one was built from scratch. In both cases I was able to save a lot of time by starting with a base grid.</p>
<p>If you don&#8217;t like the default width, or the amount of columns, there is a handy tool that will adjust the grid.css file to match your needs. (<a href="http://kematzy.com/blueprint-generator/">Blueprint Grid CSS Generator</a>)</p>
<p><a href="http://www.blueprintcss.org/">Blueprint CSS Home Page</a></p>
<p>For now, I&#8217;m sold on this framework, and I plan on using it for a few upcoming projects. I&#8217;m okay with the size of the files for now, but If I were to use it for a very high traffic site, I might think about stripping out any unused classes.</p>
<p>eqzx8us3ta</p>
]]></content:encoded>
			<wfw:commentRss>http://mallinson.ca/post/blueprint-css-framework/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Apache, mod_rewrite and Sexy URLs</title>
		<link>http://mallinson.ca/post/mod_rewrite/</link>
		<comments>http://mallinson.ca/post/mod_rewrite/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 08:10:40 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[The Web]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[URL Rewriting]]></category>
		<category><![CDATA[Web Servers]]></category>

		<guid isPermaLink="false">http://mallinson.ca/?p=147</guid>
		<description><![CDATA[99% of the people who visit a web site don&#8217;t care how it works, or how it was built. They don&#8217;t care if you&#8217;re using ColdFusion or PHP, and they don&#8217;t care if you&#8217;re using post or get variables. The remaining one percent comprises some techie types like me, and probably you, and some people with less than honourable intentions. [...]]]></description>
			<content:encoded><![CDATA[<p>99% of the people who visit a web site don&#8217;t care how it works, or how it was built. They don&#8217;t care if you&#8217;re using ColdFusion or PHP, and they don&#8217;t care if you&#8217;re using post or get variables. The remaining one percent comprises some techie types like me, and probably you, and some people with less than honourable intentions. For members of the latter group, you don&#8217;t WANT them to know what type of technology you use.</p>
<p>This is a good argument for URL rewriting, as is the fact that semantic and descriptive URLs assist in search engine ranking, and general usability. I rewriting my URLs because I like the way they look. I think a website looks much more polished when the URLs are descriptive, free of variable/value pairs, and as short possible.<br />
<span id="more-147"></span><br />
Since I tend to use Apache with most of the sites I work on, and I recommend you do the same wherever possible, I&#8217;m only going to talk about using mod_rewrite, an almost universal Apache module for URL rewriting. There are similar solutions available for other web servers. I&#8217;ll show you an example use of mod_rewrite for a skeleton example site. I&#8217;ll provide all the code as well so you can play around with a working example. Please remember that this is just a quick overview of the mod_rewrite functions, and how they can be used with ColdFusion. It is always a good idea to lock down your Apache install as much  as possible for public sites, and it should also be noted that using mod_rewrite does involve a small performance hit.</p>
<h3>Turn on mod_rewrite</h3>
<p>You may already have the mod_rewrite module activated in Apache. It&#8217;s simple to check. You need to be familiar with editing the httpd.conf file for your Apache install.</p>
<p>Make sure the following line in your <b>httpd.conf</b> file is NOT commented out (it commented out by default).</p>
<pre lang="” htaccess”">LoadModule rewrite_module libexec/apache2/mod_rewrite.so</pre>
<p>Another thing you need to be sure of is that the AllowOverride directive is turned on for your web root.  The default settings in apache is &#8220;none&#8221;.  This needs to be changed to &#8220;all&#8221; to enable the .htaccess file to change Apache settings.  This can be found either in the default  section it can be set on a per directory basis.</p>

<div class="wp_codebox"><table><tr id="p1473"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p147code3"><pre class="htaccess" style="font-family:monospace;">&lt;directory /&gt;
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
&lt;/directory&gt;</pre></td></tr></table></div>

<p>If you need to make a change, remember to stop and restart Apache for your changes to take effect.</p>
<h3>Looking at the Rewrite Directives</h3>
<p>Here&#8217;s my example .htaccess file. This file goes in your web root. I&#8217;ll go through it step by step in a minute.  One important prerequisite for understanding the mod_rewrite file is that you will need to have a good understanding of regular expressions in order to write your own rules.</p>

<div class="wp_codebox"><table><tr id="p1474"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code" id="p147code4"><pre class="htaccess" style="font-family:monospace;">RewriteEngine on
&nbsp;
RewriteRule ^$ app/index.cfm [L]
RewriteRule ^(contact|about|blog|categories)/?$ app/$1.cfm [L]
RewriteRule ^demos/([0-9]*)/?$ app/content/demo$1/index.cfm [L]
RewriteRule ^c/([a-zA-Z0-9\-\_]{1,30})/?$ app/categories.cfm?cat=$1 [L]
RewriteRule ^([a-zA-Z0-9\-\_]{1,30})/?$ app/post.cfm?key=$1 [L]
&nbsp;
RewriteCond %{HTTP_USER_AGENT} MSIE\s(\d)\.(?!.*Opera)
RewriteCond %1 &amp;lt;=6
RewriteRule ^(/[a-zA-Z0-9\-\_\.])*assets/css/main\.css$ css/main-ie.css [L]
&nbsp;
RewriteRule ^(/[a-zA-Z0-9\-\_\.])*assets/js/jquery\.js$ js/jquery/jquery-1.3.2.min.js [L]
RewriteRule ^(/[a-zA-Z0-9\-\_\.])*assets/css/main\.css$ css/main.css [L]</pre></td></tr></table></div>

<p><b title="RewriteEngine on">Line 1</b> is important, as it activates the Rewrite engine.</p>
<p>The rewriting starts on <b title="RewriteRule ^$ app/index.cfm [L]">line 3</b>. I like to keep my main site files in a folder called &#8220;app&#8221; in my web root, so the first line rewrites a call to the web root to &#8220;/app/index.cfm&#8221;</p>
<p><b title="RewriteRule ^(contact|about|blog|categories)/?$ app/$1.cfm [L]">Line 4</b> redirects a few of the regular top-level pages in the site to their respective locations in my directory structure. /contact to /app/contact.cfm, /about to app/about.cfm, etc.</p>
<p><b title="RewriteRule ^demos/([0-9]*)/?$ app/content/demo$1/index.cfm [L]">Line 5</b> redirects links to demos I included on the site.  /demo/1 goes to /app/demo1/index.cfm, /demo/2 goes to /app/demo2/index.cfm, and so on.</p>
<p><b title="RewriteRule ^c/([a-zA-Z0-9\-\_]{1,30})/?$ app/categories.cfm?cat=$1 [L]">Line 6</b> is for the categories pages for the blog that is part of the site.  For example, the link /c/cars would get redirected to /app/categories.cfm?cat=cars.</p>
<p><b title="RewriteRule ^([a-zA-Z0-9\-\_]{1,30})/?$ app/post.cfm?key=$1 [L]">Line 7</b> will take any remaining link that does not contain a &#8220;sub-directory&#8221; and assumes it is a blog post.  The links would be forwarded like this:  /apache-url-forwarding would be rewritten as /app/post.cfm?key=apache-url-forwarding. This allows you to use the key to lookup a blog post and display it for the reader.  These short titles are usually called &#8220;slugs&#8221; by blogging software and are unique titles given to your posts for use in search engine friendly URLs.</p>
<p><b title="RewriteCond %{HTTP_USER_AGENT} MSIE\s(\d)\.(?!.*Opera)  -  RewriteCond %1 &lt;=6">Line 9 and 10</b> are conditional, and serve the purpose of rewriting the CSS file differently for Internet Explorer 6 and below than it is for the rest of the browsers.  You can see that <b title="RewriteRule ^(/[a-zA-Z0-9\-\_\.])*assets/css/main\.css$ css/main-ie.css [L]">line 11</b> directs calls to the main CSS file to an IE6 specific file.  The preceding rewrite conditions apply to the rewrite rule that immediately follows the condition.</p>
<p><b title="RewriteRule ^(/[a-zA-Z0-9\-\_\.])*assets/js/jquery\.js$ js/jquery/jquery-1.3.2.min.js [L]">Line 13</b> rewrites the CSS file for the remaining browsers.  You may wonder why I bother rewriting the URL of the CSS file.  I like to keep several sets of CSS files on hand &#8211; sometimes different themes, sometimes different versions, and sometimes just a specific set of CSS files for development only.  Rewriting the CSS URLs allows me to switch between the files with ease without touching my application code at all.</p>
<p><b title="RewriteRule ^(/[a-zA-Z0-9\-\_\.])*assets/css/main\.css$ css/main.css [L]">Line 14</b> rewrites the call to an external JavaScript file &#8211; in this case jQuery.  This is helpful for managing versions of a jQuery library.  In this case, I&#8217;m just calling a file called jquery.js, but I&#8217;m linking to a minified version of jquery 1.3.2.</p>
<h3>The Code</h3>
<p>I&#8217;ve gone through this pretty quickly, and without a ton of detail, but I&#8217;ve included the code all zipped up nicely for you to try it yourself. Stick the whole directory structure in your development web root, and give it a try. Remember to turn on mod_rewrite.</p>
<p><a href="http://cf.mallinson.ca/url_rewrite/">Working Example</a><br />
<a href="http://cf.mallinson.ca/url_rewrite.zip">Zipped Up Files</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mallinson.ca/post/mod_rewrite/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Querious &#8211; MySQL Client for OSX</title>
		<link>http://mallinson.ca/post/querious/</link>
		<comments>http://mallinson.ca/post/querious/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 15:15:42 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://mallinson.ca/?p=214</guid>
		<description><![CDATA[<img class="alignleft size-full wp-image-215" title="querious1" src="http://mallinson.ca/wp-content/uploads/2009/06/querious1.png" alt="querious1" width="100" height="100" vspace="15" hspace="15" /><p>This is for Mac people only - sorry Windows friends. I've been looking for this for a while.  Now, I'm pretty hard core, but I'm not hard-core enough to use the command line for all my interactions with MySQL.  If you've been using the MySQL Query Browser that can be downloaded form mysql.org, you probably know that it will crash if you breathe on it. I've looked at a few of the clients that have come out for MySQL, but none have made me want to shell out money to replace what I had.</p>

<p><a href="http://mallinson.ca/post/querious/">Keep Reading</a></p>]]></description>
			<content:encoded><![CDATA[<p>This is for Mac people only &#8211; sorry Windows friends. I&#8217;ve been looking for this for a while.  Now, I&#8217;m pretty hard core, but I&#8217;m not hard-core enough to use the command line for all my interactions with MySQL.  If you&#8217;ve been using the MySQL Query Browser that can be downloaded form mysql.org, you probably know that it will crash if you breathe on it. I&#8217;ve looked at a few of the clients that have come out for MySQL, but none have made me want to shell out money to replace what I had.<br />
<span id="more-214"></span><br />
<img class="alignleft size-full wp-image-215" title="querious1" src="http://chris.mallinson.ca/wp-content/uploads/2009/06/querious1.png" alt="querious1" width="200" height="200" />Then along came <a href="http://www.araelium.com/querious/">Querious</a>, from the Araelium Group. I&#8217;ve only been working with it for a couple of days now, but I&#8217;m ready to call it awesome. They have managed to fit in shortcuts for pretty much anything you can think of, but the interface is extremely clean. There is a filter tool available at the top of the interface when you are view table data. I usually don&#8217;t mind writing a quick query to view what I need, but this tool will let you type in a string that is matched against the content in any column.  Very handy.  You can also specify more exact search criteria if you like. The autocomplete and syntax highlighting while writing SQL is also nicely done.</p>
<p>Querious will also import and export CSV, or tab delimited data, and on import, does a much better job than most other programs in letting you map your data to your tables.</p>
<p>The last feature I will mention is my favorite.  The ability to save not only common queries, but groups of queries is awesome.  Querious calls these query collections, and put common queries and tasks at your fingertips.</p>
<p>Querious costs $25US, which I think is a good price point for this tool. I&#8217;m still at the beginning of my 30 day trial, but unless something better comes along pretty quickly, I&#8217;ll be buying it.</p>
<p><a href="http://mac.appstorm.net/reviews/querious-mysql-on-your-desktop/">AppStorm Review</a> (9/10)</p>
<p><a href="http://www.araelium.com/querious/">Get Querious</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mallinson.ca/post/querious/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Brain Rules For Programmers</title>
		<link>http://mallinson.ca/post/learning-techniques/</link>
		<comments>http://mallinson.ca/post/learning-techniques/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 16:00:40 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Memory]]></category>

		<guid isPermaLink="false">http://mallinson.ca/?p=146</guid>
		<description><![CDATA[I read a really cool book recently. OK, I listened to it. I&#8217;ve recently discovered audio books, which are an awesome to be able to read during a commute, or in my case, while painting the house. The book is Brain Rules by John Medina. It&#8217;s a great introduction to the way the human brain [...]]]></description>
			<content:encoded><![CDATA[<p>I read a really cool book recently. OK, I listened to it. I&#8217;ve recently discovered audio books, which are an awesome to be able to read during a commute, or in my case, while painting the house.</p>
<p><a href="http://www.brainrules.net"><img class="book" title="Brain Rules" src="http://chris.mallinson.ca/wp-content/uploads/2009/06/book_brain_rules.jpg" alt="Brain Rules" width="200" height="303" align="right" hspace="10" /></a>The book is <a href="http://brainrules.net/">Brain Rules</a> by John Medina. It&#8217;s a great introduction to the way the human brain works. It covers the biology of the brain, and much of evolutionary origins of its physiology, and human behavior. It&#8217;s fascinating enough by itself, but it really gives some good insights on memory and learning that are very applicable to programmers.<br />
<span id="more-146"></span><br />
One of the most useful things I learned from the book is how to take advantage of the way the brain stores memories to learn new concepts and programming languages faster. Programmers need to learn new things all the time.  Whether it&#8217;s a new function, or a new version of a language, or a completely new language, the things we need to learn are not the same as the things our brain has evolved to learn.  Our brain really needs to struggle to store complex concepts that are not related to our immediate needs, but we can give it a hand.</p>
<p>I find the best way to learn a new language or concept is to use it immediately. If that means putting down a book mid-chapter and writing your own version of a function right away, then do it. But don&#8217;t just write a generic &#8220;Hello World&#8221; type function. Write a function that displays your favorite Monty Python line, add a big screen-capture of the show, and make sure everything is big and bold on the page.  You&#8217;ll have a much better chance of remembering the code you wrote, if the output is memorable.</p>
<p>When I was first exposed to ColdFusion, my company hired a trainer to come in and teach us the basic course.  This is almost 10 years ago, and I still remember some of that code line for line.  It wasn&#8217;t elaborate output that he used &#8211; it was the variable names. He named every variable &#8220;Jimmy&#8221;.  It wasn&#8217;t much, but he did it with such a straight face, that it was hilarious, and in turn, memorable. Building functions called getJimmy(), saveJimmy(), killJimmy() was enough to remember those functions forever.</p>
<p>Jimmy up some of your code.  You&#8217;ll be glad you did.</p>
]]></content:encoded>
			<wfw:commentRss>http://mallinson.ca/post/learning-techniques/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
