<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><description /><title>The Nerdary</title><generator>Tumblr (3.0; @nerdary)</generator><link>http://www.thenerdary.net/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/elnerdary" /><feedburner:info uri="elnerdary" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://tumblr.superfeedr.com/" /><item><title>Testing Laravel Controllers</title><description>&lt;a href="http://net.tutsplus.com/tutorials/php/testing-laravel-controllers/"&gt;Testing Laravel Controllers&lt;/a&gt;: &lt;p&gt;Jeffrey Way is such a prolific writer on the topic of Laravel. I particularly enjoy this excellent article on writing tests for controllers. You should support Jeffrey by signing up for &lt;a href="http://tutsplus.com/"&gt;tutsplus&lt;/a&gt; and soaking in all his knowledge.&lt;/p&gt;

&lt;p&gt;You can also pre-order his &lt;a href="https://leanpub.com/laravel-testing-decoded"&gt;book&lt;/a&gt; on testing. He’s an excellent instructor.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/B858wwYjfCs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/B858wwYjfCs/50032409714</link><guid isPermaLink="false">http://www.thenerdary.net/post/50032409714</guid><pubDate>Thu, 09 May 2013 13:19:22 -0700</pubDate><category>laravel</category><category>php</category><category>testing</category><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/50032409714</feedburner:origLink></item><item><title>Laracasts</title><description>&lt;a href="http://laracasts.com"&gt;Laracasts&lt;/a&gt;: &lt;p&gt;You know what’s great? &lt;a href="http://www.laravel.com"&gt;Laravel&lt;/a&gt;. You know why? Because people throw together stuff like Laracasts, a central place for Laravel screencasts.&lt;/p&gt;

&lt;p&gt;They don’t make the screencasts there, they just find them so you can click and learn.&lt;/p&gt;

&lt;p&gt;Lovely.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/zP9iW5Q7Re4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/zP9iW5Q7Re4/48215315142</link><guid isPermaLink="false">http://www.thenerdary.net/post/48215315142</guid><pubDate>Wed, 17 Apr 2013 12:18:00 -0700</pubDate><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/48215315142</feedburner:origLink></item><item><title>Interview with Brandon Kelly, creator of Craft</title><description>&lt;p&gt;&lt;strong&gt;&lt;a href="http://buildwithcraft.com/"&gt;Craft&lt;/a&gt; has recently gone into beta and it&amp;#8217;s definitely worth a look. Here, we interview one of its creators, Brandon Kelly on the philosophy behind Craft and its technical aspects.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does the world need another CMS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;s face it: all of the popular CMS&amp;#8217;s out there today are a mess. They&amp;#8217;ve been mismanaged, taken in directions the code was never meant to go, warped to scratch every last edge case&amp;#8217;s itch. They&amp;#8217;ve become bland, tangled, bloated, and at worst, practically unusable. Their developers are stretched way too thin and buried under mountains of technical debt. All of this has really put content management in the dark ages for the past few years.&lt;/p&gt;

&lt;p&gt;So I felt it&amp;#8217;s time to start fresh &amp;#8212; wipe the slate clean and build something from the ground up with a clear sense of where we&amp;#8217;re taking it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you think differentiates Craft from its competitors like  ExpressionEngine or FuelCMS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Focus. We are very opinionated about what types of features a CMS should be responsible for, versus what should be left to plugins. You won&amp;#8217;t ever see a cronjob manager built into Craft, but if someone wants to write that plugin, we&amp;#8217;ll do everything we can to make it easier.&lt;/p&gt;

&lt;p&gt;There are features which we think the CMS should be responsible for, but which not every site is going to need. Localization is a great example of that. There&amp;#8217;s really no clean way to do it with a plugin. It&amp;#8217;s such a core part of storing content, affecting all areas of the system, and it&amp;#8217;s something you want to make sure other plugins are going to support as well. But few sites are going to need it, and we don&amp;#8217;t want to make everyone pay for features (and UI cruft) they don&amp;#8217;t need. That&amp;#8217;s why we gave Craft its &amp;#8220;Packages&amp;#8221; concept. Packages enable features that the core is already pre-wired for. So whether you need localization support or not, all content entered into Craft is getting saved on a per-locale basis. Buy the Localize package and suddenly you get control over which locales are available, and which locale your content is getting saved to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What was the reasoning behind choosing the Yii the framework?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We&amp;#8217;re a very small team, and Craft has been a HUGE project. So it&amp;#8217;s been vital that we make smart technology decisions every step of the way. Choosing a PHP framework was no different. When we were just getting started a few years ago, we looked at several frameworks that were available at the time to determine which would push us in the right direction as far as possible. Yii fit the bill perfectly. It&amp;#8217;s optimized for the code architecture we wanted, it has great internationalization support, it is modular, and the code is clean, consistent, and well documented. As we&amp;#8217;ve built out the app, we&amp;#8217;ve grown to like it more and more, and we really couldn&amp;#8217;t be happier with the decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Could you speak to specific featuresets, APIs, etc. in Yii that lead to things like better localization and how it&amp;#8217;s optimized for the architecture you wanted?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sure. Yii comes with a ton of data for practically every locale on the planet &amp;#8212; number formats, currency symbols, translations for common things like month names, and so much more. You can easily access all of that data for a particular locale by initializing a new CLocale instance. It also has built-in translation support, which takes all of that data into account.&lt;/p&gt;

&lt;p&gt;One of the great things about Yii is that pretty much everything is customizable. Yii realizes that every app is going to be built a little differently, so whenever there&amp;#8217;s a possibility for differences, it separates the common functionality from the implementation-specific functionality. Take translation support for example. Some apps might want translations to be defined in the database, others a PHP array, others an XML file, and who knows, others might even be fetching translations from a third party web service. So Yii puts the core translation support in one spot, and lets the app provide a function that returns the translations. This approach has been used everywhere throughout the framework, which has allowed us to build the exact app that we wanted, without resorting to a bunch of framework hacks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you talk a little about about how you decided on the plugin architecture (how it would work, what it would support, how it would interact with the control panel)?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The plugin architecture was actually one of the few things I didn&amp;#8217;t have to think much about. After years of writing ExpressionEngine add-ons, I knew exactly what I wanted &amp;#8212; plugins should provide additional system components, which work exactly the same as the built-in components.&lt;/p&gt;

