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

<channel>
	<title>LarkMullins.com</title>
	<atom:link href="http://larkmullins.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://larkmullins.com</link>
	<description>Father. Husband. Developer. All Around Geek!</description>
	<lastBuildDate>Wed, 07 Dec 2011 14:49:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Multiple Applications, One Domain</title>
		<link>http://larkmullins.com/2011/12/multiple-applications-one-domain/</link>
		<comments>http://larkmullins.com/2011/12/multiple-applications-one-domain/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 14:47:51 +0000</pubDate>
		<dc:creator>larkmullins</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://larkmullins.com/?p=106</guid>
		<description><![CDATA[I am working on a project with a friend of mine that will be, in the beginning, hosted in the cloud. Since our CPU/memory footprint will be very valuable to us we decided to go with Lighttpd...]]></description>
			<content:encoded><![CDATA[<p>I am working on a project with a friend of mine that will be, in the beginning, hosted in the cloud. Since our CPU/memory footprint will be very valuable to us we decided to go with <a title="Lighttpd Web Server" href="http://www.lighttpd.net/">Lighttpd</a> as our web server. Apache is a great and reliable web server, just look at <a title="Netcraft's November 2011 Web Server Statistics" href="http://news.netcraft.com/archives/2011/11/07/november-2011-web-server-survey.html">Netcraft&#8217;s November 2011 Web Server Statistics</a> to see how many sites are using Apache as their web server. The one downside of Apache, is that it can get a little greedy when it comes to CPU and memory. So in an effort to save precious bytes we went with Lighttpd which has a lower CPU/memory usage footprint.</p>
<p>Part of the site will be static content, the other part will be user generated content. The user generated content is being powered by a custom MVC framework and the static content is powered by WordPress. This gives us the ability to update static content, blog posts, and general information in WordPress&#8217;s interface without having to jump into the MVC code to make content updates. We wanted the user experience to be seamless. So if a user visited a static page or a generated page the site would not look different, thus not &#8216;breaking&#8217; their experience.</p>
<p>We also wanted to keep the code together as much as possible. So we structured the code base into separate directories under one project name: <em>coolnewapp</em>. The WordPress code lives in the <em>site</em> directory while the MVC code lives in the <em>app</em> directory. The static resources, like CSS, JavaScript, and images, live in the <em>assets</em> directory. Here is what the directory structure looks like:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="c" style="font-family:monospace;color: #FCFFBA;">coolnewapp<span style="color: #339933;color: #CCC;">/</span>
    app<span style="color: #339933;color: #CCC;">/</span>
    assets<span style="color: #339933;color: #CCC;">/</span>
    site<span style="color: #339933;color: #CCC;">/</span></pre></td></tr></table></div>

<p>The challenge is how do we get Lighttpd to serve up pages from the WordPress code when a static page is visited and how do I get it to serve up pages from the MVC code when generated content pages are visited. So I set out on my quest to find a solution.</p>
<p>I searched the highest mountains and lowest valleys of Google but could only find a couple sites that even remotely talked about what I was trying to accomplish. I found a blog post entitled, &#8220;<a title="How to setup multiple apps on Ruby on Rails and Lighttpd" href="http://www.jaredlog.com/?p=165">How to setup multiple apps on Ruby on Rails and Lighttpd</a>&#8220;. This post gave me the insight I needed to accomplish multiple applications under one domain.</p>
<p>I was able to get Lighttpd to serve different document roots depending on the URL. Here is the solution I developed, with the help of the article:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="c" style="font-family:monospace;color: #FCFFBA;">$HTTP<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #ff0000;color: #666666;">&quot;host&quot;</span><span style="color: #009900;color: #CCC;">&#93;</span> <span style="color: #339933;color: #CCC;">==</span> <span style="color: #ff0000;color: #666666;">&quot;coolnewapp.com&quot;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
    server.<span style="color: #202020;">document</span><span style="color: #339933;color: #CCC;">-</span>root <span style="color: #339933;color: #CCC;">=</span> <span style="color: #ff0000;color: #666666;">&quot;/path/to/wordpress/dir/&quot;</span>
&nbsp;
    $HTTP<span style="color: #009900;color: #CCC;">&#91;</span><span style="color: #ff0000;color: #666666;">&quot;url&quot;</span><span style="color: #009900;color: #CCC;">&#93;</span> <span style="color: #339933;color: #CCC;">=</span>~ <span style="color: #ff0000;color: #666666;">&quot;^/mvc-url&quot;</span> <span style="color: #009900;color: #CCC;">&#123;</span>
        server.<span style="color: #202020;">document</span><span style="color: #339933;color: #CCC;">-</span>root <span style="color: #339933;color: #CCC;">=</span> <span style="color: #ff0000;color: #666666;">&quot;/path/to/mvc/app/dir/&quot;</span>
        alias.<span style="color: #202020;">url</span> <span style="color: #339933;color: #CCC;">=</span> <span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #ff0000;color: #666666;">&quot;/mvc-url&quot;</span> <span style="color: #339933;color: #CCC;">=&amp;</span>gt<span style="color: #339933;color: #CCC;">;</span> <span style="color: #ff0000;color: #666666;">&quot;/path/to/mvc/app/dir/&quot;</span> <span style="color: #009900;color: #CCC;">&#41;</span>
    <span style="color: #009900;color: #CCC;">&#125;</span>
<span style="color: #009900;color: #CCC;">&#125;</span></pre></td></tr></table></div>

<p>The key to this succeeding was alias.url. This basically tells Lighttpd that if the current request is for any URLs that start with /mvc-url use the provided path as the document root instead of the default path.</p>
<p>So now any URL that starts with /mvc-url will use the MVC application code instead of the WordPress code. If a user requests a URL that does not start with not /mvc-url the WordPress code will be used instead.</p>
<p>One issue with this solution, although not a show stopper, is that it tightly couples the server configuration to the whole site. This means that the site is less portable when it comes to switching to a new server or if the site needs to be hosted on multiple application servers. A solution for this issue is that the config file will always be stored in version control and a deploy script will be used that will include the config file as part of the deployment process. As time goes on with this project, the whole process will be refined.</p>
]]></content:encoded>
			<wfw:commentRss>http://larkmullins.com/2011/12/multiple-applications-one-domain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Profit Should Not Be the Goal</title>
		<link>http://larkmullins.com/2011/09/profit-should-not-be-the-goal/</link>
		<comments>http://larkmullins.com/2011/09/profit-should-not-be-the-goal/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 14:05:53 +0000</pubDate>
		<dc:creator>larkmullins</dc:creator>
				<category><![CDATA[agriculture]]></category>
		<category><![CDATA[farming]]></category>
		<category><![CDATA[sustainable agriculture]]></category>

		<guid isPermaLink="false">http://larkmullins.com/?p=102</guid>
		<description><![CDATA[Since the beginning of time there have been people with the talent and fortitude to work the land. They worked the land and animals to produce food for their families and the community around them.]]></description>
			<content:encoded><![CDATA[<p>Since the beginning of time there have been people with the talent and fortitude to work the land. They worked the land and animals to produce food for their families and the community around them. The animals they raised were practically apart of the family. They labored over the food they grew. Making sure that no weed nor insect destroyed their crops. This profession is called agriculture. This type of society is called an agrarian society. They farmed for their food. They farmed so their neighbors could have food. Not for profit, but out of a necessity and the necessity of others. Out of need, they worked the land.</p>
<p>America seems to have forgotten how things used to be. We seem not to care where our food comes from or how it is grown and cared for. Maybe some still think that their food comes from small family farmers. The sad truth is that in some parts of America, not all, food can travel up 1500 miles from farm to plate. This number varies depending on your where you live. But what that number tells you is that our current food system is broken. No longer do small family farms support their communities but large industrial companies that have one goal: profit.</p>
<p>Yes these industrial farms want to protect their product. But that mindset is part of the problem. The animals or produce that they grow is more than a product. It is a life form that sustains other life forms. They are not products to be treated as lifeless or immaterial. But are to be protected, nurtured, and cared for because their sacrifice will sustain our own lives.</p>
<p>So profit should not be the goal. The goal should be the best quality of food that was grown and nurtured in the best of conditions.</p>
]]></content:encoded>
			<wfw:commentRss>http://larkmullins.com/2011/09/profit-should-not-be-the-goal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Planning != Boring</title>
		<link>http://larkmullins.com/2011/07/planning-is-not-boring/</link>
		<comments>http://larkmullins.com/2011/07/planning-is-not-boring/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 12:53:14 +0000</pubDate>
		<dc:creator>larkmullins</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://larkmullins.com/?p=97</guid>
		<description><![CDATA[I am going to go out on a limb and say that most developers, not all mind you, have a tendency to jump directly into coding when ever they are handed a new project. These are the go-getters. Their energetic. Ready to get the project rolling and get something out the door. This is a good trait to have but like everything else only in moderation.]]></description>
			<content:encoded><![CDATA[<p>I am going to go out on a limb and say that most developers, not all mind you, have a tendency to jump directly into coding when ever they are handed a new project. These are the go-getters. They&#8217;re energetic. Ready to get the project rolling and get something out the door. This is a good trait to have but like everything else only in moderation.</p>
<p>With as tough as software development can be, you would think that a lot of developers would have learned their lessons and decided not to jump directly into code. You would think they would sit down and say, &#8220;Let&#8217;s think about the best way to solve this problem&#8221;. I will be the first to admit that I have, many times, jumped head first into coding a project without thinking about what is going to be involved. This style can be a good thing. Look at agile software development, agile breaks a project down into smaller portions and these smaller portions are worked on with minimal planning. A lot of companies have been successful using the agile approach, and I am sure there are an equal amount of companies who haven&#8217;t had much success with agile.</p>
<p>When a new project is given to a developer, or a team of developers, one of the first things that should happen is a brain storming session. This meeting is just for the development team. No managers. No business owners. No one except the ones slinging code. This meeting is just to flesh out the entire application from beginning to end. This gives the developer(s) a chance to see the application from a 50,000ft. vantage point. This vantage point allows them to identify areas that may need some special attention. They may find that they need a specific technology, but no one on the teams knows this technology, so they will need to get training.</p>
<p>These meetings do not need to last 8-12 hours. They certainly do not need to go into minute detail. What they need to do is give a thorough overview of what the application entails. It places everyone at the same starting place and gives everyone the same goal to reach. So do not look at planning as a boring, long drawn out process, but as a way to see the overall picture. Try it. It ain&#8217;t that bad.</p>
]]></content:encoded>
			<wfw:commentRss>http://larkmullins.com/2011/07/planning-is-not-boring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Controller Object Model Connector</title>
		<link>http://larkmullins.com/2011/03/controller-object-model-connector/</link>
		<comments>http://larkmullins.com/2011/03/controller-object-model-connector/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 22:30:40 +0000</pubDate>
		<dc:creator>larkmullins</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://larkmullins.com/?p=90</guid>
		<description><![CDATA[A technique to further separate the models from the controllers giving the developer a way to create multiple classes based off single model classes.]]></description>
			<content:encoded><![CDATA[<p>I work a lot in the <a title="MVC Model-View-Controller" href="http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller">MVC</a> architecture. I wrote my own framework, twice, in PHP. As I developed an application using the second iteration of the framework I began to see the value of further separating the model from the overall application. In the first iteration the actual classes used were the models. So all data manipulation (setters) and access (getters) was done from that object&#8217;s model class. That always felt very clunky and amateurish to me. Not a wise development move but I needed to get the application done and I made shortcuts.</p>
<p>A model should only represent the data, it should not do any type of complex data manipulation only simple sets and gets. So the question then arises how do you do complex data manipulation? My first instinct was to put that on the controller, but that quickly got out of hand and I had multiple controllers that needed to do the same type of data manipulation. I didn&#8217;t want to have the same functionality in two different places. You know that whole <a href="http://en.wikipedia.org/wiki/KISS_principle">KISS</a> thing.</p>
<p>So this functionality should not reside in the controller or in the model object. This is where a new class is created to house the complex data manipulation but only gets and sets from the model. This new object can then be instantiated whenever it is needed. The necessary methods could be stored at the object level then that object can be created from any point in the application.</p>
<p>This sort of intermediate object model gives a developer the ability to create various objects off one model. So let&#8217;s say I have a user model where all information about a system&#8217;s user is stored (i.e. username, name, dob, etc.) but users have different roles within the system. I can create different user objects based off the one user model. So I could have a BaseUser class, ManagerUser class, and even an AdminUser class. These classes only have specific properties and methods based on the user model object.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</pre></td><td class="code"><pre class="php" style="font-family:monospace;color: #FCFFBA;"><span style="color: #339933;color: #CCC;">&lt;!--</span>?php 
&nbsp;
<span style="color: #666666; font-style: italic;"># model class - represents user's data class
</span>UserModel
<span style="color: #009900;color: #CCC;">&#123;</span>
    <span style="color: #000000; font-weight: bold;color: #577A61;">private</span> <span style="color: #000088;">$id</span><span style="color: #339933;color: #CCC;">,</span> <span style="color: #000088;">$name</span><span style="color: #339933;color: #CCC;">,</span> <span style="color: #000088;">$dob</span><span style="color: #339933;color: #CCC;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;color: #577A61;">public</span> <span style="color: #000000; font-weight: bold;color: #577A61;">function</span> getID<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#41;</span>
    <span style="color: #009900;color: #CCC;">&#123;</span>
        <span style="color: #b1b100;color: #B83A24;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;color: #CCC;">---&gt;</span><span style="color: #004000;">id</span><span style="color: #339933;color: #CCC;">;</span>
    <span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;color: #577A61;">public</span> <span style="color: #000000; font-weight: bold;color: #577A61;">function</span> getName<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#41;</span>
    <span style="color: #009900;color: #CCC;">&#123;</span>
        <span style="color: #b1b100;color: #B83A24;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;color: #CCC;">-&amp;</span>gt<span style="color: #339933;color: #CCC;">;</span>name<span style="color: #339933;color: #CCC;">;</span>
    <span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;color: #577A61;">public</span> <span style="color: #000000; font-weight: bold;color: #577A61;">function</span> getDob<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#41;</span>
    <span style="color: #009900;color: #CCC;">&#123;</span>
        <span style="color: #b1b100;color: #B83A24;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;color: #CCC;">-&amp;</span>gt<span style="color: #339933;color: #CCC;">;</span>dob<span style="color: #339933;color: #CCC;">;</span>
    <span style="color: #009900;color: #CCC;">&#125;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># base user class - all other user classes
</span><span style="color: #666666; font-style: italic;"># inherit this class
</span><span style="color: #000000; font-weight: bold;color: #577A61;">class</span> BaseUser
<span style="color: #009900;color: #CCC;">&#123;</span>
    <span style="color: #000000; font-weight: bold;color: #577A61;">public</span> <span style="color: #000000; font-weight: bold;color: #577A61;">function</span> daysUntilBirthday<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#41;</span>
    <span style="color: #009900;color: #CCC;">&#123;</span>
        <span style="color: #000088;">$user</span> <span style="color: #339933;color: #CCC;">=</span> <span style="color: #000000; font-weight: bold;color: #577A61;">new</span> UserModel<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
        <span style="color: #000088;">$dob</span> <span style="color: #339933;color: #CCC;">=</span> <span style="color: #000088;">$user</span><span style="color: #339933;color: #CCC;">-&amp;</span>gt<span style="color: #339933;color: #CCC;">;</span>getDob<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
        <span style="color: #666666; font-style: italic;color: #CDC;">// do some code</span>
        <span style="color: #b1b100;color: #B83A24;">return</span> <span style="color: #000088;">$daysUntilBirthday</span><span style="color: #339933;color: #CCC;">;</span>
    <span style="color: #009900;color: #CCC;">&#125;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;color: #577A61;">class</span> AdminUser <span style="color: #000000; font-weight: bold;color: #577A61;">extends</span> BaseUser
<span style="color: #009900;color: #CCC;">&#123;</span>
    <span style="color: #000000; font-weight: bold;color: #577A61;">public</span> <span style="color: #000000; font-weight: bold;color: #577A61;">function</span> getAdminLevel<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#41;</span>
    <span style="color: #009900;color: #CCC;">&#123;</span>
        <span style="color: #b1b100;color: #B83A24;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;color: #CCC;">-&amp;</span>gt<span style="color: #339933;color: #CCC;">;</span>adminLevel<span style="color: #339933;color: #CCC;">;</span>
    <span style="color: #009900;color: #CCC;">&#125;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;color: #577A61;">class</span> ManagerUser <span style="color: #000000; font-weight: bold;color: #577A61;">extends</span> BaseUser
<span style="color: #009900;color: #CCC;">&#123;</span>
    <span style="color: #000000; font-weight: bold;color: #577A61;">public</span> <span style="color: #000000; font-weight: bold;color: #577A61;">function</span> getManagedEmployees<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#41;</span>
    <span style="color: #009900;color: #CCC;">&#123;</span>
        <span style="color: #b1b100;color: #B83A24;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;color: #CCC;">-&amp;</span>gt<span style="color: #339933;color: #CCC;">;</span>listOfEmployees<span style="color: #339933;color: #CCC;">;</span>
    <span style="color: #009900;color: #CCC;">&#125;</span>
<span style="color: #009900;color: #CCC;">&#125;</span>
&nbsp;
?<span style="color: #339933;color: #CCC;">&amp;</span>gt<span style="color: #339933;color: #CCC;">;</span></pre></td></tr></table></div>

<p>What advantage does this give the developer? It helps to even further abstract methods from the data. This way models are not being used to do complex data manipulation but only access and do simple data changes (i.e. setters and getters). This allows the developer to build different classes that are based off a single data model. This helps in keeping application / business logic out of the model as well as out of the controller.</p>
]]></content:encoded>
			<wfw:commentRss>http://larkmullins.com/2011/03/controller-object-model-connector/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Agriculture</title>
		<link>http://larkmullins.com/2011/02/open-agriculture/</link>
		<comments>http://larkmullins.com/2011/02/open-agriculture/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 04:29:07 +0000</pubDate>
		<dc:creator>larkmullins</dc:creator>
				<category><![CDATA[agriculture]]></category>
		<category><![CDATA[farming]]></category>
		<category><![CDATA[sustainable agriculture]]></category>

		<guid isPermaLink="false">http://larkmullins.com/?p=85</guid>
		<description><![CDATA[The sharing of information amongst people has always been a key way for individuals to learn about a specific field. The art of mentoring seems to have been lost in current America. As the younger generation begins to see that working the earth is the key to truly enjoying life a community of open idea exchange in the agriculture industry is needed more than ever.]]></description>
			<content:encoded><![CDATA[<p>Farming has always been an integral part of American society. Some of our founding fathers were farmers. This country has agriculture at it&#8217;s heart. As of September 10, 2009 the EPA determined that there about 960,000 persons that claim farming as their principal occupation and that there are around 2,064,700 farms that range from non-family farms to residential/lifestyle farms.</p>
<p>The American landscape is littered with farms that produce everything from vegetables to live stock. Everything we consume food wise started on a farm. We as humans have been farming for thousands of years. It is one of the reasons we, humans, have survived the ages. Agriculture is vital to everyones life even if they don&#8217;t know it or have never set foot on a farm.</p>
<p>I lived a portion of my life on a tobacco, alfalfa, and beef farm. The farm was in a rural part of middle Kentucky on about 180+/- acres of land. I lived there until I was around 8-10 years of age. Now as an adult I yearn to be back on the farm. Working the land with my hands and producing quality, healthy, non-genetically modified food.</p>
<p>As I begin my quest I have noticed that information about farming is hard to come by. There are places online that will give you a good overview of how to start a farm or business models for farms but nothing on the actual day-to-day activities that a farm goes through. There are no good sources for farmers to help a younger generation get the knowledge they need to begin the their journey into the agriculture business. This needs to be changed. I am not sure what that change will be but this is one of my goals for 2011. I want to figure out if there is someway to combine the power of the internet with agriculture and bring back the lost art of working the earth.</p>
]]></content:encoded>
			<wfw:commentRss>http://larkmullins.com/2011/02/open-agriculture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rituals</title>
		<link>http://larkmullins.com/2011/01/rituals/</link>
		<comments>http://larkmullins.com/2011/01/rituals/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 04:28:35 +0000</pubDate>
		<dc:creator>larkmullins</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://larkmullins.com/?p=84</guid>
		<description><![CDATA[One of the paths to being a good developer is getting into a routine. A ritual. Rituals for developers are close to the rituals of old. There is a set procedure to carry out a certain task. If the rules for this task are followed to the letter then everything works out to the benefit of the participant.]]></description>
			<content:encoded><![CDATA[<p>Everyone has some sort of ritual. I have them. You have them, even though you might not realize it and they might seem chaotic to outsiders. Oddly enough, they may even seem chaotic to you, so chaotic in fact, that is one of the reasons you didn&#8217;t recognize them as rituals. Some people have a structured ritual. They get early in the morning. Read the newspaper, make breakfast, or go to the gym to work out. Regardless of your style everyone has a ritual.</p>
<p>Per Wikipedia a ritual is:</p>
<blockquote><p><em>A <strong>ritual</strong> is a set of actions, performed mainly for their symbolic value.</em></p>
</blockquote>
<p>In my day-to-day life I have a ritual:</p>
<ol>
<li>1. Get up (before wife and kids)</li>
<li>2. Get dressed.</li>
<li>3. Brush teeth.</li>
<li>4. Grab keys, phone, work-badge, laptop. Leave for work</li>
<li>5. Get to work.</li>
<li>6. Log in to computer</li>
<li>7. Get cup of coffee.</li>
<li>8. Read reddit.com</li>
<li>9. Begin work.</li>
<li></li>
</ol>
<p>Now all of this takes around 1 hour to accomplish. Why am I telling you this, well because I think that rituals are a vital part of accomplishing your goals. As a developer, I have a ritual of nightly working on a personal project. It is not structured in that I set a certain amount of time for each specific project but I do devote some time on a nightly basis to my various projects. This gives me consistency and focus on a specific goal. This time as a developer is invaluable. You have some time to play and experiment with whatever new technology you want to learn about.</p>
<p>Another great thing about rituals as a developer is that you begin approaching and/or solving a similar problem in the same way, every time. This gives you consistency in your work. If a solution worked in the past and you have a similar situation now, you should be able to solve it the same way. Another phrase developers use for this is &#8220;design patterns&#8221;. Design patterns are the idea of approaching a similar problem with a similar solution. So really design patterns could easily be called design rituals, to some extent.</p>
<p>Rituals are valuable to a developer in so many ways but they don&#8217;t have to be just for developers. Anyone can develop a ritual that helps them accomplish a goal.</p>
]]></content:encoded>
			<wfw:commentRss>http://larkmullins.com/2011/01/rituals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create Tools, Not Problems</title>
		<link>http://larkmullins.com/2010/12/create-tools-not-problems/</link>
		<comments>http://larkmullins.com/2010/12/create-tools-not-problems/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 04:27:51 +0000</pubDate>
		<dc:creator>larkmullins</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://larkmullins.com/?p=83</guid>
		<description><![CDATA[I think this is what every good developer should do. When there is a re-occuring problem that you or your team face, the a tool needs to be built to solve the problem. As developer we are in the business of programming software and hardware applications for other people who are not software developers. That is why we must do our best to help our fellow developers.]]></description>
			<content:encoded><![CDATA[<p>When ever there is a problem facing me I want to find a solution that will remove the problem. When ever there is a reoccuring problem, I want to create a tool to fix this problem from ever being a problem again.</p>
<p>I think this is what every good developer should do. When there is a re-occuring problem that you or your team face, the a tool needs to be built to solve the problem. As developer we are in the business of programming software and hardware applications for other people who are not software developers. That is why we must do our best to help our fellow developers.</p>
<p>If you are part of a team and there is something you can build that will help your collegues work more efficiently then you should try your best to build that tool.</p>
<p>In 2009 I took my first contract developer position as a front-end developer at one of the top five health insurance companies in the nation. At the time they had just hired a lead front-end developer about 6 months before me. He was getting everything switched from table based layouts to all css, standards compliant layouts. We began using Yahoo&#8217;s Compressor to minimize our CSS and JavaScript files before pushing them to production. This process took about 20 minutes to complete and it was very tedious.</p>
<p>After doing this process one time I decided to build a tool me and the rest of the developers could use to speed this process up. Since Yahoo&#8217;s Compressor was built in Java I used Java. Basically, what this tool became was a build tool for our front-end code. It worked very well. It took a 20 minute process and brought it done to about 10 seconds. Not a bad increase in efficiency.</p>
<p>I tell you that story is that when I left that contract position I was most proud of that tool. It was a tool that no one outside of our 4 man developer team would ever use. But I left a tool that will help other developers go onto produce better websites.</p>
]]></content:encoded>
			<wfw:commentRss>http://larkmullins.com/2010/12/create-tools-not-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Art of Focusing</title>
		<link>http://larkmullins.com/2010/11/the-art-of-focusing/</link>
		<comments>http://larkmullins.com/2010/11/the-art-of-focusing/#comments</comments>
		<pubDate>Sun, 14 Nov 2010 04:27:03 +0000</pubDate>
		<dc:creator>larkmullins</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://larkmullins.com/?p=82</guid>
		<description><![CDATA[Last year I dabbled in the world of freelance web development. Let's just say I am glad last year is over. Doing web development on the side took way more time than I had expected. Plus, I was going to school, working full-time, and had a family at home. It was too much. I felt like all I did was work and never had time to pursue my interests.]]></description>
			<content:encoded><![CDATA[<p>In 2009 I began freelancing on a regular basis. I only accept three gigs over the course of the year but those three gigs taught me a lot regarding the freelancing lifestyle. The biggest lesson I learned was that if you think you can hold down a full-time job, work on freelance jobs at night, work on your personal projects, and have some semblance of a personal life you are either a super human or completely insane. That is why I took 2010 off from freelancing. During that year I was able to focus on my family. Focus on some personal projects I wanted to get started. And I was able to get a decent amount of sleep at night.</p>
<p>Without any freelance projects I was able to focus my energies on things that were more important than freelancing. The first thing I was able to spend more time doing was time with my family. My family is very important to me and sacrificing time at night with my kids to work on projects was not worth the money I was making on said projects. Without any projects my focus changed to what is important in life.</p>
<p>Another thing I was able to do was focus on some personal projects that I had been wanting to get started. Mind you they are not finished but they are started and I am actively developing them. This time I had to spend on projects was great because I was able to challenge myself to learn new technologies, new techniques, and build my repertoire as a developer. It gave me time to hone my skills and build up my developer tool belt, if you will.</p>
<p>This time away from freelancing shown me that having the ability to focus on something and give it your all is vital to your development as a programmer. It gives you time to play, to experiment, and it gives you time to be a human instead of a code monkey churning out code in a dark room.</p>
]]></content:encoded>
			<wfw:commentRss>http://larkmullins.com/2010/11/the-art-of-focusing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The DIY Mindset…Good or Bad?</title>
		<link>http://larkmullins.com/2010/10/the-diy-mindset%e2%80%a6good-or-bad/</link>
		<comments>http://larkmullins.com/2010/10/the-diy-mindset%e2%80%a6good-or-bad/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 04:25:27 +0000</pubDate>
		<dc:creator>larkmullins</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://larkmullins.com/?p=81</guid>
		<description><![CDATA[As I develop my skills as a software developer and learn more about different aspects of computing, I find myself shying away from using developer designed libraries and functions. I find myself wanting to learn about a new technology and then develop my own class or function to utilize said technology.]]></description>
			<content:encoded><![CDATA[<p>As I develop my skills as a software developer and learn more about different aspects of computing, I find myself shying away from using developer designed libraries and functions. I find myself wanting to learn about a new technology and then develop my own class or function to utilize said technology.</p>
<p>At my current job we code using PHP backed by MySQL. When I started we began discussions on developing an application for our clients. It was decided up front to use the MVC architecture. I looked at using an established framework and there were some good ones. CodeIgnitor. Zend Framework. CakePHP. The list goes on. What we decided was the develop our own MVC framework. This is in no means an easy task.</p>
<p>During the development there were many things learned and many mistakes made. These mistakes were easily corrected and they were ultimately very valuable because of the knowledge gained from their correction.</p>
<p>So this brings me to the point of this post. Is the mindset of doing-it-yourself a good approach when it comes to application development. First I want to give you the cons, then I will give you, what I think, are the pros.</p>
<h2>First up, the Cons</h2>
</p>
<h3>Longer Development Time</h3>
<p>The actual time it takes to develop a functioning application is extended because you are first busy developing a technology that the application will eventually use. This could be avoided if an already developed solution is used for said technology.</p>
<h3>Mistakes Will Be Made</h3>
<p>If you have never worked with a solution in a specific technology and then attempt to build that technology then you will make mistakes. Mistakes are fine. They teach you a lot but they can either add the timeline or worse create bugs or security holes in your application. Established solutions have the advantage because the developers have experience in the technology and they have probably worked out a major portion of the bugs, if not all of them.</p>
<h2>And finally, the Pros</h2>
</p>
<h3>Knowledge. Knowledge. Knowledge</h3>
<p>The reason I put this first is because, in my humble opinion, this is the most valuable benefit you will get out of doing something yourself. You are a better developer. You learn so much about not just the technology but about developing software that you ultimately will approach ever project after this one differently.</p>
<h3>Intimate Understanding of the Technology</h3>
<p>After you develop a technology for your web application you will have an invaluable understanding of how all the pieces mesh together. This will allow you to quickly diagnose issues that arise in your application. This will help you later in life when faced with similar situations.</p>
<h3>A Since of Pride</h3>
<p>You can officially say to someone, &#8220;I develop the technology that powers that application&#8221;. Not many people can say that about an application they have worked on.</p>
<p>I have the DIYer mindset. Unless it is completely out of my league, like Assembly programming, or nuclear physics, I am going to attempt to develop my own technology before using another solution. This may be foolish or arrogant but the knowledge I gain is more valuable to me than worrying if you think I am foolish or arrogant.</p>
]]></content:encoded>
			<wfw:commentRss>http://larkmullins.com/2010/10/the-diy-mindset%e2%80%a6good-or-bad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Architecturaless Design</title>
		<link>http://larkmullins.com/2010/09/architecturaless-design/</link>
		<comments>http://larkmullins.com/2010/09/architecturaless-design/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 12:18:36 +0000</pubDate>
		<dc:creator>larkmullins</dc:creator>
				<category><![CDATA[architecture]]></category>

		<guid isPermaLink="false">http://larkmullins.com/?p=7</guid>
		<description><![CDATA[When an architect sits down to design a building he painstakingly works within the required space as well as the budget. He works within specific restrictions: building techniques, building codes, user desires, and physical boundaries (aka. physics). They do not have the option to design a structure, see it built, then decide to add a conference room area where a bathroom was originally located. Buildings are not modular in the sense of plug-n-play. They are set in stone so to speak. Sure, you can remodel a building but that takes a lot of work and planning. It is not something that can be started and finished within a weekend. It needs to be planned out in very minute details.]]></description>
			<content:encoded><![CDATA[<div class="authors-note">
<p><strong>Author&#8217;s Note:</strong> Another title I thought about using for this post was &#8220;Desgin &#8211; Shoot from the hip and hope it sticks&#8221; but I thought that was too wordy. I hope you understand or at least mildly grok what I am talking about. If not, contact me and we can discuss further.</p>
</div>
</p>
<p>When an architect sits down to design a building he painstakingly works within the required space as well as the budget. He works within specific restrictions: building techniques, building codes, user desires, and physical boundaries (aka. physics). They do not have the option to design a structure, see it built, then decide to add a conference room area where a bathroom was originally located. They are set in stone so to speak. Sure, you can remodel a building but that takes a lot of work and planning. It is not something that can be started and finished within a weekend. It needs to be planned out in very minute details. Buildings are not modular they are not plug-n-play, even though the Japanese are pushing the envelope. But even those structures have to be planned out to the smallest detail so that all the pieces fit together.</p>
<p>This idea of modularity or plug-n-play can become a killer of any website especially when it comes to front-end development.  A website is similar to a physical building. With this mindset the front-end developer is the architect who develops the front-end code of the site. When a web designer who does not code but only designs decides that sections of the website need to be able to switch in new designs it becomes an uphill battle for the developer. The developer has to anticipate what type of new layout will be placed into a specific area of the page. I am not saying that the developer will not be able to code for multiple element types but those types need to be known up-front. A developer can not just code a section with one element then 3-months the designer wants a new type of element that will require a redo of the container and all other elements for that container.</p>
<p>The solution for this type of situation is very detailed planning especially if the project is for a web application. As much as humanly possible, every detail of the site needs to be discussed. Some may say that this will take to long to complete and there for delay development. That is a possibility for a team that is not willing to truly decide what is necessary and what is not necessary for the site.</p>
<p>That last statement is critical. A good design/development team need be brutally honest when it comes to features and design of the site. Only then will they have any chance of developing a successful web site or application that will be some what easy to maintain and extend.</p>
<p>One more thing. It is my personal opinion that web designer needs to be able to code in semantic HTML and CSS at the very least. Ability to code unobtrusive JavaScript is a major plus. That is my 2 cents.</p>
]]></content:encoded>
			<wfw:commentRss>http://larkmullins.com/2010/09/architecturaless-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

