<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;Ck4ER3g_fSp7ImA9WhRRFEk.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408</id><updated>2011-11-27T19:41:46.645-05:00</updated><category term="MVC 3" /><category term="Ruby on Rails" /><category term="General" /><category term="Robotics" /><category term="Webinar" /><title>Mark's Projects</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://marksproject.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://marksproject.blogspot.com/" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/MarksProjects" /><feedburner:info uri="marksprojects" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0AAR3s_fCp7ImA9WhdUFE8.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-1857354650775610461</id><published>2011-09-30T20:42:00.001-04:00</published><updated>2011-09-30T20:42:26.544-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-30T20:42:26.544-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC 3" /><title>Multiple types were found that match the controller</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I just got the following exception with my MVC 3 application and spent over an hour trying to figure out how to get it resolved:&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;Multiple types were found that match the controller named 'Home'. This can 
happen if the route that services this request ('{controller}/{action}/{id}') 
does not specify namespaces to search for a controller that matches the request. 
If this is the case, register this route by calling an overload of the 
'MapRoute' method that takes a 'namespaces' parameter.&lt;br /&gt;&lt;br /&gt;The request for 
'Home' has found the following matching 
controllers:&lt;br /&gt;MobileMVC3.Controllers.HomeController&lt;br /&gt;MobileADC.Controllers.HomeController&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I renamed the project from MobileMVC3 to MobileADC earlier. When I saw this message I figured I missed a reference or namespace. After doing a find on the entire solution, and I verified that MobileADC was no where to be found in my application, I continued to get the error. I tried changing the global.asax to load a different controller as the default and continued to get the exception.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Finally, after some searching and reading I found the following post:&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/2627699/multiple-controllers-with-one-name-in-asp-net-mvc-2"&gt;http://stackoverflow.com/questions/2627699/multiple-controllers-with-one-name-in-asp-net-mvc-2&lt;/a&gt;. It was the second answer that proved helpful. As the response suggests, I had a MobileADC.dll and a MobileMVC3.dll in my bin directory. After cleaning the directory and rebuilding the project, the project worked great and my weekend can now begin.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
May your bacon be crispy,&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Mark Brown&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-1857354650775610461?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/2NyupDu_Nqo" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=1857354650775610461" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/1857354650775610461?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/1857354650775610461?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/2NyupDu_Nqo/multiple-types-were-found-that-match.html" title="Multiple types were found that match the controller" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2011/09/multiple-types-were-found-that-match.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04HRXk6fCp7ImA9WhdXFk4.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-8445653949316518059</id><published>2011-08-29T13:45:00.000-04:00</published><updated>2011-08-29T13:45:34.714-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T13:45:34.714-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC 3" /><title>MVC 3 View Bag</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A common task in MVC, or in any web page, is to display a page containing text, date time, and drop down fields used for editing and creating records. &amp;nbsp;MVC 1 &amp;amp; 2 used view models to wrap up and send the data to the view, see my earlier blog post on view models for more details&amp;nbsp;&lt;a href="http://marksproject.blogspot.com/2011/08/mvc-3-view-models.html"&gt;MVC View Models&lt;/a&gt;. &amp;nbsp;MVC 3 introduced a new feature called ViewBag. &lt;br /&gt;
&lt;br /&gt;
The ViewBag allows data to be added to it which is then available in the view. &amp;nbsp;Simular to how a session variable works, when you assign a value to a ViewBag property, such as ViewBag.ConsultantID, the value is either added to the existing ViewBag property to a new property that is automatically added to the ViewBag. The code below demonstrates both assigning values to a ViewBag property as well as reading the values back out from them.&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: black; color: white; font-family: Consolas; font-size: 13;"&gt;&lt;pre style="background: black; color: white; font-family: Consolas; font-size: 13;"&gt;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;Create()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ViewBag.ConsultantID&amp;nbsp;=&amp;nbsp;&lt;span style="color: #cc7832;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;SelectList&lt;/span&gt;(_consultantRepository.GetAll(),&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"ConsultantID"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"ConsultantFirstName"&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ViewBag.TimesheetStatusID&amp;nbsp;=&amp;nbsp;&lt;span style="color: #cc7832;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;SelectList&lt;/span&gt;(_timesheetStatusRepository.GetAll(),&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"TimesheetStatusID"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"TimesheetStatusName"&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;return&lt;/span&gt;&amp;nbsp;View();
}&amp;nbsp;
&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
View:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: black; color: white; font-family: Consolas; font-size: 13;"&gt;&lt;pre style="background: black; color: white; font-family: Consolas; font-size: 13;"&gt;&amp;lt;&lt;span style="color: #ffc66d;"&gt;div&lt;/span&gt;&amp;nbsp;class=&lt;span style="color: #a5c25c;"&gt;"editor-label"&lt;/span&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="background: yellow; color: black;"&gt;@&lt;/span&gt;Html.LabelFor(model&amp;nbsp;=&amp;gt;&amp;nbsp;model.ConsultantID,&amp;nbsp;&lt;span style="color: #a5c25c;"&gt;"Consultant"&lt;/span&gt;)
&amp;lt;/&lt;span style="color: #ffc66d;"&gt;div&lt;/span&gt;&amp;gt;
&amp;lt;&lt;span style="color: #ffc66d;"&gt;div&lt;/span&gt;&amp;nbsp;class=&lt;span style="color: #a5c25c;"&gt;"editor-field"&lt;/span&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="background: yellow; color: black;"&gt;@&lt;/span&gt;Html.DropDownList(&lt;span style="color: #a5c25c;"&gt;"ConsultantID"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;String&lt;/span&gt;.Empty)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="background: yellow; color: black;"&gt;@&lt;/span&gt;Html.ValidationMessageFor(model&amp;nbsp;=&amp;gt;&amp;nbsp;model.ConsultantID)
&amp;lt;/&lt;span style="color: #ffc66d;"&gt;div&lt;/span&gt;&amp;gt;
&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Even though ViewBag.ConsultantID was not created or initialized before its assignment above, the property and its value is available in the view.&lt;br /&gt;
&lt;br /&gt;
Mark Brown&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-8445653949316518059?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/Ofl-jVO8j6k" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=8445653949316518059" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/8445653949316518059?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/8445653949316518059?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/Ofl-jVO8j6k/mvc-3-view-bag.html" title="MVC 3 View Bag" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2011/08/mvc-3-view-bag.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YFRHk-cCp7ImA9WhdXE0o.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-3394886505298077575</id><published>2011-08-26T11:01:00.007-04:00</published><updated>2011-08-26T11:05:15.758-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-26T11:05:15.758-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC 3" /><title>MVC 3 View Models</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;One of the great benefits the model view controller (MVC) architecture provides is a clean separation of concerns. &amp;nbsp;With the model handling data access, and the controller preparing the data that the view will need for display, the display is just responsible for displaying the data, which includes formatting, layout, and other such user experience tasks. &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Like a function in .Net, a controller can only pass one value to the view. &amp;nbsp;This value can be anything from a simple data type to a complex object storing anything from a simple data type to collections of complex objects. The following examples show the passing of an object to one view and a collection of objects to another view.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Controller:&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background: black; color: white; font-family: Consolas; font-size: 13;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;PlateEntities&lt;/span&gt;&amp;nbsp;db&amp;nbsp;=&amp;nbsp;&lt;span style="color: #cc7832;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;PlateEntities&lt;/span&gt;();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;ViewResult&lt;/span&gt;&amp;nbsp;Index()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;var&lt;/span&gt;&amp;nbsp;tasks&amp;nbsp;=&amp;nbsp;db.Tasks.Include(&lt;span style="color: #a5c25c;"&gt;"User"&lt;/span&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;return&lt;/span&gt;&amp;nbsp;View(tasks.ToList());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;ViewResult&lt;/span&gt;&amp;nbsp;Details(&lt;span style="color: #cc7832;"&gt;int&lt;/span&gt;&amp;nbsp;id)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;Task&lt;/span&gt;&amp;nbsp;task&amp;nbsp;=&amp;nbsp;db.Tasks.Single(t&amp;nbsp;=&amp;gt;&amp;nbsp;t.TaskID&amp;nbsp;==&amp;nbsp;id);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;return&lt;/span&gt;&amp;nbsp;View(task);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif; white-space: normal;"&gt;Often times there is a need to display data from multiple objects at a time, such as when using a drop down control. &amp;nbsp;This is where a view model comes into play. &amp;nbsp;A view model is simply a class that hold all of the data that is needed for a view. &amp;nbsp;These are generally very custom and specific to handle each view and are not often reused between views.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif; white-space: normal;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif; white-space: normal;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif; white-space: normal;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif; white-space: normal;"&gt;View Model:&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: white; font-family: Consolas; font-size: 13px;"&gt;&lt;span style="color: #cc7832;"&gt;using&lt;/span&gt;&amp;nbsp;System.Linq;
 