&lt;p&gt;A key part of the architecture is our service layer. All of the business logic in Craft happens in service classes, which provide APIs that anything else in the system (including other services) can talk to. So there&amp;#8217;s only one place in the entire codebase where an entry will actually get written to the DB, even though there are multiple places that deal with saving entries. This is really great for plugins, because they don&amp;#8217;t have to reinvent the wheel every time they want to replicate core functionality. Any plugin can call &lt;code&gt;craft()-&amp;gt;entries-&amp;gt;saveEntry()&lt;/code&gt; just like the core does. And of course, plugins can provide their own services too, which makes it easy for plugins to interact with other plugins.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Could you give an example of a service layer in action?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Take that &lt;code&gt;craft()-&amp;gt;entries-&amp;gt;saveEntry()&lt;/code&gt; function I mentioned. &lt;code&gt;craft()-&amp;gt;entries&lt;/code&gt; is the app&amp;#8217;s current EntriesService instance, a class that provides several API functions for managing entries. &lt;code&gt;saveEntry()&lt;/code&gt; accepts one argument: an EntryModel instance. That &lt;code&gt;EntryModel&lt;/code&gt; should be filled with all of the data needed to represent the entry that&amp;#8217;s about to be saved, including its ID if it&amp;#8217;s an existing entry. &lt;code&gt;saveEntry()&lt;/code&gt; validates that data, and saves it out to the database. (In this case, that&amp;#8217;s 4 separate tables: &lt;code&gt;elements&lt;/code&gt;, &lt;code&gt;elements_i18n&lt;/code&gt;, &lt;code&gt;entries&lt;/code&gt;, and &lt;code&gt;entries_i18n&lt;/code&gt;. But EntriesService is the only place in the entire app that needs to know that; everything else can just deal with EntryModel&amp;#8217;s.) The function will return true or false depending on whether the entry was saved successfully. If it wasn&amp;#8217;t, the EntryModel will also be populated with any validation errors that occurred, so whatever called saveEntry() will have an idea of what went wrong. In most cases, those errors are passed back to the user.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;saveEntry()&lt;/code&gt; will generally get called from the EntriesController&amp;#8217;s &lt;code&gt;actionSaveEntry()&lt;/code&gt; method. It populates a new EntryModel with post data, and then passes that EntryModel on to &lt;code&gt;craft()-&amp;gt;entries-&amp;gt;saveEntry()&lt;/code&gt;. What happens next depends on the &lt;code&gt;saveEntry()&lt;/code&gt; response, and what type of request it is (normal or Ajax). But the beauty is that anything can call &lt;code&gt;saveEntry()&lt;/code&gt; &amp;#8212; it&amp;#8217;s not tied to the controller in any way. If a plugin wants to create a new entry, it can. If we decide that the installer should auto-create a Welcome entry for you, we can add a &lt;code&gt;saveEntry()&lt;/code&gt; call to InstallService.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What made you decide to use &lt;a href="http://twig.sensiolabs.org/"&gt;Twig&lt;/a&gt;?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We actually started off writing our own template parser. I wanted something that resembled Django templates, that compiled down to PHP, and was capable of at least some level of template error handling. My first pass at the parser was very simple, but it got us about 80% of the way there. That last 20% proved to be much more difficult, however. It included stuff like string concatenation, object declarations, and precise error handling. It was clear that the only clean way to do those would be to write a proper lexer and parser. We actually started going down that path, and then Paul Burdick pointed us to Twig, which somehow we had completely missed.&lt;/p&gt;

&lt;p&gt;Twig was &lt;strong&gt;exactly&lt;/strong&gt; what I wanted. Its syntax is inspired by Django, it compiles templates down to raw PHP, it has a real lexer and parser, it has both syntax and runtime error handling, and it&amp;#8217;s super easy to extend. And thanks to the syntax being identical to our home grown templating system, I was able to get Twig up and running with the entire CP converted to it within just a couple hours. Brilliant!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How is Craft going to handle the common problem of modern deployment? Meaning, how can Craft rectify local databases vs production dbs, local configs, etc?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We knew early on that keeping content in sync between multiple servers (dev vs. staging vs. production) would be a problem for Craft just like every other database-storing CMS out there. It doesn&amp;#8217;t take any research to know that it&amp;#8217;s a very hard problem to solve, so we decided it&amp;#8217;s not something we&amp;#8217;re going to worry about until some point after 1.0 launches. However we did spend a little time researching sync techniques, and put some code in place that should make our lives much easier down the road.&lt;/p&gt;

&lt;p&gt;As far as configs go, Craft config files are just PHP, so you can already have them return one thing or another depending on the current server. We do have more work to do when it comes to &lt;strong&gt;what&lt;/strong&gt; you can configure though. For example we want to make all path/URL settings throughout the CP overridable from config/general.php.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How up-to-date with Twig and Yii can we expect the framework to stay?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We try to keep all of Craft&amp;#8217;s dependencies as up-to-date as possible, so long as there aren&amp;#8217;t any breaking changes. We haven&amp;#8217;t been religious about it to date, but that should change after 1.0 is out once we’ve had a chance to hook Craft up to Composer.&lt;/p&gt;

&lt;p&gt;When there are breaking changes (such as the forthcoming Twig 2.0 and Yii 2.0), we&amp;#8217;ll shelve it for Craft 2.0.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you talk about your build system for different versions of Craft?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That&amp;#8217;s something that has changed quite a bit over time, but the gist was always the same &amp;#8212; we had files that were package-specific, and the shared files had blocks of code that were package-specific, and the build script was responsible for including/excluding the appropriate files and blocks.&lt;/p&gt;

