<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel>
    
    <title>markupboy</title>
    <link>http://markupboy.com</link>
    <description>Written and published by Blake Walters – interactive developer, markup nerd and standardista hailing from a time when the font tag was acceptable.</description>
    <dc:language>en</dc:language>
    <dc:creator>Blake Walters</dc:creator>
    <dc:rights>Copyright 2013</dc:rights>
    <dc:date>2013-08-13T18:09:53+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
    
    
    <item>
      <title><![CDATA[Listening to DOM Events]]></title>
      <link>http://markupboy.com/blog/view/listening-to-dom-events</link>
      <guid>http://markupboy.com/blog/view/listening-to-dom-events#When:18:09:53Z</guid>
      <description><![CDATA[<p>Working on a recent project, I ran into an issue with 1password autofill causing unexpected results with a form I&#8217;d built.  I needed to know what browser events were being fired on a specific field in order to debug the problem. There are a few options here - bind an event listener in-code to every conceivable event and then log the arguments passed to the console to see what the event happened to be <strong>or</strong> better yet, just use <code>monitorEvents</code>.</p>

<p>Recent versions of webkit browsers and firebug support the <code>monitorEvents</code> method, which takes a DOM object as it&#8217;s only argument and will spit out every event occurring on that object to the console.  So you can run a bit of code like so</p>

<pre><code>    monitorEvents(document.getElementBy('someid'))
</code></pre>

<p>where someid is the id of the thing you want to monitor and you&#8217;re all set without ever having to touch your own code.</p>
]]></description>
      <dc:date>2013-08-13T18:09:53+00:00</dc:date>
    </item>
    
    <item>
      <title><![CDATA[Practical Tips for Custom Plugin Development: EECI 2012]]></title>
      <link>http://markupboy.com/blog/view/practical-tips-for-custom-plugin-development-eeci-2012</link>
      <guid>http://markupboy.com/blog/view/practical-tips-for-custom-plugin-development-eeci-2012#When:19:51:52Z</guid>
      <description><![CDATA[<p>I&#8217;ll have a more extensive write up later (thought <a href="http://eeinsider.com/blog/blake-walters-practical-tips-for-writing-custom-plugins/">EE Insider&#8217;s write-up</a> is pretty good on its own), but I wanted to put up a quick note that my slides and companion code are available online.</p>

<p>You can view the slides over on <a href="https://speakerdeck.com/u/markupboy/p/diving-in-practical-tips-for-custom-plugin-development">Speaker Deck</a> and <a href="https://github.com/markupboy/Custom-Plugin-Dev-EECI-2012">a repository for the code</a> has been created over on GitHub.</p>

<p>Thanks to everyone that made it out!</p>
]]></description>
      <dc:date>2012-10-16T19:51:52+00:00</dc:date>
    </item>
    
    <item>
      <title><![CDATA[Alfred Goes Back to Your Mac]]></title>
      <link>http://markupboy.com/projects/view/alfred-goes-back-to-your-mac</link>
      <guid>http://markupboy.com/projects/view/alfred-goes-back-to-your-mac#When:04:59:14Z</guid>
      <description><![CDATA[<p>With the introduction of iCloud, Apple quietly did something pretty special for nerds like me with a ton of machines - Back to My Mac was finally free.</p>

<p>Sure, you could open up finder, find your remote machine in the &#8220;Shared&#8221; list, click on it, wait, and then click on &#8220;Share Screen&#8221; or we can just use Alfred.</p>

<p>With this little extension installed, just fire up Alfred and plug in <code>vnc</code> followed by the name of a machine you have Back to My Mac setup on and that&#8217;s it, you&#8217;ll be screen sharing in no time.</p>

<p><a href="/images/uploads/vnc.alfredextension.zip">Download the Back to My Mac Alfred Extension</a></p>
]]></description>
      <dc:date>2012-08-28T04:59:14+00:00</dc:date>
    </item>
    
    <item>
      <title><![CDATA[Single Entry]]></title>
      <link>http://markupboy.com/projects/view/single-entry</link>
      <guid>http://markupboy.com/projects/view/single-entry#When:23:42:08Z</guid>
      <description><![CDATA[<p><img src="http://markupboy.com/images/uploads/portfolio/single_entry__full.png" alt="Single Entry" height="438" width="695"  /></p>

<p>Have you ever had a channel in an ExpressionEngine installation that required its own set of custom fields, but only needed one entry? Perhaps a homepage or an &#8220;About Us&#8221; section that needed its own custom content but wasn&#8217;t a traditional list of posts? Single Entry can help. With a few simple settings, your control panel can be set up to easily create and edit these posts without the risk of adding new and unnecessary entries to these channels.</p>

<p>Once configured, Single Entry moves your single entry channels out of EE’s standard publish and edit workflow and into a new section of your content dropdown.  From there, you’ll have quick access to creating and editing the individual entries in those channels without the hassle of navigating through the standard EE edit workflow or accidentally creating a new entry in a channel that can’t use one.</p>

<p>Best of all, your data and development workflow aren’t changed in any way. Single entry channels are still completely native and can be assigned custom field groups, category groups and statuses, and used in templates just like always. And through the configuration panel, even the name of the new section in the content dropdown can be customized.</p>

<p>Single Entry is Viget&#8217;s first ever commercial ExpressionEngine Addon and available exclusively at <a href="http://devot-ee.com/add-ons/single-entry">Devot-EE</a></p>
]]></description>
      <dc:date>2012-08-05T23:42:08+00:00</dc:date>
    </item>
    
    <item>
      <title><![CDATA[EECI 2012]]></title>
      <link>http://markupboy.com/blog/view/eeci-2012</link>
      <guid>http://markupboy.com/blog/view/eeci-2012#When:02:14:40Z</guid>
      <description><![CDATA[<p>The details for <a href="http://eeciconf.com">this year&#8217;s EECI</a> were posted just yesterday and I can&#8217;t even begin to explain how excited I am to be speaking. Well, excited and terrified as there are a ton of really great speakers and, if last year in Brooklyn was any indication, one of the sharpest groups of attendees I&#8217;ve met at any conference.</p>

<p>For my part, I&#8217;ll be speaking about writing custom plugins for your projects.  Everything from how to get started and the basics of plugin authoring to more advanced features and how to leverage some of ExpressionEngine&#8217;s CodeIgniter backbone to accomplish even more custom work without overburdening your templates with inline PHP.</p>
]]></description>
      <dc:date>2012-07-25T02:14:40+00:00</dc:date>
    </item>
    
    <item>
      <title><![CDATA[Alfred Tip: Hotkey a Folder]]></title>
      <link>http://markupboy.com/blog/view/alfred-tip-hotkey-a-folder</link>
      <guid>http://markupboy.com/blog/view/alfred-tip-hotkey-a-folder#When:16:32:29Z</guid>
      <description><![CDATA[<p>I switched to <a href="http://www.alfredapp.com/">Alfred</a> from the once great <a href="http://qsapp.com/">Quicksilver</a> not too long ago and instantly bought the Alfred Power Pack solely to have access to the system-wide hotkeys it provides.</p>

<p>One trick I found helpful was to hotkey a folder for quick access to my most used directories on my computer.  If you have the power pack, it&#8217;s quite simple.  Open up your Alfred preferences and go to the Global Hotkeys panel.  Add a new hotkey and instead of selecting an app or a file, just select a folder for the &#8220;action&#8221; and set your hotkey.</p>

<p><img src="http://markupboy.com/images/uploads/alfred-hotkeys.jpg" alt="Hotkey a Folder"  /></p>

<p>Now, using that hotkey will open a finder window for that directory; it&#8217;s that simple. I currently use CMD + &#96; to open my Dropbox folder and CMD + ALT + &#96; to open my mounted file server.</p>
]]></description>
      <dc:date>2011-11-29T16:32:29+00:00</dc:date>
    </item>
    
    <item>
      <title><![CDATA[The Social Graph is Neither]]></title>
      <link>http://markupboy.com/blog/view/the-social-graph-is-neither</link>
      <guid>http://markupboy.com/blog/view/the-social-graph-is-neither#When:17:18:00Z</guid>
      <description><![CDATA[<blockquote>
  <p>We have a name for the kind of person who collects a detailed, permanent dossier on everyone they interact with, with the intent of using it to manipulate others for personal advantage - we call that person a sociopath. And both Google and Facebook have gone deep into stalker territory with their attempts to track our every action.</p>
</blockquote>
]]></description>
      <dc:date>2011-11-09T17:18:00+00:00</dc:date>
    </item>
    
    <item>
      <title><![CDATA[New, More Reliable RSS Feed]]></title>
      <link>http://markupboy.com/blog/view/new-more-reliable-rss-feed</link>
      <guid>http://markupboy.com/blog/view/new-more-reliable-rss-feed#When:13:57:04Z</guid>
      <description><![CDATA[<p>Last night I discovered that my RSS feed was down for the count. After a ton of debugging, some gnashing of teeth, and googling how to properly write a 301 redirect in an htaccess file, I think I&#8217;ve cracked it.</p>

<p>The original feed <a href="markupboy.com/rss">http://markupboy.com/rss</a> should continue to work and all of the old urls for that feed should be redirecting to it. There is also an new alternate feed at <a href="http://feeds.feedburner.com/markupboy">feeds.feedburner.com/markupboy</a> that will be the new canonical feed going forward.</p>
]]></description>
      <dc:date>2011-10-24T13:57:04+00:00</dc:date>
    </item>
    
    <item>
      <title><![CDATA[ExpressionEngine Add-On Templates Made Easy]]></title>
      <link>http://markupboy.com/blog/view/expressionengine-add-on-templates-made-easy</link>
      <guid>http://markupboy.com/blog/view/expressionengine-add-on-templates-made-easy#When:02:32:49Z</guid>
      <description><![CDATA[<p>I&#8217;ve recently gotten more into custom EE Add-On development and have found <a href="http://pkg.io">Pkg.io</a> to be an invaluable resource.  You can package up templates for every type of add-on imaginable, and it pretty much does all the work for you short of, you know, actually writing the add-on.</p>
]]></description>
      <dc:date>2011-10-24T02:32:49+00:00</dc:date>
    </item>
    
    <item>
      <title><![CDATA[Nearby]]></title>
      <link>http://markupboy.com/projects/view/nearby</link>
      <guid>http://markupboy.com/projects/view/nearby#When:00:20:55Z</guid>
      <description><![CDATA[<p><strong>Nearby</strong> is a simple ExpressionEngine plugin that uses the <a href="http://www.geonames.org">GeoNames.org</a> API to find places near a known zip code.</p>

<p>You can <a href="http://www.github.com/markupboy/Nearby">view the project over on github</a> or <a href="http://devot-ee.com/add-ons/nearby">download the plugin from devot:ee</a>.</p>

<h3>Installation</h3>

<p>Place the nearby plugin folder in your ExpressionEngine installation&#8217;s third&#95;party folder (system/expressionengine/third&#95;party by default).</p>

<p>Since Nearby makes user of the GeoNames API, a GeoNames user account will be required to use more than the demo mode provided. You can sign up for one at <a href="http://www.geonames.org/login">www.geonames.org/login</a></p>

<p>Once your account is created and activated, you will need to log in to the GeoNames site, click your username in the top right of the page to bring up the user control panel and then click the &#8220;Click here to enable&#8221; link under the title &#8220;Free Web Services&#8221; to enable API usage on your account.</p>

<p>Once your account is fully enabled, you can pass your username to the plugin via the &#8220;username&#8221; parameter or set your username in your config.php file with the code:</p>

<p><code>$config['nearby_username'] = "YOUR USERNAME";</code></p>

<h3>Usage</h3>

<p>&#123;exp:nearby&#125;</p>

<p>Parameters:</p>

<ul>
<li>zip (required) - the zipcode you&#8217;d like to search on</li>
<li>limit - limit the number of results returned</li>
<li>radius - distance in miles to search surrounding the desired zipcode</li>
<li>username - your GeoNames username</li>
</ul>

<p>Single Variables:</p>

<ul>
<li>{zip} - zipcode of result</li>
<li>{placename} - plain text descriptor of result</li>
<li>{latitude} - latitude of result, in decimal</li>
<li>{longitude} - longitude of result, in decimal</li>
<li>{distance} - the result&#8217;s distance from the searched zipcode</li>
</ul>

<p>&#123;/exp:nearby&#125;</p>
]]></description>
      <dc:date>2011-10-24T00:20:55+00:00</dc:date>
    </item>
    
    
    </channel>
</rss>