<?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>Blake's Journal</title>
	
	<link>http://blog.blakecrosby.com</link>
	<description>A nerds view of the world</description>
	<lastBuildDate>Sun, 17 Mar 2013 16:18:42 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BlakesJournal" /><feedburner:info uri="blakesjournal" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>FITC Web Performance and Optimization</title>
		<link>http://feedproxy.google.com/~r/BlakesJournal/~3/1rFCqQqENNI/fitc-web-performance-and-optimization.html</link>
		<comments>http://blog.blakecrosby.com/2013/03/17/fitc-web-performance-and-optimization.html#comments</comments>
		<pubDate>Sun, 17 Mar 2013 16:18:42 +0000</pubDate>
		<dc:creator>Blake</dc:creator>
				<category><![CDATA[Nerd]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.blakecrosby.com/?p=443</guid>
		<description><![CDATA[A colleague and I presented a 50 min talk at my first weekend event yesterday. I counted approx. 70 people in attendance before we got to talking. The talk was well received and we even spent another 20 min or so chatting to individuals that wanted some more information. The talk was about how CBC is taking [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bbinto.wordpress.com/">A colleague</a> and I presented a 50 min talk at my first weekend event yesterday.</p>
<p>I counted approx. 70 people in attendance before we got to talking. The talk was well received and we even spent another 20 min or so chatting to individuals that wanted some more information.</p>
<p>The talk was about how CBC is taking web performance seriously, the tools we use to improve our websites performance from both the front and back ends. <a href="https://sites.google.com/a/blakecrosby.com/blake-crosby-2/presentations/fitc-wpo-march-final.pdf">Slides are available</a> in pdf format.</p>
<p><a href="http://bbinto.wordpress.com/">Barbara</a> and I will be giving this talk again, this time at the O&#8217;Reilly Conference in June.</p>
<img src="http://feeds.feedburner.com/~r/BlakesJournal/~4/1rFCqQqENNI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.blakecrosby.com/2013/03/17/fitc-web-performance-and-optimization.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.blakecrosby.com/2013/03/17/fitc-web-performance-and-optimization.html</feedburner:origLink></item>
		<item>
		<title>What Your CDN Won’t Tell You</title>
		<link>http://feedproxy.google.com/~r/BlakesJournal/~3/tSs9o_NoVBo/what-your-cdn-wont-tell-you.html</link>
		<comments>http://blog.blakecrosby.com/2012/12/15/what-your-cdn-wont-tell-you.html#comments</comments>
		<pubDate>Sat, 15 Dec 2012 17:00:26 +0000</pubDate>
		<dc:creator>Blake</dc:creator>
				<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.blakecrosby.com/?p=419</guid>
		<description><![CDATA[Julian and I had the honour of having our paper accepted by USENIX. In fact, Julian is at this years LISA conference presenting it (I&#8217;m unable to attend due to schedule conflict). Our years together working at CBC has taught us a lot about running a News website. Specifically around dealing with our CDN (Akamai). [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.juliandunn.net/">Julian</a> and I had the honour of having our paper accepted by USENIX. In fact, Julian is at this years <a href="https://www.usenix.org/conference/lisa12/what-your-cdn-won%E2%80%99t-tell-you-optimizing-news-website-speed-and-cost">LISA conference</a> presenting it (I&#8217;m unable to attend due to schedule conflict).</p>
<p>Our years together working at CBC has taught us a lot about running a News website. Specifically around dealing with our CDN (Akamai).</p>
<p>How do you manage that fine line between having fresh content appear on the site quickly (what News wants) and protecting the origin from the load of a breaking news event (what the SysAdmins want)?</p>
<p>This paper answers that question and gives you a glimpse at how we do things at CBC.</p>
<p>You can read the paper <a href="http://blog.blakecrosby.com/wp-content/uploads/2012/11/LISA-2012-PER-Final.pdf">here</a>.</p>
<img src="http://feeds.feedburner.com/~r/BlakesJournal/~4/tSs9o_NoVBo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.blakecrosby.com/2012/12/15/what-your-cdn-wont-tell-you.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.blakecrosby.com/2012/12/15/what-your-cdn-wont-tell-you.html</feedburner:origLink></item>
		<item>
		<title>Hotwire Not So Hot</title>
		<link>http://feedproxy.google.com/~r/BlakesJournal/~3/kFilsi2s9UE/hotwire-not-so-hot.html</link>
		<comments>http://blog.blakecrosby.com/2012/12/10/hotwire-not-so-hot.html#comments</comments>
		<pubDate>Mon, 10 Dec 2012 22:46:19 +0000</pubDate>
		<dc:creator>Blake</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.blakecrosby.com/?p=432</guid>
		<description><![CDATA[I&#8217;m visiting my Grandparents in Montreal this Christmas. They live in a very small town so the hotel room options are quite limited. There is only one hotel in this town and the published rate was $94 a night. I decided to hit up hotwire.ca to see if they could get me a deal. Indeed [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m visiting my Grandparents in Montreal this Christmas. They live in a very small town so the hotel room options are quite limited.</p>
<p>There is only one hotel in this town and the published rate was $94 a night. I decided to hit up hotwire.ca to see if they could get me a deal.</p>
<p>Indeed I could! Hotwire was advertising $88.50/night. Great! So I decided to book. The final total was a little higher than I expected: $215.43. Hmm..</p>
<p>I went to expedia.ca and calculated the price they were offering at $94/night. Total with taxes: $215.26. Looks like expedia have them beat by $0.17.</p>
<div id="attachment_434" class="wp-caption aligncenter" style="width: 251px"><a href="http://blog.blakecrosby.com/wp-content/uploads/2012/12/expedia.png"><img class="size-medium wp-image-434" title="expedia" src="http://blog.blakecrosby.com/wp-content/uploads/2012/12/expedia-241x300.png" alt="" width="241" height="300" /></a><p class="wp-caption-text">Price from Expedia</p></div>
<p>&nbsp;</p>
<div id="attachment_433" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.blakecrosby.com/wp-content/uploads/2012/12/hotwire.png"><img class="size-medium wp-image-433" title="hotwire" src="http://blog.blakecrosby.com/wp-content/uploads/2012/12/hotwire-300x151.png" alt="" width="300" height="151" /></a><p class="wp-caption-text">Price from Hotwire</p></div>
<p>&nbsp;</p>
<div id="attachment_435" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.blakecrosby.com/wp-content/uploads/2012/12/holidayinn.png"><img class="size-medium wp-image-435" title="holidayinn" src="http://blog.blakecrosby.com/wp-content/uploads/2012/12/holidayinn-300x62.png" alt="" width="300" height="62" /></a><p class="wp-caption-text">Price from Holiday Inn</p></div>
<p>&nbsp;</p>
<p>Just for fun, I decided to look up the price with Holiday Inn directly: $215.24, a $0.02 savings over Expedia!</p>
<p>It all comes down to the &#8220;tax recovery charges and fees&#8221; that the individual websites charge.</p>
<p>The Tax recovery charge is a charge that the Hotel charges Expedia or Hotwire that are imposed by them from the government, such as: room tax, excise tax, tourists taxes, etc.. If this is the case, then why are the taxes and fees different for the same hotel room?</p>
<p>To me, it sounds like hotwire is moving some of the cost of the room into the &#8220;fees&#8221; category in order to display cheaper per night rates.</p>
<p>I&#8217;ll stick with booking with the hotel directly, thank you very much. I&#8217;m sure I can use the $0.02 that I saved over booking with expedia. Oh wait, I just did&#8230; and that&#8217;s my two cents on using websites for hotel &#8220;deals&#8221; <img src='http://blog.blakecrosby.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>FYI: The <a href="http://www.hotelassociation.ca/forms/Room%20Taxes%20Table.pdf">hotel tax</a> in Quebec is 14.98%. Of which it only seems that Holiday Inn is accurately representing in the &#8220;Taxes&#8221; section.</p>
<img src="http://feeds.feedburner.com/~r/BlakesJournal/~4/kFilsi2s9UE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.blakecrosby.com/2012/12/10/hotwire-not-so-hot.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.blakecrosby.com/2012/12/10/hotwire-not-so-hot.html</feedburner:origLink></item>
		<item>
		<title>The Power of HTTP 304</title>
		<link>http://feedproxy.google.com/~r/BlakesJournal/~3/MtXKpibxc0o/the-power-of-http-304.html</link>
		<comments>http://blog.blakecrosby.com/2012/12/06/the-power-of-http-304.html#comments</comments>
		<pubDate>Thu, 06 Dec 2012 17:07:37 +0000</pubDate>
		<dc:creator>Blake</dc:creator>
				<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.blakecrosby.com/?p=425</guid>
		<description><![CDATA[The code that runs the photo galleries on cbc.ca is powered by PHP. This is the first time we&#8217;ve really used &#8220;dynamic delivery&#8221; to serve news content on our website since ~2004. Our stance has always been to serve static content to our users (we use the term &#8220;baked out&#8221;). In addition to moving to [...]]]></description>
			<content:encoded><![CDATA[<p>The code that runs the <a href="http://www.cbc.ca/news/photos/">photo galleries</a> on cbc.ca is powered by PHP.</p>
<p>This is the first time we&#8217;ve really used &#8220;dynamic delivery&#8221; to serve news content on our website since ~2004. Our stance has always been to serve static content to our users (we use the term &#8220;baked out&#8221;).</p>
<p>In addition to moving to a dynamic backend to deliver our Photo Galleries, we&#8217;ve also changed the way internal clients are able to include these galleries in their pages. We&#8217;ve exposed an API for internal users to use. This means that every photo gallery on cbc.ca is now powered by our &#8220;Photo Gallery API&#8221;. Previously users would have to use server side includes (SSIs) to include static content.</p>
<p>On average, the API get&#8217;s accessed ~1.8 million times per day. More so during peak times (for example, during Hurricane Sandy the API was getting hit as much as 2.6M times per day). Each access resulted in an average of 27KB in payload being returned to the user. So on any day, we would be moving ~460GB of xml data.</p>
<p>On the intial rollout of the code, the application had no notion of how to handle If-Modified-Since (IMS) requests from browsers. This meant that even if the client had a copy of the XML data that the API returned, it would always get a copy of the data from the server when they revistied the photo gallery page (or other pages that included the gallery).</p>
<p>This posed a few problems:</p>
<ul>
<li>Users are downloading data for which they already have.</li>
<li>The back end application is spending time returning data that the client already has.</li>
<li>Page rendering time is a little longer as the browser has to wait to finish downloading the xml and processing it.</li>
</ul>
<p>By default PHP doesn&#8217;t know how to handle these IMS requests. It is up to the individual developer to code logic to handle these types of requests and to handle them accordingly.</p>
<p>Once this logic was put in place we saw some drastic changes in the volume of data being sent to our users. Now, on average we&#8217;re only delivering 12KB per hit. Resulting in  ~205GB of traffic per day, a savings of 44%.</p>
<div id="attachment_426" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.blakecrosby.com/wp-content/uploads/2012/12/imagegallery.png"><img class="size-medium wp-image-426" title="imagegallery" src="http://blog.blakecrosby.com/wp-content/uploads/2012/12/imagegallery-300x143.png" alt="" width="300" height="143" /></a><p class="wp-caption-text">Click for Larger</p></div>
<p>Take a look at the above graph.</p>
<p>The green line represents the number of hits. On November 6, you see it split into a blue and red line. This is when the new code went live. Before 100% of hits were 200 OK, now about 45% of hits are 304 Not Modified vs. 200 OK. As such, the size per hit has been reduced because returning a 304 response is much more lightweight than 200s.</p>
<p>We&#8217;ve eliminited all of the problems identified earlier. Users now load XML data from their local browser cache (if they have it). The backend application does not need to select ALL the data from the DB on each hit. Page rendering time is reduced as the browser does not need to wait to download content it already has.</p>
<img src="http://feeds.feedburner.com/~r/BlakesJournal/~4/MtXKpibxc0o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.blakecrosby.com/2012/12/06/the-power-of-http-304.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.blakecrosby.com/2012/12/06/the-power-of-http-304.html</feedburner:origLink></item>
		<item>
		<title>The True Cost of Buying a Home in Toronto</title>
		<link>http://feedproxy.google.com/~r/BlakesJournal/~3/S_n4OHyguBw/the-true-cost-of-buying-a-home-in-toront.html</link>
		<comments>http://blog.blakecrosby.com/2012/07/19/the-true-cost-of-buying-a-home-in-toront.html#comments</comments>
		<pubDate>Thu, 19 Jul 2012 15:00:43 +0000</pubDate>
		<dc:creator>Blake</dc:creator>
				<category><![CDATA[House]]></category>

		<guid isPermaLink="false">http://blog.blakecrosby.com/?p=411</guid>
		<description><![CDATA[Over a year later I&#8217;m finally able to calculate the true cost of purchasing my house in Toronto. Why did it take so long? By the time all the paperwork was done, laywer stuff complete, and the city finally sent me transfer papers for the front pad parking, it was 14 months after the closing [...]]]></description>
			<content:encoded><![CDATA[<p>Over a year later I&#8217;m finally able to calculate the true cost of purchasing my house in Toronto. Why did it take so long? By the time all the paperwork was done, laywer stuff complete, and the city finally sent me transfer papers for the front pad parking, it was 14 months after the closing date.</p>
<p>So without further delay, here is the break down:</p>
<p>Purchase Price: $520,000<br />
Mortgage Insurance : $9,300<br />
Land Transfer Tax (Ontario and Toronto): $13,000<br />
Lawyer Fees: $1,516.68<br />
Account Set Up (Internet): $20.00<br />
Account Set Up (Gas): $25.00<br />
Account Set Up (Toronto Hydro): $30.00<br />
Front Pad Parking Transfer: $117.80<br />
Bank Fees (For deposit checks): $13.00</p>
<p>These costs are what is usually bundled into what people call &#8220;closing fees&#8221;. This is because they are all due on or around the date you legally own the property (closing date). Experts say you should budget 1-2% of the purchase price towards these fees.</p>
<p>So on a $520,000 home, I had to pay an extra $24,022.48. Some things to keep in mind when you buy real estate in Toronto.</p>
<img src="http://feeds.feedburner.com/~r/BlakesJournal/~4/S_n4OHyguBw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.blakecrosby.com/2012/07/19/the-true-cost-of-buying-a-home-in-toront.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.blakecrosby.com/2012/07/19/the-true-cost-of-buying-a-home-in-toront.html</feedburner:origLink></item>
		<item>
		<title>TTC Challenge: Riding every single bus route in one day.</title>
		<link>http://feedproxy.google.com/~r/BlakesJournal/~3/uQOIEh3rF8c/ttc-challenge-riding-every-single-bus-route-in-one-day.html</link>
		<comments>http://blog.blakecrosby.com/2012/01/03/ttc-challenge-riding-every-single-bus-route-in-one-day.html#comments</comments>
		<pubDate>Wed, 04 Jan 2012 04:13:18 +0000</pubDate>
		<dc:creator>Blake</dc:creator>
				<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://blog.blakecrosby.com/?p=387</guid>
		<description><![CDATA[I was riding the bus on my way to a party when I turned to Sara and exclaimed: &#8220;Wouldn&#8217;t it be cool to ride every single TTC bus route in one day?&#8221;. So I took it upon my self to start planning just such a route. Some ground rules. The trip must be continuous and [...]]]></description>
			<content:encoded><![CDATA[<p>I was riding the bus on my way to a party when I turned to Sara and exclaimed: &#8220;Wouldn&#8217;t it be cool to ride every single TTC bus route in one day?&#8221;.</p>
<p>So I took it upon my self to start planning just such a route.</p>
<p>Some ground rules.</p>
<ol>
<li>The trip must be continuous and if possible with no backtracking.</li>
<li>The following routes will be excluded:</li>
<ol>
<li>4xx Series Routes (Community Routes)</li>
<li>14x Series Routes (Downtown Express)</li>
<li>3xx Series Routes (All Night/Blue Line Routes)</li>
<li>The 1S Yonge Subway Shuttle</li>
<li>Additional services on the route (route numbers ending in a letter, like &#8220;A&#8221;,&#8217;B&#8221;, etc..) are treated the same as its parent route (route number with no letter suffix).</li>
</ol>
<li>Entire trip must be completed in 24 hours starting at 00:00 Saturday morning to 23:59 the same day.</li>
<li>Utilization of streetcar and subway to transfer to another bus route is optional.</li>
</ol>
<p>There are approx. 181 routes, which includes the three subway lines and 11 streetcar lines. Doing this challenge on a Saturday brings the total down to 167. The following routes will not be operating on Saturday:</p>
<ul>
<li>117 &#8211; ALNESS</li>
<li>139 &#8211; FINCH &#8211; DON MILLS</li>
<li>141 &#8211; DOWNTOWN/MT PLEASANT EXPRESS</li>
<li>142 &#8211; DOWNTOWN/AVENUE RD EXPRESS</li>
<li>143 &#8211; DOWNTOWN/BEACH EXPRESS</li>
<li>144 &#8211; DOWNTOWN/DON VALLEY EXPRESS</li>
<li>145 &#8211; DOWNTOWN/HUMBER BAY EXPRESS</li>
<li>162 &#8211; LAWRENCE-DONWAY</li>
<li>1S &#8211; YONGE SUBWAY SHUTTLE</li>
<li>224 &#8211; VICTORIA PARK NORTH</li>
<li>33 &#8211; FOREST HILL</li>
<li>502 &#8211; DOWNTOWNER</li>
<li>503 &#8211; KINGSTON RD</li>
<li>508 &#8211; LAKE SHORE RD</li>
</ul>
<p>So I&#8217;m really only going to be missing out on 5 routes by doing this challenge on a Saturday (117,139,162,224,33) as the remainder of the routes are already excluded by my rules.</p>
<div id="attachment_393" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.blakecrosby.com/wp-content/uploads/2012/01/routes.png"><img class="size-medium wp-image-393" title="routes" src="http://blog.blakecrosby.com/wp-content/uploads/2012/01/routes-300x233.png" alt="" width="300" height="233" /></a><p class="wp-caption-text">Green: Saturday routes. Red: Additional weekday routes</p></div>
<p>So I currently have two problems to solve. First: how can I prove that I have travelled on all the routes? Second: Coming up with a route and schedule to follow will be difficult considering all the routing engines out there are meant to find the most optimal route.</p>
<p>Figuring out the solution to my second problem is easy: Just write the worlds most inefficient routing engine to ensure that I get from point &#8220;a&#8221; to point &#8220;b&#8221; using all possible bus routes. I&#8217;ll save that for Part Two of my post.</p>
<p>If anyone has any options for my first problem, I&#8217;m all ears. Leave a comment below with your suggestions.</p>
<img src="http://feeds.feedburner.com/~r/BlakesJournal/~4/uQOIEh3rF8c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.blakecrosby.com/2012/01/03/ttc-challenge-riding-every-single-bus-route-in-one-day.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.blakecrosby.com/2012/01/03/ttc-challenge-riding-every-single-bus-route-in-one-day.html</feedburner:origLink></item>
		<item>
		<title>PGWest 2011 Slides</title>
		<link>http://feedproxy.google.com/~r/BlakesJournal/~3/WmQRi98eTy0/pgwest-2011-slides.html</link>
		<comments>http://blog.blakecrosby.com/2011/10/05/pgwest-2011-slides.html#comments</comments>
		<pubDate>Wed, 05 Oct 2011 23:38:00 +0000</pubDate>
		<dc:creator>Blake</dc:creator>
				<category><![CDATA[Nerd]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://blog.blakecrosby.com/?p=381</guid>
		<description><![CDATA[The slides from my PostGIS mini-tutorial talk that I gave at PGWest 2011 are now available here.]]></description>
			<content:encoded><![CDATA[<p>The slides from my PostGIS mini-tutorial talk that I gave at PGWest 2011 are now available <a href="https://sites.google.com/a/blakecrosby.com/blake-crosby-2/presentations">here</a>.</p>
<img src="http://feeds.feedburner.com/~r/BlakesJournal/~4/WmQRi98eTy0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.blakecrosby.com/2011/10/05/pgwest-2011-slides.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.blakecrosby.com/2011/10/05/pgwest-2011-slides.html</feedburner:origLink></item>
		<item>
		<title>PGWest: Here I Come!</title>
		<link>http://feedproxy.google.com/~r/BlakesJournal/~3/uVifALqG0Rw/pgwest-here-i-come.html</link>
		<comments>http://blog.blakecrosby.com/2011/09/19/pgwest-here-i-come.html#comments</comments>
		<pubDate>Mon, 19 Sep 2011 19:53:57 +0000</pubDate>
		<dc:creator>Blake</dc:creator>
				<category><![CDATA[Nerd]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://blog.blakecrosby.com/?p=375</guid>
		<description><![CDATA[I will be speaking on two occasions at PGWest next week. My first talk will be a mini-tutorial about how to install and use PostGIS. This is great for anyone who is interested in learning more about GIS in general as well. My second talk will be the same one I gave at PGCon 2011 [...]]]></description>
			<content:encoded><![CDATA[<p>I will be speaking on two occasions at <a href="https://www.postgresqlconference.org/">PGWest</a> next week.</p>
<p>My first talk will be a <a href="http://pgwest2011.sched.org/event/e8e9f4d1bef4e4b0f7ae97fd1033705d">mini-tutorial</a> about how to install and use PostGIS. This is great for anyone who is interested in learning more about GIS in general as well.</p>
<p>My <a href="http://pgwest2011.sched.org/event/9423b4621c42b3deda0271c9320f0d8d">second talk</a> will be the same one I gave at PGCon 2011 this year in Ottawa, Canada. I&#8217;ll discuss how <a href="http://www.worldflightplanner.com/">World Flight Planner</a> uses PostgreSQL and PostGIS for its flight planning back end.</p>
<p>A copy of both presentations will be available <a href="https://sites.google.com/a/blakecrosby.com/blake-crosby-2/presentations">online</a>.</p>
<img src="http://feeds.feedburner.com/~r/BlakesJournal/~4/uVifALqG0Rw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.blakecrosby.com/2011/09/19/pgwest-here-i-come.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.blakecrosby.com/2011/09/19/pgwest-here-i-come.html</feedburner:origLink></item>
		<item>
		<title>How Much Water Does a City Use?</title>
		<link>http://feedproxy.google.com/~r/BlakesJournal/~3/c7Ihn-uI_DQ/how-much-water-does-a-city-use.html</link>
		<comments>http://blog.blakecrosby.com/2011/08/31/how-much-water-does-a-city-use.html#comments</comments>
		<pubDate>Wed, 31 Aug 2011 23:55:14 +0000</pubDate>
		<dc:creator>Blake</dc:creator>
				<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://blog.blakecrosby.com/?p=365</guid>
		<description><![CDATA[Toronto recently released water usage data for the past 10 years. Below is my analysis of the data. Some interesting facts: If we were to take all of the water used in 2007, it would fill a perfect sphere with a radius of 6.3Km. The amount of water used in the past 10 years by the city [...]]]></description>
			<content:encoded><![CDATA[<p>Toronto recently <a href="http://www.toronto.ca/open/">released</a> water usage data for the past 10 years. Below is my analysis of the data.</p>
<p>Some interesting facts:</p>
<ul>
<li>If we were to take all of the water used in 2007, it would fill a perfect sphere with a radius of 6.3Km.</li>
<li>The amount of water used in the past 10 years by the city is enough to fill lake Superior over 85% full.</li>
<li>Residential consumption has dropped 11% since 2007.</li>
<li>In 2010 a Toronto citizen used on average 369,200,000L (using population data from 2006).</li>
<ul>
<li>This doesn&#8217;t seem right. Is my math off? 924105963750 m<sup>3</sup>/2503280 people</li>
</ul>
</ul>
<p>The volume of water a city uses is hard to put into perspective. The source data uses m<sup>3</sup> unit which is equal to 1,000L. In my charts I use the TL (Teralitre) unit, which is: 1,000,000,000,000L.</p>
<p>Does the amount of precipitation correlate with the amount of water used?</p>
<p><img class="aligncenter" src="https://docs.google.com/a/blakecrosby.com/spreadsheet/oimg?key=0AsmP3b54yRvvdDcxUHJmLVdvd1ZETFFUVmRjQ01Fb1E&amp;oid=2&amp;zx=wb36h62h9807" alt="" width="600" height="371" /></p>
<p>The answer: Yes! A good example can be found in 2007. A spike in water usage was a result of the lowest amount of precipitation in the past ten years. The inverse is true. The spike in precipitation in 2006 resulted in a decrease in water usage in the same year.</p>
<p>What part of the city used the most water for the past ten years?</p>
<p><img class="aligncenter" src="https://docs.google.com/a/blakecrosby.com/spreadsheet/oimg?key=0AsmP3b54yRvvdDcxUHJmLVdvd1ZETFFUVmRjQ01Fb1E&amp;oid=3&amp;zx=yeqjwgdgb6b7" alt="" width="600" height="371" /></p>
<p>Ward 5 (Etobicoke-Lakeshore) takes the cake.</p>
<img src="http://feeds.feedburner.com/~r/BlakesJournal/~4/c7Ihn-uI_DQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.blakecrosby.com/2011/08/31/how-much-water-does-a-city-use.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.blakecrosby.com/2011/08/31/how-much-water-does-a-city-use.html</feedburner:origLink></item>
		<item>
		<title>Calculating GO Transit Fares</title>
		<link>http://feedproxy.google.com/~r/BlakesJournal/~3/Ofg3orxWrMQ/calculating-go-transit-fares.html</link>
		<comments>http://blog.blakecrosby.com/2011/07/07/calculating-go-transit-fares.html#comments</comments>
		<pubDate>Thu, 07 Jul 2011 15:59:08 +0000</pubDate>
		<dc:creator>Blake</dc:creator>
				<category><![CDATA[Nerd]]></category>

		<guid isPermaLink="false">http://blog.blakecrosby.com/?p=361</guid>
		<description><![CDATA[GO Transit has a bunch of fare options for you to chose from. GO publishes a fare schedule online, however it&#8217;s approx. 10 pages of charts and fare schedules.. They don&#8217;t mention any specific formula they use to calculate the different fare classes from the base fare. I spent some time last night figuring it [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gotransit.ca/">GO Transit</a> has a bunch of fare options for you to chose from.</p>
<p>GO publishes a fare schedule <a href="http://www.gotransit.com/public/en/docs/Tariff.pdf">online</a>, however it&#8217;s approx. 10 pages of charts and fare schedules.. They don&#8217;t mention any specific formula they use to calculate the different fare classes from the base fare.</p>
<p>I spent some time last night figuring it out based on the tables, and I present to you my findings:</p>
<ul>
<li><strong>Half Fare:</strong> Base Fare divided by two and rounded to the nearest $0.05.</li>
<li><strong>Adult Ten-Ride:</strong> Base fare multiplied by 9.25 and rounded to the nearest $0.25.</li>
<li><strong>Student Ten-Ride:</strong> Base fare multiplied by 8.5 and rounded to the nearest $0.25.</li>
<li><strong>Child Ten-Ride:</strong> Base fare multiplied by 2.5 and rounded to the nearest $0.25.</li>
<li><strong>Group Pass:</strong> Base fare multiplied by 4 and rounded to the nearest $0.10.</li>
<li><strong>Adult Monthly Pass:</strong> Base fare multiplied by 33 and rounded to the nearest $1.00.</li>
<li><strong>Student Monthly Pass:</strong> Student Ten-Ride fare multiplied by 3.06 and rounded to the nearest $1.00.</li>
<li><strong>Child Monthly Pass:</strong> Child Ten-Ride fare multiplied by 4 and rounded to the nearest $1.00.</li>
</ul>
<div>Some interesting facts I discovered:</div>
<div>
<ul>
<li>The most expensive adult fare is $30.05. Which would take you from Peterborough to Niagara Falls.</li>
<li>If you will be missing more than 3.5 days (7 trips) during a month, it&#8217;s cheaper for you to purchase 4 Ten-Rides. Assuming 2 trips per day, 20 working days a month.</li>
<li>Zone numbers are not based on distance. There is no relationship between the difference in two zones numbers and their fare. For example the fare is $4.35 between zone 2 &amp; 4 and zones 2 &amp; 77.</li>
<li>There are 2392 possible zone combinations. (to/from destinations).</li>
<li>There is no zone 1.</li>
<li>Members of the police force and RCMP ride for free.</li>
<li>Veterans and their accompany ride for free during Remembrance Day.</li>
</ul>
</div>
<img src="http://feeds.feedburner.com/~r/BlakesJournal/~4/Ofg3orxWrMQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.blakecrosby.com/2011/07/07/calculating-go-transit-fares.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.blakecrosby.com/2011/07/07/calculating-go-transit-fares.html</feedburner:origLink></item>
	</channel>
</rss>