&lt;p&gt;Once we kicked off the private beta, we started seeing something happen that we didn&amp;#8217;t expect (but should have): People who had more than one Craft site running would download an update for one of their sites, and upload the same set of files to all of their sites. Inevitably the list of selected packages would vary between the sites and the uploaded files wouldn&amp;#8217;t match the packages, and that led to some fun troubleshooting work. So we decided to take a different approach: now everyone gets the exact same set of files, and we&amp;#8217;re toggling which features you get right in the code. It&amp;#8217;s a much simpler approach, and has actually given us the opportunity to drastically clean up the build script and our web service, as well as paved the way for Craft&amp;#8217;s extremely simple in-app package purchasing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How did you implement the Autoupdate system?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One-click updating was actually the very first thing we started working on. It&amp;#8217;s a pretty major bit of functionality, and if we couldn&amp;#8217;t do it, I didn&amp;#8217;t think it would be worth doing a CMS to begin with.&lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s a very high-level overview of how it works:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;We have a TeamCity server which creates a new Craft build every time we push our work to the Master branch on GitHub.&lt;/li&gt;
&lt;li&gt;We have a Craft install on the same server with a custom &amp;#8220;Craft Releases&amp;#8221; plugin, which we use to cut new releases. It&amp;#8217;s able to figure out exactly which files have been changed/added/deleted since the last release by parsing Git commit logs, and it records those along with any other metadata for the release, like the release notes.&lt;/li&gt;
&lt;li&gt;Craft&amp;#8217;s web service (another Craft plugin called &amp;#8220;Elliott&amp;#8221;) talks to the Craft Releases plugin to tell the Craft client about any available updates.&lt;/li&gt;
&lt;li&gt;When an update request comes in from a client, Elliott will check which build the request says they are currently running, and create a zip of all the files that have changed since then, and respond with that.&lt;/li&gt;
&lt;li&gt;Craft then takes that update zip, verifies it, backs up the DB, renames any of the changed files to *.bak, moves the new files into place, runs any pending migrations, deletes the temp files, and clears your caches. And all of that happens in just a matter of seconds!&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;One of Craft&amp;#8217;s neatest features is the free trials for packages,  how can you implement this securely using PHP (so that people don&amp;#8217;t pirate it)?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We decided our stance on piracy early on: piracy is a fact of life, and nothing we do is going to stop it. So instead of wasting a whole bunch of time trying to prevent it, we&amp;#8217;ve simply made it impossible to pirate Craft &amp;#8220;accidentally&amp;#8221;. Yes, anyone that knows anything about PHP could go into the code, comment a few lines out, and boom, all packages are installed without any annoying CP alerts. But at least none of them will be under the impression that they didn&amp;#8217;t do something wrong.&lt;/p&gt;

&lt;p&gt;Given the number of people who re-use EE and add-on licenses without realizing that it&amp;#8217;s not OK (and strangely lacking the motivation to make sure), I&amp;#8217;m expecting that this will be pretty big piracy deterrent in and of itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One glance of code shows that Craft uses a singular global namespace (Craft); Some people on Twitter have complained that it&amp;#8217;s a poor use of PHP&amp;#8217;s namespacing feature because instead of Craft/Plugins/PluginName, you have to use PHP 4 style classnames (namely with underscores). Can you go in-depth about the decision to not support this feature of PHP?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You should be asking the PHP guys what they were smoking when they added namespace support to begin with. It&amp;#8217;s a mess!&lt;/p&gt;

&lt;p&gt;We might add the option for plugins to live in their own namespace, and forgo the class name prefixes, so developers that actually understand how PHP namespacing works can take advantage of it, without forcing us to explain it to everyone else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There are a couple new tools and standards in PHP that are gaining significant popularity, does Craft intend to support &lt;a href="http://getcomposer.org/"&gt;Composer&lt;/a&gt; packages? &lt;a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md"&gt;PSR-0&lt;/a&gt; and &lt;a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md"&gt;PSR-1&lt;/a&gt;?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Composer-yes. We might look into strictly following PSR-0 and PSR-1 down the road, but at this point it&amp;#8217;s safe to say it would be a 2.0 thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you speak a bit about how Craft intends to help plugin developer with the distribution and sales of their plugins?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yup! It&amp;#8217;s no big secret that we&amp;#8217;re planning a plugin store for Craft. We&amp;#8217;re still ironing out many of the details, but one thing that&amp;#8217;s for sure is it&amp;#8217;s going to be built right into the app, just like packages. And many of our policies for packages will carry over to plugins as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Craft Forecast page is a task list of things to come, many of which are small changes (except for a few). What big feature comes next after 1.0?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The goal for the private beta was to get Craft to a point where it&amp;#8217;s pretty much feature-complete for 1.0, and the goal for the public beta is to tie up all the loose ends. The Forecast page is currently just a list of those loose ends, which we&amp;#8217;re tackling one-by-one.&lt;/p&gt;

&lt;p&gt;Once we get to 1.0, we&amp;#8217;ve got a second list just as long as the 1.0 list is now, full of the same sort of things, which just didn&amp;#8217;t seem quite important enough to be worth pushing back the 1.0 release. That includes things like section duplication, the ability to create new fields right from within the Field Layout pages, and so forth.&lt;/p&gt;

&lt;p&gt;Then there&amp;#8217;s the 2.0 list, but it&amp;#8217;s too early to start talking about that!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When will Craft hit 1.0?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My best guess is mid-to-late Summer. We shall see!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Our thanks to Brandon Kelly and Brad Bell of &lt;a href="http://pixelandtonic.com/"&gt;Pixel &amp;amp; Tonic&lt;/a&gt; for taking the time to answer our questions.&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/ho311rXzcYM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/ho311rXzcYM/48123188844</link><guid isPermaLink="false">http://www.thenerdary.net/post/48123188844</guid><pubDate>Tue, 16 Apr 2013 08:11:00 -0700</pubDate><category>php</category><category>cms</category><category>craft</category><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/48123188844</feedburner:origLink></item><item><title>Laravel 4 Update</title><description>&lt;a href="https://vimeo.com/63892510"&gt;Laravel 4 Update&lt;/a&gt;: &lt;p&gt;Taylor Otwell runs through a bunch of new features he’s added to Laravel 4. I highly recommend you watch this screencast as it shows a lot of cool new toys.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/dVfhDPb3CUw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/dVfhDPb3CUw/47801793554</link><guid isPermaLink="false">http://www.thenerdary.net/post/47801793554</guid><pubDate>Fri, 12 Apr 2013 13:14:25 -0700</pubDate><category>php</category><category>laravel</category><category>screencast</category><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/47801793554</feedburner:origLink></item><item><title>Leaflet JS + MapQuest for Maps</title><description>&lt;p&gt;I read the A List Apart article: &lt;a href="http://alistapart.com/article/hack-your-maps"&gt;Hack your Maps&lt;/a&gt;. It was an interesting scenario that got me thinking about maps.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve really only used Google maps for my mapping needs so today I figured &amp;#8220;why not try something new?&amp;#8221; and looked into some others. I needed an interactive map, not a static image, so that was one requirement.  I looked into a variety of options out there, also read this &lt;a href="http://www.netmagazine.com/features/top-seven-alternatives-google-maps-api"&gt;article on Google maps alternatives&lt;/a&gt; from .net magazine.&lt;/p&gt;

