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

<channel>
	<title>Richard K Miller &#187; Programming</title>
	<atom:link href="http://richardkmiller.com/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://richardkmiller.com</link>
	<description></description>
	<lastBuildDate>Sun, 11 Mar 2012 00:27:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>FamilyLink.com + Kynetx: How websites could be better with your family</title>
		<link>http://richardkmiller.com/860/familylink-com-kynetx-how-websites-could-be-better-with-your-family</link>
		<comments>http://richardkmiller.com/860/familylink-com-kynetx-how-websites-could-be-better-with-your-family#comments</comments>
		<pubDate>Thu, 07 Jan 2010 20:54:37 +0000</pubDate>
		<dc:creator>Richard K Miller</dc:creator>
				<category><![CDATA[Family]]></category>
		<category><![CDATA[FamilyLink.com]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://richardkmiller.com/?p=860</guid>
		<description><![CDATA[I&#8217;ve been playing around with Kynetx.com technology. I think it has a lot of cool potential for helping FamilyLink.com users see who their relatives are across multiple websites. For example, What if you could see your FamilyLink.com relatives directly in &#8230; <a href="http://richardkmiller.com/860/familylink-com-kynetx-how-websites-could-be-better-with-your-family">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class='microid-c328364b4ed2bc0cbbde125a8adbfa04eb597c0d'><p>I&#8217;ve been playing around with <a href="http://kynetx.com/">Kynetx.com</a> technology. I think it has a lot of cool potential for helping FamilyLink.com users see who their relatives are across multiple websites.</p>
<p>For example,</p>
<ul>
<li>What if you could see your FamilyLink.com relatives directly in Facebook?</li>
<li>If you knew which LinkedIn users were your relatives, would you be more likely to do business?</li>
<li>If you knew which Twitter users were your relatives, would you be more likely to follow them?</li>
<li>If you discovered that a comment on a political news story with which you strongly disagreed was from a relative, would you be more careful how you responded?</li>
</ul>
<p>Here&#8217;s a demo video:<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/skDe5WGNbHg&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/skDe5WGNbHg&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://richardkmiller.com/860/familylink-com-kynetx-how-websites-could-be-better-with-your-family/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Reminiscing about Provo411.com and Scraping the Course Catalog</title>
		<link>http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog</link>
		<comments>http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog#comments</comments>
		<pubDate>Thu, 08 Oct 2009 17:58:11 +0000</pubDate>
		<dc:creator>Richard K Miller</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[BYU]]></category>
		<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://richardkmiller.com/?p=780</guid>
		<description><![CDATA[One of my first web development projects and biz partnerships with Brian Stucki was Provo411.com. We were roommates at BYU and conceived of a website where students could share events &#8212; parties, concerts, football games, etc. We were already in &#8230; <a href="http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class='microid-094c99b227bd0f07e51e726ad993de96274495c3'><p>One of my first web development projects and biz partnerships with <a href="http://www.brianstucki.com/blog/">Brian Stucki</a> was <a href="http://www.provo411.com/">Provo411.com</a>. We were roommates at BYU and conceived of a website where students could share events &#8212; parties, concerts, football games, etc. We were already in our beds for the night when the idea came, but we couldn&#8217;t go to sleep before buying the domain. I think it was the first domain I ever bought. It was September 2002.</p>
<p>I developed a calendar in PHP and wrote a few scripts to scrape <a href="http://byucougars.com/">byucougars.com</a> and retrieve the sports schedules. I also developed a <a href="http://en.wikipedia.org/wiki/Wireless_Markup_Language">WML</a> app so Brian and I could add events to the calendar from our pre-iPhone mobile phones. I recall being at a party in south Provo, in a former dental office, and using my Nextel phone to add the party to Provo411. If you go back far enough, you can see <a href="http://www.provo411.com/2003/10">events on the calendar</a>. My brother Alan did the artwork.</p>

<a href='http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog/byu' title='BYU'><img width="30" height="30" src="http://richardkmiller.com/wp-content/uploads/2009/10/BYU.jpg" class="attachment-thumbnail" alt="BYU" title="BYU" /></a>
<a href='http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog/concert' title='Concert'><img width="30" height="30" src="http://richardkmiller.com/wp-content/uploads/2009/10/Concert.jpg" class="attachment-thumbnail" alt="Concert" title="Concert" /></a>
<a href='http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog/dance' title='Dance'><img width="30" height="30" src="http://richardkmiller.com/wp-content/uploads/2009/10/Dance.jpg" class="attachment-thumbnail" alt="Dance" title="Dance" /></a>
<a href='http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog/football' title='Football'><img width="30" height="30" src="http://richardkmiller.com/wp-content/uploads/2009/10/Football.jpg" class="attachment-thumbnail" alt="Football" title="Football" /></a>
<a href='http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog/live_band' title='Live_Band'><img width="30" height="30" src="http://richardkmiller.com/wp-content/uploads/2009/10/Live_Band.jpg" class="attachment-thumbnail" alt="Live_Band" title="Live_Band" /></a>
<a href='http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog/meal' title='Meal'><img width="30" height="30" src="http://richardkmiller.com/wp-content/uploads/2009/10/Meal.jpg" class="attachment-thumbnail" alt="Meal" title="Meal" /></a>
<a href='http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog/soccer' title='Soccer'><img width="30" height="30" src="http://richardkmiller.com/wp-content/uploads/2009/10/Soccer.jpg" class="attachment-thumbnail" alt="Soccer" title="Soccer" /></a>
<a href='http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog/talk' title='Talk'><img width="30" height="30" src="http://richardkmiller.com/wp-content/uploads/2009/10/Talk.jpg" class="attachment-thumbnail" alt="Talk" title="Talk" /></a>
<a href='http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog/theater' title='Theater'><img width="30" height="30" src="http://richardkmiller.com/wp-content/uploads/2009/10/Theater.jpg" class="attachment-thumbnail" alt="Theater" title="Theater" /></a>
<a href='http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog/volleyball' title='Volleyball'><img width="30" height="30" src="http://richardkmiller.com/wp-content/uploads/2009/10/Volleyball.jpg" class="attachment-thumbnail" alt="Volleyball" title="Volleyball" /></a>

<p>I always wanted Provo411.com to have a course schedule alert system. Perhaps students would pay $3 to receive an email or SMS alert when hard-to-get classes had an opening. It shouldn&#8217;t have been hard technically, but the <a href="http://saas.byu.edu/classSchedule/schedule.php">publicly available course catalog</a> isn&#8217;t updated in real-time. I could have scraped the authenticated course catalog on Route Y, but BYU might have objected and it&#8217;d be a fragile business model.</p>
<p>My brother Michael recently came home from <a href="http://www.youtube.com/watch?v=TbwT4j-mLdw">his mission</a> and started school at <a href="http://www.csn.edu/">CSN</a>. The business classes he wanted were full, so I put the old &#8220;course schedule alert&#8221; idea to the test with some new tools &#8212; Ruby and Mac OS X&#8217;s speech. Here&#8217;s what I came up with:</p>
<pre class="brush: ruby; title: ;">
#!/usr/bin/env ruby

# a list of course call numbers to check
call_numbers = %w{ 46405 46407 46409 46411 46415 46413 53252 53254 53256 53258 53260 53262 53268 53270 53272 53274 46423 46435 53276 46443 }

# auth_token obtained via Firefox+TamperData while my brother logged into CSN
auth_token = &quot;123456789012345&quot;

say &quot;Checking&quot;

call_numbers.uniq.sort.each do |call_number|
    c = `curl -si -d CONVTOKEN=#{auth_token} -d AUDITT=N -d CALLT=#{call_number} -d CONTINUE=Continue &quot;https://bighorn.nevada.edu/sis_csn/XSMBWEBM/SIVRE04.STR&quot;`
    print &quot;Call number #{call_number}: &quot;
    if (c =~ /&lt;p class=&quot;p5&quot;&gt;([^&lt; ]+)&lt;br\/&gt;/m)
        if $1.strip.empty?
            puts &quot;May have openings\n&quot;
            3.times {say &quot;Michael, class number #{call_number} may be open!&quot;}
        else
            puts &quot;#{$1.strip}\n&quot;
        end
    else
        puts &quot;could not find message&quot;
        say &quot;Help. I cannot access the C S N website.&quot;
        return
    end
    sleep 5
end

# Ouput an audible message via Mac OS X's speech function
def say(message)
    `say &quot;#{message}&quot;`
end
</pre>
<p>We set this to run every 15 minutes on the living room iMac, and we turned up the volume. Every 15 minutes we could hear &#8220;Checking&#8221; from the computer. A few hours later we heard the script announce that a class had opened up. Michael, I&#8217;m still waiting for my $3.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://richardkmiller.com/780/reminiscing-about-provo411-com-and-scraping-the-course-catalog/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>More Flow, More Happiness</title>
		<link>http://richardkmiller.com/296/more-flow-more-happiness</link>
		<comments>http://richardkmiller.com/296/more-flow-more-happiness#comments</comments>
		<pubDate>Thu, 30 Aug 2007 05:18:35 +0000</pubDate>
		<dc:creator>Richard K Miller</dc:creator>
				<category><![CDATA[Flow]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.richardkmiller.com/blog/archives/2007/08/more-flow-more-happiness</guid>
		<description><![CDATA[I usually spend only 20% of my workday programming, but this week I&#8217;ve been doing more of it and it&#8217;s been awesome. There&#8217;s something really rewarding about refactoring code &#8212; making it more concise, more logical, more consistent. More beautiful. &#8230; <a href="http://richardkmiller.com/296/more-flow-more-happiness">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class='microid-dcf629c30e95c6c7df3e8f7af46bfb79d2f730b3'><p>I usually spend only 20% of my workday programming, but this week I&#8217;ve been doing more of it and it&#8217;s been awesome. There&#8217;s something really rewarding about refactoring code &#8212; making it more concise, more logical, more consistent. More beautiful. This isn&#8217;t even new code; I&#8217;m just pruning the old stuff in preparation for coming additions. Jon Udell says good programming is like good writing: you need multiple drafts.</p>
<p>For me, programming is the way I get into flow. Sometimes writing can do it for me too. For my grandmother, I think it was quilting. I believe much happiness comes from creating something.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://richardkmiller.com/296/more-flow-more-happiness/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Notes on Facebook</title>
		<link>http://richardkmiller.com/295/notes-on-facebook</link>
		<comments>http://richardkmiller.com/295/notes-on-facebook#comments</comments>
		<pubDate>Fri, 10 Aug 2007 13:29:40 +0000</pubDate>
		<dc:creator>Richard K Miller</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.richardkmiller.com/blog/archives/2007/08/notes-on-facebook</guid>
		<description><![CDATA[Thursday evening I presented briefly at the Utah Facebook Developers Garage. Here are the links and articles I shared: How big is it? Paul Allen: Internet Entrepreneur » Prediction: Facebook will be the largest social network in the world blog.pmarca.com: &#8230; <a href="http://richardkmiller.com/295/notes-on-facebook">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class='microid-ca2b77be46d6441027fd7b874c80a53f21ac7831'><p>Thursday evening I presented briefly at the <a href="http://www.phil801.com/wpblog/2007/08/09/utah-facebook-developers-garage-tonight/">Utah Facebook Developers Garage</a>. Here are the links and articles I shared:</p>
<h4>How big is it?</h4>
<p><a href="http://www.paulallen.net/2007/05/25/prediction-facebook-will-be-the-largest-social-network-in-the-world/">Paul Allen: Internet Entrepreneur » Prediction: Facebook will be the largest social network in the world</a></p>
<p><a href="http://blog.pmarca.com/2007/06/analyzing_the_f.html">blog.pmarca.com: Analyzing the Facebook Platform, three weeks in</a></p>
<p><a href="http://www.marketingvox.com/archives/2007/06/11/ilike-loves-an-open-facebook/?rss1">iLike Loves an Open Facebook &#8211; MarketingVOX</a></p>
<h4>Current growth</h4>
<p><a href="http://blog.jonudell.net/2007/06/15/facebookizing-the-web-webifying-facebook/">Facebookizing the Web, Webifying Facebook « Jon Udell</a></p>
<p><a href="http://www.google.com/search?client=safari&#038;rls=en&#038;q=facebook+application+site:craigslist.org&#038;ie=UTF-8&#038;oe=UTF-8">facebook application site:craigslist.org &#8211; Google Search</a></p>
<p><a href="http://www.elance.com/p/?q=eolsearch&#038;matchType=project#matchKeywords=facebook%20application&#038;catFilter=100">Search Projects on Elance | Elance</a></p>
<p><a href="http://www.google.com/search?num=50&#038;hl=en&#038;client=safari&#038;rls=en&#038;q=facebook+application&#038;btnG=Search">facebook application &#8211; Google Search</a></p>
<h4>Interesting commentary</h4>
<p><a href="http://www.techcrunch.com/2007/07/27/how-much-is-a-facebook-user-worth-at-least-030/">How Much Is A Facebook User Worth? At Least $0.30</a></p>
<p><a href="http://www.techcrunch.com/2007/07/24/9-ways-to-build-your-own-social-network/">9 Ways to Build Your Own Social Network</a></p>
<p><a href="http://www.commoncraft.com/facebook-addiction-and-new-news">Facebook, Addiction and the New News | Common Craft &#8211; Video Production and Consulting</a></p>
<p><a href="http://www.danah.org/papers/essays/ClassDivisions.html">Viewing American class divisions through Facebook and MySpace</a></p>
<p><a href="http://www.socialdegree.com/2007/05/29/facebook-platform-the-challenges-ahead-for-developers/">Social Degree » Facebook Platform &#8211; The Challenges Ahead For Developers</a></p>
<h4>Where to learn more</h4>
<p><a href="http://www.facereviews.com/">FaceReviews.com :: Facebook Application Reviews, Facebook Widgets and Facebook News. Sharing the Facebook Blog love.</a></p>
<p><a href="http://scobleizer.com/?s=facebook">Scobleizer</a></p>
<p><a href="http://www.socialdegree.com/index.php?s=facebook">Social Degree</a></p>
<p><a href="http://mashable.com/?s=facebook">Mashable! &#8211; The Social Networking Blog search results: facebook</a></p>
<p><a href="http://www.commoncraft.com/video-social-networking">Video: Social Networking in Plain English | Common Craft &#8211; Video Production and Consulting</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://richardkmiller.com/295/notes-on-facebook/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Amtrak series: Ruby on Rails on Rails</title>
		<link>http://richardkmiller.com/273/amtrak-series-ruby-on-rails-on-rails</link>
		<comments>http://richardkmiller.com/273/amtrak-series-ruby-on-rails-on-rails#comments</comments>
		<pubDate>Thu, 07 Jun 2007 17:00:50 +0000</pubDate>
		<dc:creator>Richard K Miller</dc:creator>
				<category><![CDATA[Amtrak]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://www.richardkmiller.com/blog/archives/2007/06/amtrak-series-ruby-on-rails-on-rails</guid>
		<description><![CDATA[This will be the most technical of my posts in the Amtrak series, but it&#8217;s not just for computer geeks so stay with me. Here we go. Ruby on Rails is a &#8220;web application framework&#8221;, a way for programmers to &#8230; <a href="http://richardkmiller.com/273/amtrak-series-ruby-on-rails-on-rails">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class='microid-25ab5b4d4da0e906b96ef5184bc029a41a0bb498'><p>This will be the most technical of my posts in the Amtrak series, but it&#8217;s not just for computer geeks so stay with me. Here we go.</p>
<p><a href="http://www.rubyonrails.org/">Ruby on Rails</a> is a &#8220;web application framework&#8221;, a way for programmers to make web applications more easily and more quickly (and more enjoyably, as its creators would be quick to point out.) It was created by <a href="http://37signals.com/">37signals</a>, the makers of Basecamp and other fine web apps, and has been one of the fastest growing programming environments of the last couple years. &#8220;Ruby&#8221; is the programming language and &#8220;Rails&#8221; is the set of additions that make it &#8220;fast&#8221; and &#8220;easy,&#8221; like a high-speed train. (Not a <a href="http://www.richardkmiller.com/blog/archives/2007/06/amtrak-series-pictures">sight-seeing Amtrak</a>.)</p>
<p><a href='http://www.richardkmiller.com/blog/wp-content/uploads/2007/06/img_0088.jpg' title='img_0088.jpg' rel='lightbox'><img src='http://www.richardkmiller.com/blog/wp-content/uploads/2007/06/img_0088.thumbnail.jpg' alt='img_0088.jpg' style='float:right; margin:1em;' /></a></p>
<p>You probably see where this is going. As an exercise in literalness, I though it would be interesting to do a little Ruby on Rails programming while on the train, or in other words, Ruby on Rails on Rails. (Mitch Hedberg said &#8220;I&#8217;d like to see a forklift lift a crate of forks. It&#8217;d be so&#8230;literal. &#8216;Hey, you&#8217;re using that machine for its exact purpose!&#8217;&#8221;) See the pictures.</p>
<p>I have not delved into Rails as much as my local colleagues, but with the little I&#8217;ve used it, I&#8217;ve been impressed. By taking away the tedious parts of programming, it really does make programming more enjoyable. I know <a href="http://www.johntaber.com/">several</a> <a href="http://www.griffio.com/">good</a> <a href="http://www.apriux.com/">developers</a> who prefer it.</p>
<p>Ruby on Rails enforces an architecture called &#8220;Model-View-Controller&#8221; (MVC), which is used heavily in Mac applications and well written web applications. Though not built on Rails, <a href="http://wordpress.org/">WordPress</a> also uses an MVC architecture. If you have a WordPress blog, you know you can easily change the theme of your blog. This is thanks to the modular MVC architecture with which it was written.</p>
<p><a href='http://www.richardkmiller.com/blog/wp-content/uploads/2007/06/img_0096.jpg' title='img_0096.jpg' rel='lightbox'><img src='http://www.richardkmiller.com/blog/wp-content/uploads/2007/06/img_0096.thumbnail.jpg' alt='img_0096.jpg' style='float:right; margin:1em;' /></a></p>
<p>Here&#8217;s where this applies to everyone: 37signals hasn&#8217;t only extracted Rails from their best programming practices, they&#8217;ve also extracted a book from their best business practices. I highly recommend <a href="http://gettingreal.37signals.com/">Getting Real</a> by 37signals, availably entirely for free on their <a href="http://gettingreal.37signals.com/toc.php">website</a>. They&#8217;ve <a href="http://www.37signals.com/svn/posts/451-whats-your-cookbook">given away their &#8220;cookbook&#8221;</a> &#8212; what they&#8217;ve learned about marketing, project management, time management, hiring, agility, task prioritization, and more. I finished the book believing that small teams can do great things.</p>
<p style='clear:both;'>
</div>]]></content:encoded>
			<wfw:commentRss>http://richardkmiller.com/273/amtrak-series-ruby-on-rails-on-rails/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

