<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">

    <title type="text">Blog</title>
    <subtitle type="text">Blog:Just the ramblings of a struggling artist, the constant student, lost in piles of programming books, empty jager bottles, and cigarette butts</subtitle>
    <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/blog/" />
    <link rel="self" type="application/atom+xml" href="http://ecsyle.com/index.php/site/atom/" />
    <updated>2008-04-16T17:38:19Z</updated>
    <rights>Copyright (c) 2008, ecsyle</rights>
    <generator uri="http://www.pmachine.com/" version="1.6.3">ExpressionEngine</generator>
    <id>tag:ecsyle.com,2008:04:16</id>


    <entry>
      <title>Silly Rabbit&#8230;</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/silly_rabbit/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.83</id>
      <published>2008-04-16T17:38:00Z</published>
      <updated>2008-04-16T17:38:19Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Play"
        scheme="http://ecsyle.com/index.php/site/C33/"
        label="Play" />
      <content type="html"><![CDATA[
        <p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/_Ez5QPW-ku4&amp;hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/_Ez5QPW-ku4&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Reno RnR &#45; The List: 101 who mattered</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/reno_rnr_the_list_101_who_mattered/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.78</id>
      <published>2008-04-11T19:33:00Z</published>
      <updated>2008-04-11T19:41:20Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Inspiration"
        scheme="http://ecsyle.com/index.php/site/C49/"
        label="Inspiration" />
      <category term="Music"
        scheme="http://ecsyle.com/index.php/site/C34/"
        label="Music" />
      <content type="html"><![CDATA[
        <p>Big thumbs up and a thank you to D6 and Champagne &amp; Bacon for their hard work keeping Electronic Music alive and flourishing in Reno. The Reno News &amp; Review has posted their <a href="http://www.newsreview.com/reno/Content?oid=651192" title="list of the most influential people in Reno music over the last 25 years">list of the most influential people in Reno music over the last 25 years</a> and has them both listed. I find this to be extremely exciting and it makes me all warm and fuzzy inside. 
</p>
<p>
The list is a great read in itself. I urge you to check it out. 
</p>
<blockquote><p>
Lists are always controversial. When Rolling Stone released its list of top 500 albums of all time, the comments came fast and furious. “Thanks for completely shitting on hip-hop and the influence it has had,” wrote one reader. “According to this list who needs the last 20 years anyway?” wrote another. Even seemingly safe choices proved divisive. “Please get the stinking Beatles off these lists. They are a glorified pop band that for some reason we are all programmed to believe were great.”
</p>
<p>
Essentially, the comments revealed the problem with lists—they are incredibly subjective and getting two people to agree on what should be included is an exercise in futility. We expect this list to have the same issues.
</p>
<p>
....
</p>
<p>
With that in mind, here’s our list of the most influential people in Reno music over the last 25 years. While we know not everyone will agree with the choices, we look forward to the dialogue it will generate.
<br />
</p></blockquote> 
      ]]></content>
    </entry>

    <entry>
      <title>Lunchbox Radio &#45; Support Electronic Music Poster</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/lunchbox_radio_support_electronic_music_poster/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.76</id>
      <published>2008-04-10T23:49:01Z</published>
      <updated>2008-04-10T23:54:54Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Arts"
        scheme="http://ecsyle.com/index.php/site/C35/"
        label="Arts" />
      <category term="Lunchbox Radio"
        scheme="http://ecsyle.com/index.php/site/C51/"
        label="Lunchbox Radio" />
      <category term="Music"
        scheme="http://ecsyle.com/index.php/site/C34/"
        label="Music" />
      <category term="Play"
        scheme="http://ecsyle.com/index.php/site/C33/"
        label="Play" />
      <content type="html"><![CDATA[
        <p>I needed a break at work today, and I needed to take my mind of all the stressful things related to work. My release today was this poster for Lunchbox Radio:
</p>
<p>
<img src="http://ecsyle.com/images/blog/SupportElecMusic_Lunchbox.jpg" width="560" height="865" />
</p>
<p>
Cross posted in <a href="http://ecsyle.com/index.php/art/view/lunchbox_radio_support_electronic_music/" title="Lunchbox Radio - Support Electronic Music Poster">Arts</a>
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>ExpressionEngine 2.0: fully CodeIgnited!</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/expressionengine_20_fully_codeignited/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.75</id>
      <published>2008-04-03T06:29:00Z</published>
      <updated>2008-04-03T06:47:41Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Code"
        scheme="http://ecsyle.com/index.php/site/C46/"
        label="Code" />
      <category term="Web Dev"
        scheme="http://ecsyle.com/index.php/site/C43/"
        label="Web Dev" />
      <content type="html"><![CDATA[
        <p>Kinda old news, but I wanted to post about it. My favorite web publishing platform, <a href="http://expressionengine.com" class="popup" title="Expression Engine">Expression Engine</a>, is looking to release version 2.0 sometime this summer. Ellis Lab, the people behind Expression Engine, are also the force behind the Open Source <a href="http://codeigniter.com" title="Codeigniter" class="popup">Codeigniter</a>. They have announced that <a href="http://expressionengine.com/blog/entry/expressionengine_20_fully_codeignited/" title="Read about it">EE2.0 is powered by Codeigniter</a>. To me, this is incredible. The possibilities are endless.
</p>
<blockquote><p>
At South by Southwest during our “ExpressionEngine 2.0 sneak preview” I got a chance to reveal some big news about the future of ExpressionEngine that I wanted to explore in some more detail here for anyone who wasn’t able to attend.
</p>
<p>
ExpressionEngine 2.0 is built on CodeIgniter.
</p>
<p>
CodeIgniter is our Open Source PHP based framework.&nbsp; You can learn more at CodeIgniter.com, but in a nutshell it’s the toolkit that many powerful applications are built on, and now we can add ExpressionEngine to that list.
</p>
<p>
This is great news if you’re an ExpressionEngine user, a CodeIgniter user, or both.&nbsp; As an ExpressionEngine developer you will have a greatly expanded community of talented developers working with you, and for you.&nbsp; I said during my talk, “The nerds are excited, and you should be excited that the nerds are excited”.&nbsp; As a dyed in the wool nerd, I stand by this!
</p>
<p>
If you’re a CodeIgniter developer, this means you can drop a full-fledged content-management system right on top of your existing code base, and have it work.&nbsp; You want a forum installed?&nbsp; One click.&nbsp; You want need member management, a wiki, end-user tools, mailing lists, mobile blogging capabilities, permissions… all there.&nbsp; One click.&nbsp; Proven, simple, powerful. 
<br />
</p></blockquote>
<p>
Very exciting! Since I started using Codeigniter at version 1.0, I have noticed a huge increase in my productivity, and a huge leap in my knowledge of php and web programming. There is something about coding with Codeigniter that inspires clean, elegant code. A good example of the power of Codeigniter is a very basic CMS I had put together for Noble Studios. It worked, but it wasn&#8217;t pretty. It was one hack on top of another, with a bunch of pieces glued together that was very slowly turning into a usable framework/CMS, but I simply do not have the time or resources to properly develop it. We work very quickly and I had to do what I had to do. However, this latest project gave me a chance to revisit the very core of this CMS and I saw the opportunity to do it right. I chose Codeigniter as the core and was able to produce a marketable, flexible, and maintainable application in a fraction of the time it took to build the original. I am most happy with the ACL/User Authentication system, and I am considering ripping it out and making it available as an app for the community. The point is, a good framework really does allow you to spend more time on the real functionality and value of an application. And with EE as the CMS and the power of this framework, we can tackle much larger development projects in the same amount of time as doing it from &#8220;scratch&#8221;.&nbsp;
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Comments Open on Artwork</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/comments_open_on_artwork/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.74</id>
      <published>2008-04-02T17:51:00Z</published>
      <updated>2008-04-02T17:54:32Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Arts"
        scheme="http://ecsyle.com/index.php/site/C35/"
        label="Arts" />
      <category term="Meta"
        scheme="http://ecsyle.com/index.php/site/C50/"
        label="Meta" />
      <content type="html"><![CDATA[
        <p>I have enabled commenting for the <a href="http://ecsyle.com/index.php/art/" title="Ecsyle Arts">Arts section</a>. It was live for a minute but I took it off and I can&#8217;t remember why, so I have turned it back on.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Got a new car!</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/got_a_new_car/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.73</id>
      <published>2008-03-28T08:30:00Z</published>
      <updated>2008-03-27T16:39:24Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Play"
        scheme="http://ecsyle.com/index.php/site/C33/"
        label="Play" />
      <category term="Snaps"
        scheme="http://ecsyle.com/index.php/site/C44/"
        label="Snaps" />
      <content type="html"><![CDATA[
        <p>Finally. My old busted honda civic just wasn&#8217;t cutting it. It was well past time to upgrade. So I got this, an Audi A4 Quattro 1.8 Turbo. 
</p>
<p>
<img src="http://ecsyle.com/images/blog/audia4.jpg" width="560" height="351" />
</p>
<p>
Woo!
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>The Tree of Life</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/the_tree_of_life/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.70</id>
      <published>2008-03-27T08:21:00Z</published>
      <updated>2008-04-02T19:25:26Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Arts"
        scheme="http://ecsyle.com/index.php/site/C35/"
        label="Arts" />
      <content type="html"><![CDATA[
        <p><img src="http://ecsyle.com/images/portfolio/07.jpg" border="0" width="560" height="341" /> 
</p>
<p>
Saturday night after a little bit of mushroom and absinthe, I was flipping through my sketchbook and stopped on this drawing. I like this drawing, and it was just a sketch of the tree of life. Man growing, evolving, his mind reaching its absolute potential. Staring into this drawing I realized something. Slightly trippin I quickly wrote it down on top of the actual sketch. The irony of man is that his constant search of the meaning of life, god, etc, is always in the one place he cannot actually look.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Using the Captcha Plugin in Codeigniter with Form Validation</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/using_captcha_plugin_in_codeigniter_with_form_validation/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.72</id>
      <published>2008-03-26T18:57:00Z</published>
      <updated>2008-03-27T03:07:03Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Code"
        scheme="http://ecsyle.com/index.php/site/C46/"
        label="Code" />
      <category term="Web Dev"
        scheme="http://ecsyle.com/index.php/site/C43/"
        label="Web Dev" />
      <content type="html"><![CDATA[
        <p>Codeigniter ships with a captcha plugin that is not documented in the User Guide. The code is commented well and has examples though. This is how I used the captcha plugin with form validation to help stop spam on a basic contact form, without using a table in my database. It seems unecessary to add this call to MySQL when we could easily just store it in session.&nbsp; 
</p>
<p>
First, our controllers method. This handles setting up our form validation rules, building the captcha, and storing the captcha data in a session for retrieval later. We have a rule for our captcha field that is a callback to our validation function, &#8220;cinput_check&#8221;. 
</p>
<p>
</p><div class="codeblock"><code>
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">contact</span><span style="color: #007700">()<br /></span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">load</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">library</span><span style="color: #007700">(</span><span style="color: #DD0000">'session'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">load</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">plugin</span><span style="color: #007700">(</span><span style="color: #DD0000">'captcha'</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/* Setup captcha defaults */<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$captcha_defaults </span><span style="color: #007700">= array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'img_path'&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'./images/captcha/'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'img_url'&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'http://site.com/images/captcha/'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'img_width'&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">200</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'img_height' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">50</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">load</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">library</span><span style="color: #007700">(</span><span style="color: #DD0000">'validation'</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/* include your additional form field rules here as well */<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$rules&#91;</span><span style="color: #DD0000">'cinput'</span><span style="color: #0000BB">&#93; </span><span style="color: #007700">= </span><span style="color: #DD0000">"callback_cinput_check"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">validation</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_rules</span><span style="color: #007700">(</span><span style="color: #0000BB">$rules</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/* include your additional form fields here as well */<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fields&#91;</span><span style="color: #DD0000">'cinput'</span><span style="color: #0000BB">&#93; </span><span style="color: #007700">= </span><span style="color: #DD0000">"Captcha"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">validation</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_fields</span><span style="color: #007700">(</span><span style="color: #0000BB">$fields</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if (</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">validation</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">run</span><span style="color: #007700">() == </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/* since validation failed, generate new captcha<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data and update the session */<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cap </span><span style="color: #007700">= </span><span style="color: #0000BB">create_captcha</span><span style="color: #007700">(</span><span style="color: #0000BB">$captcha_defaults</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$form_tpl&#91;</span><span style="color: #DD0000">'captcha'</span><span style="color: #0000BB">&#93; </span><span style="color: #007700">= </span><span style="color: #0000BB">$cap&#91;</span><span style="color: #DD0000">'image'</span><span style="color: #0000BB">&#93;</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_userdata</span><span style="color: #007700">(array(</span><span style="color: #DD0000">'cinput'</span><span style="color: #007700">=&gt;</span><span style="color: #0000BB">$cap&#91;</span><span style="color: #DD0000">'word'</span><span style="color: #0000BB">&#93;</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">load</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">view</span><span style="color: #007700">(</span><span style="color: #DD0000">'site/contact_us'</span><span style="color: #007700">, </span><span style="color: #0000BB">$form_tpl</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">else<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/* Continue to process form */<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&#125;<br />?&gt;</span>
</code></div><p>
</p>
<p>
This is our call back function, and validates the posted captcha value against the generated value stored in session. For some reason checking $str against the value in $this->session was not working, so I simply bypassed that and used the value from the input handler. 
<br />
</p><div class="codeblock"><code>
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">cinput_check</span><span style="color: #007700">(</span><span style="color: #0000BB">$str</span><span style="color: #007700">)<br /></span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if (</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">post</span><span style="color: #007700">(</span><span style="color: #DD0000">'cinput'</span><span style="color: #007700">) != </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">userdata</span><span style="color: #007700">(</span><span style="color: #DD0000">'cinput'</span><span style="color: #007700">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">validation</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_error_messages&#91;</span><span style="color: #DD0000">'cinput_check'</span><span style="color: #0000BB">&#93; </span><span style="color: #007700">= </span><span style="color: #DD0000">'Incorrect Captcha characters.'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#123;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return </span><span style="color: #0000BB">TRUE</span><span style="color: #007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#125;<br />&#125;<br />?&gt;</span>
</code></div><p>
</p>
<p>
The form is just a generic form, but here is what the captcha field looks like for reference:
<br />
</p><div class="codeblock"><code>
<span style="color: #007700">&lt;</span><span style="color: #0000BB">p</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$captcha</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">br </span><span style="color: #007700">/&gt;<br />&lt;</span><span style="color: #0000BB">label </span><span style="color: #007700">for=</span><span style="color: #DD0000">"Captcha"</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">Type in the code</span><span style="color: #007700">:&lt;/</span><span style="color: #0000BB">label</span><span style="color: #007700">&gt; <br />&lt;</span><span style="color: #0000BB">input type</span><span style="color: #007700">=</span><span style="color: #DD0000">"text" </span><span style="color: #0000BB">name</span><span style="color: #007700">=</span><span style="color: #DD0000">"cinput" </span><span style="color: #0000BB">id</span><span style="color: #007700">=</span><span style="color: #DD0000">"Captcha" </span><span style="color: #0000BB">value</span><span style="color: #007700">=</span><span style="color: #DD0000">"" </span><span style="color: #007700">/&gt;&lt;/</span><span style="color: #0000BB">p</span><span style="color: #007700">&gt;</span>
</code></div><p>
</p>
<p>
For more information on <a href="http://codeigniter.com" class="popup">Codeigniter</a> check out their extremely well documented <a href="http://codeigniter.com/user_guide/" class="popup">User Guide</a>.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Lunchbox Radios First Radio Liners</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/lunchbox_radios_first_radio_liners/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.71</id>
      <published>2008-03-26T04:03:00Z</published>
      <updated>2008-03-26T04:27:37Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Arts"
        scheme="http://ecsyle.com/index.php/site/C35/"
        label="Arts" />
      <category term="Lunchbox Radio"
        scheme="http://ecsyle.com/index.php/site/C51/"
        label="Lunchbox Radio" />
      <category term="Music"
        scheme="http://ecsyle.com/index.php/site/C34/"
        label="Music" />
      <category term="Play"
        scheme="http://ecsyle.com/index.php/site/C33/"
        label="Play" />
      <content type="html"><![CDATA[
        <p><img src="http://ecsyle.com/images/blog/lunchbox_radio.jpg" width="560" height="212" />
</p>
<p>
Over the weekend The Mantis and I made our first Radio Liners. This was the first time I have attempted to create anything with sound. It is definitely fun and I am excited to learn more about it. We used cubase to record and compile the audio. We made one for Jager Hour, our not so consistent show where we play records and ramble on until we are too drunk to continue, and for general broadcasting on Lunchbox Radio. 
</p>
<p>
Check them out!
<br />
<a href="http://ecsyle.com/images/blog/jager-hour-liner-01.mp3" class="popup">Jager Hour</a>
<br />
<a href="http://ecsyle.com/images/uploads/lunchbox-liner-02.wav" class="popup">Lunchbox Radio</a>
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Amsterdam</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/amsterdam/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.69</id>
      <published>2008-03-26T03:03:01Z</published>
      <updated>2008-03-26T03:18:51Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Inspiration"
        scheme="http://ecsyle.com/index.php/site/C49/"
        label="Inspiration" />
      <category term="Play"
        scheme="http://ecsyle.com/index.php/site/C33/"
        label="Play" />
      <category term="Work"
        scheme="http://ecsyle.com/index.php/site/C32/"
        label="Work" />
      <content type="html"><![CDATA[
        <p><img src="http://ecsyle.com/images/blog/129_129.jpg" width="560" height="420" />
</p>
<p>
Noble Studios took us on a trip to Amsterdam for a 2 day workshop, team building, and they 5 days of whatever the hell we wanted. It was not wasted, although, we definitely were. The workshop was unexpectedly productive and the entire trip has brought the whole office closer together. We were mentally stripped down built up again. Personally I feel refreshed and focused. More focused than I have been in a long time. 
</p>
<p>
We knew it was going to be a good trip from the minute we got the airport at 6am. Everyone was all smiles and completely embracing, especially towards Nicole. This is the first time they have met here and honestly, they probably, up until that moment, didn&#8217;t think she existed! 
</p>
<p>
The flight was easy. We started drinking in Reno and didn&#8217;t stop until Amsterdam. Definitely made the trip smoother. Once we were finally there, and thanks to our pilot we got there an hour earlier, we unloaded our gear and headed straight for a coffee shop. From here the trip is a blur of laughter, fun, productivity, art, drinks, good food, and flight butt. Oh and the best pot I have ever smoked. I could probably go on and on on details that are unimportant except to those of us that were there, but I won&#8217;t. Basically, the trip was amazing. Everyone I work with is amazing. And it was absolutely incredible to have shared this experience with Nicole and crew. I can&#8217;t wait to go back to Europe.
</p>
<p>
Nicole and I at the Bushdoctor coffee shop:
<br />
<img src="http://ecsyle.com/images/blog/060_60.jpg" alt="" />
</p>
<p>
Drawing and smoking at the Bushdoctor:
<br />
<img src="http://ecsyle.com/images/blog/067_67.jpg" width="560" height="420" />
</p>
<p>
The best pancakes I have ever had in my life. Something I am going to crave for years:
<br />
<img src="http://ecsyle.com/images/blog/112_112.jpg" width="560" height="420" />
<br />

</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Perry Bible Fellowship to end next week</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/perry_bible_fellowship_to_end_next_week/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.68</id>
      <published>2008-02-23T08:07:01Z</published>
      <updated>2008-02-23T08:15:03Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Play"
        scheme="http://ecsyle.com/index.php/site/C33/"
        label="Play" />
      <category term="Sigh..."
        scheme="http://ecsyle.com/index.php/site/C45/"
        label="Sigh..." />
      <content type="html"><![CDATA[
        <p><a href="http://www.editorandpublisher.com/eandp/departments/syndicates/article_display.jsp?vnu_content_id=1003712741" class="popup" title="Perry Bible Fellowship to end next week">Sad day indeed</a>. This was probably the funniest and most beautifully drawn comic I have ever read. 
</p>
<blockquote><p>
NEW YORK Nicholas Gurewitch&#8217;s &#8220;Perry Bible Fellowship,&#8221; the offbeat comic that ran online and in newspapers, will end next week.
</p>
<p>
&#8220;I&#8217;m making this decision for a variety of reasons, but mainly because I want to do other things besides be a cartoonist,&#8221; said Gurewitch.
</p>
<p>
A &#8220;Perry Bible Fellowship&#8221; hardcover book called &#8220;The Trial of Colonel Sweeto and Other Stories&#8221; was published last fall by Dark Horse Comics.
<br />
</p></blockquote>
<p>
<a href="http://pbfcomics.com" class="popup" title="View PBF Archive">View PBF Archive</a>
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Common sense development in a not so common sense environment</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/common_sense_development_in_a_not_so_common_sense_environment/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.67</id>
      <published>2008-02-22T05:07:00Z</published>
      <updated>2008-02-22T06:25:12Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Code"
        scheme="http://ecsyle.com/index.php/site/C46/"
        label="Code" />
      <category term="Sigh..."
        scheme="http://ecsyle.com/index.php/site/C45/"
        label="Sigh..." />
      <category term="Web Dev"
        scheme="http://ecsyle.com/index.php/site/C43/"
        label="Web Dev" />
      <category term="Work"
        scheme="http://ecsyle.com/index.php/site/C32/"
        label="Work" />
      <content type="html"><![CDATA[
        <p>I wanted to talk a bit about working in an extremely unorganized and fast paced environment, and what I have learned to keep my code from blowing up in my face. In the ideal environment we would have the luxury of a development server, a staging server, and a production server, with proper source control and debugging/qa testing. When I say server, I really mean environment, these setups could consist of more than one server, but for the sake of just writing as I think, i&#8217;ll say server. What we really have is one server that acts as both development &amp; production. Seriously. No, i am not joking, i&#8217;m serious here. We also have management that requires work gets done in unreasonable time frames. Such as, we need a custom CMS in 2 weeks with X number of specific features that really should have been planned out and analyzed and put into some sort of project specification before we begin work. Did I mention that I also have to cutup the html and css, and create all the required templates? No small task. 
</p>
<h3>Pseudo Staging</h3>
<p>
When working in such an environment, I have found that it pays to be confident. Be deliberate about your code. Think before you act, blah blah blah. Just doing something and &#8220;seeing what happens&#8221; could mean your site gets exploited or you expose sensitive to the wrong people. Not a desired result. If you need to experiment, do it outside the influence of the live site. Create a place on the site for you to test and play. Password protect it if you have to. Once you are satisfied, roll that into your live code. Remember that while you are working on the site, chances are someone is visiting. The best advice would be to setup a development/staging environment on an internal server, but if that is not an option do what you have to to simulate it. 
</p>
<h3>Code Reuse</h3>
<p>
While this is the stuff of nightmares, I have learned a thing or two from it. One being that you must be able to quickly reuse and refactor code with minimal fuss. Not all projects are made equal, but most have the same basic requirements. Handling database connections, querying the database, filtering user input, and some way to quickly deal with forms. When you write a function, think to yourself: can I reuse this later? Try to decouple your functions and classes from the application. Make them as generic as you can so that you can quickly reuse them in another project. Not everything you write will be like this, but try to think ahead. Don&#8217;t tie your MySQL wrapper class to a specific database. Does it have basic CRUD functionality? Write it so that its not tied to a specific table. For a lot of my projects I have includes like html_helpers.php, or date_helpers.php. I can quickly copy these files to my new application and haven&#8217;t spent a lot of time rewriting code. Using a framework helps a lot. I was using my own built from years of coding similar projects until I found Codeigniter. It basically takes care of all the non fun, repetitive coding for you, and lets you get to the fun parts. 
</p>
<p>
It will save you time in the long run, and since that is the one thing you don&#8217;t have a lot of, it&#8217;s an invaluable practice. 
</p>
<p>
Since we are in the land of nightmares, I will assume there is no revision control. Which means no easy way to track your code. One very easy, and very obvious way to keep a library of code is to create a directory on your computer to store scripts, snippets, classes, etc, that you can use again later. Be sure to name them appropriately. 
</p>
<h3>Commenting Your Code and Naming Conventions</h3>
<p>
When you do have to work on live code in a production environment you generally have to make quick decisions. The problem with that is that years down the road, even weeks down the road, when you revisit your clever hack, chances are it wont make much sense. Your coding style could have changed, or you just don&#8217;t remember what the hell you were thinking. All you know is that it works now, and the client wants changes. Comment your code. Don&#8217;t over do it, but explain enough so that if you have to come back to it later you will know what it means. I know that seems obvious, but I can&#8217;t count how many times I have gone back to old code and just sat there staring, silently cursing the previous developer&#8230; er, myself. 
</p>
<p>
It also helps to stay consistent. If you use camel caps for class names, dont start changing that when you go back to the code. If files are named with a certain structure, try to stay with that flow. 
</p>
<p>
Be smart about your variables. Be descriptive. $myvar doesn&#8217;t say anything. Yeah, its your variable. But what is it holding? Why is it there? $current_date is a good example of a descriptive variable. 
</p>
<p>
Since we have no time to study code, we need to be able to quickly get in there and understand what is going on. 
</p>
<h3>Don&#8217;t Reinvent the Wheel</h3>
<p>
As far as PHP goes, I generally keep php.net open in a tab in my browser. and I try to save time by finding ways that other people have done something. If I can&#8217;t find anything, well, you don&#8217;t lose that much time. Its worth looking and what you discover could help you later. Visit phpclasses.org and check the forums at devshed.com. Check out Pear too. 
</p>
<p>
When management refuses to allow the use of 3rd party code, or any open source code&#8230; well, what they don&#8217;t know won&#8217;t hurt them. 
</p>
<h3>Errors</h3>
<p>
Errors happen. They are going to happen. Log your PHP errors instead of displaying them. It will be an extra step when debugging, but that is far better than the alternative. Add this to an .htaccess file in your web root:
<br />
<pre>
# supress php errors
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off

# enable PHP error logging
php_flag  log_errors on
php_value error_log  /home/path/logs/PHP_errors.log
</pre>
<br />
Set the error_log path to someplace outside your web root. In addition to this it might be a good idea to have some logic in place to handle errors so that when the site does fall apart, the visitor isn&#8217;t looking at a blank page. This assumes you actually have time to do this. If not, this method only takes a couple minutes. 
</p>
<h3>What about HTML &amp; CSS? Javascript?</h3>
<p>
I have found that if you break up your CSS into several files, it makes it easy to reuse later. For example. Most of my designs follow a similar layout, header, footer, sidebar, and main content. I have a CSS file called grid.css that contains the basic definitions for positioning these elements. When I need to create a new layout, I just copy this base file and change a couple width values and I am done. I also have a file called reset.css that reduces everything down to a common baseline for consistency between browsers. I cannot stress how much this has helped me in getting a site working in Firefox, IE6, IE7, and Safari. I squash the major bugs once, and only once. As far as the html, I do a lot of copy/pasting. I keep a bunch of html snippets in a library on my computer. 
</p>
<p>
Same thing with javascript. Keep track of your code, and you care reuse it later, expand on it, and not spend most of your time setting up the basic foundation. 
</p>
<h3>Wrap Up</h3>
<p>
Yeah yeah, its all web coding 101. But it pays to know these things.&nbsp;
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Scanned some new sketches tonight</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/scanned_some_new_sketches_tonight/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.66</id>
      <published>2008-02-22T04:37:00Z</published>
      <updated>2008-02-22T04:42:52Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Arts"
        scheme="http://ecsyle.com/index.php/site/C35/"
        label="Arts" />
      <category term="Burningman"
        scheme="http://ecsyle.com/index.php/site/C36/"
        label="Burningman" />
      <content type="html"><![CDATA[
        <p>I have <a href="http://ecsyle.com/index.php/art">scanned a few more sketches</a> tonight. I am not drawing as much as I should be, but I did want to show a few of the things I am playing with lately. I am not sure what to say about it, maybe that I am starting to take in spirituality with more than a cocked eye and a shrug. For example, this one is called &#8220;Tree of Life&#8221;, and it is in response to some things I have been reading about the mythologies of most modern and ancient religions. It was also a response to that goddamned sunrise on the playa 2 years ago. I will never be able to forget what that did to me. Sun worship? I can totally buy that. 
</p>
<p>
<img src="http://ecsyle.com/images/portfolio/07.jpg" /> 
</p>
<p>
Check out the <a href="http://ecsyle.com/index.php/art">new sketches</a>.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Python gives you wings</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/python_gives_you_wings/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.60</id>
      <published>2008-02-11T20:05:00Z</published>
      <updated>2008-02-11T20:06:52Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Code"
        scheme="http://ecsyle.com/index.php/site/C46/"
        label="Code" />
      <category term="Sigh..."
        scheme="http://ecsyle.com/index.php/site/C45/"
        label="Sigh..." />
      <category term="Web Dev"
        scheme="http://ecsyle.com/index.php/site/C43/"
        label="Web Dev" />
      <category term="Work"
        scheme="http://ecsyle.com/index.php/site/C32/"
        label="Work" />
      <content type="html"><![CDATA[
        <p><img src="http://ecsyle.com/images/blog/python.png" width="518" height="588" />
</p>
<p>
Yeah, this image sums up my weekend. I started reading the Django manual. Holy shit, I am way impressed and absolutely love it. I wish I would have gotten into Python earlier.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>WTF: The Most Favoritest Icon</title>
      <link rel="alternate" type="text/html" href="http://ecsyle.com/index.php/site/wtf_the_most_favoritest_icon/" />
      <id>tag:ecsyle.com,2008:index.php/blog/1.59</id>
      <published>2008-02-07T17:47:01Z</published>
      <updated>2008-02-07T17:49:55Z</updated>
      <author>
            <name>ecsyle</name>
            <email>roy@ecsyle.com</email>
                  </author>

      <category term="Play"
        scheme="http://ecsyle.com/index.php/site/C33/"
        label="Play" />
      <content type="html"><![CDATA[
        <p>Holy shit! <a href="http://thedailywtf.com/Articles/The-Most-Favoritest-Icon.aspx" class="popup">Worse Than Failure</a> comes through with a real head slapper this morning.
</p>
<blockquote><p>Every so often, Bob B. observed that his company&#8217;s e-commerce site would crash-hard. No one had any clue as to why it happened, but everyone knew how to fix it. Restart both the IIS and SQL Server processes and, voilà, within a minute, the site was up and running again.
</p>
<p>
Like an old car with a few quirks, the company worried that tinkering with the application might make things worse. But after a few months and a handful of customer complaints, Bob was permitted to investigate the issue so long as he wasn&#8217;t too intrusive. </p></blockquote>

<blockquote><p>Pieces started coming together. Some Web surfer from Ohio got into an infinite redirect loop that was creating a new session with each iteration. Apparently, the AOL user was patient enough to let that loop continue for almost 11 hours.</p></blockquote>

<blockquote><p>In the end, Bob figured out exactly how the problem had happened: some random visitor using an older version of AOL bookmarked their site. The user wasn&#8217;t trying to visit the site, let alone waiting 11 hours for a page to come up. He or she just happened to have the AOL browser open, which would then periodically attempt to update the favicons for its bookmarked sites, and then diligently follow the endless redirects as ordered.</p></blockquote> 
      ]]></content>
    </entry>


</feed>