&lt;p&gt;I came across a lot of paid services or ones that had free accounts but limited usage to low numbers of map views per month or ones with free data that charged for access to their map tile servers. When it comes to the internet, I&amp;#8217;ll admit I can be kinda cheap unless it&amp;#8217;s a product I know I can&amp;#8217;t live without/love to the max so I usually search for free options or free trials and then pay once I know I&amp;#8217;m going to use it.&lt;/p&gt;

&lt;p&gt;So today I am using &lt;a href="http://leafletjs.com/"&gt;Leaflet&lt;/a&gt; with &lt;a href="http://developer.mapquest.com/web/products/open/map"&gt;MapQuest OSM Tiles&lt;/a&gt;, both of which are free and play nicely together. The Leaflet &lt;a href="http://leafletjs.com/examples/quick-start.html"&gt;Quick Start Guide &lt;/a&gt; is &lt;strong&gt;ridiculously&lt;/strong&gt; easy to follow. Kudos to whomever wrote that copy and directions.&lt;/p&gt;

&lt;p&gt;Leaflet also makes it easy to customize your map icons and is even in on all the retina rage, allowing you to easily specify an icon URL for retina displays: &lt;a href="http://leafletjs.com/reference.html#icon"&gt;http://leafletjs.com/reference.html#icon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Extra bonus, the marker popups are really easy to add styles to and the map seems to play well at different sizes in what I&amp;#8217;ve seen so far.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m not sure if I would stick with this over Google Maps in the future but it was fun to play with.&lt;/p&gt;

&lt;pre class="codepen" data-height="300" data-type="result" data-href="zJnBA" data-user="Jenn" data-safe="true"&gt;&lt;code&gt;&lt;/code&gt;&lt;a href="http://codepen.io/Jenn/pen/zJnBA"&gt;Check out this Pen!&lt;/a&gt;&lt;/pre&gt;

&lt;script async src="http://codepen.io/assets/embed/ei.js"&gt;&lt;/script&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/-Qj1M5ijrQ8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/-Qj1M5ijrQ8/47561285749</link><guid isPermaLink="false">http://www.thenerdary.net/post/47561285749</guid><pubDate>Tue, 09 Apr 2013 13:39:27 -0700</pubDate><category>css</category><category>maps</category><category>google maps</category><category>mapquest</category><category>leaflet</category><category>javascript</category><category>openstreetmap</category><dc:creator>jennlukas</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/47561285749</feedburner:origLink></item><item><title>Craft CMS Sample Plugin</title><description>&lt;a href="https://github.com/adrianmacneil/cocktailrecipes"&gt;Craft CMS Sample Plugin&lt;/a&gt;: &lt;p&gt;Created by the very talented &lt;a href="https://twitter.com/adrianmacneil"&gt;Adrian Macneil&lt;/a&gt;, and based on a lot of the samples in the documentation, the Craft sample plugin is a great way to get a look at how Craft plugins are built.&lt;/p&gt;

&lt;p&gt;It also is an excellent preview of the Craft API. If you see anything you don’t like make sure to tell the Craft team on their &lt;a href="https://plus.google.com/communities/106505340287442511226"&gt;community page&lt;/a&gt;.*&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Yes, their community page is on Google Plus, but the communities tool of Google Plus is one of the best I’ve used. Give that a try as well.&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/lkXwfl_nhDA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/lkXwfl_nhDA/47140815913</link><guid isPermaLink="false">http://www.thenerdary.net/post/47140815913</guid><pubDate>Thu, 04 Apr 2013 15:39:00 -0700</pubDate><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/47140815913</feedburner:origLink></item><item><title>Laravel 4 vs. Symfony 2</title><description>&lt;a href="http://www.reddit.com/r/PHP/comments/1bdln1/symfony2_vs_laravel/c96ohf1"&gt;Laravel 4 vs. Symfony 2&lt;/a&gt;: &lt;p&gt;Laravel creator Taylor Otwell weighs in on what differentiates Laravel 4 from Symfony 2. Both popular frameworks for PHP.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/1AxMP9oACfw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/1AxMP9oACfw/47060911853</link><guid isPermaLink="false">http://www.thenerdary.net/post/47060911853</guid><pubDate>Wed, 03 Apr 2013 16:36:16 -0700</pubDate><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/47060911853</feedburner:origLink></item><item><title>Craft</title><description>&lt;p&gt;For the longest time, people have been asking me for a viable alternative to ExpressionEngine. For a very long time, there wasn’t one. I can wholeheartedly recommend Craft from &lt;a href="http://pixelandtonic.com/"&gt;Pixel &amp;amp; Tonic&lt;/a&gt;. It has a well thought-out API. It has a strong development team behind it. You should go give it a &lt;a href="http://craftcms.com/"&gt;test drive&lt;/a&gt;, because the core is free.&lt;/p&gt;

&lt;h2&gt;What I love&lt;/h2&gt;

&lt;hr&gt;&lt;p&gt;&lt;strong&gt;Universal Fields&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the biggest gripes when building a site with ExpressionEngine was constantly having to create the same fields over and over, yet give them unique names even though they’re both “body” content fields.&lt;/p&gt;

&lt;p&gt;With Craft, you can assign one group of fields to any section you like. Oh, and content groups are named “sections”. Which is incredibly human, isn’t it?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Great support&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Problems are getting fixed left and right. If you have a feature that makes sense or a change, the team listens. Bugs are handled so quickly it’s silly. UI changes have (almost) always been an improvement. We’ll see if this holds up past beta.&lt;/p&gt;

