<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/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' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7255273</id><updated>2012-02-14T20:23:00.733-05:00</updated><category term='ruby'/><category term='firefox'/><category term='unix'/><category term='rails'/><category term='howto'/><category term='svn'/><category term='development'/><title type='text'>philly dev</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7255273.post-3781371374322878965</id><published>2007-03-25T20:02:00.000-04:00</published><updated>2007-03-25T20:11:52.849-04:00</updated><title type='text'>Philly Emerging Tech Conference</title><content type='html'>I'll be presenting at this conference on "Applications of Market Campaign Tracking."  You can see the schedule &lt;a href="http://www.phillyemergingtech.com/schedule.php#light"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kortina.net/account/signup?cc=kortina"&gt;demo link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-3781371374322878965?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/3781371374322878965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=3781371374322878965' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/3781371374322878965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/3781371374322878965'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2007/03/philly-emerging-tech-conference.html' title='Philly Emerging Tech Conference'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-6728679743718121693</id><published>2007-02-13T19:11:00.000-05:00</published><updated>2007-02-05T06:47:38.879-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><title type='text'>How To Convert an Integer Time Stamp to a Time Object in Ruby</title><content type='html'>I always have to look this up and can never easily find the answer.  Here it is:&lt;br /&gt;&lt;blockquote&gt;&gt;&gt; t = Time.now&lt;br /&gt;=&gt; Tue Feb 13 19:12:10 EST 2007&lt;br /&gt;&gt;&gt; i = t.to_i&lt;br /&gt;=&gt; 1171411930&lt;br /&gt;&gt;&gt; t2 = Time.at(i)&lt;br /&gt;=&gt; Tue Feb 13 19:12:10 EST 2007&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Integer timestamps can be useful to pass around in query strings or if you need to interact with legacy code / different languages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-6728679743718121693?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/6728679743718121693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=6728679743718121693' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/6728679743718121693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/6728679743718121693'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2007/02/how-to-convert-integer-time-stamp-to.html' title='How To Convert an Integer Time Stamp to a Time Object in Ruby'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-7683835706806783332</id><published>2007-01-27T17:19:00.000-05:00</published><updated>2007-01-27T18:31:09.068-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>How To Make SVN Ignore Your logs in Rails</title><content type='html'>Every time I set up a new rails application and put it under version control with subversion, I always have to lookup how to make SVN ignore the log/ directory.  Here's how to do it.&lt;br /&gt;&lt;br /&gt;From the command line:&lt;br /&gt;&lt;pre&gt;svn propedit svn:ignore log/&lt;/pre&gt;&lt;br /&gt;In the editor that opens:&lt;br /&gt;&lt;pre&gt;development.log&lt;br /&gt;dreamhost.log&lt;br /&gt;fastcgi.crash.log&lt;br /&gt;production.log&lt;br /&gt;server.log&lt;br /&gt;test.log&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Make sure to svn rm all of the log files as well. &lt;br /&gt;&lt;pre&gt;svn rm log/*&lt;/pre&gt;&lt;br /&gt;Warning: these will not only be removed from version control, but also deleted.&lt;br /&gt;&lt;br /&gt;That's it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-7683835706806783332?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/7683835706806783332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=7683835706806783332' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/7683835706806783332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/7683835706806783332'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2007/01/how-to-make-svn-ignore-your-logs-in.html' title='How To Make SVN Ignore Your logs in Rails'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-151457197315359987</id><published>2007-01-24T01:57:00.000-05:00</published><updated>2007-01-24T02:00:22.075-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Rescue in Public ActionController::UnknownAction Doesn't Work -- How to fix it</title><content type='html'>For some reason my rescue in public didn't work when I tried to use the case&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;when ActionController::UnknownAction&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://aspn.activestate.com/ASPN/Mail/Message/ruby-rails/3256383"&gt;this post&lt;/a&gt; saved my life.  After reading it, I tried:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;when ::ActionController::UnknownAction&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Eureka!  Try adding double colons if you're having the same problem in your rescue_action_in_public method in Ruby on Rails.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-151457197315359987?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/151457197315359987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=151457197315359987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/151457197315359987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/151457197315359987'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2007/01/rescue-in-public-actioncontrollerunknow.html' title='Rescue in Public ActionController::UnknownAction Doesn&apos;t Work -- How to fix it'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-7265191162454752607</id><published>2006-12-16T10:57:00.000-05:00</published><updated>2006-12-16T11:11:53.448-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Backpack Publish Firefox Extension</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3FPfpXHnCwA/RYQaDn5650I/AAAAAAAAAAM/z7Ba_kzNcGo/s1600-h/backpack-publish-screenshot.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_3FPfpXHnCwA/RYQaDn5650I/AAAAAAAAAAM/z7Ba_kzNcGo/s400/backpack-publish-screenshot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5009157335096682306" /&gt;&lt;/a&gt;&lt;br /&gt;My first Firefox extension finally got approved for public consumption.  It's very simple, and meant to be a companion to &lt;a href="https://addons.mozilla.org/firefox/1544/"&gt;Ben Mills' Backpack Extension&lt;/a&gt;, which places a Backpack icon in your toolbar and gives you access to all your Backpack pages.&lt;br /&gt;&lt;br /&gt;My extension provides a quick way to post stuff to your Backpack lists, notes, and reminders from any web page.  You simply highlight any text in the browser, click the Backpack Publish button in your toolbar, and choose a page / section where you want to post the highlighted text.  I had the idea for the extension a while ago when I first tried the &lt;a href="http://google.com/notebook/"&gt;Google Notebook&lt;/a&gt; tool, which does something similar.  I thought it would be cool if I could post scraps to Backpack ina similar way to the way Google Notebook does it, so I tried my hand at writing an extension myself.&lt;br /&gt;&lt;br /&gt;You can get the &lt;a href="https://addons.mozilla.org/firefox/3616/"&gt;Backpack Publish Firefox Extension here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Credit where credit is due:  my extension is heavily based on &lt;a href="https://addons.mozilla.org/firefox/1544/"&gt;Ben Mills' Backpack Extension&lt;/a&gt;, which I examined to learn how to write Firefox extensions.&lt;br /&gt;&lt;br /&gt;You can &lt;a href="http://getfirefox.com/"&gt;get firefox here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-7265191162454752607?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/7265191162454752607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=7265191162454752607' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/7265191162454752607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/7265191162454752607'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/12/backpack-publish-firefox-extension.html' title='Backpack Publish Firefox Extension'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3FPfpXHnCwA/RYQaDn5650I/AAAAAAAAAAM/z7Ba_kzNcGo/s72-c/backpack-publish-screenshot.png' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-9177643138986353543</id><published>2006-12-02T00:27:00.000-05:00</published><updated>2006-12-02T00:37:50.375-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>grep ignoring .svn files</title><content type='html'>Once you have an svn project that has more than a few revisions, grep output can get really ugly, becoming cluttered with multiple instances of the same file that are just previous version that you probably don't need to search.  So next time you need to grep something in one of your projects under version control, try this trick:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;% grep -R needle . | grep -v svn &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;What's happening:  the first grep searches the current directory, &lt;span style="font-style:italic;"&gt;.&lt;/span&gt;, for instances of the word &lt;span style="font-style:italic;"&gt;needle&lt;/span&gt;.  The &lt;span style="font-style:italic;"&gt;-R&lt;/span&gt; flag searches recursively in all the subdirectories of the current directory, which includes all of the .svn directories you probably don't want to search.  So we pipe the output of the first grep into another grep that uses the &lt;span style="font-style:italic;"&gt;-v&lt;/span&gt; option (make sure you use lower case v, because uppercase V does something else.  &lt;span style="font-style:italic;"&gt;-v&lt;/span&gt; inverts the matching sense, so we get all the lines of output from the first grep that don't include the string &lt;span style="font-style:italic;"&gt;svn&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-9177643138986353543?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/9177643138986353543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=9177643138986353543' title='36 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/9177643138986353543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/9177643138986353543'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/12/grep-ignoring-svn-files.html' title='grep ignoring .svn files'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>36</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116319271524855141</id><published>2006-11-10T15:58:00.000-05:00</published><updated>2006-12-02T00:27:16.245-05:00</updated><title type='text'>How to actually send a mail message from the command line in unix</title><content type='html'>I often want to send a quick mail message when I'm on the command line in Unix, but after I type the to: address and enter my message, I always forget how to actually get the thing to send.  Whenever I try to look it up, I waste 10 minutes trying to find the answer, so here it is.  Hope it saves you some time:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Sending Your Message&lt;br /&gt;&lt;br /&gt;      Once the message has been entered and is ready to be mailed (be sure to exit any editors you may have called with ~e or ~v), there are two ways by which to send the mail and then exit the mail program. In either case, first press Return to place the cursor on a blank line. Then, either press Ctrl-d (hold down the Ctrl (Control) key and type d), or type a period (.) in column 1 and press Return.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Via &lt;a href="http://www.helpdesk.umd.edu/documentation/unix/mail.shtml#4"&gt;http://www.helpdesk.umd.edu/documentation/unix/mail.shtml#4&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116319271524855141?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116319271524855141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116319271524855141' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116319271524855141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116319271524855141'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/11/how-to-actually-send-mail-message.html' title='How to actually send a mail message from the command line in unix'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116282849510712434</id><published>2006-11-06T10:54:00.000-05:00</published><updated>2006-11-10T22:59:17.368-05:00</updated><title type='text'>Theoretical Computer Science and Humankind's Basic Picture of the Universe</title><content type='html'>In what sense has theoretical computer science contributed more in the last 30 years to our basic understanding of the universe than particle physics or cosmology?  The author cites some very interesting examples in an attempt to answer this question.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.scottaaronson.com/blog/2006/11/logicians-on-safari.html"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/general_sciences/Theoretical_Computer_Science_and_Humankind_s_Basic_Picture_of_the_Universe"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116282849510712434?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116282849510712434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116282849510712434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116282849510712434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116282849510712434'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/11/theoretical-computer-science-and.html' title='Theoretical Computer Science and Humankind&apos;s Basic Picture of the Universe'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116268675256497339</id><published>2006-11-04T19:32:00.000-05:00</published><updated>2006-11-10T22:59:16.926-05:00</updated><title type='text'>Thursday's Town Hall Meeting with Tim Westergren of Pandora</title><content type='html'>(Iqram and I managed to get a hold of Tim before the Town Hall Meeting, and Episode 04 of &lt;a href="http://3niac.com"&gt;The QandK Show&lt;/a&gt; is an &lt;a href="http://3niac.blogspot.com/2006/11/qandk-show-episode-04.html"&gt;interview with Tim Westergren&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;Pandora's founder and chief strategy office, Tim Westergren, held a town hall meeting at the Penn Bookstore this past Thursday, discussing with the 150 or so attendees topics ranging from the workings of the internet radio station &lt;a href="http://pandora.com"&gt;pandora.com&lt;/a&gt; to the future of digital music consumption and the listening habits of typical music consumers.  Tim is currently on a nationwide tour of similar meetings, and he stopped by Philadelphia in between trips to New York and L.A.&lt;br /&gt;&lt;br /&gt;Tim spoke quite a bit about his experiences starting a company towards the end of the dot-com bubble; his stories were pretty inspirational to an internet entrepreneur like myself.  After receiving an initial round of funding soon after starting the Music Genome Project in 2000, Tim's company grew to a fairly large number of employees (i think he said somewhere around 30).  But the company soon burned through it's initial round of funding, just as the first dot-com bubble was bursting.  They weren't generating enough revenue to support their employees, and weren't getting any more funding, so the company shrunk to about 4 workers deferring their salaries.&lt;br /&gt;&lt;br /&gt;Tim mentioned breaking all sorts of California labor laws and told one story where he went to try to negotiate a deal with AOL in the morning and straight to the courthouse in the afternoon to fight the 5th eviction notice for their offices.  The  only way he could keep the company running was by maxxing out all of his credit cards and emptying the bank accounts of any willing relatives.  Sounds awfully familiar to me...&lt;br /&gt;&lt;br /&gt;Things came together in 2004, when Tim shifted the focus of the Music Genome Project from a B2B business model that provided recommendation services for companies like Best Buy and Borders to using the Genome Project to create a personalized internet radio station.  Since launching this service in 2004, Pandora has grown back to over 100 employees and has nearly 4 million users.  And Tim has presumably paid off most of the credit card debt he incurred during the hard times.&lt;br /&gt;&lt;br /&gt;One of the coolest things about Pandora, compared to similar internet radio services that rely primarily on social recommendations and user input to suggest songs to users, is that Pandora analyzes only the musical elements of each song when recommending songs.  So when a user creates a radio station by inputting that he wants to hear music similar to Stevie Wonder's "Superstition," the algorithm ignores things like which record label Stevie Wonder is on, how many songs he's sold, and even that Stevie Wonder is performing the song.  The matching is strictly based on the Music Genome of the song--400 or so music attributes describing the tempo, pitch, different vocal styles, etc.&lt;br /&gt;&lt;br /&gt;This makes Pandora a great way to discover new music by smaller bands, who perhaps haven't made any sort of impact yet in the music industry, but that are in the style the user is looking for.  This is something &lt;a href="http://myspace.com"&gt;Myspace&lt;/a&gt; or a social recommendation site like &lt;a href="http://last.fm"&gt;Last.fm&lt;/a&gt; can't do, because for any band to make it big on these sites, they'll first need a critical mass of users spreading the word about them.&lt;br /&gt;&lt;br /&gt;Props to Pandora and Tim for keeping their dream alive during some rough times and creating a service that gives a voice to the little guys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116268675256497339?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116268675256497339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116268675256497339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116268675256497339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116268675256497339'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/11/thursdays-town-hall-meeting-with-tim.html' title='Thursday&apos;s Town Hall Meeting with Tim Westergren of Pandora'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116248129671061150</id><published>2006-11-02T10:22:00.000-05:00</published><updated>2006-11-10T22:59:16.471-05:00</updated><title type='text'>A Bit of Awesomeness In Ruby (Formatting Dates)</title><content type='html'>This morning I was trying to format a Time for a mysql query and I fell in love with Ruby all over again.  First of all, dates and times in Ruby on Rails are already incredibly slick.  Check this out for instance:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&gt;&gt; 1.days.from_now&lt;br /&gt;=&gt; Fri Nov 03 10:18:07 EST 2006&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Sweet.  No need for explaination.&lt;br /&gt;&lt;br /&gt;Oh wait, do you want to insert that into a mysql query?&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&gt;&gt; 1.days.from_now.to_s :db&lt;br /&gt;=&gt; "2006-11-03 10:18:31&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Part of what I love about Ruby is how well it fits my mind.  Most of the time when I don't know a function in Ruby and try to guess it, I'm right.  This rarely happens when I'm coding PHP.  Coding gets a lot more efficient when you don't have to run to the online API every time you want to use a core function.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116248129671061150?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116248129671061150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116248129671061150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116248129671061150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116248129671061150'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/11/bit-of-awesomeness-in-ruby-formatting.html' title='A Bit of Awesomeness In Ruby (Formatting Dates)'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116227039288587966</id><published>2006-10-30T23:45:00.000-05:00</published><updated>2006-11-10T22:59:16.203-05:00</updated><title type='text'>Craig Newmark is My Hero</title><content type='html'>Just look at this &lt;a href="http://amandacongdon.com/roadblog/2006/10/28/craig-newmark-ca"&gt;video interview with Craig&lt;/a&gt;.  Clearly, he's the man.  Here's my case:&lt;br /&gt;&lt;br /&gt;1. Craig works in customer service full time at Craig's List.&lt;br /&gt;2. Why Craig hasn't sold out: "Until a year ago, the only thing I didn't have was a parking place.  Now I have that."&lt;br /&gt;3. Craig's message to a spammer:  "This is Craig.  Stop overposting."&lt;br /&gt;&lt;br /&gt;QED.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116227039288587966?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116227039288587966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116227039288587966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116227039288587966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116227039288587966'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/10/craig-newmark-is-my-hero.html' title='Craig Newmark is My Hero'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116223805581513653</id><published>2006-10-30T14:53:00.000-05:00</published><updated>2006-11-10T22:59:15.868-05:00</updated><title type='text'>Thoughts on Dragonfire's Digital Media Conference</title><content type='html'>This past Saturday, &lt;a href="http://www.dfire.org/" title="Dragonfire"&gt;Dragonfire&lt;/a&gt; put on a little conference / workshop at the local Barnes and Noble.&amp;nbsp; &lt;a href="http://www.dfire.org/x5088.xml" title="Amy Webb"&gt;Amy Webb&lt;/a&gt; , &lt;a href="http://dir.salon.com/topics/alex_koppelman/index.html" title="Alex Koppelman"&gt;Alex Koppelman&lt;/a&gt; , &lt;a href="http://dickpolman.blogspot.com/" title="Dick Polman"&gt;Dick Polman&lt;/a&gt;, and &lt;a href="http://blogs.philly.com/blinq/" title="Dan Rubin"&gt;Dan Rubin&lt;/a&gt; all spoke about blogging, citizen journalism, and digital media.&amp;nbsp; The discussion tended to identify some trends in media that I thought were pretty apparent, I guess because I spend so much time on the internet on sites like &lt;a href="http://digg.com" title="Digg"&gt;Digg&lt;/a&gt; and &lt;a href="http://newsvine.com/" title="Newsvine"&gt;Newsvine&lt;/a&gt;.&amp;nbsp; The audience, however, seemed to be composed mainly of journalists types who might not be as in tune with trends in digital media, so I guess this discussion was aimed more at them.&lt;br/&gt; &lt;br/&gt; Here are some of the highlights:&lt;br/&gt; &lt;br/&gt; Dick Polman argued that a pitfall with consuming news via blogs is a tendency to get a very biased picture.&amp;nbsp; Liberal leaning readers will obviously gravitate toward blogs with a liberal bent, just as they would tend to read more liberal opinions in the newspaper.&amp;nbsp; The difference, Polman pointed out, is that a good newspaper will juxtapose opposing viewpoints on the same page so that readers can analyze both sides of an argument.&amp;nbsp; Most blogs, however, lack this dialectical format, so it's very easy for readers to consume only news that shares their particular bias.&amp;nbsp; Polman noted--and I agree with him--that this discourages critical thinking and trains readers to start treating opinion as news or fact.&lt;br/&gt; &lt;br/&gt; Another related topic that arose several times was how to discern credibility of blogs.&amp;nbsp; Alex suggested checking how many other blogs link to the blog in question and whether the blogger cites sources for her facts or not.&amp;nbsp; While I agree with these suggestions, I still feel there should be an easier way to validate blogs, some sort of online database listing how credible / reliable different sites are.&amp;nbsp; I think this would be a great way for existing newspapers trying to establish a stronger online presence to utilize some of their journalistic acumen to help readers and at the same time get more involved the blogosphere.&lt;br/&gt; &lt;br/&gt; Dan Rubin was the last speaker, and my favorite.&amp;nbsp; He talked about being an internet news junky who couldn't even stand the 20 minute commute to work for fear of missing something breaking on the web.&amp;nbsp; He was pretty intense and just an interesting character, the kind of person it would be fun to have lunch with.&amp;nbsp; His blog is probably one of the cooler things on &lt;a href="http://philly.com" title="philly.com"&gt;philly.com&lt;/a&gt; right now, and I was interested and kind of surprised to hear how hard a time he had convincing the Inquirer to let him do a blog.&amp;nbsp; Apparently when he first suggested doing an online column, they were skeptical of the idea and rejected it.&lt;br/&gt; &lt;br/&gt; Although this event wasn't as enlightening as I had hoped it would be, it was well organized and worth attending.&amp;nbsp; I'd very much like to see the web / tech community in Philadelphia become a little more active and gather together for events such as this one. Outside of a small circle of programmers I've met at Penn, I haven't really seen too much activity of this sort in Philadelphia, so I really appreciated Dragonfire's efforts in organizing this event.&amp;nbsp; I hope Amy and the Dragonfire folks continue to do this type of thing in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116223805581513653?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116223805581513653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116223805581513653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116223805581513653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116223805581513653'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/10/thoughts-on-dragonfires-digital-media.html' title='Thoughts on Dragonfire&apos;s Digital Media Conference'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116179034582640163</id><published>2006-10-25T11:29:00.000-04:00</published><updated>2006-11-10T22:59:13.734-05:00</updated><title type='text'>Blogging / Digital Media Jawn at Barnes and Noble</title><content type='html'>There's &lt;a href="http://dragonballyee.com/blog/2006/10/25/bloggers-and-digital-media-specialists/trackback/"&gt;Mini Conference&lt;/a&gt; for bloggers / people in digital media this weekend at Barnes and Noble.  I'll be there, and you should too.&lt;br /&gt;&lt;br /&gt;It's good to see something like this happening in Philly.  Just yesterday I was looking for similar stuff in San Francisco to hit up when I visit there next year, cause there is such a dearth of similar events in Philly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116179034582640163?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116179034582640163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116179034582640163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116179034582640163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116179034582640163'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/10/blogging-digital-media-jawn-at-barnes.html' title='Blogging / Digital Media Jawn at Barnes and Noble'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116127420080904522</id><published>2006-10-19T12:10:00.000-04:00</published><updated>2006-11-10T22:59:13.472-05:00</updated><title type='text'>Two Philly Startups Compete with City Search</title><content type='html'>DiningInfo.com is a restaurant search sites that provides a link to each restaurant's website and links to reviews found by Google. CityJoints.com uses a proprietary algorithm to generate restaurant picks based on a user's preferences. "Think Netflix, but for restaurants."&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.philly.com/mld/inquirer/15791651.htm"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/tech_news/Two_Philly_Startups_Compete_with_City_Search"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116127420080904522?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116127420080904522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116127420080904522' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116127420080904522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116127420080904522'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/10/two-philly-startups-compete-with-city.html' title='Two Philly Startups Compete with City Search'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-115889089268819529</id><published>2006-09-21T22:01:00.000-04:00</published><updated>2006-11-10T22:59:12.617-05:00</updated><title type='text'>Big News: PhilaFunk.com Battle of the Bands, $10,00 Prize</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;a href="http://philafunk.com?kwin"&gt;PhilaFunk.com&lt;/a&gt;, where I'm spending most of my time now, announced Tuesday night that they're going to be hosting a nationwide Online Battle of the Bands.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Any unsigned bands can compete for the $10,000 prize offered by the social networking / online music store.  Competition will mainly be determined by &lt;a href="http://philafunk.com?kwin"&gt;PhilaFunk.com&lt;/a&gt; user voting and will last 52 weeks.  For first 40 weeks, weekly winners will be selected to compete in the semifinals.  From the top 40, 10 finalists will then be chosen to fly to Philadelphia to film video performances to be used for the final round of competition.  The top band will then be determined and will receive a $10,000 prize.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Time for me to vent a little now:  It's tough fighting the big boys.  I posted the announcement about PhilaFunk's nationwide Online Battle of the Bands competition on our homepage on Tuesday night.  Wednesday while I was eating lunch I read that YouTube just announced a nationwide online battle of the bands competition.  Seems like everytime we do something, Myspace or Youtube or some other big site announces the same thing shortly afterwards. Grrrr.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-115889089268819529?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/115889089268819529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=115889089268819529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/115889089268819529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/115889089268819529'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/09/big-news-philafunkcom-battle-of-bands.html' title='Big News: PhilaFunk.com Battle of the Bands, $10,00 Prize'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116214026238476426</id><published>2006-09-19T11:43:00.000-04:00</published><updated>2006-11-10T22:59:14.058-05:00</updated><title type='text'>Adding a mysql foreign key constraint using ruby on rails migrations</title><content type='html'>There isn't really a 'ruby' way to do this yet, so you just have to use some custom sql executions:&lt;br /&gt;&lt;br /&gt;First, create the migration:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;./script/generate migration event_foreign_keys&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Next, write the up and down methods:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;class EventForeignKeys &lt; ActiveRecord::Migration&lt;br /&gt;  def self.up&lt;br /&gt;    execute "ALTER TABLE event_rsvps&lt;br /&gt;        ADD CONSTRAINT rsvp_constrained_by_event FOREIGN KEY (event_id)&lt;br /&gt;        REFERENCES events (id)&lt;br /&gt;        ON DELETE CASCADE"&lt;br /&gt;    puts "\n\n** NOTE **  This migration requires MySQL 5 or higher."&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def self.down&lt;br /&gt;    "ALTER TABLE event_rsvps DROP FOREIGN KEY rsvp_constrained_by_event"&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Do your migration:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;rake migrate&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;It's always a good idea to check both ways, so you may want to revert then migrate again to be sure.   Assuming you just wrote your tenth migration:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;rake migrate VERSION=9&lt;br /&gt;rake migrate&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Finally, migrate the production database:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;rake environment RAILS_ENV=production migrate&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116214026238476426?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116214026238476426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116214026238476426' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116214026238476426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116214026238476426'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/09/adding-mysql-foreign-key-constraint.html' title='Adding a mysql foreign key constraint using ruby on rails migrations'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116101152960093469</id><published>2006-09-19T11:08:00.000-04:00</published><updated>2006-11-10T22:59:13.058-05:00</updated><title type='text'>Adding a mysql foreign key constraint using ruby on rails migrations</title><content type='html'>There isn't really a 'ruby' way to do this yet, so you just have to use some custom sql executions:&lt;br /&gt;&lt;br /&gt;First, create the migration:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;./script/generate migration event_foreign_keys&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Next, write the up and down methods:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;class EventForeignKeys &lt; ActiveRecord::Migration&lt;br /&gt;  def self.up&lt;br /&gt;    execute "ALTER TABLE event_rsvps&lt;br /&gt;        ADD CONSTRAINT rsvp_constrained_by_event FOREIGN KEY (event_id)&lt;br /&gt;        REFERENCES events (id)&lt;br /&gt;        ON DELETE CASCADE"&lt;br /&gt;    puts "\n\n** NOTE **  This migration requires MySQL 5 or higher."&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def self.down&lt;br /&gt;    "ALTER TABLE event_rsvps DROP FOREIGN KEY rsvp_constrained_by_event"&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Do your migration:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;rake migrate&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;It's always a good idea to check both ways, so you may want to revert then migrate again to be sure.   Assuming you just wrote your tenth migration:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;rake migrate VERSION=9&lt;br /&gt;rake migrate&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Finally, migrate the production database:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;rake environment RAILS_ENV=production migrate&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116101152960093469?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116101152960093469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116101152960093469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116101152960093469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116101152960093469'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/09/adding-mysql-foreign-key-constraint_19.html' title='Adding a mysql foreign key constraint using ruby on rails migrations'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116214035685081896</id><published>2006-08-15T11:45:00.000-04:00</published><updated>2006-11-10T22:59:14.399-05:00</updated><title type='text'>Howto write some quick fixtures for your rails app</title><content type='html'>&lt;p&gt;I was doing a little unit testing the other day and the time came to make some fixtures for a new model.  Here&amp;#8217;s a little trick I pulled to make this a little easier (if you have some information in your development database).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Fireup your development console:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;./script/console&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Suppose your new model is review.rb.  Find a sample object from the developement db like this:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&gt;&gt; r = Review.find(:first)&lt;br /&gt;&lt;br /&gt;=&gt; #&amp;#8221;This joint had amazing food&amp;#8217;&amp;#8221;, &amp;#8220;created_at&amp;#8221;=&gt;&amp;#8221;2006-02-07 22:37:19&amp;#8243;, &amp;#8220;id&amp;#8221;=&gt;&amp;#8221;1&amp;#8243;, &amp;#8220;user_id&amp;#8221;=&gt;&amp;#8221;13&amp;#8243;, &amp;#8220;restaurant_id&amp;#8221;=&gt;&amp;#8221;1&amp;#8243;}&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&gt;&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Copy and paste this text into your favorite editor supporting regular expression find and replace (I like Textmate).  To get this a little more readable, run the following find and replace, making sure you are using regular expression search:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;,\s&lt;br /&gt;&lt;br /&gt;\n&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;This will put each attribute on a new line, making it nice and readable.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Next, let&amp;#8217;s do the following to convert this to yml:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&amp;#8220;(\w*)&amp;#8221;=&gt;&amp;#8221;(.*)&amp;#8221;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$1:$2&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;You may also have to do this if some of the values are nil:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&amp;#8220;(\w*)&amp;#8221;=&gt;nil&lt;br /&gt;&lt;br /&gt;$1:$2&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Give each object a name, and you&amp;#8217;re done. Here&amp;#8217;s what you end up with:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;first_review:&lt;br /&gt;&lt;br /&gt;review: This joint had amazing food&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;created_at: 2006-02-07 22:37:19&lt;br /&gt;&lt;br /&gt;id: 1&lt;br /&gt;&lt;br /&gt;user_id: 13&lt;br /&gt;&lt;br /&gt;restaurant_id: 1&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;This may not seem like much, but it&amp;#8217;s great if you use it for a collection of objects that each has a lot of attributes.  It can be a huge time saver.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116214035685081896?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116214035685081896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116214035685081896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116214035685081896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116214035685081896'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/08/howto-write-some-quick-fixtures-for.html' title='Howto write some quick fixtures for your rails app'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-115401997241119477</id><published>2006-07-27T13:04:00.000-04:00</published><updated>2006-11-10T22:59:12.340-05:00</updated><title type='text'>Writing for a New Web Development Blog</title><content type='html'>I've started putting all of my programmimg / tech / web development related stuff on a new blog, &lt;span style="text-decoration:line-through;"&gt;&lt;a href="http://3niac.com/blog/"&gt;3niac&lt;/a&gt;&lt;/span&gt; -- now at the &lt;a href="http://3niacdevelopers.blogspot.com"&gt;3niac Developers Blog&lt;/a&gt;.  It has some articles containing useful programming and web development stuff Iqram and I have encountered, as well as links to other useful articles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-115401997241119477?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/115401997241119477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=115401997241119477' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/115401997241119477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/115401997241119477'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/07/writing-for-new-web-development-blog.html' title='Writing for a New Web Development Blog'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116214049862180960</id><published>2006-07-27T11:47:00.000-04:00</published><updated>2006-11-10T22:59:14.761-05:00</updated><title type='text'>How To Install A Spell Checker For Firefox 1.5.5</title><content type='html'>&lt;p&gt;I finally got around to installing a spell checker for Firefox today, just after I updated to version 1.5.5.  I found a really nice howto that explains exactly how to install the Spellbound extension (along with the spell check library and dictionary for the language of your choice) here:  &lt;a title="How to Install a Spell Checker Into Firefox" href="http://www.wikihow.com/Install-a-Spell-Checker-Into-Firefox"&gt;How to Install a Spell Checker Into Firefox&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I only ran into one problem during the three part installation:  The spellbound_lib_win32_1.0.6.xpi ( I was on the PC while installing, I&amp;#8217;ll try the Mac later and post a comment letting you know how that works out) was not compatible with my version of firefox.  This was easily fixed.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I right clicked on the xpi file and saved it to my desktop.  Then I renamed it to spellbound_lib_win32_1.0.6.zip, opened it, and opened the install.rdf file in TextPad.  I then changed the  line:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;em:maxVersion&amp;gt;1.0&amp;lt;/em:maxVersion&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;pre&gt;to&lt;/pre&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;em:maxVersion&amp;gt;1.5.5&amp;lt;/em:maxVersion&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Voila!  The install now works. After installing this and the English Dictionary, I restarted Firefox.  To make sure you are using the dictionary you downloaded, go to Tools &gt; Extensions &gt; Spellbound.  Click on the TestArea tab, and then click the ABC-check button that checks the spelling for the page.  Inside the dialog box that opens, choose your dictionary from the Language dropdown in the bottom left.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116214049862180960?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116214049862180960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116214049862180960' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116214049862180960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116214049862180960'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/07/how-to-install-spell-checker-for.html' title='How To Install A Spell Checker For Firefox 1.5.5'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116214055352070543</id><published>2006-07-25T11:48:00.000-04:00</published><updated>2006-11-10T22:59:15.036-05:00</updated><title type='text'>How to choose a color for your new website</title><content type='html'>by Iqram:&lt;br /&gt;&lt;br /&gt;     &lt;p&gt;I have made a number of websites and still have trouble trying to nail the perfect color scheme when creating a new website.  I often find myself changing my shades of blue, trying to find the perfect grey or trying to find a green that looks the same on different monitors.  This task is quite tough and while you may think you have found the perfect yellow - the minute you take a look at it on your work computer you find that it&amp;#8217;s either too light or too dark.  This problem is the cause of many wasted hours so I feel that by documenting my knowledge and my wasted hours I maybe able save some web designers some time.  I will outline the process in steps below.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I first look through my favorite color websites to get my creative juices flowing.  Take a look through them and find out which one works best for you. They have now become essential for my web design and really help me pick the right colors.&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;1. &lt;a title="Color schemer" target="_blank" href="http://www.colorschemer.com/schemes/tags/"&gt;Color Schemer / showing all tags&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This page is excellent.  It is compiled by web developers like me.  You can browse through tagged color schemes and you&amp;#8217;ll be amazed by what you find.  Keep in mind, all of them are not perfectly web friendly or perfect for different monitors, but when you find one that works you can be sure that all the colors in the scheme match and this makes life much easier.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;2. &lt;a target="_blank" title="Website-Colors" href="http://www.website-colors.com/"&gt;Website-Colors&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This site is useful to find colors that match a color that you really want to use.  You enter in the HEX or RGB values and it returns six colors that match it.  Quite useful.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;3. &lt;a title="Color Scheme Generator" href="http://wellstyled.com/tools/colorscheme2/index-en.html"&gt;Color Scheme Generator &lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Another site that gives you color schemes to choose from.  What is nice about this one is that you can choose from five types of schemes (Mono, Contrast, Triad, Tetrad, Analogic).  This is useful if you say want you site to have one color theme but with different shades of that color that match.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;After using the color sites above to come up with the right combination of colors, I make sure to cross test my scheme on every monitor possible.  You can&amp;#8217;t go wrong with testing.  &lt;strong&gt;Make sure that the colors you have chosen look good on every monitor possible.&lt;/strong&gt; I can&amp;#8217;t emphasize this enough.  This will save you hours of your time.  Do this before you start putting your site together, trust me on that!  I learned the hard way.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Keep in mind that it&amp;#8217;s very tought to get every color to look the same on every monitor, but that is where the compromise comes in. I am satisfied with the same color looking slightly different on every monitor as long as it looks good on every monitor.  That is a compromise I have chosen to make.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Step 3 &lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;If I&amp;#8217;m awfully frustrated I try to stick to what works.  Sometimes it&amp;#8217;s best to extract colors from websites that are popular (eg. google, yahoo, digg etc) because you know that they have done their research and chosen colors that look good on every monitor.  There is nothing wrong with using their colors especially if you know they work.&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;Grey is a safe bet.  It looks sleek if used niceley and is monitor compatibe.  Take a look at some of my favorite greys:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;#BBBBBB&lt;/p&gt;&lt;br /&gt;&lt;p&gt;#CCCCCC&lt;/p&gt;&lt;br /&gt;&lt;p&gt;#F4F4F4&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;#666666&lt;/p&gt;&lt;br /&gt;&lt;p&gt;#DBDBDB&lt;/p&gt;&lt;br /&gt;&lt;p&gt;#DCDCDC&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Black is also a save bet.  Some commonly used blacks are:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;#000000&lt;/p&gt;&lt;br /&gt;&lt;p&gt;#333333&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It is important to pick a nice color scheme for your new website because this is what your users see first.  Colors set the theme of your website and it&amp;#8217;s important to give your user the right impression of what you want your site to portray.  It is frustrating but any web designer can do it.  The links I have provided are a safe starting point, the rest is left to you.  Spend the time necessary to chose colors that are going to capture your audience.  It will make a world of a difference!  I hope this article has helped.  And remember, it doesn&amp;#8217;t hurt to get a second opinion on your color scheme.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116214055352070543?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116214055352070543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116214055352070543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116214055352070543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116214055352070543'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/07/how-to-choose-color-for-your-new.html' title='How to choose a color for your new website'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-116214061793420512</id><published>2006-07-21T11:49:00.000-04:00</published><updated>2006-11-10T22:59:15.414-05:00</updated><title type='text'>Howto use variables in javascript regular expression pattern matching</title><content type='html'>&lt;p&gt;I was writing a little javascript the other day when I ran into a problem:  I needed to do a match against a pattern that would be determined by the value of a variable.  The scenario was something like this:  I had a variable, &lt;em&gt;name&lt;/em&gt;, and I needed to find an &lt;em&gt;a&lt;/em&gt; node that contained the &lt;em&gt;name&lt;/em&gt; in the text of the node.&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;name // Ralph&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a xhref="/ralphs_page"&gt;Home of Ralph&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;My goal was to just delete this node by doing a string replace where I matched the whole node containing the name Ralph and replaced it with the empty string, &amp;#8220;&amp;#8221;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I haven&amp;#8217;t ever had to create a regular expression that is based on variable input in javascript before, and it took a little research to actually figure this out, so I figured I&amp;#8217;d document this and save anyone else with the same problem some time.  Here&amp;#8217;s the solution:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;//name holds value like &amp;#8216;Ralph&amp;#8217;&lt;br /&gt;&lt;br /&gt;var oldtext = $(&amp;#8217;lst_nms&amp;#8217;).innerHTML;//html with lots of different names&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;var re = new RegExp(&amp;#8217;&lt;a[^&lt;]*?' + name + '&lt;\/a&gt;&amp;#8216;, &amp;#8216;i&amp;#8217;);&lt;br /&gt;&lt;br /&gt;var newtext = oldtext.replace(re,'&amp;#8217;);&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;That&amp;#8217;s all you have to do to have variables interpolate in your regular expression in javascript.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-116214061793420512?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/116214061793420512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=116214061793420512' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116214061793420512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/116214061793420512'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/07/howto-use-variables-in-javascript.html' title='Howto use variables in javascript regular expression pattern matching'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-115242046234487973</id><published>2006-07-09T00:45:00.000-04:00</published><updated>2006-11-10T22:59:11.463-05:00</updated><title type='text'>How to Store Sessons in a Database Table in Ruby on Rails</title><content type='html'>&lt;h2&gt;The How (see below for a reason why to store your sessions in a database table)&lt;/h2&gt;&lt;br /&gt;0. (skip to 3 for a shortcut that I discovered after writing this.)&lt;br /&gt;&lt;br /&gt;1. Generate a new migration that will create the sessions table:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% ./script/generate migration sessions_table&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2. write the migration:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class SessionsTable &lt; ActiveRecord::Migration&lt;br /&gt;  def self.up&lt;br /&gt;   create_table "sessions" do |t|&lt;br /&gt;     t.column 'sessid', :string, :limit =&gt; 255&lt;br /&gt;     t.column 'data', :text&lt;br /&gt;     t.column 'updated_at', :datetime&lt;br /&gt;   end&lt;br /&gt;   add_index :sessions, 'sessid'&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def self.down&lt;br /&gt;    drop_table :sessions&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Always make sure to defien the "down" side, which will allow you to revert to your previous schema.  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Instead of doing 1 and 2, you can just run from the command line &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% rake db:sessions:create&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I should have known Rails provides a shortcut that works like magic!  (This was in the comments in environment.rb.)&lt;br /&gt;&lt;br /&gt;4. Next, run the migration:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% rake migrate&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;* Note, if you have to migrate the production table, or the table for another schema, you'll have to do:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% rake environment RAILS_ENV=production migrate&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;5. In config/environment.rb add (or uncomment) the following line:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;config.action_controller.session_store = :active_record_store&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you just want to store sessions for production environment, put the preceding line in config/environments/production.rb.&lt;br /&gt;&lt;br /&gt;6. Restart your webserver--anytime you change your schema or one of the environment files, you'll need to restart your webserver.  For webrick, kill the current instance  and restart using &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% ./script/server&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If you control your own apache server, as root do either&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% service httpd restart&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;or&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% service httpd graceful&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Or, if you're using a shared host like Dreamhost, find the fast cgi processes and kill them:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;% ps aux&lt;br /&gt;...&lt;br /&gt;kortina     5996  0.0  0.5 25172 22592 ?       S    18:41   0:01 ruby dispatch.fcg&lt;br /&gt;...&lt;br /&gt;% kill -9 5996&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Why to Store Sessions in the Database&lt;/h2&gt;&lt;br /&gt;If you have more than one server, a session might have requests handled by different machines.  Thus, storing session data in a local file on a single machine will cause problems, as it won't be accessible to the other servers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-115242046234487973?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/115242046234487973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=115242046234487973' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/115242046234487973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/115242046234487973'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/07/how-to-store-sessons-in-database-table.html' title='How to Store Sessons in a Database Table in Ruby on Rails'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-115155175871335221</id><published>2006-06-28T23:20:00.000-04:00</published><updated>2006-11-10T22:59:11.033-05:00</updated><title type='text'>Greatest OS X Trick Ever (keyboard navigation)</title><content type='html'>This is so simple and I cannot believe it took me so long to discover this setting.  After almost a year of putting up with the annoyance of using a mac and not being able to hit tab to select web form drop down menus and submit buttons, I finally discovered how to make the tab key work properly.&lt;br /&gt;&lt;br /&gt;All you have to do is enable full keyboard access.  Either hit ^F7 or go to System Preferences &gt; Keyboard and Mouse &gt; Keyboard, and under "Full Keyboard Access", choose All Controls.  You'll have to restart firefox in order to make it work there.&lt;br /&gt;&lt;br /&gt;Thanks to Brian for posting how to do this on his blog in &lt;br /&gt;&lt;a href="http://www.leaveitbehind.com/home/2006/01/tab_through_for.html#comment-19111945"&gt;this article&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-115155175871335221?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/115155175871335221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=115155175871335221' title='83 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/115155175871335221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/115155175871335221'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/06/greatest-os-x-trick-ever-keyboard.html' title='Greatest OS X Trick Ever (keyboard navigation)'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>83</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-115117199063012058</id><published>2006-06-24T13:59:00.000-04:00</published><updated>2006-11-10T22:59:10.642-05:00</updated><title type='text'>Chess + Boxing = Chessboxing... origin of the sport</title><content type='html'>Great history of how the sport came to be with video. Inspired by a comic book.  Rules: Two competitors face each other in 11 alternating rounds, six of chess, five of boxing. Participants win by way of knockout, checkmate, referee's decision, or if his opponent exceeds the allotted total of 12 minutes for an entire match on the chessboard.&lt;br /&gt;&lt;br /&gt;Wow, this sport looks awesome.  Check out the video.  Wu Tang style.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://sports.espn.go.com/espn/eticket/story?page=chessboxing"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/gaming/Chess_Boxing_=_Chessboxing..._origin_of_the_sport"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-115117199063012058?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/115117199063012058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=115117199063012058' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/115117199063012058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/115117199063012058'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/06/chess-boxing-chessboxing-origin-of.html' title='Chess + Boxing = Chessboxing... origin of the sport'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-114874339323239239</id><published>2006-05-27T11:20:00.000-04:00</published><updated>2006-11-10T22:59:10.371-05:00</updated><title type='text'>Self Portrait</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/kortina/154180043/" title="photo sharing"&gt;&lt;img src="http://static.flickr.com/52/154180043_09374ae7f1_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/kortina/154180043/"&gt;Self Portrait&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/kortina/"&gt;kortina1&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;I noticed a few weeks ago that this bookshelf is a pretty concise summary of what's going on right now.  ibook, theglennlivet, and white tees:  a sine qua non triplet.&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-114874339323239239?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/114874339323239239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=114874339323239239' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/114874339323239239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/114874339323239239'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/05/self-portrait.html' title='Self Portrait'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-114867653821143022</id><published>2006-05-26T16:25:00.000-04:00</published><updated>2006-11-10T22:59:10.008-05:00</updated><title type='text'>Howto Make a Customized Google Search Bookmarklet</title><content type='html'>&lt;p&gt;While learning Ruby on Rails over the past few months, I've made countless trips to the &lt;a href="http://wiki.rubyonrails.com/" title="Ruby on Rails Wiki"&gt;Ruby on Rails Wiki&lt;/a&gt; to find more information and help when the API doesn't have the answers I'm looking for.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;At first when I needed an answer, I would just google things like "ruby on rails scaffolding howto".  Then, when I realized that most of the time I ended up on the rail wiki, I started prefixing searches with a special google search term to limit my search to the wiki.  These searches looked like:  "site:wiki.rubyonrails.com scaffolding".  If I just used CMD-k to pop into Firefox's google search box, rather than going to &lt;a href="http://www.google.com/"&gt;google.com&lt;/a&gt; to do searches, this was a pretty efficient way of doing things&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Then, one day one of my coworkers showed me a javascript bookmarklet he'd created that allowed him to easily jump to specific pages on our internal help documentation site.  I decided it would be cool (and useful) if I made something similar to search the rails wiki.  Here's what I came up with:&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;&lt;a href="javascript:Qr=document.getSelection();if(!Qr){void(Qr=prompt('Search the Rails Wiki for:'))};if(Qr)location.href='http://www.google.com/search?num=30&amp;hl=en&amp;lr=&amp;q='+escape(Qr)+'+site%3Awiki.rubyonrails.com+-intitle%3A%22Rev+%22+-inurl%3A%22%2Fversions%2F%22'" title="Search Rails Wiki"&gt;Search Rails Wiki&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;Here's how I made it.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;First, I went to google and entered a few special search terms into the search box.  I used site:wiki.rubyonrails to limit the search to the rails wiki.  Then I tried to find a way to remove duplicate pages from the results.  Older versions of wiki pages seemed to occur in 2 varieties.  Either they were titled things like "Tutorial Scaffolding (Rev #5) in Rails" or they were title things like "WhenToUseTheModelMethod (Version #9) in Ruby on Rails".  The urls for each are respectively &lt;a href="wiki.rubyonrails.com/rails/revision/TutorialScaffolding?rev=5"&gt;wiki.rubyonrails.com/rails/revision/TutorialScaffolding?rev=5&lt;/a&gt; and &lt;a href="wiki.rubyonrails.com/rails/pages/WhenToUseTheModelMethod/versions/9"&gt;wiki.rubyonrails.com/rails/pages/WhenToUseTheModelMethod/versions/9 &lt;/a&gt;.  Here's two ways to filter results like these.  To filter out the (Rev #...) duplicates I added the search term -intitle:"Rev ".  The intitle operator searches page titles for the term "Rev " and the preceding "-" tells google to return pages that do NOT have this term in the title.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I filtered out the Version duplicates using an inurl search term, which searches the url of pages.  "-inurl:/versions/" excludes urls in the versions directory.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Then, I borrowed a nifty feature from my coworker's bookmarklet that captures any selected text from your browser and does the search on that phrase.  If no text is selected, the javascript prompts you to enter search terms.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;When you put everything together, you end up with a nice little tool.  Enjoy.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-114867653821143022?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/114867653821143022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=114867653821143022' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/114867653821143022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/114867653821143022'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/05/howto-make-customized-google-search.html' title='Howto Make a Customized Google Search Bookmarklet'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-114843929407664987</id><published>2006-05-23T22:54:00.000-04:00</published><updated>2006-11-10T22:59:09.748-05:00</updated><title type='text'>Two-finger scrolling on older PowerBooks/iBooks</title><content type='html'>&lt;blockquote&gt;A useful feature found on newer Apple laptops allows two-finger scrolling on the trackpad: unfortunately, pre-2005 laptops don\'t have this feature built-in. This software makes it possible.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Wow, I just installed this and it rocks.  Dave has always been flaunting his two finger scrolling--but no more!  The action seems a tad choppy, but I haven't really used the new macs enough to know if this is any worse.  In any case, it is definately way better than the scroll bar.&lt;br /&gt;&lt;br /&gt;Mad props to the author.  Here's the direct link to the download/faq page:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www-users.kawo2.rwth-aachen.de/~razzfazz/iscroll2/"&gt;http://www-users.kawo2.rwth-aachen.de/~razzfazz/iscroll2/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www-users.kawo2.rwth-aachen.de/%7Erazzfazz/iscroll2/"&gt;read more&lt;/a&gt; | &lt;a href="http://digg.com/software/Two-finger_scrolling_on_older_PowerBooks_iBooks"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-114843929407664987?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/114843929407664987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=114843929407664987' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/114843929407664987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/114843929407664987'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/05/two-finger-scrolling-on-older.html' title='Two-finger scrolling on older PowerBooks/iBooks'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-114833447566778136</id><published>2006-05-22T17:43:00.000-04:00</published><updated>2006-11-10T22:59:09.305-05:00</updated><title type='text'>Cotton Is King</title><content type='html'>Check out &lt;a href="http://www.americanapparel.net/gallery/modernmarvels/qt.html"&gt;this video&lt;/a&gt; on American Apparel that I stumble across today.  I've always been a fan of the plain cotton tee, and nowadays I wear a white tshirt and jeans more than half of the time I leave the house.  KISS, I guess, or maybe I'm just really American.&lt;br /&gt;&lt;br /&gt;But hey, &lt;a href="http://www.amazon.com/gp/product/images/B0000025UW/ref=dp_image_text_0/102-4163386-2700128?%5Fencoding=UTF8&amp;n=5174&amp;amp;s=music"&gt;the Boss&lt;/a&gt; does it, so it's gotta be allright.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-114833447566778136?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/114833447566778136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=114833447566778136' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/114833447566778136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/114833447566778136'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/05/cotton-is-king.html' title='Cotton Is King'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-114831569899646480</id><published>2006-05-22T12:31:00.000-04:00</published><updated>2006-11-10T22:59:08.737-05:00</updated><title type='text'>I'm back</title><content type='html'>I haven't really been posting much to this thing, but I'm going to give it another go.  I've got some stuff to say now, which is really the main thing I was lacking earlier.   I've got some stuff to say about the recent work I've been doing on some webapps, gruburge and swooge, as well as my first experiences with Ruby on Rails.  Look out for some content.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-114831569899646480?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/114831569899646480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=114831569899646480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/114831569899646480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/114831569899646480'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2006/05/im-back.html' title='I&apos;m back'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-112687487559667330</id><published>2005-09-16T08:42:00.000-04:00</published><updated>2006-11-10T22:59:05.892-05:00</updated><title type='text'>What a way to start the day</title><content type='html'>While I was getting a cup of tea today, I ran into Max Mintz, and during our very brief conversation he said that if he could, he would clone me.  Coming from a man of his intellectual prowess (this is the same man who teaches a course in quantum computing at penn, the same man who said 'they broke the mold when they made Scott Weinstein,' another brilliant man), this is one of the best compliments I've ever gotten.  I was kind of dumbfounded by his words, and didn't know how to respond.  I just said thank you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-112687487559667330?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/112687487559667330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=112687487559667330' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112687487559667330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112687487559667330'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/09/what-way-to-start-day.html' title='What a way to start the day'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-112672142787571664</id><published>2005-09-14T14:10:00.000-04:00</published><updated>2006-11-10T22:59:05.363-05:00</updated><title type='text'>How to assign a domain name to your home web server</title><content type='html'>From Lifehacker.&lt;br /&gt;&lt;br /&gt;very nice.  swooge is coming soon.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.lifehacker.com/software/web-publishing/how-to-assign-a-domain-name-to-your-home-web-server-124804.php"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/links/How_to_assign_a_domain_name_to_your_home_web_server"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-112672142787571664?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/112672142787571664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=112672142787571664' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112672142787571664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112672142787571664'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/09/how-to-assign-domain-name-to-your-home.html' title='How to assign a domain name to your home web server'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-112559356896258941</id><published>2005-09-01T12:52:00.000-04:00</published><updated>2006-11-10T22:59:03.591-05:00</updated><title type='text'>25 SQL Commandments</title><content type='html'>Avoid poorly written SQL statements.&lt;br /&gt;&lt;br /&gt;very nice.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.dbpd.com/vault/9801xtra.htm"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/programming/25_SQL_Commandments"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-112559356896258941?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/112559356896258941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=112559356896258941' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112559356896258941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112559356896258941'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/09/25-sql-commandments.html' title='25 SQL Commandments'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-112480434053011121</id><published>2005-08-23T09:39:00.000-04:00</published><updated>2006-11-10T22:59:03.113-05:00</updated><title type='text'>An Overview of Current CSS Layout Techniques</title><content type='html'>How to jump start your new CSS design.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--very nice&lt;br/&gt;&lt;br/&gt;&lt;a href="http://particletree.com/features/an-overview-of-current-css-layout-techniques"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/design/An_Overview_of_Current_CSS_Layout_Techniques"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-112480434053011121?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/112480434053011121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=112480434053011121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112480434053011121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112480434053011121'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/08/overview-of-current-css-layout.html' title='An Overview of Current CSS Layout Techniques'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-112419505422165657</id><published>2005-08-16T08:24:00.000-04:00</published><updated>2006-11-10T22:59:02.347-05:00</updated><title type='text'>Coral Castle in Florida Built Using Technology of Pyramids</title><content type='html'>Man in Florida who built a castle out of blocks of coral weighing up to 30 tons each said that he had rediscovered the laws of weight, measurement, and leverage used by the Ancient Egyptians, and that these lost principles somehow involved the relationship of the Earth to certain positions of the heavenly bodies.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.parascope.com/en/articles/coralCastle.htm"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/science/Coral_Castle_in_Florida_Built_Using_Technology_of_Pyramids"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-112419505422165657?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/112419505422165657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=112419505422165657' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112419505422165657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112419505422165657'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/08/coral-castle-in-florida-built-using.html' title='Coral Castle in Florida Built Using Technology of Pyramids'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-112235109768291029</id><published>2005-07-26T00:11:00.000-04:00</published><updated>2006-11-10T22:59:02.032-05:00</updated><title type='text'>Personalized Google Page Gets RSS!!!</title><content type='html'>'Google's Personalized Page NOW HAS A RSS FEED Reader.'&lt;br /&gt;&lt;br /&gt;Good news.  Google ig can now show top digg stories or any other rss feed.  I think i'll actually use my homepage now that it has digg and slickdeals on it.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.google.com/ig"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/links/Personalized_Google_Page_Gets_RSS_"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-112235109768291029?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/112235109768291029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=112235109768291029' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112235109768291029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112235109768291029'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/07/personalized-google-page-gets-rss.html' title='Personalized Google Page Gets RSS!!!'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-112233702644083370</id><published>2005-07-25T20:17:00.000-04:00</published><updated>2006-11-10T22:59:01.589-05:00</updated><title type='text'>Google MapBuilder</title><content type='html'>MapBuilder lets you tag locations on a map and publish it on your own site.Mapping is now easier than ever. It's free.&lt;br /&gt;&lt;br /&gt;MapBuilder is a tool to generate HTML/JavaScript/AJAX source code with Google Maps API calls that you can copy and paste into your own site.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.mapbuilder.net/"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/technology/Google_MapBuilder"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-112233702644083370?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/112233702644083370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=112233702644083370' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112233702644083370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112233702644083370'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/07/google-mapbuilder.html' title='Google MapBuilder'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-112156042840885632</id><published>2005-07-16T20:33:00.000-04:00</published><updated>2006-11-10T22:59:01.288-05:00</updated><title type='text'>Great remote AJAX scripting article</title><content type='html'>'Sitepoint's Cameron Adams writes a detailed 3 page article about AJAX implementation. Great for noobs and experienced folks alike.'&lt;br /&gt;&lt;br /&gt;Really nice article.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://sitepoint.com/article/remote-scripting-ajax"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/programming/Great_remote_AJAX_scripting_article"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-112156042840885632?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/112156042840885632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=112156042840885632' title='30 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112156042840885632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/112156042840885632'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/07/great-remote-ajax-scripting-article.html' title='Great remote AJAX scripting article'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>30</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-111940933778649925</id><published>2005-06-21T23:02:00.000-04:00</published><updated>2006-11-10T22:59:00.902-05:00</updated><title type='text'>CPAINT</title><content type='html'>&lt;p class="mobile-post"&gt;This is an ajax development kit i'm checking out: &lt;br /&gt;http://cpaint.sourceforge.net/&lt;/p&gt;&lt;p class="mobile-post"&gt;Looks pretty cool.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-111940933778649925?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/111940933778649925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=111940933778649925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/111940933778649925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/111940933778649925'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/06/cpaint.html' title='CPAINT'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-111932599932909755</id><published>2005-06-20T23:51:00.000-04:00</published><updated>2006-11-10T22:59:00.616-05:00</updated><title type='text'>Code:  Very Nice Javascript Calendar Date Selector</title><content type='html'>This was by far the simplest, cleanest date selector I could find.  Check it out.&lt;br /&gt;&lt;br /&gt;http://www.dynamicdrive.com/dynamicindex7/jasoncalendar.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-111932599932909755?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/111932599932909755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=111932599932909755' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/111932599932909755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/111932599932909755'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/06/code-very-nice-javascript-calendar.html' title='Code:  Very Nice Javascript Calendar Date Selector'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-111898150589825942</id><published>2005-06-17T00:11:00.000-04:00</published><updated>2006-11-10T22:59:00.237-05:00</updated><title type='text'>Ajax On Rails</title><content type='html'>Really good article on creative ways to use java to make your website feel more like a desktop app.&lt;br /&gt;&lt;br /&gt;'In a few short months, Ajax has moved from an obscure and rarely used technology to the hottest thing since sliced bread. This article introduces the incredibly easy-to-use Ajax support that is part of the Ruby on Rails web application framework.'&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.onlamp.com/pub/a/onlamp/2005/06/09/rails_ajax.html"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/programming/Ajax_On_Rails"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-111898150589825942?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/111898150589825942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=111898150589825942' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/111898150589825942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/111898150589825942'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/06/ajax-on-rails.html' title='Ajax On Rails'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-111845212753553955</id><published>2005-06-10T21:08:00.000-04:00</published><updated>2006-11-10T22:58:59.262-05:00</updated><title type='text'>Finding Torrents with Google</title><content type='html'>Shameless plug, but see how simple it is to search for torrents using Google.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://allnews101.blogspot.com/2005/06/finding-torrents-with-google.html"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/links/Finding_Torrents_with_Google"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-111845212753553955?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/111845212753553955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=111845212753553955' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/111845212753553955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/111845212753553955'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/06/finding-torrents-with-google.html' title='Finding Torrents with Google'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7255273.post-111837684457058372</id><published>2005-06-10T00:13:00.000-04:00</published><updated>2006-11-10T22:58:58.928-05:00</updated><title type='text'>Testing, Testing</title><content type='html'>Let's see how this thing works.  This is a test post.  Hopefully, not too many more changes to the css.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7255273-111837684457058372?l=andrewkortina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewkortina.blogspot.com/feeds/111837684457058372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7255273&amp;postID=111837684457058372' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/111837684457058372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7255273/posts/default/111837684457058372'/><link rel='alternate' type='text/html' href='http://andrewkortina.blogspot.com/2005/06/testing-testing.html' title='Testing, Testing'/><author><name>kortina</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_3FPfpXHnCwA/So1F1_y8F6I/AAAAAAAAATU/N3DoW1ZDVEg/S220/kortina-square-university-cafe.jpg'/></author><thr:total>2</thr:total></entry></feed>