&lt;span style="color: #cc7832;"&gt;namespace&lt;/span&gt;&amp;nbsp;Plate.Models
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;TaskIndexViewModel&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;Task&lt;/span&gt;&amp;nbsp;Task&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color: #ffc66d;"&gt;User&lt;/span&gt;&amp;gt;&amp;nbsp;Users&amp;nbsp;{&amp;nbsp;&lt;span style="color: #cc7832;"&gt;get&lt;/span&gt;;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;set&lt;/span&gt;;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;TaskIndexViewModel(&lt;span style="color: #cc7832;"&gt;int&lt;/span&gt;&amp;nbsp;taskID)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;var&lt;/span&gt;&amp;nbsp;db&amp;nbsp;=&amp;nbsp;&lt;span style="color: #cc7832;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;PlateEntities&lt;/span&gt;();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Task&amp;nbsp;=&amp;nbsp;db.Tasks.First(i&amp;nbsp;=&amp;gt;&amp;nbsp;i.TaskID&amp;nbsp;==&amp;nbsp;taskID);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Users&amp;nbsp;=&amp;nbsp;db.Users;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;"&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Now using this I can instantiate my object and pass it to the view knowing that all the data I need for the view is loaded.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; font-size: 13px;"&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Controller:&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; font-family: Consolas; font-size: 13px;"&gt;&lt;pre style="background: black; color: white; font-family: Consolas; font-size: 13;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;ActionResult&lt;/span&gt;&amp;nbsp;Edit(&lt;span style="color: #cc7832;"&gt;int&lt;/span&gt;&amp;nbsp;id)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;var&lt;/span&gt;&amp;nbsp;viewModel&amp;nbsp;=&amp;nbsp;&lt;span style="color: #cc7832;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffc66d;"&gt;TaskIndexViewModel&lt;/span&gt;(id);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #cc7832;"&gt;return&lt;/span&gt;&amp;nbsp;View(viewModel);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&lt;/pre&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif; white-space: normal;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif; white-space: normal;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif; white-space: normal;"&gt;Mark Brown&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-3394886505298077575?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/ouGBQ4sS-Z0" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=3394886505298077575" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/3394886505298077575?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/3394886505298077575?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/ouGBQ4sS-Z0/mvc-3-view-models.html" title="MVC 3 View Models" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2011/08/mvc-3-view-models.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8ASXw_eyp7ImA9WhdQFkw.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-7649896021321355281</id><published>2011-08-17T16:26:00.001-04:00</published><updated>2011-08-17T16:27:28.243-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-17T16:27:28.243-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Webinar" /><title>Beginning Development for Business - Web Series</title><content type="html">In October I will be starting a new webinar series with the goal of teaching people not just how to program, but how to be good at developing software with business users as your customer. &amp;nbsp;If you would like to find out more, feel free to contact me or register at the following link:&amp;nbsp;&lt;a href="https://www1.gotomeeting.com/register/241371081"&gt;https://www1.gotomeeting.com/register/241371081&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-7649896021321355281?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/khkXA3K8sCY" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=7649896021321355281" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/7649896021321355281?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/7649896021321355281?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/khkXA3K8sCY/beginning-development-for-business-web.html" title="Beginning Development for Business - Web Series" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2011/08/beginning-development-for-business-web.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ACRnk6cCp7ImA9WhdXE0o.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-6152279050395899658</id><published>2011-08-17T15:04:00.004-04:00</published><updated>2011-08-26T11:16:07.718-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-26T11:16:07.718-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC 3" /><title>Saving text with html tags in MVC 3</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I recently ran across a problem where I was not able to save text with html tags to the database. &amp;nbsp;This was a quick admin app built using Entity Framework for the data access and auto generated controller and views for one table. This table contains a few fields that hold html that gets used with a literal control. &amp;nbsp;The problem I encountered though was I kept getting the following error when saving the page:&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; font-family: Verdana; font-size: 11px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2 style="color: maroon; font-family: Verdana; font-size: 14pt;"&gt;&lt;i&gt;A potentially dangerous Request.Form value was detected from the client (Preq="&lt;/i&gt;&amp;lt;li&amp;gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;Hardware and Sof...").&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/h2&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Helvetica, Geneva, SunSans-Regular, sans-serif; font-size: 11px;"&gt;&lt;b style="color: black; font-family: Verdana; font-weight: bold; margin-top: -5px;"&gt;Description:&amp;nbsp;&lt;/b&gt;Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. To allow pages to override application request validation settings, set the requestValidationMode attribute in the httpRuntime configuration section to requestValidationMode="2.0". Example: &lt;httpruntime requestvalidationmode="2.0"&gt;. After setting this value, you can then disable request validation by setting validateRequest="false" in the Page directive or in the &lt;pages&gt; configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case. For more information, see http://go.microsoft.com/fwlink/?LinkId=153133.&amp;nbsp;&lt;/pages&gt;&lt;/httpruntime&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Helvetica, Geneva, SunSans-Regular, sans-serif; font-size: 11px;"&gt;&lt;b style="color: black; font-family: Verdana; font-weight: bold; margin-top: -5px;"&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Helvetica, Geneva, SunSans-Regular, sans-serif; font-size: 11px;"&gt;&lt;b style="color: black; font-family: Verdana; font-weight: bold; margin-top: -5px;"&gt;Exception Details:&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Helvetica, Geneva, SunSans-Regular, sans-serif; font-size: 11px;"&gt;System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (Preq="&amp;lt;li&amp;gt;Hardware of Software")&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Most of the answers provided through a google search suggested disabling request validation through the web.config file. &amp;nbsp;While this approach might work for some people, I was not able to get it to work. &amp;nbsp;After what took way too much time, I found a random post saying that you could decorate a controller method or the entire controller with [ValidateInput(false)]. &amp;nbsp;Sure enough, that did the trick and my controller method now looks like this:&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;[HttpPost, ValidateInput(false)]public ActionResult Edit(TrainingCourse trainingcourse)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if (ModelState.IsValid)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; db.TrainingCourses.Attach(trainingcourse);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; db.ObjectStateManager.ChangeObjectState(trainingcourse, EntityState.Modified);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; db.SaveChanges();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return RedirectToAction("Index");&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; return View(trainingcourse);&lt;br /&gt;
}&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;Mark Brown&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-6152279050395899658?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/hFF9u5xV_4M" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=6152279050395899658" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/6152279050395899658?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/6152279050395899658?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/hFF9u5xV_4M/saving-text-with-html-tags-in-mvc-3.html" title="Saving text with html tags in MVC 3" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2011/08/saving-text-with-html-tags-in-mvc-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQAR345fyp7ImA9WhdTGUg.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-8313972762685130871</id><published>2011-07-17T23:04:00.002-04:00</published><updated>2011-07-17T23:05:46.027-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-17T23:05:46.027-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><title>Getting Real with Ruby on Rails</title><content type="html">&lt;div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;I have spent every minute I can spare over the last couple of days reading the book&amp;nbsp;&lt;/span&gt;&lt;a href="http://gettingreal.37signals.com/"&gt;Getting Real&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma;"&gt;. &amp;nbsp;I have been enjoying the book and find comfort that my ideas are shared by others. &amp;nbsp;I am working to develop a web application using the principles discussed in the book. &amp;nbsp;This book challenges me to design and create an application in a different way than I normally do it.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;br clear="none" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;In Getting Real, it is suggested the user interface be designed first, focusing on the core aspects of the application. While I agree that designing the user interface is important and should be done before coding begins, I am used to designing the data layer, usually a database design, and identifying the object classes to create in code before the user interface is designed. Since the design is supposed to be decoupled from the business and data layers, it should not effect the application to design the user interface first and I look forward to the challenge.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;My first Ruby on Rails application will be an application that I use to track video game prices and to alert me when they get to a certain value or thresh hold. &amp;nbsp;As an example, I am currently interested in getting the Sly Collection HD for the Playstation 3 (PS3). &amp;nbsp;I am willing to buy it for $20, but I don't really want to spend any more on the game. The current price that my local video game store has it for is ~$27 used. &amp;nbsp;What my application will do is allow me to track when the price of the game is within the price range I am interested in paying for it. &amp;nbsp;I currently have the user interfaced designed on paper which includes two screens, even though I have three drawn out: game list screen, game entry and edit screen, empty game list screen which is just the game list screen with instructions to the user on how to add games to the list. &amp;nbsp;I also have the data fields and objects needed to support the screens and features that are important for this application to have.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;There is still one part about trying to follow the approach outlined in the Getting Real book that I am guessing at. &amp;nbsp;I should launch my app in small iterations to keep momentum going and to get something real released. &amp;nbsp;With each release, I will probably add something to the user interface. &amp;nbsp;I am not sure what the correct approach would be, but what I plan to do, and what I have done so far, is design the interface for each phase, instead of for all of the features. &amp;nbsp;This allows me to throw the design away easier and allows for more change between iterations.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;Tomorrow I will start by using the scaffolds to create the pages, controllers, models, and rake scripts for the SQLite3 database. &amp;nbsp;Then I will have fun modifying the pages to match my user interface design. &amp;nbsp;I am also going to need to look for a hosting service as the one I have now is for .Net and doesn't support Ruby, at least according to the hosting company.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: Tahoma; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;Mark Brown&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-8313972762685130871?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/cIrBrlVVRkI" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=8313972762685130871" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/8313972762685130871?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/8313972762685130871?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/cIrBrlVVRkI/getting-real-with-ruby-on-rails.html" title="Getting Real with Ruby on Rails" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>2</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2011/07/getting-real-with-ruby-on-rails.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUBQX84eCp7ImA9WhdTEks.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-6394099028091252867</id><published>2011-07-09T23:24:00.000-04:00</published><updated>2011-07-09T23:24:10.130-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-09T23:24:10.130-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><title>Rails Prereqs - Skills and Environment Setup</title><content type="html">It has been a week since I mentioned I was starting to program with Ruby on a Linux operating system. I decided the smartest thing for me to do would be to get a basic to good understanding of the Ruby language using the following guide:&amp;nbsp;&lt;a href="http://www.humblelittlerubybook.com/"&gt;Humble Little Ruby Book&lt;/a&gt;. &amp;nbsp;There are other guides, but this one is offered for free as a pdf, which worked nicely on my Nook Color, or can be read for free online. &amp;nbsp;I used the following blog post to setup my environment:&amp;nbsp;&lt;a href="http://blog.therubymug.com/blog/2010/05/20/the-install-debian.html"&gt;http://blog.therubymug.com/blog/2010/05/20/the-install-debian.html&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Once I finished the Humble Little Ruby Book, I felt I understood Ruby enough to get coding and started in on Rails. &amp;nbsp;I started by following the&amp;nbsp;&lt;a href="http://guides.rubyonrails.org/getting_started.html"&gt;getting started&lt;/a&gt;&amp;nbsp;guide from the ruby on rails main web site. &amp;nbsp;I learned how to tie the different parts of the environment setup I had installed for Ruby development and even started creating a blog web site. &amp;nbsp;I started to get confused as it seemed as though some of the details where being glossed over. &amp;nbsp;I put the site to the side and looked for a good book that would have all the details without making assumptions of my Ruby, Rails, or UNIX based Os experience. &amp;nbsp;I was pointed to the&amp;nbsp;&lt;a href="http://pragprog.com/book/rails4/agile-web-development-with-rails"&gt;Agile Web Development with Rails (4th edition)&lt;/a&gt;&amp;nbsp;book and started reading it today. &amp;nbsp;I am still working through the second chapter but have already gone through a section explaining how to setup up the environment tools, and have already created a web app using rails and this book.&lt;br /&gt;
&lt;br /&gt;
I look forward to the coming week where I hope to take my knowledge and experiences and applying them to my first real application. &amp;nbsp;If I learned anything that I would pass on to anyone else just starting out with Ruby it would be to not give up and if things start to get over your head, try picking up a book or looking at a different tutorial. &amp;nbsp;Another interesting note, I have spent about 80% of my time in Linux and have only had to go into Windows for some .Net development and to watch a show on Netflix.&lt;br /&gt;
&lt;br /&gt;
Below you will find some of the fruits of my research into finding good articles and guides for Ruby and Rails.&lt;br /&gt;
&lt;br /&gt;
Ruby tutorials and guides:&lt;br /&gt;
&lt;a href="http://www.humblelittlerubybook.com/"&gt;Humble Little Ruby Book&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.ruby-doc.org/docs/ProgrammingRuby/"&gt;Pragmatic Programmer's Guide&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://mislav.uniqpath.com/poignant-guide/"&gt;Why's (Poignant) Guide&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Rails tutorials and guides:&lt;br /&gt;
&lt;a href="http://guides.rubyonrails.org/"&gt;Rails Guides&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.sitepoint.com/learn-ruby-on-rails/"&gt;Learn Ruby on Rails: the Ultimate Beginner’s Tutorial Article&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://pragprog.com/book/rails4/agile-web-development-with-rails"&gt;Agile Web Development with Rails (4th edition)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-6394099028091252867?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/6ydNDqhk_VQ" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=6394099028091252867" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/6394099028091252867?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/6394099028091252867?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/6ydNDqhk_VQ/rails-prereqs-skills-and-environment.html" title="Rails Prereqs - Skills and Environment Setup" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2011/07/rails-prereqs-skills-and-environment.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08HRHgyeCp7ImA9WhZaFUU.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-2307843504308827195</id><published>2011-07-02T01:50:00.000-04:00</published><updated>2011-07-02T01:50:35.690-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-02T01:50:35.690-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><title>Learning Rails</title><content type="html">I am involved in a decent number of hobbies and obsessions, from flying helicopters and designing robots to playing video games and riding my Harley. &amp;nbsp;While all these are fun, and other than riding my bike on an almost daily basis, I tend to cycle from one to the next after spending a concentrated amount of time on it. &amp;nbsp;Computer programming though is one hobby that I don't seem to get burnt out on or lose interest in.&lt;br /&gt;
&lt;br /&gt;
I started my interest in computer programming in my mid teens after watching a friend of mine build a game. &amp;nbsp;I began programming in basic on a Commedor 64 until I could get my hands on a C book. &amp;nbsp;These where exciting times for me and I was playing with all kinds of new things including C++ and Linux, Red Hat 5 I believe. &amp;nbsp;I had a great time learning Linux and programming and eventually went to school for a degree in software development. &amp;nbsp;It was there that I got my first exposure to VB 6 and how much easier it was to create an application with a graphical user interface.&lt;br /&gt;
&lt;br /&gt;
I applied myself in school taking classes on VB.Net, Linux, C++, Java, SQL, and a good number of theory classes. &amp;nbsp;I continued my projects at home and worked on applying the knowledge from school to my own projects. &amp;nbsp;I started working my first professional programming job after my first year of school. &amp;nbsp;It was fun and new, but I was also introduced to the dark side of professional development that no one warns you about. &amp;nbsp;Over the next eight years I hoped from one job to the next continuing my education, but it quickly stopped being a hobby and became work. &amp;nbsp;I would avoid doing it at home and stopped working on my side projects.&lt;br /&gt;
&lt;br /&gt;
I decided the other night that I wanted to make programming my hobby again. &amp;nbsp;I didn't just want to do .Net and business development, I also want to have fun writing open source projects in a cross platform environment. &amp;nbsp;I want to bridge the gap between tools and apps on Windows and Linux. &amp;nbsp;I have been considering two languages, Python and Ruby. &amp;nbsp;I have decided to go with Ruby for a couple of reasons. &amp;nbsp;First, and probably most important, there is a decent Ruby community in my area with nice guys who write in Ruby and have expressed an interest to help. &amp;nbsp;I met with a small handful of them the other night at the offices of&amp;nbsp;&lt;a href="http://hashrocket.com/"&gt;Hash Rocket&lt;/a&gt;&amp;nbsp;where Paul Elliott walked me through an intro to rails. &amp;nbsp;This brings up the second reason, Ruby on Rails. &amp;nbsp;I have been developing .Net MVC applications for over a year now and really like the approach. &amp;nbsp;I was surprised that by using rails, a similar approach is used.&lt;br /&gt;
&lt;br /&gt;
For the last two days I have been playing with my computer, installing Linux and setting up the tools. &amp;nbsp;I have heard that Mac is the&amp;nbsp;preferred&amp;nbsp;platform for developing Ruby and while I don't mind spending a little money on someones good used mac laptop, I will be using Linux until the funds to get a mac become available. &amp;nbsp;I have been going through the tutorials at&amp;nbsp;&lt;a href="http://railsforzombies.com/"&gt;Rails for Zombies&lt;/a&gt;&amp;nbsp;and am looking forward to starting on a project I have picked out just for learning Ruby on Rails. &amp;nbsp;I find myself giddy and excited and looking forward to the next chance to play with programming or Linux. &amp;nbsp;This is feeling like a hobby again and not so much work. &amp;nbsp;I will keep up with my .Net education and programming at work but will play with whatever I want on the side.&lt;br /&gt;
&lt;br /&gt;
I also find myself frustrated. &amp;nbsp;I know and expect a learning curve for getting back into Linux and remembering how to use VIM productively, but I don't even know where to start with my project. &amp;nbsp;I would like to be working on my project while going through the tutorials. &amp;nbsp;So I think I will have to devote a good chunk of tomorrow to finding info on project organization and file extensions and such.&lt;br /&gt;
&lt;br /&gt;
I have decided I am going to try to write about my learning experiences and projects I work on. &amp;nbsp;The hope will be that once I have a better idea of what I am doing and have created a couple of projects, I will be able to look back on all of my posts and laugh and learn from my mistakes and questions and possibly be able to compile them into a helpful resource for anyone interested.&lt;br /&gt;
&lt;br /&gt;
Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-2307843504308827195?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/TtwUuTL_-xE" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=2307843504308827195" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/2307843504308827195?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/2307843504308827195?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/TtwUuTL_-xE/learning-rails.html" title="Learning Rails" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2011/07/learning-rails.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIHR3g_eCp7ImA9WxJRGUg.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-8572813828562824876</id><published>2009-05-15T12:30:00.014-04:00</published><updated>2009-05-21T21:08:56.640-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-21T21:08:56.640-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Robotics" /><title>Sonar Test Platform</title><content type="html">&lt;div&gt;Most of the projects I have started up, Grass Muncher and Shop Sweeper, have relied on obstacle detection.  By comparing several methods of obstacle detection, I have decided to use sonar to detect the distance from my robot to anything surrounding it and having the robot alter course to avoid the obstacle.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;For a while now I have been playing with the Ping))) sonar module from Parallax.  This isn't the only sonar available on the market, nor was it my first choice, but it was readily available for me.  I have implemented code that successfully runs the sonar on the Axon MCU, which I have also been testing.  I am a little annoyed with how the data is read.  There doesn't seem to be anyway to just read a value returned by the sonar but instead, a timer is used to get how long it takes the sonar to change a pin's status from high to low.  Using a formula that takes the time it took the sonar to set the pin to low, the distance is calculated.&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Despite this annoying method of getting distance, I have it working and am able to see the values using UART.  Since this value is a calculated value, and I didn't write the formula, I am not sure if its accuracy.  I have been working on a project that will allow me to send a value from my computer to the micro controller, which will move the sonar until it is at the distance I sent.  This will allow me to not only check the formula, but also explore other methods of interacting with the sonar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The platform I am building will allow further testing, like MCU to MCU communication, testing how different materials and angles effect the sonar, and a couple of other tests I have brewing in my head.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At this point, I have all of the code written and am just working on building the actual platform.  I plan to have pictures to post soon.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mark Brown&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-8572813828562824876?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/vlP2U2VyWCA" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=8572813828562824876" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/8572813828562824876?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/8572813828562824876?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/vlP2U2VyWCA/sonar-test-platform.html" title="Sonar Test Platform" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2009/05/sonar-test-platform.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYCRH8_fip7ImA9WxRbEEQ.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-6400295140140297487</id><published>2008-11-30T20:06:00.006-05:00</published><updated>2008-11-30T20:16:05.146-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-30T20:16:05.146-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Robotics" /><title>Education for robotics?</title><content type="html">Since the last time I shared my thoughts, which admittedly was quite a while ago, I have been kept very busy. A project I have been working on since January for work finally left user acceptance testing and went live in production, which anyone who has developed a web application know that having a project go live means the discovery of a number of new bugs. What I would like to talk about though is the other major activity that is taking up my time, school.&lt;br /&gt;&lt;br /&gt;I love building robots and other such devices that help someone in one way or another, as I may have portrayed in my previous posts. Since one of my character traits, or flaws, is to tackle a new interest with such passion that it borderlines on obsession, I decided to look into getting a degree in robotics from one of the schools in my area. To my dismay, I wasn't able to find any. Feeling a little disappointed, but not defeated, I set out to find what skills are needed for robotics, or more to the point, what degrees make up the knowledge desired to be proficient in robotics. What I found was a list of three skills, software engineering, electronics engineering, and mechanical engineering.&lt;br /&gt;&lt;br /&gt;Since I already have a degree in software engineering, I have decided to get my electronics degree, followed by a degree in mechanical engineering. It is to this that I contribute the slack in posts and general sharing of thoughts. I am currently working on the electronics degree and have just finished my first two classes. I enjoyed the class on dc circuits and plan to use the knowledge learned to help determine power requirements and usage in my robot circuits, amongst other things.&lt;br /&gt;&lt;br /&gt;Now that I have a swing of things with work and school, I will continue my efforts in robotics by designing and building robots. My first step will be to create my robotics library from scratch. I have decided to build the library up slowly by implementing features that I need at first and then adding further items based on research and interest. I will make a separate post that will detail the library, but be warned, I am making it primarily for my own use and enjoyment even though I will make it publicly available.&lt;br /&gt;&lt;br /&gt;Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-6400295140140297487?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/egZHQGB185g" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=6400295140140297487" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/6400295140140297487?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/6400295140140297487?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/egZHQGB185g/education-for-robotics.html" title="Education for robotics?" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/11/education-for-robotics.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQERHs5cCp7ImA9WxRTFUU.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-5115501396839302181</id><published>2008-09-04T23:02:00.003-04:00</published><updated>2008-09-04T23:11:45.528-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-04T23:11:45.528-04:00</app:edited><title>Still Alive and Flopping</title><content type="html">Despite my recent cold, which is closing in on a solid week now, I have been making progress on some fronts in regards to robotics.&lt;br /&gt;&lt;br /&gt;Last weekend I successfully compiled code, and wrote the code to an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ATmega&lt;/span&gt;8 chip in Linux.  There is allot of information on this that can be found on the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;Internet&lt;/span&gt; and is a huge cause for frustration.  I spent most of the weekend researching from one site to another as I was unable to find one source that contained everything.  Based on my adventures, I have decided to write a tutorial that will contain all the steps, explanations, and samples of what is needed to get up and running with programming for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;AVR&lt;/span&gt; based &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;micro controllers&lt;/span&gt;.  As I get it closer to completion, I will post a link to it.&lt;br /&gt;&lt;br /&gt;I have also been able to write and compile C++ code for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;AVR&lt;/span&gt; chips.  This means that I will be able to utilize classes, inheritance, and other object oriented programming methods.  I have begun to write my own C++ library that uses &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;AVRlib&lt;/span&gt; but provides an object oriented interface to it.&lt;br /&gt;&lt;br /&gt;I am stalled on my Grass Muncher project while I wait for the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;necessary&lt;/span&gt; funds to continue my work, but I hope to be up and running with in again in a couple of weeks.  Until then, I will continue my work on the tutorial and C++ library.&lt;br /&gt;&lt;br /&gt;Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-5115501396839302181?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/t4656CP8sFc" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=5115501396839302181" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/5115501396839302181?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/5115501396839302181?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/t4656CP8sFc/still-alive-and-flopping.html" title="Still Alive and Flopping" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/09/still-alive-and-flopping.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcERng5fCp7ImA9WhZaFUU.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-1793271889077953067</id><published>2008-08-31T21:21:00.004-04:00</published><updated>2011-07-02T01:53:27.624-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-02T01:53:27.624-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Robotics" /><title>Autonomous Lawn Mower - Grass Muncher</title><content type="html">I have finally settled on a name for my lawn mower project, Grass Muncher.  I thought about adding something like deluxe to it, but I figured the name Grass Muncher was cool enough as it is.&lt;br /&gt;
The objective of this project is not to make a grass cutting robot from scratch, but rather to modify a cheap lawn mower with basic features throughout three seperate phases, remote control, sensor and data gathering, and finally autonomous operation.&lt;br /&gt;
This first phase will probably be the hardest phase as I will need to determine the correct motors that will be needed to move the lawn mower and the power needed for the motors.  My initial thoughts are to use either a 12V car or motor cycle battery with a standard car alternator in order to keep the battery charge.  Connecting the alternator to the drive shaft of the lawn mower might be a challenge.&lt;br /&gt;
I will be using a DX7 as the transmitter and an AR7000 as the receiver, which is a 2.4GHZ system and should help limit interference.  This is going to be fun and I can't wait to be mowing my lawn while sitting in a nice comfy chair.&lt;br /&gt;
Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-1793271889077953067?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/vwFY69GWbfY" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=1793271889077953067" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/1793271889077953067?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/1793271889077953067?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/vwFY69GWbfY/autonomous-lawn-mower-grass-muncher.html" title="Autonomous Lawn Mower - Grass Muncher" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/08/autonomous-lawn-mower-grass-muncher.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcGSHo-fyp7ImA9WhZaFUU.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-3020653590765559413</id><published>2008-08-31T17:52:00.006-04:00</published><updated>2011-07-02T01:53:49.457-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-02T01:53:49.457-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Robotics" /><title>Next Project</title><content type="html">Based on the poll results, my next project will be the autonomous lawn mower.  I will still be fleshing out the details for the shop sweeper project, as well as a couple of others that have come to mind&lt;br /&gt;
The lawn mower project will be done in three phases.  The first phase will be to make the lawn mower remote controlled.  This will allow me to hand all of the mechanical issues first, like making sure the motors are strong enough to propel the mower, as well as working out the turning and power details.&lt;br /&gt;
The second phase will involve adding sensors and the micro controller to determine how many of which sensors are going to be required to keep the mower from running into objects, as well as keeping the mower on the grass.  I will be sending the sensor values from the micro controller to a computer via either Blue Tooth, WiFi, or USB and logging this data for analysis.&lt;br /&gt;
The third and final phase will involve controlling the motors with the micro controller based on the sensor values.  Again I will be using  a method to monitor the values until I have verified that the mower is behaving as expected.&lt;br /&gt;
This is a very exciting project for me and I am looking forward to each and every phase.  I will give more design details once I have settled on a project name for this.&lt;br /&gt;
Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-3020653590765559413?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/cS6b7i5DINU" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=3020653590765559413" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/3020653590765559413?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/3020653590765559413?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/cS6b7i5DINU/next-project.html" title="Next Project" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/08/next-project.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YMRH87cCp7ImA9WxRTEk8.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-8355513964277563986</id><published>2008-08-28T20:12:00.002-04:00</published><updated>2008-08-31T19:26:25.108-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-31T19:26:25.108-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Delay in Posts</title><content type="html">I finally got my servo conversion post up today.  It has taken me a week to get it finished, not because I couldn't think of what to write, but because life decided to give me a strong dose of not getting to do what I want to do.  Not long after starting the post last week, the power went out, followed by the Internet being out for over 24 hours.  Since I work from home as a telecommuter who relies on the Internet, I had a day and a half worth of work to make up, which meant I had no weekend.  Work continued to pose a problem to my schedule, which is likely due to my project coming to a close.&lt;br /&gt;&lt;br /&gt;So tonight, after finally getting some breathing room, I get to start playing with robots again.&lt;br /&gt;&lt;br /&gt;Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-8355513964277563986?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/cEvL-Zf_AHA" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=8355513964277563986" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/8355513964277563986?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/8355513964277563986?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/cEvL-Zf_AHA/delay-in-posts.html" title="Delay in Posts" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/08/delay-in-posts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IARn44fip7ImA9WxdaGUs.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-6426409743716396997</id><published>2008-08-28T19:10:00.002-04:00</published><updated>2008-08-28T19:19:07.036-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-28T19:19:07.036-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Robotics" /><title>Solder Free Servo to Actuator Conversion Using a Futaba S3004</title><content type="html">&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235739556531880290"&gt;&lt;img src="http://lh3.ggpht.com/marksbrown/SKkVYvOLQWI/AAAAAAAABEs/Irtqm774uxc/s144/Servo%20Conversion%20001.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;In RC, planes, helicopters, cars, and trucks, servos are the muscle. The moving of tires, controlling of blade pitch, throttle adjustment, and movement of control surfaces are all dependant on servos. A servos biggest appeal is their ability to move and hold a position. How about using a servo as a motor? There are a couple of problems with using a servo as a motor. First, there are mechanical stops that only let the motor in the servo rotate the spline a certain amount, around 270 degrees I believe. A servo spline is the part that sticks out of the servo and rotates the servo horn attach ted to it. Second, servos have what is called a potentiometer in them. A potentiometer is a variable resister which is most commonly found as volume knobs and such on radios.&lt;br /&gt;&lt;br /&gt;So how is it possible to use a servo as a motor? We modify it (Insert evil laugh here). I know I have mentioned it before, but the place I found the best tutorial was at the &lt;a href="http://www.societyofrobots.com/actuators_modifyservo.shtml"&gt;Society Of Robots&lt;/a&gt; website. I did some searching around and found some other articles on modifying servos, but they included modifying the electronics of the servo. What made the tutorial at &lt;a href="http://www.societyofrobots.com/"&gt;Society Of Robots&lt;/a&gt; so appealing to me was the method of conversion. Basically, the modification tricks the servo into thinking that&lt;br /&gt;&lt;br /&gt;What follows is my experience with modifying servos and the differences I had with my servos, Futaba S3004. Since there is already a great article explaining the details behind this conversion, I am going to give a brief step by step description of what I did.&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235739627293281282"&gt;&lt;img src="http://lh5.ggpht.com/marksbrown/SKkVc21AjAI/AAAAAAAABE4/s5SQ_kY-jRE/s144/Servo%20Conversion%20002.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The first step is to remove all the screws, including the screw holding the servo horn in place. Although the screw does not need to be removed in order to remove the top cover of the servo, I find it easier to remove it now. Every servo maker and model is different. Some screws are stronger than others, some like to strip easier. Some have incredible threads that make the screw back out of the servo with just a couple of turns, while others, like the S3004, have standard machine threads at the tip with no threads the majority of the screw length. I found that using a number 1 size Phillip's tip worked great and gave no threat to striping the screw head.&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235739696146307810"&gt;&lt;img src="http://lh3.ggpht.com/marksbrown/SKkVg3U2WuI/AAAAAAAABFA/VVk2olZisPE/s144/Servo%20Conversion%20003.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Even though the tutorial says not to remove the bottom cover in order to protect wires and such, I find that this isn't as important with the S3004. Also, the lid makes a great screw holder to keep all of the screws in one place, and not loose to roll around and possibly fall on the ground.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235739755840817090"&gt;&lt;img src="http://lh3.ggpht.com/marksbrown/SKkVkVtIR8I/AAAAAAAABFM/t2riceX4i0U/s144/Servo%20Conversion%20004.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Once the screws are removed, carefully removed the top part of the servo. While doing so, pay careful attention to the gears. With the S3004 this isn't too bad. I have found that two gears and one of the pins tend to stay with the top part of the servo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235739909969614034"&gt;&lt;img src="http://lh6.ggpht.com/marksbrown/SKkVtT4TFNI/AAAAAAAABFc/FhLTh2s-fJg/s144/Servo%20Conversion%20006.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The next step is to find the servos center. Following the tutorial I hooked my servo up to my controller, which I had already programmed with the servo centering program that Admin has provided. It was a little tricky to get the potentiometer just right but I got it. I did this on a second servo later and found that it was allot easier to get the potentiometer just right. It just goes to show that even two of the same brand and model servo has some differences.&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235740274986724930"&gt;&lt;img src="http://lh6.ggpht.com/marksbrown/SKkWCjrKLkI/AAAAAAAABGE/O0A0Hea_Gys/s144/Servo%20Conversion%20010.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The servo and batteries hooked up to the micro controller unit.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235740348236930882"&gt;&lt;img src="http://lh4.ggpht.com/marksbrown/SKkWG0jXn0I/AAAAAAAABGQ/5vkwGuA60S4/s144/Servo%20Conversion%20011.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The small gear surrounded by the white grease, to the right of the servo, will spin until the potentiometer, on the left of the servo, is positioned just right. When the gear stops turning, the servo is centered.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235740438415930354"&gt;&lt;img src="http://lh3.ggpht.com/marksbrown/SKkWMEft8_I/AAAAAAAABGY/CUjW8uqiQj8/s144/Servo%20Conversion%20012.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I used standard thin CA, commonly used for building RC Airplanes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235740513712158754"&gt;&lt;img src="http://lh6.ggpht.com/marksbrown/SKkWQc_vOCI/AAAAAAAABGg/mOyeXk0aAkA/s144/Servo%20Conversion%20013.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I applied a decent amount of glue to the potentiometer and waited for it to dry.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235740604443502978"&gt;&lt;img src="http://lh5.ggpht.com/marksbrown/SKkWVu_xqYI/AAAAAAAABGs/wDugiuV5gm4/s144/Servo%20Conversion%20014.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;While waiting for the glue to dry, I turned my attention towards removing the servo's mechanical stop. The first thing I needed to do was to get the servo gear with the spline out of the top part of the servo. Since the Futaba S3004 is a ball bearing servo, I had to apply moderate force to the spline in order to pop it out of the top of the servo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235740679952262722"&gt;&lt;img src="http://lh3.ggpht.com/marksbrown/SKkWaISd5kI/AAAAAAAABG0/opt2Kp1P_Ak/s144/Servo%20Conversion%20015.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The little piece of plastic beneath the bearing is the mechanical stop on the gear.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235740918180086274"&gt;&lt;img src="http://lh3.ggpht.com/marksbrown/SKkWn_waAgI/AAAAAAAABHQ/OmF231Bm0dI/s144/Servo%20Conversion%20018.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The two pieces of plastic that are at a slight angle on the left side of the list are the mechanical stops on the servo lid. Removing the plastic from either the gear or the lid will allow the gear to spin 360 degrees freely. Removing the plastic from the gear is easier and faster, but will require you to make the same modification to any future gears, should you need to replace it. Removing the plastic from the lid is not as easy and will take twice as long, but will not require the plastic removed from the gear and any future gears needed.&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235741064235406626"&gt;&lt;img src="http://lh4.ggpht.com/marksbrown/SKkWwf2tVSI/AAAAAAAABHk/5Z6ofJvkbMA/s144/Servo%20Conversion%20020.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I decided to remove the plastic from the gear using a dremel. I had to be careful not to effect the gear teeth while using removing the plastic from the gear.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235740838580800098"&gt;&lt;img src="http://lh4.ggpht.com/marksbrown/SKkWjXOdSmI/AAAAAAAABHI/HXzGAFRRkQU/s144/Servo%20Conversion%20017.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The final step is to boar out the inside of the gear using the dremel tool. Doing this will allow the gear to spin without the gear adjusting the potentiometer, allowing continuous rotation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="FLOAT: left"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/ServoConversion/photo#5235739415413835986"&gt;&lt;img src="http://lh4.ggpht.com/marksbrown/SKkVQhhAyNI/AAAAAAAABEc/FrKkZbhg_E0/s144/Servo%20Conversion%20022.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I used the same dremel bit to do all the modifications. I am not sure of the name of this bit, but the picture should be clear enough for identify it at a hardware store.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One the glue has dried on the potentiometer, I re-assembled the servo. I noticed that if I tightened the screws too tight, the servo wouldn't rotate freely. I ended up tightening the screws just tight enough to close the servo up.&lt;br /&gt;&lt;br /&gt;Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-6426409743716396997?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/ukmjbl-I8EE" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=6426409743716396997" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/6426409743716396997?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/6426409743716396997?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/ukmjbl-I8EE/solder-free-servo-to-actuator.html" title="Solder Free Servo to Actuator Conversion Using a Futaba S3004" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/marksbrown/SKkVYvOLQWI/AAAAAAAABEs/Irtqm774uxc/s72-c/Servo%20Conversion%20001.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/08/solder-free-servo-to-actuator.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04DSXc8fyp7ImA9WhZaFUU.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-429188890315221647</id><published>2008-08-19T12:42:00.005-04:00</published><updated>2011-07-02T01:52:58.977-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-02T01:52:58.977-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Robotics" /><title>One Down, Millions To Go</title><content type="html">&lt;div style="float: left;"&gt;&lt;br /&gt;
&lt;a href="http://picasaweb.google.com/marksbrown/50DollarRobot/photo#5236260134851747746"&gt;&lt;img src="http://lh4.ggpht.com/marksbrown/SKru2Ylgn6I/AAAAAAAABJU/EBqacCHrATw/s144/DSC_0003.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Last night I finished the first of what I hope to be many robots to come. Technically the robot was finished on Sunday, but I wasn't happy with the make shift chassis.  I ended up using some very good double sided sticky tape, normally used to mount gyros to RC Helicopters, to mount the servos and the cheap swivel I am using as the caster.  To mount the wheels to my servos I used hot glue and a six pointed servo horn.  I also used hot glue to mount the power switch and sensors to the chassis.  The sensors where mounted so that there was about an inch sticking out.  Mounting the sensors this day will allow me to bend and adjust where they are pointing.  Finally, I used some Velcro from Radio Shack to mount both battery packs and the MCU, or micro controller unit, to the chassis.  In order to use Velcro to mount the MCU, I cut out some foam, normally used to wrap RC Plane electronics to protect from vibrations, and secured the foam to the MCU using a rubber band.  Then I put the Velcro on the bottom of the foam.&lt;br /&gt;
At first the robot didn't appear to detect light changes very well but when I swapped which ports the sensors where in, the robot did very well. There are still some limitations with this robot, but that is mainly due to the programming. &lt;br /&gt;
The initial program is extremely simple to cater to beginners. Light is checked on both sensors and if the sensors report the same amount of light, the robot goes forward. If the light varies between the sensors, the robot turns in the direction of the sensor with the most light.  One of the problems with this is if when turning the light detected is the same for both sensors, even if it is shadow, the robot will move forward continuing its path into the shadow.&lt;br /&gt;
The only changes to this robot I plan to make are in the programming.  I am going to modify the code to handle the shadow better.  One thought is to store the value of the sensor that detects more light, when more light is detected, and turn the robot until the other sensor gives the same value.  The potential problem with using this method is if the other sensor does not ever read that same value then the robot will get trapped in rotate.  I am looking forward to messing with the code and learning more about the AVR API.&lt;br /&gt;
Now that this robot is complete, it is time start designing my next robot.  I am still on the fence as to which one I am going to build, either the automated lawn mower or the dark activated automated shot sweeper.&lt;br /&gt;
Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-429188890315221647?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/XoBkXO3tdSg" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=429188890315221647" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/429188890315221647?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/429188890315221647?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/XoBkXO3tdSg/one-down-millions-to-go.html" title="One Down, Millions To Go" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/marksbrown/SKru2Ylgn6I/AAAAAAAABJU/EBqacCHrATw/s72-c/DSC_0003.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/08/one-down-millions-to-go.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcNQXs_eyp7ImA9WhZaFUU.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-781692012227132540</id><published>2008-08-18T03:36:00.007-04:00</published><updated>2011-07-02T01:54:50.543-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-02T01:54:50.543-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Robotics" /><title>Impatience Strikes</title><content type="html">&lt;div style="float: left;"&gt;&lt;br /&gt;
&lt;a href="http://picasaweb.google.com/marksbrown/50DollarRobot/photo#5235708140558530386"&gt;&lt;img src="http://lh5.ggpht.com/marksbrown/SKj40Fmct1I/AAAAAAAABDA/wRmqy6e8RoY/s144/%2450%20Dollar%20Robot%20Prototype.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I am often plagued with impatience. I get close to finishing a project, or reaching a major milestone and my need to see something takes over my logic and the discipline of taking my time and doing it right until the end seems to go out the window. Such was the case last night, as evidenced by this first picture. After having completed the MCU, converting my servos into actuators, and creating my light sensors, I couldn't wait to test my work. I ended up taping my servos to a ruler, attached cds onto the servos, taped the batteries to the rulers, and attached half a bottle to the ruler using rubber bands. Unfortunately the width of the ruler is quite wide and the bottle isn't long enough. When I run the bot on the pictured floors the cds do not get alot of traction. On carpet the traction is great, but the torque of the servos flip the robot upside down. Also, I had to play with the sensors position quite a bit. They are incredibly sensitive but I was able to succesfully test that I not only programmed the chip correctly, but also that the programming was working as intended.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="float: left;"&gt;&lt;br /&gt;
&lt;a href="http://picasaweb.google.com/marksbrown/50DollarRobot/photo#5235569606850344626"&gt;&lt;img src="http://lh3.ggpht.com/marksbrown/SKh60XUldrI/AAAAAAAABAM/PCngq2Xw9v4/s144/%2450%20Robot%20MCU%20020.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I still intend of finishing this bot the way I originally intended. My plans are to use the top part of this old computer case as the platform. I figure it is nice and flat, thin enough to cut with a dremel but thick enough to keeps its shape.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="float: left;"&gt;&lt;br /&gt;
&lt;a href="http://picasaweb.google.com/marksbrown/50DollarRobot/photo#5235738618282838514"&gt;&lt;img src="http://lh5.ggpht.com/marksbrown/SKkUiH-LCfI/AAAAAAAABD0/q58yVoFEsuw/s144/%2450%20Robot%20MCU%20026.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
This is the piece I have cut out. I still need to shape it and make holes for mounting the servos and MCU. This is the bottom of the plate. I will be keeping the lip at the back of this plate to wedge the servos against since the servos will be mounted on the bottom of the plate. This should help keep the wheels aligned nicely. I will also be mounting the castor on the bottom of the plate.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="float: left;"&gt;&lt;br /&gt;
&lt;a href="http://picasaweb.google.com/marksbrown/50DollarRobot/photo#5235569742454211778"&gt;&lt;img src="http://lh6.ggpht.com/marksbrown/SKh68QfERMI/AAAAAAAABAc/pg1q2c7L3_k/s144/%2450%20Robot%20MCU%20022.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I am using my servos from one of the planes I am retiring. They are Futaba S3004 servos which is a nice set of ball bearing servos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="float: left;"&gt;&lt;br /&gt;
&lt;a href="http://picasaweb.google.com/marksbrown/50DollarRobot/photo#5235839813402345170"&gt;&lt;img src="http://lh4.ggpht.com/marksbrown/SKlwkdKxvtI/AAAAAAAABIE/OMJLupmEpus/s144/DSC_0001.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I plan to use this wheel as the castor. It is a good hieght and should allow the plate to sit level.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="float: left;"&gt;&lt;br /&gt;
&lt;a href="http://picasaweb.google.com/marksbrown/50DollarRobot/photo#5235839901276039858"&gt;&lt;img src="http://lh3.ggpht.com/marksbrown/SKlwpkhf6rI/AAAAAAAABIQ/XqfbNGffvJE/s144/DSC_0002.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
These are the wheels I will be attaching to the servos. They are a good rubber tire with plastic rims and should provide good traction on almost all surfaces.  I am not sure how I am going to mount them onto the servo quite yet though.&lt;br /&gt;
Although the robot looks like a cheap piece of crap right now, I plan to make it alot more stable and good looking.&lt;br /&gt;
Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-781692012227132540?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/SmSdiVzi_no" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=781692012227132540" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/781692012227132540?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/781692012227132540?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/SmSdiVzi_no/impatience-strikes.html" title="Impatience Strikes" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/marksbrown/SKj40Fmct1I/AAAAAAAABDA/wRmqy6e8RoY/s72-c/%2450%20Dollar%20Robot%20Prototype.JPG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/08/impatience-strikes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYGSX0zcCp7ImA9WhZaFUU.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-7113853516220161556</id><published>2008-08-17T17:55:00.009-04:00</published><updated>2011-07-02T01:55:28.388-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-02T01:55:28.388-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Robotics" /><title>My First Brain</title><content type="html">As I have mentioned before, I am working on my first robot using the $50 Robot Tutorial from the &lt;a href="http://www.societyofrobots.com/"&gt;Society Of Robots&lt;/a&gt; website. Instead of starting at the beginning of the tutorial and building the chassis, I decided to start with the electronics. I was concerned the most about doing this part as it requires a lot of careful soldering. I ordered all of the parts listed in the tutorials parts list on Monday. By Friday I had all of the parts and was ready to start working that night.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="float: left;"&gt;&lt;br /&gt;
&lt;a href="http://picasaweb.google.com/marksbrown/50DollarRobot/photo#5235268239492868610"&gt;&lt;img src="http://lh4.ggpht.com/marksbrown/SKdouebbagI/AAAAAAAAA5k/p8rnOg5zKus/s144/%2450%20Robot%20MCU%20013.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Soldering the socket was pretty straight forward. I found that an iron temp of 600 was plenty of heat since the socket leads are so thin. I did mess up slightly by soldering the socket one row off from the tutorial. Since I noticed this after I had already soldered all the pins on the socket, and I verified that this wouldn't create a problem later down the road, I left the socket in place. The headers where pretty simple as well. I needed to increase the heat to 660 for these as the leads are a bit thick. Once I got the temp right, it was pretty easy. I soldered each pin header set by soldering one of the outer pins first and then checking the alignment. I found that it was easy for the pins to be soldered at an angle other wise. When breaking up the header pins I found that using two pliers is the best way to go. It is a little too think to cut with a knife and when I used my fingers, although the header snapped apart with little effort, I didn't get the number of pins I was expecting.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="float: left;"&gt;&lt;br /&gt;
&lt;a href="http://picasaweb.google.com/marksbrown/50DollarRobot/photo#5235244956666932690"&gt;&lt;img src="http://lh5.ggpht.com/marksbrown/SKdTjPJJrdI/AAAAAAAAA34/VY7bQ3vD0-w/s144/%2450%20Robot%20MCU%20005.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Soldering the buses from the socket to the header pins took a little time. There are a few of things I found that made it easier though. First, when jumping from one hole to the other, it is easier to put solder on the hole as though I was soldering a component onto it. Then, with a little bit of solder on the iron, use the iron to melt the solder on both of the holes. The solder on the iron will help keep make the link between the two holes. When soldering multiple holes together, let the solder harden and cool when finish joining two holes before moving onto the next hole. I found that there is less of a chance that the previous link will try to take the solder instead of creating a new link. Finally, try to use as little solder as possible at this point. Too much solder could make things difficult later as the jumpers are added. I had a problem with the negative and positive buses of the servos connections turning into one big melted glob of solder. Using the LED and resistor leads as jumpers was not only a smart idea, but also very easy to do. Like the tutorial says, make sure the leads are not touching any of the circles on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="float: left;"&gt;&lt;br /&gt;
&lt;a href="http://picasaweb.google.com/marksbrown/50DollarRobot/photo#5235245319897284658"&gt;&lt;img src="http://lh6.ggpht.com/marksbrown/SKdT4YSBADI/AAAAAAAAA4g/WhTTMc8KleA/s144/%2450%20Robot%20MCU%20009.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Soldering the remainder of the pieces in place was easy. I did however make one change. Although I have the suggested battery pack, I decided on following the tutorial for the battery holder. I plan on using a 2 cell 7.4V Li Po batter for the circuit and and a 4.8V Ni Cad pack for the servos. Near the servo buss I soldered in another 3 pin header to allow for another battery pack. Then I soldered the headers to the negative and positive of the servo banks. Doing these jumpers is where I ended up with a pool of solder that took a while to clean up. The hardest part of this whole thing was making the jumpers to connect the programming interface to the chip. Since I was using the more expensive programmer, I found the information at the following link to be invaluable: &lt;a href="http://www.societyofrobots.com/robotforum/index.php?topic=1045.0"&gt;http://www.societyofrobots.com/robotforum/index.php?topic=1045.0&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="float: left;"&gt;&lt;br /&gt;
&lt;a href="http://picasaweb.google.com/marksbrown/50DollarRobot/photo#5235569359748971266"&gt;&lt;img src="http://lh5.ggpht.com/marksbrown/SKh6l-zBuwI/AAAAAAAAA_s/SV2xk-umhw0/s144/%2450%20Robot%20MCU%20017.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
After smoke testing as described in the tutorial, I pushed the ATMega8 chip into its socket. I applied power but was not able to tell if it was working. I verified power using my multi meter and proceeded to hook the circuit up to my programmer. Once I hooked it up I got and turned on power tot eh circuit, the green status light on the programmer that means all was well lit up. I will explain how I did the actual programming in a future post.&lt;br /&gt;
&lt;br /&gt;
Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-7113853516220161556?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/TGPOdo1Laec" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=7113853516220161556" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/7113853516220161556?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/7113853516220161556?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/TGPOdo1Laec/my-first-brain.html" title="My First Brain" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/marksbrown/SKdouebbagI/AAAAAAAAA5k/p8rnOg5zKus/s72-c/%2450%20Robot%20MCU%20013.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/08/my-first-brain.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IMRns6eip7ImA9WxdaEE8.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-8749693961669058395</id><published>2008-08-17T04:18:00.001-04:00</published><updated>2008-08-17T21:06:27.512-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-17T21:06:27.512-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Robotics" /><title>On The Horizon</title><content type="html">Yes, another post. I have a lot to say about the past week and am still trying to catch up. I have a feeling there will be a couple more before the day ends. This post however, is to give a glimpse of my next two projects. I am still not sure which one I want to tackle first, but they will both be very useful for me.&lt;br /&gt;&lt;br /&gt;The first project in mind is a shop sweeper. Essentially, when I turn my lights off in my shop at night, this robot will come to life and sweep the shop floor. I don't expect the design of build of this project to be overly complex, but the programming logic could get tricky. Some of the things I will need to keep in mind when coding are odd shaped objects like chair legs, some sort of map so that the robot knows where it has already swept and where it needs to return when finished, how large of an object I will try to have swept, and some way to keep the vibrations from effecting the sensors. I am still working on the design, but I plan to share it once I have it more to show.&lt;br /&gt;&lt;br /&gt;The second project I have in mind is an autonomous lawn mower. I am incredibly lazy and in the weather where I live, it is quite a daunting task to mow the lawn, even though it only takes about 30 minutes. I will need to add collision detection for trees, bushes, cars, and some cats, a way to determine the ground density to distinguish grass from asphalt, sand, or other non mow able areas, distinguish tall grass that is to be mowed from trees and such that can't be mowed. Again I am working on the design but will share when I have more to show.&lt;br /&gt;&lt;br /&gt;These projects are fairly ambitious and may be a little much for my current skill, but I will at least get some design and documentation done while I work on something a little closer to my skill. Somewhere in there I need to redesign the micro processor unit from the $50 robot, more on this later, and possibly come up with some sort of test bot that is used for the purpose of testing sensors.&lt;br /&gt;&lt;br /&gt;I am going full steam into robotics and expect to be reporting a lot of news as I continue to learn and develop ideas.&lt;br /&gt;&lt;br /&gt;Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-8749693961669058395?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/k89zAxdEnGc" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=8749693961669058395" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/8749693961669058395?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/8749693961669058395?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/k89zAxdEnGc/on-horizon.html" title="On The Horizon" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/08/on-horizon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQBR3syeyp7ImA9WxdbGU4.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-7256705431597846341</id><published>2008-08-16T21:33:00.000-04:00</published><updated>2008-08-16T21:59:16.593-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-16T21:59:16.593-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Robotics" /><title>Great Place To Start</title><content type="html">As I have mentioned, I have only just recently decided to try to create a robot. There was one problem though, I didn't know where to start or what I wanted to do. I have always had ideas here and there about robots I would love to have, and I have even found some of my old drawings from my child hood where I documented a design for a robotic hand. The basics of making a robot, what it is called, what skills are involved, and what kind of expense is involved where still a mystery. I only knew one thing, I did not want to create a battle bot.&lt;br /&gt;&lt;br /&gt;I have nothing against battle bots, but my idea of a robot doesn't include controlling a mechanical device with a remote control, no matter how complicated it could get. I wanted to create what I now know to be autonomous robots. An autonomous robot is a collection of materials, sensors, motors, and a brain put together in a way to serve a particular purpose, with all of the instructions held in the robots brain already. I want to turn my robot on and have it do what I have programed it to do.&lt;br /&gt;&lt;br /&gt;It wasn't hard to find out that what I was looking to do is called robotics. It was even easier to find all kinds of packaged kits and bots but finding actual information on creating a robot without a kit was a little harder. Although some of the kits where very nice and tempting, I was looking for information on building my own without the use of a kit.&lt;br /&gt;&lt;br /&gt;Finally I found a site that caught my eye, &lt;a href="http://www.societyofrobots.com/"&gt;Society Of Robots&lt;/a&gt;. This site has a tutorial on creating my own robot for under $50. The tutorial even has a video of the robot to be made in action. I was a little skeptic but I read the tutorial anyways. By the time I finished the first step, I was hooked. I spent the remainder of my weekend reading the tutorial, the many other tutorials on everything from building materials to basic mechanical engineering to basic electronics. I am still working on reading all of the articles and I have barely even touched the user submitted articles, which outnumber the articles written by the site admin. The forum, and the people who read/post to it, is very informative, helpful, and even entertaining, at least to me.&lt;br /&gt;&lt;br /&gt;I have already purchased and received my parts from the $50 Robot Tutorial and am already working on putting my first robot together, but more on that later.&lt;br /&gt;&lt;br /&gt;Bottom line, if you are interested in getting started in robotics, or are already experienced and would just like to find a great community of like minded people, &lt;a href="http://www.societyofrobots.com/"&gt;Society Of Robots&lt;/a&gt; definitely a place worth visiting.&lt;br /&gt;&lt;br /&gt;Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-7256705431597846341?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/Pqk-hvHRM1Q" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=7256705431597846341" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/7256705431597846341?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/7256705431597846341?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/Pqk-hvHRM1Q/great-place-to-start.html" title="Great Place To Start" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/08/great-place-to-start.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUBQHY9fyp7ImA9WxdbGU4.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-6122396342259302641</id><published>2008-08-16T19:16:00.000-04:00</published><updated>2008-08-16T20:34:11.867-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-16T20:34:11.867-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>As one era ends, another begins</title><content type="html">Exactly one week ago I was at my local flying field. My father, who was out visiting, and I had just finished working on a P51D plane that we had been working on all week. After doing some ground testing, I took it out for its maiden flight. Unfortunately, I did not check the elevator servo connection and lost elevator control shortly after take off. I was able to control altitude by increasing or decreasing throttle, but the landing was still a bit hard. &lt;div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/marksbrown/RC/photo#5235268858667077266"&gt;&lt;img src="http://lh6.ggpht.com/marksbrown/SKdpShCEDpI/AAAAAAAAA64/2gA2GUtwrUE/s400/P51D_004.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;It was while inspecting the damage that I had my epiphany. The first part is that I don't have the time to devote to RC planes at this time, the flying field is a 70 mile round trip from my house. The second part is that I could be taking all of the money I put into my planes and put it into something I have been wanting to do since I was in middle school, building robots.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Although I will be losing one of my loves to time and inconvenience, hopefully this new path will bring me as much happiness, joy, and entertainment as RC planes have brought me.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Mark Brown&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-6122396342259302641?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/BfA4PPlUYBA" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=6122396342259302641" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/6122396342259302641?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/6122396342259302641?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/BfA4PPlUYBA/as-one-era-ends-another-begins.html" title="As one era ends, another begins" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/marksbrown/SKdpShCEDpI/AAAAAAAAA64/2gA2GUtwrUE/s72-c/P51D_004.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/08/as-one-era-ends-another-begins.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EFSXw-cSp7ImA9WxdbGUU.&quot;"><id>tag:blogger.com,1999:blog-5536467348450879408.post-3849361926625195972</id><published>2008-08-16T18:47:00.000-04:00</published><updated>2008-08-17T12:13:38.259-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-17T12:13:38.259-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>So it begins</title><content type="html">I have never really been one for blogs, mainly because I am not sure of there purpose.  However, in recent day I have found alot of useful information in blogs which has made me question the value of blogs.&lt;br /&gt;&lt;br /&gt;The other, and main, reason for starting up a blog is the fact that I am bumbling over with joy and excitement.  I am somewhat active in a couple of forums, but instead of rambling on and on with what some might find dribble, I am going to put it all into this blog.&lt;br /&gt;&lt;br /&gt;This blog will include a majority of topics including RC Helicopters, my new Nikon D40, and my latest passion, robotics.&lt;br /&gt;&lt;br /&gt;Mark Brown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5536467348450879408-3849361926625195972?l=marksproject.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarksProjects/~4/XvF6IRHgKbo" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5536467348450879408&amp;postID=3849361926625195972" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/3849361926625195972?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5536467348450879408/posts/default/3849361926625195972?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/MarksProjects/~3/XvF6IRHgKbo/so-it-begins.html" title="So it begins" /><author><name>Mark Brown</name><uri>http://www.blogger.com/profile/04667964596506886530</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-RNHBck_ancU/TkwZRqDIsVI/AAAAAAAACd8/tPKSJu2PNgw/s220/MarkBrown1.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://marksproject.blogspot.com/2008/08/so-it-begins.html</feedburner:origLink></entry></feed>