&lt;p&gt;Also, this &lt;a href="http://buildwithcraft.com/forecast"&gt;forecast page&lt;/a&gt; pulls from their Basecamp to-do list. How’s that for transparency?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Great plugin architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the nicer things about Craft is how much time the team spent thinking through the plugin architecture. Having worked with making some plugins, it’s been really straightforward. You can somewhat tell when you read the &lt;a href="http://docs.buildwithcraft.com/"&gt;documentation&lt;/a&gt;. Plus, if you find a problem, tell them. Pixel &amp;amp; Tonic appears to be pragmatic in adding hooks and making changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One-click updates&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Everything gets updated with the press of a button. It works so well, it’s unbelievable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purchases in-app&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Want to add multiple users to Craft? Just purchase a package via the CMS control panel. It uses &lt;a href="https://stripe.com/"&gt;Stripe&lt;/a&gt; which is an EXCELLENT service for developers and is well-utilized here. They now offer trials of the packages as well. Who has ever heard of trials in PHP? So nice.&lt;/p&gt;

&lt;p&gt;Imagine what happens when they open this architecture up to the plugin community?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Twig&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twig.sensiolabs.org/"&gt;Twig&lt;/a&gt; is great.&lt;/p&gt;

&lt;h2&gt;Gripes&lt;/h2&gt;

&lt;hr&gt;&lt;p&gt;&lt;strong&gt;It’s in beta&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For some people this is a big red flag. You can still expect great support and bug fixes from the team at Pixel &amp;amp; Tonic. What does beta even mean anymore? Even 11.X products have bugs.[&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Its &lt;a href="http://d.pr/i/Rush"&gt;dashboard&lt;/a&gt; is barren&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;White squares. Just doesn’t do it for me. This is the users first look at Craft’s control panel and it could use some love.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Its &lt;a href="http://d.pr/i/JAzR"&gt;field layout tool&lt;/a&gt; feels out of place, unintuitive&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is still in beta, and I hope this will change. Some questions pop into mind:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Its fonts don’t match the classic simplicity feel of the CMS. Why are things italicized!?&lt;/li&gt;
&lt;li&gt;There’s no indication that you should drag field from the bottom to the top. &lt;/li&gt;
&lt;li&gt;There’s no indicator that fields are draggable from bottom to top. &lt;/li&gt;
&lt;li&gt;Why are there two tabs named default? &lt;/li&gt;
&lt;li&gt;Why is one tab named default and the others named Tab [insert number]?&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I have strong feelings about this. It really takes you out of the otherwise polished experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It uses Yii&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m not a huge fan of Yii, but it seems competent enough. Anytime someone brings this up with the Pixel &amp;amp; Tonic team they mention that Craft is so abstracted it won’t make a difference.&lt;/p&gt;

&lt;p&gt;That’s always the case with CMSs, of course, until THAT ONE TIME where it kills you. Yii is a mature framework, but it’s not the most fun to use.&lt;/p&gt;

&lt;h2&gt;Go download it&lt;/h2&gt;

&lt;p&gt;Please, &lt;a href="http://craftcms.com/"&gt;download it&lt;/a&gt; and tell us how you feel in the comments!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/xl2jvbN0ngY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/xl2jvbN0ngY/46870278241</link><guid isPermaLink="false">http://www.thenerdary.net/post/46870278241</guid><pubDate>Mon, 01 Apr 2013 12:47:00 -0700</pubDate><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/46870278241</feedburner:origLink></item><item><title>Remapping Paste in ST3</title><description>&lt;p&gt;I find myself always using &amp;#8220;Paste and Indent&amp;#8221; in Sublime Text 3. In fact, I use it so much that it really should be the default instead of dumb ol&amp;#8217; &amp;#8220;Paste and totally ignore your carefully crafted indention.&amp;#8221; Luckily it&amp;#8217;s incredibly easy to switch. Simply open up your user Key Bindings under Preferences and paste in the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[
  { "keys": ["command+v"], "command":"paste_and_indent" },
  { "keys": ["command+shift+v"], "command":"paste" }
]&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Best of all, if you use Dash or TextExpander this has the added benefit of inserting your snippets with the proper indention!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/Z-xT8ZgnXXM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/Z-xT8ZgnXXM/44799109433</link><guid isPermaLink="false">http://www.thenerdary.net/post/44799109433</guid><pubDate>Thu, 07 Mar 2013 11:43:52 -0800</pubDate><dc:creator>markhuot</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/44799109433</feedburner:origLink></item><item><title>Laracon Talk: Per Your Request</title><description>&lt;script async class="speakerdeck-embed" data-id="866103d060d101308ce41231381a7080" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"&gt;&lt;/script&gt;&lt;p&gt;On Friday of last week, I was privileged to speak at the first ever Laracon, the conference for &lt;a href="http://www.laravel.com"&gt;Laravel&lt;/a&gt;. It was one of the best conferences I&amp;#8217;ve ever been to.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve posted my slides up from my talk, which goes through what happen when a user loads index.php. Essentially this is step-by-step code execution, something I&amp;#8217;m incredibly fascinated by. Everything is eventually procedural in programs, and it was really fun to dig into the hard work that the Laravel team has put in.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/D4GqOUzKAs0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/D4GqOUzKAs0/43987027559</link><guid isPermaLink="false">http://www.thenerdary.net/post/43987027559</guid><pubDate>Mon, 25 Feb 2013 08:00:38 -0800</pubDate><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/43987027559</feedburner:origLink></item><item><title>whats about rails?</title><description>&lt;p&gt;&lt;em&gt;We got this question because we write a lot about Laravel, or Django. We’ve written some stuff on CodeIgniter as well, but it’s a fair quesiton. What about Rails?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Mark and I, and to some degree Jenn (though she’s strictly front-end), have all worked on a Rails application. In fact, Mark built &lt;a href="http://www.happycog.com"&gt;Happy Cog&lt;/a&gt; on Rails. So why don’t we talk a lot about Ruby?&lt;/p&gt;

