<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss"><id>tag:blogger.com,1999:blog-3023224817271790655</id><updated>2009-09-21T10:50:07.208-05:00</updated><title type="text">633k</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.633k.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.633k.net/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default?start-index=26&amp;max-results=25" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>77</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/633k" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-1292412323274557167</id><published>2008-09-21T11:28:00.002-05:00</published><updated>2008-09-21T11:32:06.152-05:00</updated><title type="text">This Blog Has Been Deprecated</title><content type="html">I am ditching blogger because it is a pain in the ass to update. This is only the case when you are hosting your own files. It has to FTP all the files to my server and for some reason, that takes an awful lot of time. &lt;a href="http://tumblr.com"&gt;tumblr.com&lt;/a&gt; has caught my interest because of the ability to post from almost anywhere and it allows for different kinds of posts. I manually moved most of my posts from Blogger to &lt;a href="http://sudomasochism.com"&gt;sudomasochism.com&lt;/a&gt;, so I am able to keep all my history. Hopefully, I won't have to move again anytime soon.&lt;br /&gt;&lt;br /&gt;My last.fm tagger stuff can be found through &lt;a href="http://sudomasochism.com/tagged/lastfm"&gt;this tag&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Good day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-1292412323274557167?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/1292412323274557167/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=1292412323274557167" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1292412323274557167" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1292412323274557167" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/09/this-blog-has-been-deprecated.html" title="This Blog Has Been Deprecated" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-941725673854438616</id><published>2008-09-01T16:52:00.003-05:00</published><updated>2008-09-01T16:59:10.686-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hacks" /><category scheme="http://www.blogger.com/atom/ns#" term="ruby on rails" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title type="text">Contributing to Open Source (Substruct)</title><content type="html">At &lt;a href="http://www.cocodesign.com"&gt;Coco&lt;/a&gt;, we are starting to build out some e-commerce sites. In order to expedite the process, we are using &lt;a href="http://code.google.com/p/substruct"&gt;Substruct&lt;/a&gt; as a solution. While working with it, I have noticed a few things that needed to be fixed.&lt;br /&gt;&lt;br /&gt;With engines setup properly, you are capable of extending routes beyond what's provided with the substruct engine. This was not the case beforehand. I was able to track down the bug and submit some patches to mend the problem.&lt;br /&gt;&lt;br /&gt;If you are using substruct and want to customize it (adding additional controllers either to the admin or outside the admin) you'll need to get the latest substruct. Check out the issue &lt;a href="http://code.google.com/p/substruct/issues/detail?id=127"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can find download links there.&lt;br /&gt;&lt;br /&gt;Working on open source projects is a lot of fun. It's interesting to see how other people do things. Contributing gives developers like me a boost of confidence. I plan on finding and fixing more bugs in the future for this project and others.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-941725673854438616?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/941725673854438616/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=941725673854438616" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/941725673854438616" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/941725673854438616" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/09/contributing-to-open-source-substruct.html" title="Contributing to Open Source (Substruct)" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-1080897318344953412</id><published>2008-08-20T21:57:00.004-05:00</published><updated>2008-08-20T22:05:42.786-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtagger" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtaggercocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="cocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="osx" /><category scheme="http://www.blogger.com/atom/ns#" term="mac" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title type="text">Last.fm Cocoa Tagger v1.2</title><content type="html">I added some new features including:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Ability to refresh the list of playlists&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Reload playlist data functionality&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Status area indicating the current track being updated and overall progress.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Most of these features allow you to keep the app open (as long as it doesn't crash). Check it out!&lt;br /&gt;&lt;br /&gt;&lt;img src="/lastfmtagger/screenshot_12.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="/lastfmtagger/Last.fm Tagger_1.2.zip"&gt;Download now&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-1080897318344953412?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/1080897318344953412/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=1080897318344953412" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1080897318344953412" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1080897318344953412" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/08/lastfm-cocoa-tagger-v12.html" title="Last.fm Cocoa Tagger v1.2" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-6725576375017652998</id><published>2008-07-06T16:17:00.001-05:00</published><updated>2008-07-07T11:58:54.573-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtagger" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtaggercocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="cocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="mac" /><category scheme="http://www.blogger.com/atom/ns#" term="geek" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title type="text">Last Update for a While... Promise!</title><content type="html">That is, until I get column sorting going. That's my next task. In this release, I have integrated sparkle updates! I'm so happy about that. Thanks to &lt;a href="http://foolsworkshop.com/rubycocoa/2008/06/adding-a-check-updates-feature-for-rubycocoa-and-macruby/"&gt;Fool’s Ruby and Cocoa Workshop&lt;/a&gt;, adding sparkle updates was a breeze. Thank you K.M. Lawson!&lt;br /&gt;&lt;br /&gt;As always, I will provide a screenshot and updated download link. &lt;a href="/lastfmtagger/last.fm-tagger_1.1.zip"&gt;Get it now!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.grabup.com/uploads/f2830293cbdd384d9dd414dc8e31642f.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-6725576375017652998?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/6725576375017652998/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=6725576375017652998" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/6725576375017652998" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/6725576375017652998" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/07/last-update-for-while-promise_06.html" title="Last Update for a While... Promise!" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-8524518226824029806</id><published>2008-07-06T13:39:00.002-05:00</published><updated>2008-07-07T11:58:54.575-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtagger" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtaggercocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="cocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="mac" /><category scheme="http://www.blogger.com/atom/ns#" term="geek" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title type="text">Please Update</title><content type="html">Please download the latest version. There was a problem with using smart playlists. I had to remove them from the playlists dropdown temporarily (or maybe even permanently).&lt;br /&gt;&lt;br /&gt;&lt;a href="/last.fm-tagger.zip"&gt;Download now&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-8524518226824029806?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/8524518226824029806/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=8524518226824029806" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/8524518226824029806" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/8524518226824029806" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/07/please-update.html" title="Please Update" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-5001093414305378132</id><published>2008-07-06T12:11:00.002-05:00</published><updated>2008-07-07T11:58:54.577-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtagger" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtaggercocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="cocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="mac" /><category scheme="http://www.blogger.com/atom/ns#" term="geek" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title type="text">Quick Update</title><content type="html">Due to problems with the Universal build, I had to build strictly for 10.5. So, here's a new version with some cool new features. Let me know if you have any problems with it.&lt;br /&gt;&lt;br /&gt;&lt;a href="/last.fm-tagger.zip"&gt;Download now&lt;/a&gt; (10.5.x build)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.grabup.com/uploads/8df4625286a7db72eb9f8e232697a80e.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-5001093414305378132?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/5001093414305378132/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=5001093414305378132" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/5001093414305378132" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/5001093414305378132" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/07/quick-update.html" title="Quick Update" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-1790805874123613186</id><published>2008-07-05T01:52:00.001-05:00</published><updated>2008-07-07T11:58:54.579-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtagger" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtaggercocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="cocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="mac" /><category scheme="http://www.blogger.com/atom/ns#" term="geek" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title type="text">Icon Goodness!</title><content type="html">Thanks to &lt;a href="http://deletem3.com"&gt;Matt&lt;/a&gt;, I now have an icon for the Last.fm Tagger.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.grabup.com/uploads/d88cd6aee42e40e98ca8ef0d38910325.png" /&gt;&lt;br /&gt;&lt;br /&gt;Love it!&lt;br /&gt;&lt;br /&gt;Also, I setup a &lt;a href="http://github.com/wesrog/last.fm-tagger/tree/master"&gt;github&lt;/a&gt; account for this project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-1790805874123613186?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/1790805874123613186/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=1790805874123613186" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1790805874123613186" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1790805874123613186" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/07/icon-goodness.html" title="Icon Goodness!" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-939359446258882541</id><published>2008-07-04T22:37:00.008-05:00</published><updated>2008-07-05T01:35:54.407-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtagger" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtaggercocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="cocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="geek" /><title type="text">An Unexpected Rewrite...</title><content type="html">After asking a few friends to beta test the app, I found out that it wouldn't run on any machine but mine. Luckily, I have another mac around and was able to test. I ended up having to rewrite the whole thing! My problem was when I was trying to match the sender of the 'tableView_objectValueForTableColumn_row' delegate method to an NSTableView object. This wasn't working on any other machine for some reason. So, I ended up rewriting it all and refactoring things into separate controllers which is really nice.&lt;br /&gt;&lt;br /&gt;The app will close out properly if no playlist with the name of 'lastfmtagger' exists. I am working on integrating a way to create the playlist on demand so that the app will continue running. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.grabup.com/uploads/ea32917fad95610c26c1a40a048d21ef.png" /&gt;&lt;br /&gt;&lt;br /&gt;I would also like to be able to refresh the list of artists on demand, or on a timed observe of some sort so that when you add artists to the playlist, the app is updated accordingly. Tons of ideas, tons of time!&lt;br /&gt;&lt;br /&gt;Here's an updated screenshot:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.grabup.com/uploads/d58f9997a107e0e41afffd92725e9f66.png" /&gt;&lt;br /&gt;&lt;br /&gt;And the &lt;a href="/last.fm-tagger.zip"&gt;download link&lt;/a&gt; of course.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-939359446258882541?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/939359446258882541/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=939359446258882541" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/939359446258882541" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/939359446258882541" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/07/unexpected-rewrite.html" title="An Unexpected Rewrite..." /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-1777196987473093277</id><published>2008-07-04T01:03:00.008-05:00</published><updated>2008-07-04T12:08:58.035-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtagger" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtaggercocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="cocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="osx" /><title type="text">New Last.fm Tagger Written in Cocoa</title><content type="html">So, I'm trying my hand at Cocoa, namely RubyCocoa. Objective-C is a bit out of my grasp right now. If I start needing big performance boosts, I'll go that route. In the meantime, writing RubyCocoa apps is insanely fun. I wrote this basic tagger in 2 days (roughly 6 hours) and it works pretty well!&lt;br /&gt;&lt;br /&gt;If you plan on trying out this app, create a small playlist with the name 'lastfmtagger' and put a few albums in there.&lt;br /&gt;&lt;br /&gt;Problems I am aware of:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;  &lt;li&gt;Can't load huge iTunes library/playlist yet without taking forever to load&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;App craps out if the file is missing in iTunes when trying to write&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Some more I can't think of right now...&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="/Last.fm Tagger.zip"&gt;Give it a shot&lt;/a&gt;, and let me know what you think. Here's a screenshot.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.grabup.com/uploads/ab039325012674a18477278697c8707f.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-1777196987473093277?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/1777196987473093277/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=1777196987473093277" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1777196987473093277" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1777196987473093277" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/07/new-lastfm-tagger-written-in-cocoa.html" title="New Last.fm Tagger Written in Cocoa" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-4237750746977462394</id><published>2008-06-24T13:47:00.002-05:00</published><updated>2008-06-24T13:47:45.492-05:00</updated><title type="text">Google Code Project</title><content type="html">I have created a Google Code project for the lastfm-tagger.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/lastfm-tagger/"&gt;Check it out&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-4237750746977462394?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/4237750746977462394/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=4237750746977462394" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/4237750746977462394" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/4237750746977462394" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/06/google-code-project.html" title="Google Code Project" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-3355477055626505569</id><published>2008-06-17T11:00:00.004-05:00</published><updated>2008-06-17T11:07:00.974-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="geek" /><title type="text">OS X Terminal Fun with Fortune</title><content type="html">I have known about &lt;a href="http://en.wikipedia.org/wiki/Fortune_(Unix)"&gt;Fortune&lt;/a&gt; for several years now, and I randomly thought about it today. I wondered, could I have fortune give me a fortune each time I open a new terminal window. After a little digging and worrying about it being complicated, I simply tried to just place the path of fortune into my .profile. Voila! Now, every time I open Terminal, I am greeted with a neat little fortune.&lt;br /&gt;&lt;br /&gt;In order to do this, you'll need &lt;a href="http://macports.org"&gt;macports&lt;/a&gt; installed.&lt;br /&gt;&lt;br /&gt;If you already have them installed, simply install fortune:&lt;br /&gt;&lt;pre&gt;sudo port install fortune&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then, edit your ~/.profile&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;mate ~/.profile&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Add the path to fortune at the end of the file:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;/opt/local/bin/fortune&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I love it! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-3355477055626505569?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/3355477055626505569/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=3355477055626505569" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/3355477055626505569" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/3355477055626505569" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/06/os-x-terminal-fun-with-forture.html" title="OS X Terminal Fun with Fortune" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-8707107939519198738</id><published>2008-06-06T11:28:00.002-05:00</published><updated>2008-06-06T11:32:32.414-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtagger" /><title type="text">Last.fm Tagger 1.1</title><content type="html">I just implemented a feature to sort artists by name. I got a comment on &lt;a href="http://build.last.fm"&gt;my build.last.fm project page&lt;/a&gt; that commented about how the tagger works when artists in iTunes are sorted by name. Instead of relying on iTunes, I am now sorting by artist name in the actual code.&lt;br /&gt;&lt;br /&gt;Not a huge change, but slightly significant. I am working on win32 compatibility also. If anyone can help, that would be great!&lt;br /&gt;&lt;br /&gt;Ideally, I want to check the ENV constant for a string of /windows/i and then load win32ole gem and then abstract the iTunes interface to handle it properly.&lt;br /&gt;&lt;br /&gt;Download &lt;a href="http://633k.net/code/lastfm_tagger-1.1.zip"&gt;last.fm tagger 1.1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-8707107939519198738?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/8707107939519198738/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=8707107939519198738" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/8707107939519198738" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/8707107939519198738" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/06/lastfm-tagger-11.html" title="Last.fm Tagger 1.1" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-2064134594565823700</id><published>2008-03-11T13:54:00.005-05:00</published><updated>2008-03-13T14:14:59.533-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtagger" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title type="text">We Made it to 1.0!</title><content type="html">I made a nice improvement that I feel warrants a 1.0 release. That improvement is simply a hash that stores genres for the life of the process so that an additional query to last.fm is not needed. I fixed a bug where "q" wasn't cleanly aborting the process. Also, I did a little spring cleaning with the code... moved everything out of a main file and into separate files for better organization.&lt;br /&gt;&lt;br /&gt;I'm happy to say that &lt;a href="http://build.last.fm"&gt;build.last.fm&lt;/a&gt; accepted my application! So you can now find the tagger on &lt;a href="http://build.last.fm/item/298"&gt;build.last.fm&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If anyone out there would like a feature added, just let me know and I'll see about implementing it.&lt;br /&gt;&lt;br /&gt;&lt;a href="/code/lastfm_tagger-1.0.zip"&gt;Get 1.0 now&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-2064134594565823700?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/2064134594565823700/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=2064134594565823700" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/2064134594565823700" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/2064134594565823700" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/03/we-made-it-to-10.html" title="We Made it to 1.0!" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-1582621531943285832</id><published>2008-02-28T13:55:00.005-06:00</published><updated>2008-02-28T14:23:08.926-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtagger" /><category scheme="http://www.blogger.com/atom/ns#" term="music" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title type="text">Last.fm Tagger 0.9</title><content type="html">I've made a few improvements to the Last.fm Tagger. Namely, the ability to cleanly abort the tagging process. Other features include displaying a count of tracks selected in iTunes, as well as the number of unique artists in that selection.&lt;br /&gt;&lt;br /&gt;As always, you'll need the wonderfully awesome &lt;a href="http://rubyosa.rubyforge.org/"&gt;RubyOSA&lt;/a&gt; gem installed.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://633k.net/code/lastfm_tagger-0.9.zip"&gt;Download it now.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-1582621531943285832?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/1582621531943285832/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=1582621531943285832" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1582621531943285832" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1582621531943285832" /><link rel="alternate" type="text/html" href="http://www.633k.net/2008/02/lastfm-tagger-09.html" title="Last.fm Tagger 0.9" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-5784649867029204081</id><published>2007-11-05T21:41:00.000-06:00</published><updated>2007-11-06T08:59:08.791-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="computers" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="osx" /><category scheme="http://www.blogger.com/atom/ns#" term="mac" /><category scheme="http://www.blogger.com/atom/ns#" term="nerd" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title type="text">MusicBrainz, Picard, and OSX</title><content type="html">Oh how excited I am, for Picard works (without building from source) on my Mac now. Oh, this is the greatest day in a long freakin' time. It was the one last app missing from my usual Windows routine.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.musicbrainz.org/PicardDownload"&gt;Get it now!&lt;/a&gt; and start tagging.&lt;br /&gt;&lt;br /&gt;Maybe &lt;a href="http://ijsm.org/archives/2006/07/17/musicbrainz-mac-client-bounty/"&gt;this fella&lt;/a&gt; should think about paying the wonderfully awesome &lt;a href="http://musicbrainz.org/"&gt;MusicBrainz&lt;/a&gt; team now :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-5784649867029204081?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/5784649867029204081/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=5784649867029204081" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/5784649867029204081" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/5784649867029204081" /><link rel="alternate" type="text/html" href="http://www.633k.net/2007/11/musicbrainz-picard-and-osx.html" title="MusicBrainz, Picard, and OSX" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-299732363643798586</id><published>2007-10-09T22:30:00.002-05:00</published><updated>2008-02-28T14:23:42.992-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtagger" /><category scheme="http://www.blogger.com/atom/ns#" term="computers" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="music" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="osx" /><category scheme="http://www.blogger.com/atom/ns#" term="nerd" /><title type="text">Last.fm Tagger for RubyOSA Update 3</title><content type="html">I've once again improved my little &lt;a href="http://last.fm"&gt;Last.fm&lt;/a&gt; script for use with &lt;a href="http://rubyosa.rubyforge.org/"&gt;RubyOSA&lt;/a&gt;. It needed updating badly. There were quite a few things bugging me.&lt;br /&gt;&lt;br /&gt;What's new:&lt;br /&gt;&lt;br /&gt;&amp;bull; Nice console messages telling you what's happening.&lt;br /&gt;&amp;bull; Support for skipping over identical genre's.&lt;br /&gt;&amp;bull; Ability to continue or abort tagging process. So if you don't like that tag, type 'n'.&lt;br /&gt;&amp;bull; Use -q to subdue tagging confirmations.&lt;br /&gt;&amp;bull; Full UTF-8 support, as well as proper URL escaping.&lt;br /&gt;&lt;br /&gt;&lt;img src="/lastfmtagger.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://633k.net/tag_genre_lastfm.rb"&gt;Download it now!&lt;/a&gt; And have somewhat useful genre's to choose from.&lt;br /&gt;&lt;br /&gt;I will tackle cleaning it up later. Add me to your RSS reader if you want script updates.&lt;br /&gt;&lt;br /&gt;Remember, you can get RubyOSA with the Last.fm Tagger &lt;a href="http://rubyosa.rubyforge.org/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-299732363643798586?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/299732363643798586/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=299732363643798586" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/299732363643798586" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/299732363643798586" /><link rel="alternate" type="text/html" href="http://www.633k.net/2007/10/lastfm-tagger-for-rubyosa-update-3.html" title="Last.fm Tagger for RubyOSA Update 3" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-1700628854630239075</id><published>2007-08-30T15:16:00.000-05:00</published><updated>2007-10-09T22:37:23.464-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="life" /><category scheme="http://www.blogger.com/atom/ns#" term="exercise" /><category scheme="http://www.blogger.com/atom/ns#" term="environment" /><title type="text">How To Ride Your Bike To Work</title><content type="html">Great article &lt;a href="http://www.blog.thesietch.org/2007/08/29/how-to-ride-your-bike-to-work/"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-1700628854630239075?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/1700628854630239075/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=1700628854630239075" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1700628854630239075" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1700628854630239075" /><link rel="alternate" type="text/html" href="http://www.633k.net/2007/08/how-to-ride-your-bike-to-work.html" title="How To Ride Your Bike To Work" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-7525629652421925347</id><published>2007-08-09T11:56:00.001-05:00</published><updated>2008-02-28T14:23:42.995-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="computers" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="music" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="nerd" /><title type="text">eMusic.fm Greasemonkey Script</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="/emusic_tags.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 275px;" src="/emusic_tags.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;I finished a v0.1 of my eMusic.fm Greasemonkey script. What it does is pretty simple. On an album page, it will pull the 10 most popular tags from last.fm and inject them into the page below the description.&lt;br /&gt;&lt;br /&gt;I found myself looking at last.fm for a particular artist to see what the community has labeled it as. This provides a more insightful look into artists you may not be aware of.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://userscripts.org/scripts/show/11286"&gt;Download my eMusic.fm greasemonkey script&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-7525629652421925347?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/7525629652421925347/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=7525629652421925347" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/7525629652421925347" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/7525629652421925347" /><link rel="alternate" type="text/html" href="http://www.633k.net/2007/08/emusicfm-greasemonkey-script.html" title="eMusic.fm Greasemonkey Script" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-5826905738274189452</id><published>2007-07-10T16:16:00.000-05:00</published><updated>2007-10-09T22:38:47.446-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gadgets" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title type="text">Ugly iPhone With Belkin Headphone Adapter</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://633k.net/uploaded_images/IMG_0014-715888.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://633k.net/uploaded_images/IMG_0014-715877.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;I am so angry. I ordered an &lt;a href="http://www.amazon.com/Belkin-F8Z177-Headphone-Adapter-iPhone/dp/B000SXI5SI/ref=dp_return_1/105-6639830-2070834?ie=UTF8&amp;n=172282&amp;s=electronics&amp;qid=1184101977&amp;sr=1-5"&gt;adapter&lt;/a&gt; made by Belkin for my iPhone so I could use my favorite headphones. It's absurd that you have to spend $10 to do this (or spend $100 on new headphones that I don't like) and it looks like complete crap. It doesn't fit in my pocket very nicely either. This does not make Apple look good.&lt;br /&gt;&lt;br /&gt;This is all thanks to the recessed headphone jack.&lt;br /&gt;&lt;br /&gt;UPDATE: I sent this piece of crap back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-5826905738274189452?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/5826905738274189452/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=5826905738274189452" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/5826905738274189452" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/5826905738274189452" /><link rel="alternate" type="text/html" href="http://www.633k.net/2007/07/ugly-iphone-with-belkin-headphone.html" title="Ugly iPhone With Belkin Headphone Adapter" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-4982393223343883293</id><published>2007-06-27T08:51:00.000-05:00</published><updated>2007-11-07T22:02:17.467-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby on rails" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title type="text">Simple Rails Refactoring</title><content type="html">I needed to attach articles to our default template when running migrations. This was currently executed like so:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;type = Type.find(1)&lt;br /&gt;Template.find(:all).each { |t| t.types &lt;&lt; type }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Pretty simple. Find the first type, which is supposed to be Pages. Iterate through all templates and assign Pages to them.&lt;br /&gt;&lt;br /&gt;I needed to do the same for Articles too, so to get it done quickly, I just repeated what I did previously. So the code looks like this now:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;type = Type.find(1)&lt;br /&gt;Template.find(:all).each { |t| t.types &lt;&lt; type }&lt;br /&gt;    &lt;br /&gt;type = Type.find(3)&lt;br /&gt;Template.find(:all).each { |t| t.types &lt;&lt; type }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now I'm finding Pages + Articles, then iterating twice over the Templates and inserting on two separate occasions. To foreign users, I thought it may be a little vague, so I decided to add comments:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;# Set default template for pages&lt;br /&gt;type = Type.find(1)&lt;br /&gt;Template.find(:all).each { |t| t.types &lt;&lt; type }&lt;br /&gt;    &lt;br /&gt;# Set default template for articles&lt;br /&gt;type = Type.find(3)&lt;br /&gt;Template.find(:all).each { |t| t.types &lt;&lt; type }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now! Whomever reads my code will know what I was thinking and could probably help clean it up a bit. But wait a sec, Rails adds some pretty nice syntactic sugar to make comments completely unnecessary. Take a look at the same code without comments:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;type = Type.find_by_name('Page')&lt;br /&gt;Template.find(:all).each { |t| t.types &lt;&lt; type }&lt;br /&gt;    &lt;br /&gt;type = Type.find_by_name('Article')&lt;br /&gt;Template.find(:all).each { |t| t.types &lt;&lt; type }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I think the code is self-explanatory without comments now. But is there a way that I can reduce that still to one line? Sure. The `type` variables are not needed anyways. So let's get closer to one line:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;Template.find(:all).each { |t| t.types &lt;&lt; Type.find_by_name('Page') }&lt;br /&gt;Template.find(:all).each { |t| t.types &lt;&lt; Type.find_by_name('Article') }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This looks swell. I removed the variables and just put the finder methods add what's being inserted into the Template association.&lt;br /&gt;&lt;br /&gt;This can be refactored one more time. I can append multiple calls to an array insertion, therefore reducing my code to one line.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;&lt;br /&gt;Template.find(:all).each { |t| t.types &lt;&lt; Type.find_by_name('Page') &lt;&lt; Type.find_by_name('Article') }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now it's lean.&lt;br /&gt;&lt;br /&gt;I make it a point to do things like this as many times as possible in one day. Something that Dave Thomas at RailsConf stuck with me. It's not an accurate quote, but it goes something like t his:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Always check in code that is better than before. Even if it's a small improvement.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-4982393223343883293?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/4982393223343883293/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=4982393223343883293" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/4982393223343883293" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/4982393223343883293" /><link rel="alternate" type="text/html" href="http://www.633k.net/2007/06/simple-rails-refactoring.html" title="Simple Rails Refactoring" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-8106047542964581283</id><published>2007-06-06T12:03:00.001-05:00</published><updated>2007-06-06T12:03:51.944-05:00</updated><title type="text">Automatically Set iTunes Track to Skype Mood Message</title><content type="html">navigate to: ~/Library/Preferences/&lt;br /&gt;open file: com.skype.skype.plist&lt;br /&gt;add new sibling to root named "SKShowITunesSongAsMoodMessage"&lt;br /&gt;set class to Number&lt;br /&gt;set value to 1&lt;br /&gt;&lt;br /&gt;restart skype&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-8106047542964581283?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/8106047542964581283/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=8106047542964581283" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/8106047542964581283" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/8106047542964581283" /><link rel="alternate" type="text/html" href="http://www.633k.net/2007/06/automatically-set-itunes-track-to-skype.html" title="Automatically Set iTunes Track to Skype Mood Message" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-3412735772745102750</id><published>2007-05-23T13:13:00.001-05:00</published><updated>2007-10-09T22:44:34.649-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="railsconf" /><title type="text">Extra Action Marching Band</title><content type="html">&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/x180/505477282/" title="photo sharing"&gt;&lt;img src="http://farm1.static.flickr.com/214/505477282_19e1510789_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/x180/505477282/"&gt;Extra Action Marching Band&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/x180/"&gt;duncandavidson&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;During RailsConf, I was lucky enough to have my camera ready to take pics and movies during the super secret surprise lunchtime band.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/dmYCybnlGhg"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/dmYCybnlGhg" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-3412735772745102750?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/3412735772745102750/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=3412735772745102750" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/3412735772745102750" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/3412735772745102750" /><link rel="alternate" type="text/html" href="http://www.633k.net/2007/05/extra-action-marching-band.html" title="Extra Action Marching Band" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-1955719450769768465</id><published>2007-03-25T16:17:00.000-05:00</published><updated>2007-03-25T16:21:28.588-05:00</updated><title type="text">Way Back When</title><content type="html">I spent the majority of my later teenage years overdosing on computers and music... making music, that is. A few times a year, I find myself listening to the so-called music I made. It really reflected who I was: a kid obsessed with meta-consciousness, psychedelics, alternate realities, and generally anything weird.&lt;br /&gt;&lt;br /&gt;So I present to you one track I made while traveling:&lt;br /&gt;&lt;br /&gt;&lt;a href="music/aura_-_user_02.mp3"&gt;user_02&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-1955719450769768465?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/1955719450769768465/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=1955719450769768465" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1955719450769768465" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/1955719450769768465" /><link rel="alternate" type="text/html" href="http://www.633k.net/2007/03/way-back-when.html" title="Way Back When" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-9175523824939654633</id><published>2007-03-19T13:43:00.000-05:00</published><updated>2008-02-28T14:24:13.857-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="last.fm" /><category scheme="http://www.blogger.com/atom/ns#" term="lastfmtagger" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="osx" /><title type="text">New Last.fm Tagger for RubyOSA</title><content type="html">Laurent Sansonetti was generous enough to ask me if I wanted to contribute my little Last.fm script to the RubyOSA samples directory. And of course, I was more than willing to do that. He actually updated the script to make it even better! Now, you simply select which track in iTunes you want to tag, and run the RubyOSA script. The script will then query Last.fm for the most popular tag, and set the genre to whatever the tag on Last.fm is.&lt;br /&gt;&lt;br /&gt;Here's the updated code:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="ruby"&gt;begin require 'rubygems'; rescue LoadError; end&lt;br /&gt;require 'rbosa'&lt;br /&gt;require 'net/http'&lt;br /&gt;require 'cgi'&lt;br /&gt;require 'rexml/document'&lt;br /&gt;include REXML&lt;br /&gt;&lt;br /&gt;itunes = OSA.app('iTunes')&lt;br /&gt;selection = itunes.selection.get&lt;br /&gt;if selection.empty?&lt;br /&gt;  $stderr.puts "Please select some tracks."&lt;br /&gt;  exit 1&lt;br /&gt;end&lt;br /&gt;selection.each do |track|&lt;br /&gt;  feed = "http://ws.audioscrobbler.com/1.0/album/#{CGI::escape(track.album)}/toptags.xml"&lt;br /&gt;  doc = Document.new(Net::HTTP.get(URI(feed)))&lt;br /&gt;  track.genre = doc.root[1][1].text&lt;br /&gt;end&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Remember, you can get RubyOSA with the Last.fm Tagger &lt;a href="http://rubyosa.rubyforge.org/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks to Laurent for making an awesome library. It makes playing with Ruby even more fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-9175523824939654633?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/9175523824939654633/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=9175523824939654633" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/9175523824939654633" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/9175523824939654633" /><link rel="alternate" type="text/html" href="http://www.633k.net/2007/03/new-lastfm-tagger-for-rubyosa.html" title="New Last.fm Tagger for RubyOSA" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3023224817271790655.post-8895639731317821984</id><published>2006-12-26T17:24:00.001-06:00</published><updated>2006-12-27T08:25:47.075-06:00</updated><title type="text">Testing out Blogger</title><content type="html">I am trying out Blogger. While I've never tried it ever before, in the long existence that it has, I'm pretty impressed at the simplicity of it. I like the way it handles publishing. No need to get a host with Rails, PHP, MySQL, etc just to have a blog. Get you some cheap hosting and go get a Blogger account.&lt;br /&gt;&lt;br /&gt;I do have some wishes though:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Some kind of data import. I have a year or so worth of posts that I want on here with the corresponding dates.&lt;/li&gt;&lt;li&gt;Syntax highlighting... a little superfluous, I know but I sometimes post Ruby stuff on here and would like to see it highlighted. Maybe I'll just post screenshots.&lt;/li&gt;&lt;/ol&gt;So I'm not completely sold yet, but I do like it so far. My old (slow) blog can be reached at: &lt;a href="http://blog.633k.net/"&gt;blog.633k.net&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3023224817271790655-8895639731317821984?l=www.633k.net'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.633k.net/feeds/8895639731317821984/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=3023224817271790655&amp;postID=8895639731317821984" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/8895639731317821984" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3023224817271790655/posts/default/8895639731317821984" /><link rel="alternate" type="text/html" href="http://www.633k.net/2006/12/test.html" title="Testing out Blogger" /><author><name>Wes Rogers</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="13085963663069899148" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
