<?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>Matt Dobson Design</title>
	<atom:link href="http://mattdobsondesign.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://mattdobsondesign.com</link>
	<description>Detroit Area Software Developer</description>
	<lastBuildDate>Sun, 08 Jul 2012 15:08:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Defining singleton methods in Ruby 1.9.2</title>
		<link>http://mattdobsondesign.com/?p=55</link>
		<comments>http://mattdobsondesign.com/?p=55#comments</comments>
		<pubDate>Sun, 08 Jul 2012 15:08:15 +0000</pubDate>
		<dc:creator>Mdobson4</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mattdobsondesign.com/?p=55</guid>
		<description><![CDATA[Been working on a MongoDB data mapping utility in Ruby. Figured I could hone my metaprogramming skills. Check out this snippet below. I ran into an interesting issue when defining dynamic methods for this data model. On every new instance instantiation the methods were being overwritten to return the new data from the mongo document. [...]]]></description>
			<content:encoded><![CDATA[<p>Been working on a MongoDB data mapping utility in Ruby. Figured I could hone my metaprogramming skills. Check out this snippet below.</p>
<script src="http://gist.github.com/3071299.js"></script>
<p>I ran into an interesting issue when defining dynamic methods for this data model. On every new instance instantiation the methods were being overwritten to return the new data from the mongo document. To fix this I decided to instantiate singleton methods for each document object in ruby. That way everything will be instantiated properly, and returning the data for the corresponding methods properly.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattdobsondesign.com/?feed=rss2&#038;p=55</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parse quick tips</title>
		<link>http://mattdobsondesign.com/?p=53</link>
		<comments>http://mattdobsondesign.com/?p=53#comments</comments>
		<pubDate>Sat, 07 Jul 2012 14:34:28 +0000</pubDate>
		<dc:creator>Mdobson4</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mattdobsondesign.com/?p=53</guid>
		<description><![CDATA[I recently began working on a project using Parse. Parse is an awesome data store that abstracts away most of your server logic. However, there are some small gotchas that I ran into when working with it. The first is the use of TestObject. TestObject is the first thing you create with a parse tutorial. [...]]]></description>
			<content:encoded><![CDATA[<p>I recently began working on a project using Parse. Parse is an awesome data store that abstracts away most of your server logic. However, there are some small gotchas that I ran into when working with it. The first is the use of TestObject. TestObject is the first thing you create with a parse tutorial. Unfortunately I like to roll with working code and keep building. However, with Parse this can be an issue. Once you&#8217;ve created TestObjects you can&#8217;t read them out of your data store. This can be a pain but as long as you just create a new type of object you should be fine. The second thing was with access controls in the data store. I built two clients for my parse backend one being for iOS and the other being for the web using the javascript sdk. Unfortunately I was unable to read objects from the database until I authenticated as a user. I should&#8217;ve realized it sooner, but for some reason it didn&#8217;t strike me until I read the documentation. Overall, Parse is a great way to at the very least quickly prototype an idea without having to set up an external API to store your data later. They have a slick interface, and fairly good documentation. With 1 million monthly API requests on the free tier they can&#8217;t be beat. 5/5 Highly recommend.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattdobsondesign.com/?feed=rss2&#038;p=53</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Checkout my post on FailDetroit</title>
		<link>http://mattdobsondesign.com/?p=44</link>
		<comments>http://mattdobsondesign.com/?p=44#comments</comments>
		<pubDate>Wed, 20 Jun 2012 22:27:03 +0000</pubDate>
		<dc:creator>Mdobson4</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mattdobsondesign.com/?p=44</guid>
		<description><![CDATA[I recently wrote for the blog FailDetroit. It&#8217;s a really interesting blog that explores failure in the business world. It&#8217;s important to learn from this stuff so please check it out, and if you have a story of your own feel free to share! Fail Detroit &#124; We all fail. Learn from it.]]></description>
			<content:encoded><![CDATA[<p>I recently wrote for the blog FailDetroit. It&#8217;s a really interesting blog that explores failure in the business world. It&#8217;s important to learn from this stuff so please check it out, and if you have a story of your own feel free to share!</p>
<p><a href="http://www.faildetroit.com/" target="_blank">Fail Detroit | We all fail. Learn from it.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mattdobsondesign.com/?feed=rss2&#038;p=44</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tornado Based Heroku Log Feed</title>
		<link>http://mattdobsondesign.com/?p=36</link>
		<comments>http://mattdobsondesign.com/?p=36#comments</comments>
		<pubDate>Sun, 10 Jun 2012 03:04:34 +0000</pubDate>
		<dc:creator>Mdobson4</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mattdobsondesign.com/?p=36</guid>
		<description><![CDATA[Lately I&#8217;ve been working on my pet project StudyCache. It&#8217;s an online software as a service that will allow people to easily collect research data. The product itself has began nearing completion so I wanted to begin adding peripheral stuff to it. Logging solutions currently are great, but semi-expensive. So I decided to quickly roll [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I&#8217;ve been working on my pet project StudyCache. It&#8217;s an online software as a service that will allow people to easily collect research data. The product itself has began nearing completion so I wanted to begin adding peripheral stuff to it. Logging solutions currently are great, but semi-expensive. So I decided to quickly roll my own Heroku log feed using python. Using only my API key I was able to quickly parse all the logs and create a tornado JSON service to spit them all out on request. It was super straight forward, and can be found on my github! Check it out <a href="https://github.com/mdobson/loggy">here</a>.</p>
<p>While the solution itself isn&#8217;t super elegant. It does work which counts for 95% of what I&#8217;ll be using it for. Another plus to this small solution is the feed program itself is deployable on Heroku! That way you have a publicly accessible way of accessing your logs. I wouldn&#8217;t recommend doing a straight deploy of my little service, but it should after adding some security it should be a straightforward solution for rolling your own Heroku log feed.</p>
]]></content:encoded>
			<wfw:commentRss>http://mattdobsondesign.com/?feed=rss2&#038;p=36</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easily bind data with backbone js.</title>
		<link>http://mattdobsondesign.com/?p=28</link>
		<comments>http://mattdobsondesign.com/?p=28#comments</comments>
		<pubDate>Tue, 08 May 2012 00:00:35 +0000</pubDate>
		<dc:creator>Mdobson4</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mattdobsondesign.com/?p=28</guid>
		<description><![CDATA[Lately my tinkering and building has led me to use backbone js and coffeescript for a project. I work with Windows Presentation Foundation at my day job, and as far as user interface magic it is very spot on. One of my favorite things is the concept of bindings that refresh whenever the data is [...]]]></description>
			<content:encoded><![CDATA[<p>Lately my tinkering and building has led me to use backbone js and coffeescript for a project. I work with Windows Presentation Foundation at my day job, and as far as user interface magic it is very spot on. One of my favorite things is the concept of bindings that refresh whenever the data is displaying it changes, and the good news is that you can simulate this really well using Backbone.js! Checkout this snippet below:</p>
<script src="http://gist.github.com/2631525.js"></script>
<p>The snippet above simply binds a change event on the datapoint field of your back backbone model. Then it will look in the rendered html of the model, and substitute the current value in the .datapoint field, and substitute the new value of the model&#8217;s field. Just remember to use the fat arrow to bind that particular model to that particular event and set of rendered html!</p>
]]></content:encoded>
			<wfw:commentRss>http://mattdobsondesign.com/?feed=rss2&#038;p=28</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a real time web app using Meteor</title>
		<link>http://mattdobsondesign.com/?p=24</link>
		<comments>http://mattdobsondesign.com/?p=24#comments</comments>
		<pubDate>Sun, 15 Apr 2012 01:47:13 +0000</pubDate>
		<dc:creator>Mdobson4</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mattdobsondesign.com/?p=24</guid>
		<description><![CDATA[Meteor is a new framework recently released that allows you to build close to real time apps. I&#8217;ve found it to be very interesting to develop with over my lazy saturday morning, and the best part is it&#8217;s built on top of Node.js! It&#8217;s a very intriguing way of looking at how to build web [...]]]></description>
			<content:encoded><![CDATA[<p>Meteor is a new framework recently released that allows you to build close to real time apps. I&#8217;ve found it to be very interesting to develop with over my lazy saturday morning, and the best part is it&#8217;s built on top of Node.js! It&#8217;s a very intriguing way of looking at how to build web apps by making client centric javascript based applications.</p>
<p>In a few easy commands you can have an example app up and running. I won&#8217;t go into the details here, but I will gladly point you towards the <a title="Meteor Home Page" href="http://www.meteor.com">meteor web site</a>. After going through an creating my first application I was up and running in no time. You&#8217;ll quickly find yourself digging through javascript, and html creating an app that is incredibly reactive. Overall, this is a great framework to use, and I think that after some refinement 1.0 will be a smash hit.</p>
<p>Some things it&#8217;s great with:</p>
<ul>
<li>Real time is made incredibly easy with this framework</li>
<li>It hooks right into a mongodb based persistence layer no fiddling around with any kind of database driver middleware</li>
<li>No refreshes needed when developing. Updated code is &#8220;Hot Pushed&#8221; to the browser. This is to reduce overall deployment time in the long run.</li>
<li>Client side documentation is great!</li>
</ul>
<p>Some things it could be better with:</p>
<ul>
<li>Server side documentation. I know this is a framework for client side real time applications, but there could be things that people may want to do server side.</li>
<li>Concerns about security within the framework. I&#8217;m not alone with my concerns on security when it comes to meteor. It could use some kind of ACL system to control access to the raw data storage.</li>
<li>Still a very young framework. This is just a first look at Meteor, many things can change over time besides it&#8217;s core principals.</li>
</ul>
<p>Overall the meteor framework is a refreshing break from the ordinary. I think it was a great first look at the framework overall, and I want to extend congratulations from a modest Detroit based developer for a new set of tools built on one of his favorite languages. If you&#8217;re still intrigued with meteor check out their documentation and screencasts. Also check out my github account, and pull a couple of the meteor examples I have! They can be found <a title="toyapp" href="https://github.com/mdobson/MeteorjsToyApp" target="_blank">here</a> and <a title="Another Meteor App" href="https://github.com/mdobson/Another-Meteor-app" target="_blank">here</a>. Later this week I&#8217;ll be making a post on using phone gap for iOS development! Stay tuned.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://mattdobsondesign.com/?feed=rss2&#038;p=24</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delegation in Ruby on Rails</title>
		<link>http://mattdobsondesign.com/?p=17</link>
		<comments>http://mattdobsondesign.com/?p=17#comments</comments>
		<pubDate>Sat, 07 Apr 2012 03:03:54 +0000</pubDate>
		<dc:creator>Mdobson4</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mattdobsondesign.com/?p=17</guid>
		<description><![CDATA[Delegation within the Ruby on Rails framework is a fantastic way of keeping Active Relation code clean and readable. When you use the delegate keyword in Ruby on Rails you are giving the responsibility of retrieving a certain piece of data to another type of object within a relation. A good example is of a data [...]]]></description>
			<content:encoded><![CDATA[<p>Delegation within the Ruby on Rails framework is a fantastic way of keeping Active Relation code clean and readable. When you use the delegate keyword in Ruby on Rails you are giving the responsibility of retrieving a certain piece of data to another type of object within a relation. A good example is of a data entry application. You have certain pieces of data entered by users, and for maintenance purposes we must track who has entered which data points. With Ruby on Rails this is fairly simple when we use relations. Lets call our model ExampleSubject and it will hold data about our lab experiment.</p>
<script src="http://gist.github.com/2324597.js"></script>
<p>As you can see plainly each example subject belongs to a user that has entered them into the system. Now when we go to our dashboard to look at all of the experiments in the system we&#8217;ll see code that looks like this.</p>
<script src="http://gist.github.com/2324608.js"></script>
<p>While this example is slightly contrived you can plainly see the email field being accessed through the user relation. While this specific example it isn&#8217;t such a pain to deal with accessing data through relations like the erb template above can lead to some incredibly messy code. That&#8217;s where delegates come in! We can hold the email address data with our ExampleSubject model by giving the responsibility of getting that data to us to the User model. Check out the Gist below.</p>
<script src="http://gist.github.com/2324593.js"></script>
<p>As you can see the delegate key word has now been placed in our ExampleSubject model. It&#8217;s indicating that the email attribute on the Example subject model will be given to us by the User model. Now lets check out our new and improved erb code.</p>
<script src="http://gist.github.com/2324606.js"></script>
<p>Nice and tidy! we now use the ExampleSubject model directly to retrieve the email data from the user that entered the data&#8217;s User model in the database. Again this example is relatively simplistic so if you have any questions or comments feel free to leave something in the comments and I&#8217;ll get back to you ASAP!</p>
]]></content:encoded>
			<wfw:commentRss>http://mattdobsondesign.com/?feed=rss2&#038;p=17</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a simple web crawler</title>
		<link>http://mattdobsondesign.com/?p=8</link>
		<comments>http://mattdobsondesign.com/?p=8#comments</comments>
		<pubDate>Sat, 31 Mar 2012 17:14:13 +0000</pubDate>
		<dc:creator>Mdobson4</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mattdobsondesign.com/?p=8</guid>
		<description><![CDATA[While I&#8217;m not working on side projects or am at work I like to tinker with small programs to figure out how things we use everyday work. Lately I&#8217;ve been curious about a few things at once. One of them being page ranking algorithms, and how to use Redis as a persistance layer. I started [...]]]></description>
			<content:encoded><![CDATA[<p>While I&#8217;m not working on side projects or am at work I like to tinker with small programs to figure out how things we use everyday work. Lately I&#8217;ve been curious about a few things at once. One of them being page ranking algorithms, and how to use Redis as a persistance layer.</p>
<p>I started by writing a simpler scraper using python and the BeautifulSoup and Requests libraries. The scraper will hit hacker news <a title="link" href="http://news.ycombinator.com">http://news.ycombinator.com</a> and grab the all the stories off the first page.</p>
<script src="http://gist.github.com/2266658.js"></script>
<p>As we have this the scraper simply grabs all links that are external to the hacker news domain, and pushes it to Redis. While it may not be the best way to scrape a web page it certainly was the easiest way to go about things. Next, we must try and gather data from the page itself to try and determine what the page is about. The gist below gives another simple python solution to this problem</p>
<script src="http://gist.github.com/2266751.js"></script>
<p>This code will grab a url that was scraped from the previous script and parse the text in the page. It will grab all the content in &lt;p/&gt; tags and it will split it up. It will then add it to a dictionary. If it exists in the dictionary then it will simply increment by 1 if not it will add it to the dictionary and start it with a value of 1. This is a pretty rudimentary solution to the problem, but for the most part after running each of these scripts you have scraped the content of a web page and counted the occurrence of words within that page. I&#8217;ll keep iterating on this solution to start adding tags and rankings to content.</p>
<p>Some things to do to improve this solution:</p>
<ul>
<li>Have Redis persist to the results to a file. Right now it does in memory persistance, and after Redis is shut down you lose all your parsing effort.</li>
<li>Use machine learning to create tags for the content</li>
<li>Use machine learning to build page ranks based on the web page graph for some content.</li>
<li>Somehow map a search query to result retrieval.</li>
</ul>
<p>Stay tuned for my next post where I tackle some of these problems. Have anything to contribute to the project? Feel free to fork it <a title="Curious-Crawler" href="https://github.com/mdobson/curious-crawler">here</a>!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://mattdobsondesign.com/?feed=rss2&#038;p=8</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