&lt;p&gt;I can’t speak for Mark, but to me it was just my point of entry into programming that directed my choice. For client work, a lot of my early career delivery had to deal with clients being able to manage their own content and administration. While Rails has many CMS, the architecture and UI were a bit behind PHP’s CMSs when I started learning. So when I needed to customize those PHP CMSs, I got into PHP and ultimately PHP frameworks.&lt;/p&gt;

&lt;p&gt;After getting cozy with one specific tool that can do many things, it is hard to justify the cost of learning a whole new system for a new project. So you go further down the well of systems/tools you do know that utilize the languages you’re more proficient in.&lt;/p&gt;

&lt;p&gt;I think Rails 3 is an EXCELLENT version of the framework. The best version to date, but it’s not what I can use to get the job done quickly right now. But Rails really pushed forward the idea of the modern framework in its inception, and it deserves credit for most modern frameworks core concepts.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/mBK_Z6Nh6vU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/mBK_Z6Nh6vU/43635600927</link><guid isPermaLink="false">http://www.thenerdary.net/post/43635600927</guid><pubDate>Thu, 21 Feb 2013 01:13:00 -0800</pubDate><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/43635600927</feedburner:origLink></item><item><title>Profiling Long Paint Times</title><description>&lt;a href="https://docs.google.com/document/d/1elqjGr59gKYI3N4NMbDARR5IwEl-Yc6TMPJYsJP3dUo/edit"&gt;Profiling Long Paint Times&lt;/a&gt;: &lt;p&gt;If you’re a front-end developer you owe it to yourself to read, and understand, how your browser paints/renders the DOM to the screen.&lt;/p&gt;
&lt;p&gt;Continuous painting, however, may be what finally makes paint times/repaints easy enough to understand that anyone will be able to profile a page for issues.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/TuzOXST3-ZQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/TuzOXST3-ZQ/43495062034</link><guid isPermaLink="false">http://www.thenerdary.net/post/43495062034</guid><pubDate>Tue, 19 Feb 2013 09:40:40 -0800</pubDate><dc:creator>markhuot</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/43495062034</feedburner:origLink></item><item><title>rake document</title><description>&lt;p&gt;I&amp;#8217;ve never been one for &lt;code&gt;@todo&lt;/code&gt;&amp;#8217;s or &lt;code&gt;@return&lt;/code&gt;s because, frankly, I can never remember the obnoxious syntax required to docblock something. So, it&amp;#8217;s no wonder that I love things like &lt;a href="http://jashkenas.github.com/docco/" title="docco.coffee"&gt;docco&lt;/a&gt;. Unfortunately, with docco you need a web server or browser to really read through it.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve always wanted a simple way to grab the comments from a source file and turn them into a readable form of documentation. Well, thanks to GitHub and their latest addition of relative URLs this just became really easy. Enter &lt;code&gt;rake document&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Docker is a simple rake task that, when run, will scan through all your &lt;code&gt;php&lt;/code&gt; files and create &lt;code&gt;.md&lt;/code&gt; files right next to them containing only the comments. Which means, if you format your comments in plain english, using Markdown for styling, you can create some pretty compelling documentation. Best of all the docs are both inline and entirely readable when viewed outside of GitHub too.&lt;/p&gt;
&lt;p&gt;You can see an &lt;a href="https://github.com/markhuot/docker/blob/master/RedisManager.md"&gt;example&lt;/a&gt; over in the &lt;a href="https://github.com/markhuot/docker/"&gt;Docker repository&lt;/a&gt;. Notice the inline links (to the exceptions) work and reference the proper doc files without trouble.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/BUQrLAwf3cY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/BUQrLAwf3cY/43159843922</link><guid isPermaLink="false">http://www.thenerdary.net/post/43159843922</guid><pubDate>Fri, 15 Feb 2013 10:24:39 -0800</pubDate><category>php ruby documentation</category><dc:creator>markhuot</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/43159843922</feedburner:origLink></item><item><title>Ladies in Tech</title><description>&lt;a href="http://ladiesintech.com/"&gt;Ladies in Tech&lt;/a&gt;: &lt;p&gt;We were on a train, gallivanting through Europe, when fellow Nerdary compatriot Jenn Lukas explained her plan. She had a website she wanted to build. She wanted it built and designed by women, and she wanted it to speak to women’s issues in the tech community.&lt;/p&gt;

&lt;p&gt;She was discussing a conference she attended, and how the talks had been passively sexist. It was sexist via ignorance, not maliciousness. With every word Jenn spoke, it was as if a giant awkward turtle had entered the room every time a speaker made a dick joke, eventually resembling the underwater surfing scene from Finding Nemo. Who would want to stand up and give a talk to a giant sea of awkward turtles?&lt;/p&gt;

&lt;p&gt;It was an eye-opening conversation for me, of a perspective I will never personally encounter. Of course, she doesn’t mention any of this in her wonderfully &lt;a href="http://ladiesintech.com/the-one-person-you-can-convince-to-be-a-public-speaker/"&gt;written article&lt;/a&gt; (my favorite from her), because Jenn is trying to build something great and is a class act. You can’t lay a good foundation with criticisms, and that’s not how Jenn works. She wants to encourage and solve.&lt;/p&gt;

&lt;p&gt;I can’t imagine what it’s like to be a lady in tech, nor what it’s like to speak at a tech conference as a women, but I’m betting this site adds some perspective you can subscribe to. I know it will be great, because Jenn MOTHERFUCKING Lukas is at the helm with resident badass &lt;a href="http://www.yeseniaperezcruz.com/"&gt;Yesenia Perez-Cruz&lt;/a&gt; right next to her. They don’t half-ass anything. They’re not &lt;a href="http://twitter.com/markhuot"&gt;Mark Huot&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So, take some time and visit The Nerdary’s distant affable cousin, &lt;a href="http://ladiesintech.com/"&gt;Ladies in Tech&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/sF0hHEJLVL0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/sF0hHEJLVL0/43012015001</link><guid isPermaLink="false">http://www.thenerdary.net/post/43012015001</guid><pubDate>Wed, 13 Feb 2013 10:02:20 -0800</pubDate><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/43012015001</feedburner:origLink></item><item><title>DocBlockr for Sublime Text 2</title><description>&lt;a href="https://github.com/spadgos/sublime-jsdocs"&gt;DocBlockr for Sublime Text 2&lt;/a&gt;: &lt;p&gt;One of my favorite plugins for Sublime Text 2 (mind you, not the Sublime Text 3 now in beta). This nifty little plugin lets you type &lt;code&gt;/**&lt;/code&gt; then does all the documentation lookup for you based on context.&lt;/p&gt;

