<?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/"
	
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Muskblog</title>
	<atom:link href="http://blog.muschamp.ca/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.muschamp.ca</link>
	<description>Homesteading the Internet since 1995</description>
	<lastBuildDate>Wed, 22 May 2013 03:58:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>Still unboxing my life</title>
		<link>http://blog.muschamp.ca/2013/05/09/still-unboxing-my-life/</link>
		<comments>http://blog.muschamp.ca/2013/05/09/still-unboxing-my-life/#comments</comments>
		<pubDate>Thu, 09 May 2013 05:00:22 +0000</pubDate>
		<dc:creator>Muskie</dc:creator>
				<category><![CDATA[Depression]]></category>
		<category><![CDATA[Literature]]></category>
		<category><![CDATA[Online Social Networks]]></category>
		<category><![CDATA[Vancouver]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[CDs]]></category>
		<category><![CDATA[DVDs]]></category>
		<category><![CDATA[IKEA]]></category>
		<category><![CDATA[journals]]></category>
		<category><![CDATA[Mo Yan]]></category>
		<category><![CDATA[quotation]]></category>
		<category><![CDATA[Samuel Pypes]]></category>
		<category><![CDATA[shelves]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[VHSs]]></category>

		<guid isPermaLink="false">http://blog.muschamp.ca/?p=6031</guid>
		<description><![CDATA[I&#8217;m back in Vancouver at least temporarily and because my new roommate has basically no furniture mine finally comes out of storage. If you own as many books, CDs, DVDs and VHSs as me you need to assemble a lot of Ikea furniture in your life. I don&#8217;t have room for everything so much will [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Journals by Muskie McKay, on Flickr" href="http://www.flickr.com/photos/muskiemckay/8721511189/"><img class="alignright" src="http://farm8.staticflickr.com/7305/8721511189_320028207e_n.jpg" alt="Journals" width="240" height="320" /></a></p>
<p>I&#8217;m back in Vancouver at least temporarily and because my new roommate has basically no furniture mine finally comes out of storage. If you own as many books, CDs, DVDs and VHSs as me you need to assemble a lot of Ikea furniture in your life. I don&#8217;t have room for everything so much will just go back into storage at my mom&#8217;s place. Maybe someday I&#8217;ll be successful enough to own a home, one with a library or a study. I&#8217;m supposed to inherit the remainder of the Dougan library.</p>
<p>I took a quick look in my old journals after taking a picture of them all stacked on my Ikea desk. I happened on the following page dated May 19th 2008 I think. <em>Sometimes my handwriting is not the best.</em></p>
<h3>Flaming Death: A Love Story</h3>
<blockquote><p>Parts of it are brilliant and parts of it don&#8217;t make sense. I ask myself is it the brilliant parts that don&#8217;t make sense or the parts that don&#8217;t make sense are brilliant?</p></blockquote>
<p>It is below <a href="http://www.muschamp.ca/Muskie/favouriteQuotationsMashup.php?q=103">a quotation from a Mo Yan novel</a>, so perhaps it was some sort of a brief book review, I jot down random thoughts sometimes, now we have Twitter and social media and people share entirely too much online with strangers. Before there were blogs, there were journals, <strong>most go unread</strong>. What I need is an editor. My new roommate fancies himself a writer, he hasn&#8217;t asked me for any advice yet. He might suffer from the delusion that everyone is wrong and someday everyone will realize his brilliance, I just don&#8217;t know, he&#8217;s just another random Internet roommate, one that might be even more anti-social than myself.</p>
<p><em>Maybe I have a box of undiscovered brilliance sitting on the floor in East Vancouver or maybe it is just fire starter.</em></p>
<p><a href="http://en.wikipedia.org/wiki/Samuel_Pepys">I don&#8217;t fancy myself as a modern day Samuel Pepys.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.muschamp.ca/2013/05/09/still-unboxing-my-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://farm8.staticflickr.com/7305/8721511189_320028207e_n.jpg" />
		<media:content url="http://farm8.staticflickr.com/7305/8721511189_320028207e_n.jpg" medium="image">
			<media:title type="html">Journals</media:title>
		</media:content>
	</item>
		<item>
		<title>Plugging away at Peeved Penguins tutorial</title>
		<link>http://blog.muschamp.ca/2013/04/23/plugging-away-at-peeved-penguins-tutorial/</link>
		<comments>http://blog.muschamp.ca/2013/04/23/plugging-away-at-peeved-penguins-tutorial/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 18:26:23 +0000</pubDate>
		<dc:creator>Muskie</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Andreas Low]]></category>
		<category><![CDATA[Angry Birds]]></category>
		<category><![CDATA[Box2d]]></category>
		<category><![CDATA[Cocos2d]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Kobold2d]]></category>
		<category><![CDATA[KoboldTouch]]></category>
		<category><![CDATA[makegameswith.us]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Patrick Alessi]]></category>
		<category><![CDATA[Ray Wenderlich]]></category>
		<category><![CDATA[Steffen Itterheim]]></category>

		<guid isPermaLink="false">http://blog.muschamp.ca/?p=6019</guid>
		<description><![CDATA[During my lengthy period of unemployment one of the suggestions I was given was to become an iPhone developer as I actually was a professional software developer coding in Objective-C over ten years ago. Some people must think nothing changes in the computer industry in the average decade. I&#8217;ve tried most every other suggestion, I [...]
Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2008/06/21/painting-plaguemarines-again/' rel='bookmark' title='Painting Plaguemarines Again'>Painting Plaguemarines Again</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>During <a href="http://blog.muschamp.ca/2007/06/02/my-post-mba-job-search/">my lengthy period of unemployment</a> one of the suggestions I was given was to become an iPhone developer as I actually was a professional software developer coding in Objective-C over ten years ago. <em>Some people must think nothing changes in the computer industry in the average decade.</em> I&#8217;ve tried most every other suggestion, I definitely don&#8217;t want to be a PHP programmer, so I&#8217;ve been working through various books and online tutorials and leaving the occasional question/comment on forums. Some people may have even noticed, I think most people talk about building an iPhone game and never even progress to having actual code to demo.</p>
<p>Peeved Penguins is an Angry Birds clone which you can make yourself following <a href="http://www.makegameswith.us/tutorials/peeved-penguins/kobold2d-primer/">a tutorial on the website makegameswith.us</a>, though <a href="http://www.raywenderlich.com/4756/how-to-make-a-catapult-shooting-game-with-cocos2d-and-box2d-part-1">the original tutorial may have appeared on Ray Wenderlich&#8217;s website</a>, I think his wife did the artwork.  Peeved Penguins is build with a framework called Kobold2d which relies on Cocos2d, Box2d, and of course various Apple frameworks. There is a lot of cut n&#8217; pasting involved, but at some point you have to write some original code if you want all the features to work together. I had everything working pretty well up until enabling the more complicated physics model, now it works, but in my opinion not quite correctly. I have some bugs and changes to make, but I needed to show how it worked, so I recorded a video clip and uploaded it to YouTube.</p>
<p><span style="text-align:center; display: block;"><a href="http://blog.muschamp.ca/2013/04/23/plugging-away-at-peeved-penguins-tutorial/"><img src="http://img.youtube.com/vi/P4mGrgpYsVY/2.jpg" alt="" /></a></span></p>
<p>I wasn&#8217;t smart enough to record a video clip prior to <a href="http://www.makegameswith.us/tutorials/peeved-penguins/physics-optional/">the last part of the tutorial</a> and I&#8217;m not using source control so I have no proof or way to revert to my previously functioning version of the game. <em>Source control is something that should be taught sooner in books and online tutorials for just this reason.</em></p>
<p>Besides having actual Objective-C coding experience and a degree, I also read <a href="http://www.amazon.com/Beginning-Game-Development-Wrox-Programmer/dp/1118107322">&#8220;Beginning iOS Game Development&#8221; by Patrick Alessi</a> which I found at Chapters in Nanaimo. This book just uses the built in Apple Frameworks of UIKit, Core Graphics, Core Audio, GameKit etc. I think I posted a screenshot of one of the games you learn how to make in that book, but I never thought of recording a video of gameplay, those games look less impressive perhaps, but the code is cleaner and better explained than the makegamewith.us tutorial. They&#8217;re probably going to update their tutorial, I&#8217;m not sure if they are going to switch to using KoboldTouch, which seems to have superseded Kobold2d.</p>
<p>I ordered <a href="http://www.amazon.ca/Learn-cocos2d-Game-Development-iOS/dp/143024416X">&#8220;Learn cocos2d: Game Development for iOS&#8221; by Steffen Itterheim and Andreas Löw</a>. I&#8217;ve actually been in touch with both authors through email and social media. Steffen is the main coder behind Kobold2d and <a href="http://www.koboldtouch.com">KoboldTouch</a> and Andreas created both <a href="http://www.codeandweb.com/texturepacker">TexturePacker</a> and another development tool he wants me to try. He even gave me free licenses to his software, take that Klout!</p>
<p>I plan to spend some more time debugging and improving my version of Peeved Penguins. I don&#8217;t even own Angry Birds so I&#8217;m not exactly sure how it is supposed to work, but I do know my level code, my sound effects, and even my physics and game model don&#8217;t seem quite right now that I have Box2d handling the physics for all the sprites. I&#8217;m going to have to read some more <a href="http://www.box2d.org/manual.html">documentation</a>. Peeved Penguins will never be in the app store, besides being completely unoriginal it uses other people&#8217;s intellectual property, but the folks behind <a href="http://www.makegameswith.us/">makegameswith.us</a> and the tools and frameworks used can and are used by commercial games, even some of the very successful iOS apps. So if you ever wanted to make an iPhone game but were too cheap to buy a book, you can follow tutorials online, ask questions in forums like Stack Overflow, just <a href="http://stackoverflow.com/questions/16115050/why-is-second-value-null-when-reading-data-from-plist">try not make any embarrassing typos in your plist file</a>.</p>
<p>Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2008/06/21/painting-plaguemarines-again/' rel='bookmark' title='Painting Plaguemarines Again'>Painting Plaguemarines Again</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.muschamp.ca/2013/04/23/plugging-away-at-peeved-penguins-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://img.youtube.com/vi/P4mGrgpYsVY/2.jpg" />
		<media:content url="http://img.youtube.com/vi/P4mGrgpYsVY/2.jpg" medium="image" />
	</item>
		<item>
		<title>My Favourite Albums</title>
		<link>http://blog.muschamp.ca/2013/03/07/my-favourite-albums/</link>
		<comments>http://blog.muschamp.ca/2013/03/07/my-favourite-albums/#comments</comments>
		<pubDate>Thu, 07 Mar 2013 22:34:08 +0000</pubDate>
		<dc:creator>Muskie</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[album]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[CD]]></category>
		<category><![CDATA[covers]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[Last.fm]]></category>
		<category><![CDATA[mashup]]></category>
		<category><![CDATA[Top 10]]></category>
		<category><![CDATA[vinyl]]></category>
		<category><![CDATA[web mashup]]></category>

		<guid isPermaLink="false">http://blog.muschamp.ca/?p=5855</guid>
		<description><![CDATA[I keep trying to improve my various web mashups as APIs change and I pick up a new trick or two. One idea I had was to decrease the number of albums from every CD I own to say one hundred. I thought this would make the code run better as a lot of effort [...]
Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2009/05/28/ten-canadian-albums-that-should-be-in-your-collection/' rel='bookmark' title='Ten Canadian Albums that should be in your collection'>Ten Canadian Albums that should be in your collection</a></li>
<li><a href='http://blog.muschamp.ca/2013/03/03/finding-audio-previews-for-album-tracks-in-itunes-with-php/' rel='bookmark' title='Finding audio previews for album tracks in iTunes with PHP'>Finding audio previews for album tracks in iTunes with PHP</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I keep trying to improve <a href="http://www.muschamp.ca/Muskie/webMashups.html">my various web mashups</a> as APIs change and I pick up a new trick or two. One idea I had was to decrease the number of albums from every CD I own to say one hundred. I thought this would make the code run better as a lot of effort is spent trying to find information about obscure albums. Even my top 100 albums includes some unusual choices.</p>
<p>In selecting these 100 albums I relied on my memory, which albums did I listen to a lot when I was younger? I also looked at which CDs I owned which I&#8217;d previously owned on cassette tape. I also consulted iTunes. I&#8217;ve been using iTunes for over a decade yet I know it loses metadata such as play counts. All my CDs are in storage so I shouldn&#8217;t be losing plays of late, but despite using exclusively Apple computers, Apple mobile devices, and even <a title="iTunes Match Disappoints So Far" href="http://blog.muschamp.ca/2011/12/28/itunes-match-disappoints-so-far/">springing for iTunes Match</a>, I know many of my listens have gone unrecorded.</p>
<p>It didn&#8217;t really matter as just looking at the tracks I&#8217;ve listened to more than say 15 times revealed a lot. I decided my list would not include any compilations or greatest hits packages just real albums. <em>I own a lot of compilations, soundtracks, and career retrospective CDs.</em> I&#8217;ve listened to them a lot and this used to be the only way to get certain songs, but now you can buy so many individual tracks online, people don&#8217;t listen to albums anymore. I myself mainly listen mostly to custom playlists I&#8217;ve made on iTunes.</p>
<p>Many years ago, perhaps in 2001 I wrote <a href="http://www.muschamp.ca/Muskie/obscureFacts.html#FavoriteNonLiveAlbums">my personal top 10 albums of all time</a>. That time I not only eliminated compilations but also &#8216;live&#8217; albums.</p>
<blockquote><p>&#8220;Live music is better, bumper stickers should be issued.&#8221;</p></blockquote>
<h3>The list is in no particular order:</h3>
<ul>
<li>J.J. Cale, &#8220;Troubadour&#8221;</li>
<li>The Who, &#8220;Who&#8217;s Next&#8221;</li>
<li>The Grateful Dead, &#8220;Workingman&#8217;s Dead&#8221;</li>
<li>The Doors, &#8220;Strange Days&#8221;</li>
<li>Bob Dylan, &#8220;The Freewheelin&#8217; Bob Dylan&#8221;</li>
<li>Koerner &amp; Murphy, &#8220;Running Jumping Standing Still&#8221;</li>
<li>The Beatles, &#8220;white album&#8221;</li>
<li>Black Sabbath, &#8220;Paranoid&#8221;</li>
<li>The Band, &#8220;The Last Waltz&#8221;</li>
<li>A Tribe Called Quest, &#8220;The Low End Theory&#8221;</li>
<li>Beastie Boys, &#8220;Ill Communication&#8221;</li>
<li>Beastie Boys, &#8220;Licensed to Ill&#8221;</li>
<li>RUN DMC, &#8220;Raising Hell&#8221;</li>
<li>Eric B. &amp; Rakim, &#8220;Paid in Full&#8221;</li>
<li>Curtis Mayfield, &#8220;Superfly&#8221;</li>
<li>Beastie Boys, &#8220;Check your head&#8221;</li>
<li>Slick Rick, &#8220;The great adventures of Slick Rick&#8221;</li>
<li>Public Enemy, &#8220;It takes a nation of millions&#8221;</li>
<li>Terminator X, &#8220;The Valley of the Jeep Beats&#8221;</li>
<li>Beastie Boys, &#8220;Paul&#8217;s Boutique&#8221;</li>
<li>Canned Heat, &#8220;Hooker &#8216;n Heat&#8221;</li>
<li>RL Burnside, &#8220;A Ass Pocket of Whiskey&#8221;</li>
<li>RL Burnside, &#8220;Too Bad Jim&#8221;</li>
<li>Neil Young, &#8220;Tonight&#8217;s the Night&#8221;</li>
<li>Neil Young and Crazy Horse, &#8220;Everybody knows this is nowhere&#8221;</li>
<li>Neil Young and Crazy Horse, &#8220;Live Rust&#8221;</li>
<li>Neil Young, &#8220;Harvest&#8221;</li>
<li>Neil Young, &#8220;Harvest Moon&#8221;</li>
<li>Buffalo Springfield, &#8220;Buffalo Springfield&#8221;</li>
<li>Townes Van Zandt, &#8220;Rear View Mirror&#8221;</li>
<li>Johnny Cash, &#8220;American Recordings&#8221;</li>
<li>Johnny Cash, &#8220;American III: Solitary Man&#8221;</li>
<li>The Supersuckers, &#8220;Must&#8217;ve Been High&#8221;</li>
<li>The Waco Brothers, &#8220;Do you think about me?&#8221;</li>
<li>Steve Earle, &#8220;Train a comin&#8217;&#8221;</li>
<li>Steve Earle and the Del McCoury Band, &#8220;The Mountain&#8221;</li>
<li>Emmylou Harris, &#8220;Spyboy&#8221;</li>
<li>Emmylou Harris, &#8220;Wrecking Ball&#8221;</li>
<li>Steve Earle, &#8220;El Corazon&#8221;</li>
<li>Johnny Cash and Willie Nelson, &#8220;VH1 Storytellers&#8221;</li>
<li>Johnny Cash, &#8220;Unchained&#8221;</li>
<li>Shaver, &#8220;Tramp on your street&#8221;</li>
<li>Neil Young, &#8220;Old ways&#8221;</li>
<li>Tom Petty, &#8220;Wildflowers&#8221;</li>
<li>Matthew Sweet, &#8220;Son of Altered Beast&#8221;</li>
<li>Matthew Sweet, &#8220;Girlfriend&#8221;</li>
<li>Matthew Sweet, &#8220;Altered Beast&#8221;</li>
<li>Nirvana, &#8220;Unplugged in New York&#8221;</li>
<li>R.E.M., &#8220;Automatic for the people&#8221;</li>
<li>Todd Snider, &#8220;Songs for the Daily Planet&#8221;</li>
<li>Blues Traveler, &#8220;Four&#8221;</li>
<li>the Watchmen, &#8220;McLarenFurnaceRoom&#8221;</li>
<li>Blackie &amp; the Rodeo Kings, &#8220;High or Hurtin&#8217;&#8221;</li>
<li>Rheostatics, &#8220;Double Live&#8221;</li>
<li>Hayden, &#8220;everything i long for&#8221;</li>
<li>Rheostatics, &#8220;Introducing Happiness&#8221;</li>
<li>The Odds, &#8220;Good Weird Feeling&#8221;</li>
<li>Junkhouse, &#8220;Birthday Boy&#8221;</li>
<li>Rheostatics, &#8220;Whale Music&#8221;</li>
<li>Turbonegro, &#8220;Apocalypse Dudes&#8221;</li>
<li>Townes Van Zandt, &#8220;Our Mother the Mountain&#8221;</li>
<li>Townes Van Zandt, &#8221; Live at the old quarter&#8221;</li>
<li>Ron Sexsmith, &#8220;Blue Boy&#8221;</li>
<li>The Who, &#8220;Live at Leeds&#8221;</li>
<li>Waylon Jennings, &#8220;Honky Tonk Heroes&#8221;</li>
<li>RL Burnside, &#8220;Burnside on Burnside&#8221;</li>
<li>Ron Sexsmith, &#8220;Whereabouts&#8221;</li>
<li>Luther Wright and the Wrongs, &#8220;Rebuild the Wall&#8221;</li>
<li>Cake, &#8220;Fashion Nugget&#8221;</li>
<li>Steve Earle &amp; the Dukes, &#8220;Shut up and die like an Aviator&#8221;</li>
<li>The Supersuckers, &#8220;Must&#8217;ve been live&#8221;</li>
<li>The Meat Purveyors, &#8220;All Relationships are doomed to fail&#8221;</li>
<li>J.J. Cale, &#8220;Naturally&#8221;</li>
<li>MC5, &#8220;Kick Out the Jams&#8221;</li>
<li>Gillian Welch, &#8220;Time (Revelator)&#8221;</li>
<li>The Flying Burrito Brothers, &#8220;Gilded Palace of Sin&#8221;</li>
<li>Old 97&#8242;s, &#8220;Wreck Your Life&#8221;</li>
<li>Warren Zevon, &#8220;Warren Zevon&#8221;</li>
<li>Robert Randolph and the Family Band, &#8220;Live at the Wetlands&#8221;</li>
<li>Luke Doucet, &#8220;Broken (and other rogue states)&#8221;</li>
<li>Leonard Cohen, &#8220;I&#8217;m your man&#8221;</li>
<li>The Meat Purveyors, &#8220;Pain by Numbers&#8221;</li>
<li>The Meat Purveyors, &#8220;Sweet in the pants&#8221;</li>
<li>Lucinda Williams, &#8220;Live at the El Rey Theater&#8221;</li>
<li>Lucinda Williams, &#8220;Live @ the Fillmore&#8221;</li>
<li>Johnny Cash, &#8220;At Folsom Prison and San Quentin&#8221;</li>
<li>Gram Parsons, &#8220;GP&#8221;</li>
<li>Gram Parsons, &#8220;Grievous Angel&#8221;</li>
<li>Howlin&#8217; Wolf, &#8220;The London Howlin&#8217; Wolf Sessions&#8221;</li>
<li>The Rolling Stones, &#8220;Exile on Main Street&#8221;</li>
<li>The Jeff Healey Band, &#8220;Cover to Cover&#8221;</li>
<li>Tom Waits, &#8220;Foreign Affair&#8221;</li>
<li>Scott H. Biram, &#8220;Dirty Old One Man Band&#8221;</li>
<li>Big Sugar, &#8220;Hemi-vision&#8221;</li>
<li>Blackie &amp; the Rodeo Kings, &#8220;BARK&#8221;</li>
<li>The Byrds, &#8220;Sweetheart of the Rodeo&#8221;</li>
<li>Willie Nelson, &#8220;Milk Cow Blues&#8221;</li>
<li>North Mississippi Allstars, &#8220;Electric Blue Watermelon&#8221;</li>
<li>Lucinda Williams, &#8220;Car wheels on a gravel road&#8221;</li>
<li>Bob Log III, &#8220;Log Bomb&#8221;</li>
</ul>
<p>I reserve the right to alter this list in the near future and in say ten years. <strong>In ten years will artists even release albums?</strong> Some people like the physical sensation of albums, <a href="http://www.huffingtonpost.ca/2013/03/08/vinyl-revival-millennials-music_n_2782168.html">vinyl continues to sell better and better</a>. My records are also in storage, my problem with vinyl is a side is only 20 or so minutes. I don&#8217;t like getting up and flipping the record that frequently. I like to put music on and paint or work at my computer. I own a 5 CD changer and my old mini system could play 10 CDs in succession or randomly select songs from them all.</p>
<p>It goes without saying that I like all these albums and many of them would make good additions to your own music collection. I&#8217;ve spent hard earned money on them as I&#8217;m not one for ripping off artists. I still am trying to make an even better online album over gallery, here is a screenshot of one of my previous efforts which includes some of these albums, but not all. Some album covers are difficult to find using APIs as they may be out of print or not for sale in Amazon or iTunes.</p>
<p><img class="aligncenter" src="/Pictures/2013/cdCovers.jpg" alt="Some of the covers of some of the CDs I own" width="600" height="321" /></p>
<p>If you want to know more about any of these albums I suggest trying <a href="http://www.muschamp.ca/Muskie/cdCollectionBrowser.php">my CD Collection Browser mashup</a> or <a href="http://www.muschamp.ca/Muskie/randomCDMashup.php">my Random CD mashup</a>. I&#8217;ve also put a lot of thought, time, and effort into choosing <a title="My Favourite Songs of All Time!" href="http://blog.muschamp.ca/2011/01/06/my-favourite-songs-of-all-time/">my favourite songs of all time</a> and I created a special <a href="http://www.muschamp.ca/Muskie/favouriteSongs.php">mashup</a> for them too.</p>
<p><img class="aligncenter" src="/Pictures/2013/lastfmTop15Artists.jpg" alt="My top 15 most played artists according to Last.fm" width="600" height="417" /></p>
<p><a href="http://www.last.fm/user/Muskie">I&#8217;ve been using Last.fm</a> for less time than I&#8217;ve been using iTunes and I definitely don&#8217;t remember to scrobble all the music I listen to. Last.fm&#8217;s app can be a bit annoying but I wanted to use their API and it integrates pretty well with iTunes. It might even do a better job of counting all my &#8216;plays&#8217;.</p>
<p>The problem with all this technology is it doesn&#8217;t count all the time I spent listening to actual records as a kid. My babysitter gave me her &#8217;45&#8242; collection similar to &#8220;Almost Famous&#8221;. I also listened to a lot of tapes on a lot of car rides, so what <a href="http://www.muschamp.ca/Muskie/tapes.csv">cassettes I own</a> shows what music I listened to before iTunes and Last.fm were even invented, <strong>before the CD was invented</strong>.</p>
<p>Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2009/05/28/ten-canadian-albums-that-should-be-in-your-collection/' rel='bookmark' title='Ten Canadian Albums that should be in your collection'>Ten Canadian Albums that should be in your collection</a></li>
<li><a href='http://blog.muschamp.ca/2013/03/03/finding-audio-previews-for-album-tracks-in-itunes-with-php/' rel='bookmark' title='Finding audio previews for album tracks in iTunes with PHP'>Finding audio previews for album tracks in iTunes with PHP</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.muschamp.ca/2013/03/07/my-favourite-albums/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://blog.muschamp.ca/Pictures/2013/cdCovers.jpg" />
		<media:content url="http://blog.muschamp.ca/Pictures/2013/cdCovers.jpg" medium="image">
			<media:title type="html">Some of the covers of some of the CDs I own</media:title>
		</media:content>
		<media:content url="http://blog.muschamp.ca/Pictures/2013/lastfmTop15Artists.jpg" medium="image">
			<media:title type="html">My top 15 most played artists according to Last.fm</media:title>
		</media:content>
	</item>
		<item>
		<title>LinkedIn Phishing Scam?</title>
		<link>http://blog.muschamp.ca/2013/03/06/linkedin-phishing-scam/</link>
		<comments>http://blog.muschamp.ca/2013/03/06/linkedin-phishing-scam/#comments</comments>
		<pubDate>Wed, 06 Mar 2013 18:10:26 +0000</pubDate>
		<dc:creator>Muskie</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Online Social Networks]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[phishing]]></category>
		<category><![CDATA[scam]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spoofing]]></category>

		<guid isPermaLink="false">http://blog.muschamp.ca/?p=5849</guid>
		<description><![CDATA[This morning I got a rather odd email purporting to be from LinkedIn&#8216;s Marketing department. It made it through all my filters and the headers look reasonable, but based on the poor formatting of the email and the fact I&#8217;ve been on LinkedIn a long time, I don&#8217;t think it is completely on the level. [...]
Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2006/04/18/linkedincom-profitable/' rel='bookmark' title='LinkedIn.com Profitable'>LinkedIn.com Profitable</a></li>
<li><a href='http://blog.muschamp.ca/2007/01/04/more-linkedincom-observations/' rel='bookmark' title='More LinkedIn.com Observations'>More LinkedIn.com Observations</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>This morning I got a rather odd email purporting to be from <a href="http://www.linkedin.com">LinkedIn</a>&#8216;s Marketing department. It made it through all my filters and the headers look reasonable, but based on the poor formatting of the email and the fact I&#8217;ve been on LinkedIn a long time, I don&#8217;t think it is completely on the level.</p>
<p>I regularly get contacted by complete strangers who want to link in. Often these people are in other countries: India, the Middle East, even the UK. I generally always refuse as I&#8217;ve been treated very poorly by people I trusted in the past and now am slow to trust anyone. These emails all follow the same format. I&#8217;ve never believed in linking in with random strangers just to increase the size of your network.</p>
<p>Below is the email I received. I&#8217;ve taken to documenting these as others will likely receive the same email. When you get an unexpected email it is wisest not to click any links. If the email appears to be from someone you know, you can phone them and double check or login in a fresh browser to a social network and message them that way. Replying to the email will likely put you on a list. <em>The safest course of action is to delete the email.</em> If the email is from a financial institution especially one you don&#8217;t have an account with, <strong>it is spam</strong>, but most banks have means of reporting these <a href="http://en.wikipedia.org/wiki/Phishing">phishing exploits</a>. I&#8217;ve reported a few but it is quick for me to just blog and <a title="$4,000,000.00 Spam" href="http://blog.muschamp.ca/2012/10/11/4000000-00-spam/">warn others</a> that way.</p>
<p>The damn email is formatted so oddly it doesn&#8217;t render correctly. The &#8220;LinkedIn Marketing Department&#8221; also knows when to use &#8220;an&#8221; instead of &#8220;a&#8221; <em>one would hope</em>. I ended up removing some white space and I added two linebreaks.</p>
<pre>From ???@??? Wed Mar  6 09:55:47 2013
Return-path: 
Envelope-to: andrew@muschamp.ca
Delivery-date: Wed, 06 Mar 2013 02:15:29 -0500
Received: from [116.6.208.34]
	by www30.yourdnshost.com with esmtp (Exim 4.72)
	(envelope-from )
	id 1UD8ZU-0001Cf-Kt
	for andrew@muschamp.ca; Wed, 06 Mar 2013 02:15:29 -0500
X-Apparently-To:  via 254.244.155.230; Wed, 6 Mar 2013 15:15:27 +0800
Authentication-Results:   from=alerts.linkedin.com; domainkeys=neutral (no sig); 
from=alerts.linkedin.com; dkim=neutral (no sig)
Received: from [100.224.225.211] (port=75640 helo=[192.168.2.09])
	by 116.6.208.34 with asmtp
        id 7PLAUn-21875 
        X-FR; Wed, 6 Mar 2013 15:15:27 +0800
Date: Wed, 6 Mar 2013 15:15:27 +0800
From: neoclassicism8961@e-alerts.linkedin.com
X-Priority: 3 (Normal)
Message-ID: 
To: 
Subject: Reminder about requests
MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary="----------191828763912065YB"
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - 
X-AntiAbuse: Original Domain - alerts.linkedin.com
X-AntiAbuse: Sender Address Domain - alerts.linkedin.com
X-BWhitelist: no
X-Source: 
X-Source-Args: 
X-Source-Dir: 
X-Source-Sender: [192.168.9.70]
X-Source-Auth: neoclassicism8961@e-alerts.linkedin.com
X-Email-Count: 1

andrew@muschamp.caSee who linked you as co-worker on LinkedInNow it's easy to connect 
with people you emailContinue

This is an  casual LinkedIn Marketing email to help you get the most out of LinkedIn. Unsubscribe
© 2013, LinkedIn Corporation. 2026 Stierlin Ct, Mountain View, CA 92083</pre>
<p>Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2006/04/18/linkedincom-profitable/' rel='bookmark' title='LinkedIn.com Profitable'>LinkedIn.com Profitable</a></li>
<li><a href='http://blog.muschamp.ca/2007/01/04/more-linkedincom-observations/' rel='bookmark' title='More LinkedIn.com Observations'>More LinkedIn.com Observations</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.muschamp.ca/2013/03/06/linkedin-phishing-scam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>RSS Feed from Twitter Search with PHP</title>
		<link>http://blog.muschamp.ca/2013/03/04/rss-feed-from-twitter-search-with-php/</link>
		<comments>http://blog.muschamp.ca/2013/03/04/rss-feed-from-twitter-search-with-php/#comments</comments>
		<pubDate>Mon, 04 Mar 2013 22:41:23 +0000</pubDate>
		<dc:creator>Muskie</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Online Social Networks]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[CodeBird]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Topsy]]></category>
		<category><![CDATA[TOS]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://blog.muschamp.ca/?p=5842</guid>
		<description><![CDATA[Twitter is removing support for RSS feeds in a few days. If you actually used the RSS feed feature of the original Twitter API this is disappointing. Twitter wants to know who is making every single request to their API whereas RSS is fairly anonymous. I was also using Topsy to search Twitter and then [...]
Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2012/04/25/feed-me/' rel='bookmark' title='Feed Me!'>Feed Me!</a></li>
<li><a href='http://blog.muschamp.ca/2013/02/03/changed-how-i-use-twitter-lists/' rel='bookmark' title='Changed how I use Twitter Lists'>Changed how I use Twitter Lists</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://mashable.com/2012/09/05/twitter-api-rss/">Twitter is removing support for RSS feeds in a few days.</a> If you actually used the RSS feed feature of the original Twitter API this is disappointing. Twitter wants to know who is making every single request to their API whereas RSS is fairly anonymous. I was also using Topsy to search Twitter and then I subscribed to an RSS feed of those results. This is one of the <a title="Feed Me!" href="http://blog.muschamp.ca/2012/04/25/feed-me/">techniques</a> I used when I built my custom news aggregator.</p>
<p><a href="http://code.google.com/p/otterapi/">Topsy now wants you to pay to use their API</a> including their RSS feeds. Twitter&#8217;s API is still free to use, but <em>all your RSS feeds will stop working on March 5th, aka tomorrow</em>. So after my <a title="3 More CFA Questions" href="http://blog.muschamp.ca/2013/03/04/3-more-cfa-questions/">interruption to answer random math questions</a>, I finished my quick and dirty RSS feed for a keyword search on Twitter using version 1.1 of their API.</p>
<p>Since Twitter is removing official RSS feeds they might not be amused that I hacked out a workaround this morning and am posting it to my blog, but <a href="http://www.muschamp.ca/Muskie/resumeFrame.html">if I had a job</a> I wouldn&#8217;t have so much time on my hands. <strong>I don&#8217;t even like PHP.</strong></p>
<p><em>This hasn&#8217;t been exhaustively tested.</em> It doesn&#8217;t support <a href="https://dev.twitter.com/docs/api/1.1/get/search/tweets">every search option in version 1.1 of the Twitter API</a>. It does produce a valid RSS feed for a simple keyword search such as &#8220;Vancouver&#8221;. Quotation marks are not necessary. I&#8217;m going to polish it a bit more but here is the minimal viable solution for turning search results from Twitter into an RSS feed.</p>
<p><a title="Been Building Stuff with PHP" href="http://blog.muschamp.ca/2013/02/28/been-building-stuff-with-php/">I use CodeBird and the same basic technique to search Twitter</a> as before, I then used the <a title="Merging feeds with SimplePie and PHP" href="http://blog.muschamp.ca/2012/04/27/merging-feeds-with-simplepie-and-php/">same basic technique I used with SimplePie</a> to make the RSS feed. I used some sort of standard PHP method of passing a variable to a URL aka <em>php?q=searchterm</em> and currently I don&#8217;t do a lot of validation or beautifying or ensure for all possible tweets that I produce valid XML.</p>
<p><iframe style="border: none; width: 100%;" src="http://pastebin.com/embed_iframe.php?i=r79qvwVN" width="320" height="240"></iframe></p>
<p>I don&#8217;t think this violates <a href="https://dev.twitter.com/terms/api-terms">Twitter&#8217;s terms of service</a>, but you are supposed to meet the display requirements which you can not do with just the contents of the RSS feed. Of course if you just want to subscribe to the RSS feed in your newsreader or something else you&#8217;ve coded up to monitor keywords this code is the basis of a workaround.</p>
<p><img class="aligncenter" title="Results for searching Twitter for Vancouver and then creating an RSS feed" src="/Pictures/2013/rssForTwitterResults.jpg" alt="" width="600" height="359" /></p>
<p><img class="aligncenter" src="/Pictures/2013/validRSSFeed.jpg" alt="PHP code produces valid RSS feed" width="600" height="214" /></p>
<p>Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2012/04/25/feed-me/' rel='bookmark' title='Feed Me!'>Feed Me!</a></li>
<li><a href='http://blog.muschamp.ca/2013/02/03/changed-how-i-use-twitter-lists/' rel='bookmark' title='Changed how I use Twitter Lists'>Changed how I use Twitter Lists</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.muschamp.ca/2013/03/04/rss-feed-from-twitter-search-with-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://blog.muschamp.ca/Pictures/2013/rssForTwitterResults.jpg" />
		<media:content url="http://blog.muschamp.ca/Pictures/2013/rssForTwitterResults.jpg" medium="image">
			<media:title type="html">Results for searching Twitter for Vancouver and then creating an RSS feed</media:title>
		</media:content>
		<media:content url="http://blog.muschamp.ca/Pictures/2013/validRSSFeed.jpg" medium="image">
			<media:title type="html">PHP code produces valid RSS feed</media:title>
		</media:content>
	</item>
		<item>
		<title>3 More CFA Questions</title>
		<link>http://blog.muschamp.ca/2013/03/04/3-more-cfa-questions/</link>
		<comments>http://blog.muschamp.ca/2013/03/04/3-more-cfa-questions/#comments</comments>
		<pubDate>Mon, 04 Mar 2013 19:47:12 +0000</pubDate>
		<dc:creator>Muskie</dc:creator>
				<category><![CDATA[CFA]]></category>
		<category><![CDATA[AnalystForum]]></category>
		<category><![CDATA[annual return]]></category>
		<category><![CDATA[forum]]></category>
		<category><![CDATA[holding period yield]]></category>
		<category><![CDATA[quarterly return]]></category>
		<category><![CDATA[question]]></category>
		<category><![CDATA[time value of money]]></category>

		<guid isPermaLink="false">http://blog.muschamp.ca/?p=5835</guid>
		<description><![CDATA[First of all it should go without saying, you have to pass the CFA exams yourself, it isn&#8217;t like &#8220;Who wants to be a millionaire?&#8221;, you don&#8217;t get to phone a friend when you get stuck. Secondly if you&#8217;re going to go to the trouble of finding my blog, then my phone number, which only [...]
Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2012/11/24/29-cfa-questions-you-should-be-able-to-answer/' rel='bookmark' title='30 CFA Questions you should be able to answer'>30 CFA Questions you should be able to answer</a></li>
<li><a href='http://blog.muschamp.ca/2009/12/14/free-cfa-level-1-study-materials/' rel='bookmark' title='FREE CFA Level 1 Study Materials'>FREE CFA Level 1 Study Materials</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>First of all it should go without saying, you have to pass the CFA exams yourself, it isn&#8217;t like &#8220;Who wants to be a millionaire?&#8221;, you don&#8217;t get to phone a friend when you get stuck. Secondly if you&#8217;re going to go to the trouble of finding my blog, then my phone number, which only appears on <a href="http://www.muschamp.ca/Muskie/resumeFrame.html">my resume</a>, I&#8217;d appreciate it if you called me about a potential job offer, not some CFA questions you read in a book and are unsure how to solve.</p>
<p>I most definitely don&#8217;t have all the answers, I&#8217;m just a guy. Nonetheless here are the questions and my attempt to recollect the answers having not studied this material in well over a year. In future it would be better to post questions like these to an online forum such <a href="http://www.analystforum.com">AnalystForums</a> where multiple people could attempt them. <a href="http://www.analystforum.com/forums/cfa-forums/cfa-level-i-forum/91318623">I should probably crosspost&#8230;</a></p>
<h3>Question 1</h3>
<blockquote><p>You buy a share of Microsoft in 1987 for $0.20 per share. You sell the stock for $32/share in 2012. What was your total return over your holding period? What was your annual return over this time period?</p></blockquote>
<p>The return over a <a href="https://cfacuecards.wordpress.com/2012/06/11/effective-annual-yield/">holding period</a> is calculated as follows:</p>
<ul>
<li>HPY = (P1 – P0 + D1) / P0 which in our case is: (32 &#8211; .2) / .2 = 159</li>
</ul>
<p>The next part of the question is a bit less clear, the question is probably asking for the effective annual yield. Yield and return can be used almost interchangeably. Reading comprehension is a big part of the CFA exam in addition to memorization and ability to calculate solutions. The Investopedia provides <a href="http://www.investopedia.com/terms/h/holdingperiodreturn-yield.asp#axzz2MbA8pSCL">the following formula</a>:</p>
<ul>
<li>HPY^(1/years held) all minus 1 which in our case is 159^(1/25) &#8211; 1 = .2248</li>
</ul>
<h3>Question 2</h3>
<blockquote><p>Stock A is selling for $100 per share today. You believe each share of Stock A will sell for $110 in one year. Your next best investment generates a 5% return per year. a. Is Stock A worth buying at $100 per share today? Why or why not? b. What is the highest price you would be willing to pay for Stock A? c. You find Bond B which promises 18% return per year. Does this change the price you are willing to pay for Stock A? If not, why not? If so, what is the new price you are willing to pay for Stock A?</p></blockquote>
<p><strong>Yes</strong> getting ten dollars profit in one year is better than getting five dollars profit in one year. A stock worth $110 in the future with interest rates at 5% is worth 104.76 now.</p>
<p>The final part of the question makes it abundantly clear that 18% is better than the return on the stock if you pay $104.76 per share, in order for the stock to become a better investment than the bond its current price must be 93.22 or lower.</p>
<h3>Question 3</h3>
<blockquote><p>You buy a stock in Company B on January 1, 2000 for $100. The stock pays you a 1% dividend every quarter on the last day of the quarter. On January 1, 2002, the stock is selling for $100. Please assume that all dividends are reinvested in the stock, and that the stock price has remained at $100 throughout the 2 year period. What was your return over the 2 year holding period? What was your annual return?</p></blockquote>
<p>This question is more difficult and would be better illustrated with a spreadsheet perhaps, but in the CFA exam you have your calculator and your wits, sometimes you lose one or the other&#8230; Where it says <strong>&#8220;Please assume that all dividends are reinvested in the stock&#8221;</strong> makes this question more complicated, but given that on the CFA Level 1 exam the answer has to be one of A, B, or C, the solution is most likely to use one of the many <a href="https://cfacuecards.wordpress.com/?s=return">return</a> or <a href="https://cfacuecards.wordpress.com/?s=yield">yield</a> formulas or the <a href="http://en.wikipedia.org/wiki/Time_value_of_money">Time Value of Money</a> function on your calculator.</p>
<p>One thing that you have to learn is most yields are stated annually, 1% annually is actually .25 per quarter.</p>
<ul>
<li>PV = -100</li>
<li>FV = 100</li>
<li>PMT = .25</li>
<li>N = 2 * 4</li>
<li>I =  CPT</li>
</ul>
<p>I or I/Y or yield is .25 using my BA II Plus which I dug out to answer these questions, because in the exam you don&#8217;t get a laptop or Excel, <em>knowing how to calculate the answer with Excel won&#8217;t help you come exam time</em>. This is the quarterly return. <a href="http://www.wikihow.com/Annualize-a-Quarterly-Return">Annualizing a quarterly return</a> isn&#8217;t hard, but with the current numbers the answer comes back  a suspicious 1%. Which if I&#8217;m incorrect means I made a false assumption or this question is trying to be overly cute. Replacing PMT with 1 above yields an I/Y value of 1, but if you assume that is a quarterly rate and convert it to an annual rate using the formula linked to above, the answer is then .0406.</p>
<p>In a real exam you are very much pressed for time, you can&#8217;t look up formulas on the Internet, but sometimes you have to perform a calculation more than once just to be sure. Sometimes the answer will state .0406 another time it might be stated 4.06%, some questions might give you two answers that differ by a factor or 10 or 100. In the real CFA Level 1 exam every question is multiple choice and you have 1.5 minutes to answer each question, some questions will have two or more parts, that doesn&#8217;t mean they&#8217;ll give you more time. Sometimes you can get away with calculating only one part of a question and then using logic to deduce the other portion.</p>
<p>The other part of the question is easier to get an answer close to correct:</p>
<ul>
<li>P1 = 100</li>
<li>P0 = 100</li>
<li>D = .25 * 8 (approximately)</li>
</ul>
<p>The answer for holding period yield is about 2%. Many, many times on the CFA Level 1 exam it will say choose the answer closest to the correct value. Hopefully on an exam you can use these numbers to circle the correct answer, the formulas I&#8217;ve used I think are correct.</p>
<p>Even though I am unemployed, I do have stuff to do at 10:00 AM on Monday morning. I don&#8217;t mind trying to help people, <em>well I do mind trying to help some people&#8230;</em> <a title="CFA Study Materials" href="http://blog.muschamp.ca/2012/04/30/cfa-study-materials/">I&#8217;ve made a lot of study materials available free of charge</a>, some people think I should charge for them. It is definitely better to contact me via email or blog comment than by phone for questions regarding my blog. It is also probably in your best interest if you are stuck on a CFA question to find a study group or post questions to an online forum.</p>
<p>I passed the Level 1 CFA exam all by myself using primarily the official CFA curriculum books. That isn&#8217;t necessarily the easiest way, but there were reasons&#8230;</p>
<p>Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2012/11/24/29-cfa-questions-you-should-be-able-to-answer/' rel='bookmark' title='30 CFA Questions you should be able to answer'>30 CFA Questions you should be able to answer</a></li>
<li><a href='http://blog.muschamp.ca/2009/12/14/free-cfa-level-1-study-materials/' rel='bookmark' title='FREE CFA Level 1 Study Materials'>FREE CFA Level 1 Study Materials</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.muschamp.ca/2013/03/04/3-more-cfa-questions/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
	</item>
		<item>
		<title>Finding audio previews for album tracks in iTunes with PHP</title>
		<link>http://blog.muschamp.ca/2013/03/03/finding-audio-previews-for-album-tracks-in-itunes-with-php/</link>
		<comments>http://blog.muschamp.ca/2013/03/03/finding-audio-previews-for-album-tracks-in-itunes-with-php/#comments</comments>
		<pubDate>Sun, 03 Mar 2013 19:58:52 +0000</pubDate>
		<dc:creator>Muskie</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Amazon Product Advertising API]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[CURL]]></category>
		<category><![CDATA[gitHub]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Last.fm]]></category>
		<category><![CDATA[mashup]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[TOS]]></category>

		<guid isPermaLink="false">http://blog.muschamp.ca/?p=5827</guid>
		<description><![CDATA[When I started building my mashups with PHP one idea I had was to fetch audio previews for songs and albums, this was actually supposedly possible with the Amazon Product Advertising API, but I could never get it to work with the limited data I had in my csv file. Last.fm does not provide audio [...]
Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2010/10/07/cd-cover-gallery-is-pretty-much-done/' rel='bookmark' title='CD Cover Gallery is pretty much done'>CD Cover Gallery is pretty much done</a></li>
<li><a href='http://blog.muschamp.ca/2012/10/29/cd-cover-gallery-php-code/' rel='bookmark' title='CD Cover Gallery PHP Code'>CD Cover Gallery PHP Code</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>When I started building <a href="http://www.muschamp.ca/Muskie/webMashups.html">my mashups</a> with PHP one idea I had was to fetch audio previews for songs and albums, this was actually supposedly possible with <a href="https://affiliate-program.amazon.com/gp/advertising/api/detail/main.html">the Amazon Product Advertising API</a>, but I could never get it to work with the limited data I had in my csv file. <a href="http://www.last.fm/api">Last.fm</a> does not provide audio previews through their API either. iTunes Music Store isn&#8217;t perhaps known for <a href="http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html">their API</a>, nor can you earn any referral income <em>if you&#8217;re Canadian</em> but I actually was able to fetch direct links to audio previews from the iTunes Music Store using their Search API.</p>
<p>I&#8217;m not sure Apple would applaud this, I&#8217;ve been doing it for well over a year, but it is only used as part of one or two of my web mashups. I don&#8217;t think I violate the TOS, I do cache the returned JSON results but only to prevent repeated redundant calls to Apple&#8217;s API. I don&#8217;t cache images and certainly not audio previews. I&#8217;m not sure I meet their display requirements, <strong>frickin&#8217; display requirements&#8230;</strong></p>
<p>Considering how much time and effort I spent debugging and re-reading API documentation there may be other methods I&#8217;ve written which people would find useful, but no one uses because they don&#8217;t want to jump through all the hoops necessary to use my mashup codebase. Apple doesn&#8217;t require public and private keys or <a href="http://en.wikipedia.org/wiki/OAuth">OAuth</a> or hashing, you can just format a URL and get back data. It is up to you to format the URL correctly and parse the data, <em>this is non-trivial</em>.</p>
<p>My solution is part of my musicCollection.php class but it is actually three methods, one which makes requests to the other two. It is necessary to make multiple calls to Apple&#8217;s Search API in order to get the resulting preview tracks for the entire album. You can rip out the caching if you like. My caching technique isn&#8217;t terribly sophisticated, it is contained in caching.php and the code below may need one function from muskLib.php which is just a wrapper for <a href="http://en.wikipedia.org/wiki/CURL">cURL</a>.  All this code is in <a href="https://github.com/muskie">GitHub</a>.</p>
<p><iframe style="border: none; width: 100%;" src="http://pastebin.com/embed_iframe.php?i=61mNQcf8" width="320" height="320"></iframe></p>
<p>I think I&#8217;ll finally switch my mashups to a CSV file that is a subset of my actual collection of albums as things will run faster and smoother. This code has been tested on 100s of different albums, if an album isn&#8217;t in iTunes or there are various different editions of an album, or there two albums by the same artist with the same album title&#8230;</p>
<p><strong>There is no warranty or guarantee for this code and you are responsible for not breaking Apple&#8217;s Terms of Service and/or getting throttled for making excessive number of requests, I recommend you cache what you can.</strong></p>
<p><img class="aligncenter" src="/Pictures/2013/workingAlbumTrackPreviews.jpg" alt="Album track previews from iTunes working on my random CD mashup" width="600" height="360" /></p>
<p>Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2010/10/07/cd-cover-gallery-is-pretty-much-done/' rel='bookmark' title='CD Cover Gallery is pretty much done'>CD Cover Gallery is pretty much done</a></li>
<li><a href='http://blog.muschamp.ca/2012/10/29/cd-cover-gallery-php-code/' rel='bookmark' title='CD Cover Gallery PHP Code'>CD Cover Gallery PHP Code</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.muschamp.ca/2013/03/03/finding-audio-previews-for-album-tracks-in-itunes-with-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:thumbnail url="http://blog.muschamp.ca/Pictures/2013/workingAlbumTrackPreviews.jpg" />
		<media:content url="http://blog.muschamp.ca/Pictures/2013/workingAlbumTrackPreviews.jpg" medium="image">
			<media:title type="html">Album track previews from iTunes working on my random CD mashup</media:title>
		</media:content>
	</item>
		<item>
		<title>Been Building Stuff with PHP</title>
		<link>http://blog.muschamp.ca/2013/02/28/been-building-stuff-with-php/</link>
		<comments>http://blog.muschamp.ca/2013/02/28/been-building-stuff-with-php/#comments</comments>
		<pubDate>Thu, 28 Feb 2013 23:14:48 +0000</pubDate>
		<dc:creator>Muskie</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Self Marketing]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[CodeBird]]></category>
		<category><![CDATA[GData]]></category>
		<category><![CDATA[gitHub]]></category>
		<category><![CDATA[iFrame]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Masonry]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SimplePie]]></category>
		<category><![CDATA[Topsy]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[widget]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://blog.muschamp.ca/?p=5810</guid>
		<description><![CDATA[Although it hasn&#8217;t helped me find a job, I&#8217;ve continued to build stuff with PHP. I&#8217;ve also been brushing up on my Objective-C. After upgrading to use Version 2 of the GData (YouTube) API I had to upgrade to Version 1.1 of the Twitter API. This took a lot more work especially trying to meet [...]
Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2013/02/17/searching-youtube-with-php/' rel='bookmark' title='Searching YouTube with PHP'>Searching YouTube with PHP</a></li>
<li><a href='http://blog.muschamp.ca/2011/05/10/my-php-classes-for-making-web-mashups/' rel='bookmark' title='My PHP classes for making web mashups'>My PHP classes for making web mashups</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Although it hasn&#8217;t helped me find a job, I&#8217;ve continued to build stuff with PHP. I&#8217;ve also been brushing up on my Objective-C. After <a title="Searching YouTube with PHP" href="http://blog.muschamp.ca/2013/02/17/searching-youtube-with-php/">upgrading</a> to use Version 2 of the GData (YouTube) API I had to upgrade to Version 1.1 of the Twitter API. This took a lot more work especially trying to meet <a href="https://dev.twitter.com/terms/display-requirements">the display requirements</a>. I&#8217;m not sure it is perfect, it is close and <em>I&#8217;m still not a PHP guy</em>. Once again I&#8217;ll decided to include the key code snippets in a blog post as no one uses them if I just check them into <a href="https://github.com/muskie">GitHub</a>. Plus the code is probably more useful without all the overhead of every other API.</p>
<p>I&#8217;ve also been trying to use <a href="http://masonry.desandro.com/index.html">Masonry</a> on top of my CD Cover Gallery but I have some bugs to work out. I have an <a href="http://stackoverflow.com/questions/15008694/using-masonry-jquery-and-php-to-make-an-album-cover-gallery">open question on StackOverflow</a> but it is plain I need to brush up on my JavaScript a lot more. <strong>I&#8217;m also not a JavaScript guy.</strong> The best code I&#8217;ve probably written of late is for searching Twitter and then displaying the tweets. My solution uses <a href="https://github.com/mynetx/codebird-php">CodeBird</a> and follows the same <a href="http://oikos.org.uk/2013/02/tech-notes-displaying-twitter-statuses-using-api-v1-1-and-oath/">basic techniques</a> as others.</p>
<h3>Searching Twitter and Displaying the Tweets with PHP &amp; CSS</h3>
<ol>
<li><a href="https://dev.twitter.com">Register an app with Twitter</a>, you will need a pair of keys and two more keys that represent your access token.</li>
<li>Download and create an instance of <a href="https://github.com/mynetx/codebird-php">CodeBird</a> in your code. Instructions are linked to above.</li>
<li><a href="http://oikos.org.uk/2013/02/tech-notes-displaying-twitter-statuses-using-api-v1-1-and-oath/">Borrow two functions</a> from the web: relativeTime() and linkify_tweet().</li>
<li>You need to include widgets.js in your client code, <a href="https://dev.twitter.com/docs/tweet-button">Twitter provides this</a>.</li>
<li>I created two methods, one for searching and one for displaying the returned tweets correctly. I put them in Pastebin in addition to GitHub.</li>
</ol>
<p><iframe style="border: none; width: 100%;" src="http://pastebin.com/embed_iframe.php?i=pqn4hWwH" width="320" height="320"></iframe></p>
<p>You also need a whole bunch of CSS rules to make it look pretty:</p>
<p><iframe style="border: none; width: 100%;" src="http://pastebin.com/embed_iframe.php?i=vkwprJXW" width="320" height="320"></iframe></p>
<p>Of course Pastebin always seems a bit wonky or at least their default embed code is&#8230; <em>I think it doesn&#8217;t like being previewed by WordPress.</em> I&#8217;ve also been trying to build another news aggregator/Internet dashboard. I&#8217;ve include a screenshot of it. I leverage SimplePie, Topsy, as well as iFrames and JavaScript widgets. I may end up using some of the PHP code above too.</p>
<p><img class="aligncenter" src="/Pictures/2013/almostMeetTwitterDisplayRequirements.jpg" alt="My code almost meets the Twitter display requirements" width="600" height="68" /></p>
<p><img class="aligncenter" src="/Pictures/2013/wipCoverGallery.jpg" alt="My latest CD cover gallery is not quite functioning as intended" width="400" height="239" /></p>
<p><img class="aligncenter" src="/Pictures/2013/wipInternetDashboard.jpg" alt="My WIP Internet Dashboard" width="600" height="359" /></p>
<p><img class="aligncenter" src="/Pictures/2013/blockerDemo.jpg" alt="Blocker iPhone Game Screenshot" width="600" height="375" /></p>
<p>Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2013/02/17/searching-youtube-with-php/' rel='bookmark' title='Searching YouTube with PHP'>Searching YouTube with PHP</a></li>
<li><a href='http://blog.muschamp.ca/2011/05/10/my-php-classes-for-making-web-mashups/' rel='bookmark' title='My PHP classes for making web mashups'>My PHP classes for making web mashups</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.muschamp.ca/2013/02/28/been-building-stuff-with-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:thumbnail url="http://blog.muschamp.ca/Pictures/2013/almostMeetTwitterDisplayRequirements.jpg" />
		<media:content url="http://blog.muschamp.ca/Pictures/2013/almostMeetTwitterDisplayRequirements.jpg" medium="image">
			<media:title type="html">My code almost meets the Twitter display requirements</media:title>
		</media:content>
		<media:content url="http://blog.muschamp.ca/Pictures/2013/wipCoverGallery.jpg" medium="image">
			<media:title type="html">My latest CD cover gallery is not quite functioning as intended</media:title>
		</media:content>
		<media:content url="http://blog.muschamp.ca/Pictures/2013/wipInternetDashboard.jpg" medium="image">
			<media:title type="html">My WIP Internet Dashboard</media:title>
		</media:content>
		<media:content url="http://blog.muschamp.ca/Pictures/2013/blockerDemo.jpg" medium="image">
			<media:title type="html">Blocker iPhone Game Screenshot</media:title>
		</media:content>
	</item>
		<item>
		<title>Upcycled Furniture</title>
		<link>http://blog.muschamp.ca/2013/02/26/upcycled-furniture/</link>
		<comments>http://blog.muschamp.ca/2013/02/26/upcycled-furniture/#comments</comments>
		<pubDate>Tue, 26 Feb 2013 21:12:53 +0000</pubDate>
		<dc:creator>Muskie</dc:creator>
				<category><![CDATA[Everything Else]]></category>
		<category><![CDATA[Ana White]]></category>
		<category><![CDATA[casters]]></category>
		<category><![CDATA[clamps]]></category>
		<category><![CDATA[electrical sockets]]></category>
		<category><![CDATA[handyman]]></category>
		<category><![CDATA[Home Improvement]]></category>
		<category><![CDATA[know-it-all]]></category>
		<category><![CDATA[tv stand]]></category>
		<category><![CDATA[woodworking]]></category>

		<guid isPermaLink="false">http://blog.muschamp.ca/?p=5762</guid>
		<description><![CDATA[I read recently about a woman in Alaska who makes her living blogging about woodworking. Apparently that is another niche I missed out on when I set up Muskblog and Muschamp.ca, I&#8217;ve always liked working with wood. Ana White&#8217;s website supposedly gets 100,000 of readers a month, enabling her to sell advertisements and pay for [...]]]></description>
			<content:encoded><![CDATA[<p>I read recently about <a href="http://www.slate.com/articles/double_x/doublex/2012/12/women_and_power_tools_ana_white_launches_a_trend.html">a woman in Alaska who makes her living blogging about woodworking</a>. Apparently that is another niche I missed out on when I set up Muskblog and Muschamp.ca, I&#8217;ve always liked working with wood. Ana White&#8217;s website supposedly gets 100,000 of readers a month, enabling her to sell advertisements and pay for her family expenses. Good for her.</p>
<p style="text-align: center;"><a title="Finished Upcycled TV Stand by Muskie McKay, on Flickr" href="http://www.flickr.com/photos/muskiemckay/8509912123/"><img class="aligncenter" src="http://farm9.staticflickr.com/8373/8509912123_897a770070.jpg" alt="Finished Upcycled TV Stand" width="500" height="375" /></a></p>
<p>This project isn&#8217;t going to win any awards it is not my best work. Middle school shop class was a long time ago and I didn&#8217;t even have the best tools or workspace. The project came about as my mom wanted a really low TV stand on castors to fit into her family room. She wanted to put her largest TV in the room she spends the most time in and she wanted it on wheels so it could be tucked back into the recess when my sister&#8217;s dogs came over. The TV can also be rotated for when she is sitting at her computer or has guests.</p>
<p><a title="Tables to be Upcycled by Muskie McKay, on Flickr" href="http://www.flickr.com/photos/muskiemckay/8509909931/"><img class="alignright" src="http://farm9.staticflickr.com/8237/8509909931_741966cd73_n.jpg" alt="Tables to be Upcycled" width="240" height="320" /></a></p>
<p>She had been looking for one or something that could be adapted when we decided to brave the dangers of her basement and see what we could use from down there. The two end tables were someone&#8217;s school woodworking projects that were abandoned and saved by my Aunt. They were going to become just scrap wood, the best of them had already been upcycled by my grandfather and I years ago. I decided with some cutting of legs and merging two end tables together I could make a sturdy but small TV stand.</p>
<p>Both end tables were not well built, they were not finished, they were not planed well, they wobbled, etc. The first thing I did was put glue in all the gaps and cracks and really clamp it down. This made it sturdier but it became obvious that the tables weren&#8217;t perfectly square or level. I never had the best tools to work with, an old rusty handsaw, a rusty and bent t-square, I did have a sander which means about the only thing well done is the sanding on the table top. But you can&#8217;t sand out flaws in the wood.</p>
<p><a title="More clamping and gluing by Muskie McKay, on Flickr" href="http://www.flickr.com/photos/muskiemckay/8509910303/"><img class="alignleft" src="http://farm9.staticflickr.com/8524/8509910303_88c4e5b9c7_n.jpg" alt="More clamping and gluing" width="240" height="320" /></a></p>
<p>I did some measurements and calculations and once we found some really small casters I cut the four legs down and attached the second tabletop to the base of the better end table&#8217;s shortened legs. I then disassembled it for ease of painting and I tried to use a rasp to level the table, but removing a little the uneven legs. Eventually it had to be deemed good enough and it currently holds my grandmother&#8217;s old TV just fine. I wish it was a tad wider, but the whole thing cost less than ten dollars.</p>
<p>At some point my mom got her kitchen countertops replaced and a tile backsplash put in and some other updates to <a href="http://www.muschamp.ca/Muskie/deepBay.html">her house in Deep Bay</a>. She got the bright idea to change out the old sockets and switches to the new style, but in black with aluminium trim. Unfortunately the holes in the tile were very tight and replacing one switch in particular took a lot of grinding with my poor Dremel rotary tool. We bought a special bit but this tile was really strong and thick.</p>
<p><a title="Working Socket by Muskie McKay, on Flickr" href="http://www.flickr.com/photos/muskiemckay/8509908341/"><img class="alignright" src="http://farm9.staticflickr.com/8094/8509908341_8e69ac12e1_n.jpg" alt="Working Socket" width="320" height="240" /></a></p>
<p>I was going to blog about these projects sooner but they dragged on. The kitchen project in particular required a lot of frustrating work, replacing sockets and switches is easier when the wall is drywall, tile is the worst, but wooden walls can also be problematic. I recommend buying one of those little socket testers and of course turning off the power at the breaker. The other tip is you may need to break of a brass tab when replacing the sockets in particular.  <strong>Look at the old plugins before you unhook them and see if they have the tap broken off.</strong></p>
<p>In addition to sockets and switches I also had to rewire a phonejack. Maybe I should go on <a href="http://www.hgtv.ca/canadashandymanchallenge/">Canada&#8217;s Handyman Challenge</a> or <a href="http://www.discovery.ca/Showpage.aspx?sid=37462">Canada&#8217;s Biggest Know-it-all</a> or even <a href="http://www.tbs.com/shows/king-of-the-nerds/">King of the Nerds</a> though I fear I&#8217;m too old for the latter. I could definitely do better than some of the contestants that do make it on to TV. I took some pictures during the process for friends, family, and blogosphere. I&#8217;ve actually been working on a bunch of other projects that use PHP, JavaScript, and Objective-C, stuff that will hopefully <a href="http://www.muschamp.ca/Muskie/resumeFrame.html">help me get a job</a>.</p>
<p style="text-align: center;"><a title="Necessary Tools by Muskie McKay, on Flickr" href="http://www.flickr.com/photos/muskiemckay/8511016930/"><img class="aligncenter" src="http://farm9.staticflickr.com/8373/8511016930_1247334582_z.jpg" alt="Necessary Tools" width="640" height="480" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.muschamp.ca/2013/02/26/upcycled-furniture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://farm9.staticflickr.com/8373/8509912123_897a770070.jpg" />
		<media:content url="http://farm9.staticflickr.com/8373/8509912123_897a770070.jpg" medium="image">
			<media:title type="html">Finished Upcycled TV Stand</media:title>
		</media:content>
		<media:content url="http://farm9.staticflickr.com/8237/8509909931_741966cd73_n.jpg" medium="image">
			<media:title type="html">Tables to be Upcycled</media:title>
		</media:content>
		<media:content url="http://farm9.staticflickr.com/8524/8509910303_88c4e5b9c7_n.jpg" medium="image">
			<media:title type="html">More clamping and gluing</media:title>
		</media:content>
		<media:content url="http://farm9.staticflickr.com/8094/8509908341_8e69ac12e1_n.jpg" medium="image">
			<media:title type="html">Working Socket</media:title>
		</media:content>
		<media:content url="http://farm9.staticflickr.com/8373/8511016930_1247334582_z.jpg" medium="image">
			<media:title type="html">Necessary Tools</media:title>
		</media:content>
	</item>
		<item>
		<title>Searching YouTube with PHP</title>
		<link>http://blog.muschamp.ca/2013/02/17/searching-youtube-with-php/</link>
		<comments>http://blog.muschamp.ca/2013/02/17/searching-youtube-with-php/#comments</comments>
		<pubDate>Sun, 17 Feb 2013 17:55:18 +0000</pubDate>
		<dc:creator>Muskie</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Amazon Product API]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[codebase]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[mashup]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[YouTube]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://blog.muschamp.ca/?p=5711</guid>
		<description><![CDATA[During my most recent period of unemployment, I&#8217;ve tried to brush up on some of my skills, perversely one thing I&#8217;ve spent a lot of time doing is writing PHP. I&#8217;m not a big fan of PHP, but I seem to have written and most importantly maintained some code I used to make web mashups, [...]
Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2007/01/11/wicked-good-canadian-on-youtube/' rel='bookmark' title='Wicked Good Canadian on YouTube'>Wicked Good Canadian on YouTube</a></li>
<li><a href='http://blog.muschamp.ca/2011/05/07/my-mashup-codebase/' rel='bookmark' title='My Mashup Codebase'>My Mashup Codebase</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>During my most recent period of unemployment, I&#8217;ve tried to brush up on some of <a href="http://www.muschamp.ca/Muskie/resumeFrame.html">my skills</a>, perversely one thing I&#8217;ve spent a lot of time doing is writing PHP. <em>I&#8217;m not a big fan of PHP</em>, but I seem to have written and most importantly maintained <a href="http://www.muschamp.ca/Muskie/webMashups.html">some code</a> I used to make web mashups, but other people could use for other evil purposes.</p>
<p>One method I wrote searches YouTube for a passed in string and returns the HTML code for the top video matching that string or NULL. I was originally going to search other APIs for video clips but never got around to implementing that feature yet. <strong>I keep trying to get a paying job.</strong></p>
<p>I don&#8217;t think anyone is using all of my code to do anything interesting but referral logs indicate people are looking at the code. I think my code for accessing the <a href="https://affiliate-program.amazon.com/gp/advertising/api/detail/main.html">Amazon Product API</a> and <a title="Merging feeds with SimplePie and PHP" href="http://blog.muschamp.ca/2012/04/27/merging-feeds-with-simplepie-and-php/">some code I wrote that uses SimplePie</a> may be the most popular but this simple function for searching YouTube seems like it would be useful. The official <a href="https://developers.google.com/youtube/getting_started">Google Data API</a> is quite daunting and there are multiple more official ways to do things, but behold mine:</p>
<p><iframe style="border: none; width: 100%;" src="http://pastebin.com/embed_iframe.php?i=12v45E1v" width="320" height="320"></iframe></p>
<p><strong>Damn Pastebin embed code doesn&#8217;t always work.</strong> Here is <a href="http://pastebin.com/12v45E1v">a link to the code snippet</a>.</p>
<p>My web mashup code uses a lot of APIs and to use some of them you have to jump through a lot of hoops. Amazon alone has made several changes and demands in the last few years. Rotten Tomatoes changed their API suddenly, Topsy wants to charge for using their API now, I&#8217;ve encountered plenty of bugs when using PHP to access Last.fm, so I was reluctant to integrate either <a href="https://developers.google.com/youtube/code#PHP">Zend</a> or <a href="https://developers.google.com/youtube/v3/libraries">Google&#8217;s beta PHP code</a>. Zend requires &#8220;PHP 5.2.11 or later&#8221; and Google requires you to register your app/domain (which I did) but worse seems to want you to set up a session connected to a database or a memcache just to search for YouTube videos.</p>
<p>I mainly search YouTube for movie trailers and song performances to go with <a href="http://www.muschamp.ca/Muskie/quotations.html">my quotations</a>. Installing and setting up an entire library of code seems a bit much when I just want to perform a quick search. Google is now working on Version 3.0 of their API. The original version, which my code used to use seems to have been completely retired, but my code now uses version 2.0 which is what the Zend framework uses. <a href="http://stackoverflow.com/questions/14915298/searching-youtube-and-displaying-first-video-in-php-advice-needed">I can&#8217;t be the only one who wants a lighter weight PHP function to search YouTube.</a></p>
<p>Related posts:<ol>
<li><a href='http://blog.muschamp.ca/2007/01/11/wicked-good-canadian-on-youtube/' rel='bookmark' title='Wicked Good Canadian on YouTube'>Wicked Good Canadian on YouTube</a></li>
<li><a href='http://blog.muschamp.ca/2011/05/07/my-mashup-codebase/' rel='bookmark' title='My Mashup Codebase'>My Mashup Codebase</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.muschamp.ca/2013/02/17/searching-youtube-with-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
	</item>
	</channel>
</rss>