&lt;p&gt;For example, if your method looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;public function awesome(Array $rad){}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and then you type &lt;code&gt;/**&lt;/code&gt; above it and hit tab (or whatever you use to expand shortcut snippets). It will turn into this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; /**
 * [awesome description]
 * @param  Array  $rad [description]
 * @return [type]      [description]
 */
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It will then let you tab through and fillout the comment. &lt;strong&gt;It’s not only for PHP either!&lt;/strong&gt; It works with multiple languages. Check it out.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/gx7NujLME4U" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/gx7NujLME4U/42849474901</link><guid isPermaLink="false">http://www.thenerdary.net/post/42849474901</guid><pubDate>Mon, 11 Feb 2013 09:00:40 -0800</pubDate><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/42849474901</feedburner:origLink></item><item><title>Why did you rip off The Nerdery</title><description>&lt;p&gt;Dear Anonymous,&lt;/p&gt;

&lt;p&gt;&lt;a href="http://nerdery.com/"&gt;The Nerdery&lt;/a&gt; is a client services company. The NerdAry is where you are currently and where you sent this lovely question-statement to. When this site started almost 3 years ago, none of us had heard of The Nerdery. It’s actually only been brought up as a point of confusion in the past few months.&lt;/p&gt;

&lt;p&gt;The idea behind naming this place the NerdAry was like an aviAry of birds or in our case, monsters; birdmonsters in a centralized place squawking and talking about things that excite them. From the beginning, the name was not really original. I just combined nerd with a word and looked for a domain. Although, now I wish we were nerdlastic.&lt;/p&gt;

&lt;p&gt;I would think an apt person like yourself would be able to distinguish between two various spellings of a made-up word, and two very different websites, but maybe I’m underestimating our audience again. &lt;em&gt;sigh&lt;/em&gt; This is just like my Schrödinger’s cat joke all over again. &lt;em&gt;sigh&lt;/em&gt; This isn’t like my Schrödinger’s cat joke all over again.&lt;/p&gt;

&lt;p&gt;Assuming that you’re a fair person (which seeing as you sent in an anonymous question-statement accusing theft, seems correct), I hope that in our honor you will send this same lovely email to Aimee Crosby’s &lt;a href="http://pinterest.com/aimeecrosby1/the-nerdary/"&gt;Pinterest&lt;/a&gt; and this &lt;a href="http://nerdary.blogspot.com/"&gt;blogger site&lt;/a&gt; from 2006.&lt;/p&gt;

&lt;p&gt;Love,&lt;br/&gt;Kenny&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/c7wMNMvLGSA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/c7wMNMvLGSA/41966314093</link><guid isPermaLink="false">http://www.thenerdary.net/post/41966314093</guid><pubDate>Thu, 31 Jan 2013 13:05:00 -0800</pubDate><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/41966314093</feedburner:origLink></item><item><title>Using &amp;nbsp; to Avoid Orphans</title><description>&lt;p&gt;Last night I had the pleasure of taking &lt;a href="http://yeseniaperezcruz.com"&gt;Yesenia Perez-Cruz&amp;#8217;s&lt;/a&gt; Typography class for &lt;a href="http://www.meetup.com/Girl-Develop-It-Philadelphia"&gt;Girl Develop It&lt;/a&gt;. While I teach the HTML/CSS class for the group, I have never attended one as a student, so it was an awesome pleasure! It was really great to learn more about type.&lt;/p&gt;

&lt;p&gt;So taking it back a bit, one thing that came up is what to do about &lt;a href="http://en.wikipedia.org/wiki/Widows_and_orphans"&gt;widows/orphans&lt;/a&gt;, something I&amp;#8217;m sure we&amp;#8217;ve all faced. I imagine a lot of people in this class came from a print background and I&amp;#8217;m sure the transition from losing some of that type setting control is a super bummer. But I wanted to post this for anyone like that making the transition. You work with some sample text that lines up great in your grid, but then either you reduce your screen size (and consequently, column width) or you or your client starts adding real dynamic content and next thing you know, you&amp;#8217;ve got one lone word sitting all by itself at the end of a paragraph.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/5a4bd55ec9870f90442cf9f2c6978fe6/tumblr_inline_mhge3xZ6oq1qz4rgp.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;So, this is part of web life. We know that. However, sometimes that answer just won&amp;#8217;t cut it. What about if it&amp;#8217;s the clients name that is going to the next line, therefore losing the power of their identity. 
Or how about a &amp;#8220;Read more&amp;#8221; link?&lt;/p&gt;

&lt;p&gt;What I like to do with both of these cases is to use non-breaking spaces between these important phrases in the markup. Then you can avoid ever having them be orphans. For the client name, this works well because it&amp;#8217;s something that should be easy to convince them to add, even if it&amp;#8217;s writing the HTML in a CMS, because after all, it&amp;#8217;s their name!&lt;/p&gt;

&lt;p&gt;Regarding using them for &amp;#8220;Read More&amp;#8221; links, I like this approach for this because often they are coming out of your CMS template code, so as a developer, you have the control to be able to write this on your end:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  Read&amp;amp;nbsp;More
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This isn&amp;#8217;t something to be abused, for sure. You&amp;#8217;ll end up getting entity crazy. But it&amp;#8217;s a good option to have in a quick rut or where you do have control.&lt;/p&gt;

&lt;p&gt;Here are some nostalgic links about widows and nbsp usage from some smart people:
&lt;a href="http://www.shauninman.com/archive/2006/08/22/widont_wordpress_plugin"&gt;http://www.shauninman.com/archive/2006/08/22/widont_wordpress_plugin&lt;/a&gt;
&lt;a href="http://webtypography.net/Rhythm_and_Proportion/Horizontal_Motion/2.1.4/"&gt;http://webtypography.net/Rhythm_and_Proportion/Horizontal_Motion/2.1.4/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/dEpnp7dzr00" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/dEpnp7dzr00/41881106991</link><guid isPermaLink="false">http://www.thenerdary.net/post/41881106991</guid><pubDate>Wed, 30 Jan 2013 11:34:00 -0800</pubDate><dc:creator>jennlukas</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/41881106991</feedburner:origLink></item><item><title>:only-child and Breadcrumb Separators</title><description>&lt;p&gt;I haven&amp;#8217;t really come across too many reasons in my everday work to use the only-child pseudo-class (insert dramatic pause) UNTIL TODAYYYYYYY. So I thought I&amp;#8217;d share.&lt;/p&gt;

&lt;p&gt;This comes in super handy for breadcrumbs. Often breadcrumbs have a visual separator between the links. Sometimes this is between all list items except the last one. That looks pretty good.&lt;/p&gt;

&lt;p&gt;However, when you are only one level deep, and it&amp;#8217;s just a &amp;#8220;Home&amp;#8221; link, instead of letting that poor lonely link live all by itself, we can use only-child to add the visual indicator after that as well.&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s definitely a few ways to do this with classes as well, but here&amp;#8217;s one way.&lt;/p&gt;

&lt;pre class="codepen" data-height="300" data-type="result" data-href="pahrz" data-user="Jenn" data-safe="true"&gt;&lt;code&gt;&lt;/code&gt;&lt;a href="http://codepen.io/Jenn/pen/pahrz"&gt;Check out this Pen!&lt;/a&gt;&lt;/pre&gt;

&lt;script async src="http://codepen.io/assets/embed/ei.js"&gt;&lt;/script&gt;&lt;p&gt;More info and browser support: &lt;a href="https://developer.mozilla.org/en-US/docs/CSS/:only-child"&gt;https://developer.mozilla.org/en-US/docs/CSS/:only-child&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/u8dKpMUe1Lo" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/u8dKpMUe1Lo/41444284465</link><guid isPermaLink="false">http://www.thenerdary.net/post/41444284465</guid><pubDate>Fri, 25 Jan 2013 08:07:00 -0800</pubDate><dc:creator>jennlukas</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/41444284465</feedburner:origLink></item><item><title>Friend of The Nerdary, and Dutch royalty, developer Lodewijk...</title><description>&lt;iframe src="http://player.vimeo.com/video/57342187?title=0&amp;byline=0&amp;portrait=0&amp;color=ff9933" width="400" height="300" frameborder="0"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Friend of The Nerdary, and Dutch royalty, developer &lt;a href="http://gotolow.com"&gt;Lodewijk “Low” Schutte&lt;/a&gt; has released a wonderful screencast on &lt;a href="http://mijingo.com/products/screencasts/how-to-develop-expressionengine-add-on/"&gt;Building an ExpressionEngine Add-on&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;ExpressionEngine is a popular CMS that has established an excellent add-on marketplace, and Low is constantly creating some of the finest add-ons. I’ve been making my way through the screencast and have already &lt;del&gt;stolen&lt;/del&gt; learned so much.&lt;/p&gt;

&lt;p&gt;I can’t recommend this screencast enough if you want to make a commercial side project, or add another weapon to your client repertoire. It’s not for beginner, you must know PHP.&lt;/p&gt;

&lt;p&gt;You can get your money back on it pretty easy: First, buy the screencast; Second, make an add-on; Third, sell it on &lt;a href="http://devot-ee.com/"&gt;Devot:ee&lt;/a&gt; for $30; Boom: $1 profit (factoring in Devot:ee’s egregious percentage take) once you tell your Mom you made an add-on.&lt;/p&gt;

&lt;p&gt;Just another weapon in the fine arsenal of screencasts from &lt;a href="http://mijingo.com/"&gt;Mijingo&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/2ZE_6UJvb1w" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/2ZE_6UJvb1w/40619986362</link><guid isPermaLink="false">http://www.thenerdary.net/post/40619986362</guid><pubDate>Tue, 15 Jan 2013 12:25:00 -0800</pubDate><dc:creator>kennymeyers</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/40619986362</feedburner:origLink></item><item><title>jQuery Compatible Libraries for Mobile</title><description>&lt;a href="http://www.codefessions.com/2012/08/performance-of-jquery-compatible-mobile.html"&gt;jQuery Compatible Libraries for Mobile&lt;/a&gt;: &lt;p&gt;This linked post above is from August, but I found myself reading it today.&lt;/p&gt;

&lt;p&gt;So many websites a lot of us are making these days are responsive. Faced with a strictly mobile site, a question arose on whether to stick with jQuery or use an alternative.&lt;/p&gt;

&lt;p&gt;This link featured a ton of neat speed tests of jqMobi and Zepto. 
I haven’t used &lt;a href="http://www.jqmobi.com/"&gt;http://www.jqmobi.com/&lt;/a&gt; but I’m interested.&lt;/p&gt;

&lt;p&gt;I’m not a fan of the lack of support for IE that comes with &lt;a href="http://zeptojs.com/"&gt;&lt;a href="http://zeptojs.com"&gt;http://zeptojs.com&lt;/a&gt;&lt;/a&gt;, so I’m not sure I would use that.&lt;/p&gt;

&lt;p&gt;This was another interesting piece: &lt;a href="http://cubiq.org/do-you-really-need-jquery-for-mobile-dev"&gt;http://cubiq.org/do-you-really-need-jquery-for-mobile-dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;FRIENDS PLEASE TELL ME YOUR EXPERIENCE WITH THESE! KTHXBYE! CAPS.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/elnerdary/~4/q1LjCJAaXcQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/elnerdary/~3/q1LjCJAaXcQ/38239980746</link><guid isPermaLink="false">http://www.thenerdary.net/post/38239980746</guid><pubDate>Tue, 18 Dec 2012 11:06:00 -0800</pubDate><dc:creator>jennlukas</dc:creator><feedburner:origLink>http://www.thenerdary.net/post/38239980746</feedburner:origLink></item></channel></rss>
