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

<channel>
	<title>Michael Novotny</title>
	<atom:link href="http://manovotny.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://manovotny.com</link>
	<description>I am a developer. I make things.</description>
	<lastBuildDate>Thu, 09 Jun 2016 03:11:23 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.4.3</generator>
	<item>
		<title>Timesaving PhpStorm Keyboard Shortcuts to Increase Productivity</title>
		<link>http://manovotny.com/phpstorm-keyboard-shortcuts/</link>
		<comments>http://manovotny.com/phpstorm-keyboard-shortcuts/#comments</comments>
		<pubDate>Thu, 08 Jan 2015 15:18:15 +0000</pubDate>
		<dc:creator><![CDATA[Michael Novotny]]></dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Keyboard Shortcuts]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[PhpStorm]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://manovotny.com/?p=28554</guid>
		<description><![CDATA[<p>Some developers will pass over PhpStorm (or other JetBrains products) because it doesn&#8217;t embody the same look and feel of a typical Mac application. And that&#8217;s unfortunate, because PhpStorm is a powerhouse packed with productivity boosting features, that once you use them, you will never be able to use a standard text editor again. In &#8230; <a href="http://manovotny.com/phpstorm-keyboard-shortcuts/" class="more-link">Continue reading <span class="screen-reader-text">Timesaving PhpStorm Keyboard Shortcuts to Increase Productivity</span></a></p>
<p>The post <a rel="nofollow" href="http://manovotny.com/phpstorm-keyboard-shortcuts/">Timesaving PhpStorm Keyboard Shortcuts to Increase Productivity</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Some developers will pass over <a title="JetBrains PhpStorm - PHP IDE" href="https://www.jetbrains.com/phpstorm/">PhpStorm</a> (or other <a title="JetBrains Products" href="https://www.jetbrains.com/products.html">JetBrains products</a>) because it doesn&#8217;t embody the same look and feel of a typical Mac application. And that&#8217;s unfortunate, because PhpStorm is a powerhouse packed with productivity boosting features, that once you use them, you will never be able to use a standard text editor again.</p>
<p>In my continued effort to keep proving to my friend, <a title="Tom McFarlin | A Perspective on Professional WordPress Development" href="https://tommcfarlin.com">Tom McFarlin</a>, that PhpStorm is worth switching to, I thought I&#8217;d share some of the timesaving keyboard shortcuts that I use every day to help boost my productivity as a developer.</p>
<p><span id="more-28554"></span></p>
<h2>Disclaimers</h2>
<p>Before we jump into the shortcuts themselves, please allow me to make a few disclaimers.</p>
<h3>PhpStorm vs. Text Editor Plugins</h3>
<p>I do know that most serious text editors do support plugins that can offer some of this same functionality, but in my experience, the implementation and execution of those plugins usually do not match in quality to what PhpStorm offers out of the box.</p>
<p>Not to mention everything below comes baked into PhpStorm and works consistently, without having to scour the internet to find these plugins or worry about their ongoing support.</p>
<h3>Mac and Windows Keyboard Shortcuts</h3>
<p>I am a Mac user, so all the keyboard shortcuts below for Mac are from me and fully verified.</p>
<p>I do not have a PC, but reader <a title="Follow IllusionMH on Twitter" href="https://twitter.com/IllusionMH">IllusionMH</a> provided the Windows shortcuts, but I have no way of verifying their correctness. IllusionMH is also a WebStorm user, but the shortcuts should be mostly the same for PhpStorm. If they don&#8217;t work as advertised, please let me know.</p>
<p>Otherwise, you can use the keyboard shortcut name to lookup what the keyboard shortcut would be. More on searching for shortcuts later in the article.</p>
<h3>Keyboard Shortcut Legend</h3>
<p>Also, just so we&#8217;re all on the same page, these are the symbols I&#8217;m going to use and what they mean.</p>
<table>
<thead>
<tr>
<th>Description</th>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td>Command</td>
<td><code>⌘</code></td>
<td></td>
</tr>
<tr>
<td>Alt / Option</td>
<td><code>⌥</code></td>
<td><code>Alt</code></td>
</tr>
<tr>
<td>Control</td>
<td><code>⌃</code></td>
<td><code>Ctrl</code></td>
</tr>
<tr>
<td>Shift</td>
<td><code>⇧</code></td>
<td><code>Shift</code></td>
</tr>
<tr>
<td>Enter</td>
<td><code>⏎</code></td>
<td><code>Enter</code></td>
</tr>
<tr>
<td>Delete</td>
<td><code>⌫</code></td>
<td></td>
</tr>
<tr>
<td>Up Arrow</td>
<td><code>↑</code></td>
<td><code>Up</code></td>
</tr>
<tr>
<td>Down Arrow</td>
<td><code>↓</code></td>
<td><code>Down</code></td>
</tr>
</tbody>
</table>
<h2>Default Keyboard Shortcuts</h2>
<p>With those disclaimers out-of-the-way, let&#8217;s dig in.</p>
<p>Below are the default keyboard shortcuts that ship with PhpStorm.</p>
<h3>Reveal Tool Windows</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌘⌘</code> (Double Press / Tap and Hold)</td>
<td><code>Alt + Alt</code> (Double Press / Tap and Hold)</td>
</tr>
</tbody>
</table>
<p>Starting in PhpStorm 7 (I think), JetBrains decided to hide the Tool Windows, by default, to declutter the UI. To reveal the Tool Windows on the sides and bottom of IDE, just double press / tap the command keys.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-reveal-tool-windows.gif"><img class="alignnone size-full wp-image-28586" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-reveal-tool-windows.gif" alt="PhpStorm Keyboard Shortcut: Reveal Tool Windows" width="925" height="615" /></a></p>
<h3>Find Action</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌘⇧A</code></td>
<td><code>Ctrl + Shift + A</code></td>
</tr>
</tbody>
</table>
<p>Find Action is like the super keyboard shortcut. You can use it to search for shortcuts and IDE actions (aka. things you can do that don’t even have keyboard shortcuts). This is helpful for discovering shortcuts you don’t already know or for jogging your memory by typing in a keyword or phrase.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-find-action.gif"><img class="alignnone size-full wp-image-28587" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-find-action.gif" alt="PhpStorm Keyboard Shortcut: Find Action" width="925" height="615" /></a></p>
<h3>Navigate File</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌘⇧O</code></td>
<td><code>Ctrl + Shift + N</code></td>
</tr>
</tbody>
</table>
<p>Navigate File is just a fancy name to mean &#8220;open files&#8221;.</p>
<p>Navigate File also support searching for files with wildcards, title case, file extension, etc..</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-navigate-file.gif"><img class="alignnone size-full wp-image-28588" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-navigate-file.gif" alt="PhpStorm Keyboard Shortcut: Navigate File" width="925" height="615" /></a></p>
<h3>Rename</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⇧F6</code></td>
<td><code>Shift + F6</code></td>
</tr>
</tbody>
</table>
<p>Using this, you can rename practically anything, such as variables, functions, filenames, class names, html tags, etc. This even works for some more obscure languages you wouldn&#8217;t expect, like Less / Sass, Mustache, and PHPDoc, to name a few.</p>
<p>Not only that, but it will automatically refactor all places these things are within the entire project.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-rename.gif"><img class="alignnone size-full wp-image-28589" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-rename.gif" alt="PhpStorm Keyboard Shortcut: Rename" width="925" height="615" /></a></p>
<h3>Show Intention Actions</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌥⏎</code></td>
<td><code>Alt + Enter</code></td>
</tr>
</tbody>
</table>
<p>This is a super fancy name for &#8220;fix problems&#8221;. Show Intention Actions is for anything from fixing typos / spelling, to fixing incorrect parameters, to automatically updating your PHPDoc if you change parameters, and much, much more.</p>
<p>Use this wherever you see a yellow or red squiggly line underneath something.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-show-intention-actions.gif"><img class="alignnone size-full wp-image-28590" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-show-intention-actions.gif" alt="PhpStorm Keyboard Shortcut: Show Intention Actions" width="925" height="615" /></a></p>
<h3>Open Terminal</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌥F12</code></td>
<td><code>Alt + F12</code></td>
</tr>
</tbody>
</table>
<p>Yes, PhpStorm has a fully functional Terminal baked right into it. This is incredibly handy, especially when you&#8217;re using tools like <a title="NPM - Node Package Manager" href="https://www.npmjs.com/">NPM</a>, <a title="Grunt: The JavaScript Task Runner" href="http://gruntjs.com/">Grunt</a>, <a title="Gulp.js - The Streaming Build System" href="http://gulpjs.com/">Gulp</a>, <a title="Composer - Dependency Manager for PHP" href="https://getcomposer.org/">Composer</a>, etc. in your projects. Mash <code>⌥F12</code> and you&#8217;re there, ready to rock a command.</p>
<p>No context switching, no fumbling for the right window. Just seamless productivity.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-open-terminal.gif"><img class="alignnone size-full wp-image-28591" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-open-terminal.gif" alt="PhpStorm Keyboard Shortcut: Open Terminal" width="925" height="615" /></a></p>
<h3>New</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌘N</code></td>
<td><code>Alt + Insert</code></td>
</tr>
</tbody>
</table>
<p>Use the New command when you have a folder selected in the project window and you can insert / create a new files and folders.</p>
<p>You can even create nested files and directories with the same command.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-new.gif"><img class="alignnone size-full wp-image-28592" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-new.gif" alt="PhpStorm Keyboard Shortcut: New" width="925" height="615" /></a></p>
<h3>Find In Path</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌘⇧F</code></td>
<td><code>Ctrl + Shift + F</code></td>
</tr>
</tbody>
</table>
<p>Find In Path will search your entire project for just about anything.</p>
<p>You can refine scope to a particular folder, do a reclusive search, match case, regex, etc. A crazy amount of search power for such a little window.</p>
<p>And if you have anything selected, that will automatically become the search term.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-find-in-path.gif"><img class="alignnone size-full wp-image-28594" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-find-in-path.gif" alt="PhpStorm Keyboard Shortcut: Find In Path" width="925" height="615" /></a></p>
<h3>Paste From History</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌘⇧V</code></td>
<td><code>Ctrl + Shift + V</code></td>
</tr>
</tbody>
</table>
<p>This is also known as Clipboard History.</p>
<p>This keeps a running log of things you’ve copied within PhpStorm and you can use it pretty much anywhere within PhpStorm, including the find / replace fields, extracting variables, extracting methods, renaming, etc.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-paste-from-history.gif"><img class="alignnone size-full wp-image-28595" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-paste-from-history.gif" alt="PhpStorm Keyboard Shortcut: Paste From History" width="925" height="615" /></a></p>
<p>I believe the default history limit is set to 5, which is weak.</p>
<p>Just navigate to <code>PhpStorm &gt; Preferences &gt; IDE Settings &gt; Editor &gt; Maximum number of contents to keep in clipboard</code> to up that limit to something more respectable. I have mine set to <code>50</code>.</p>
<h3>Move Line Up / Down</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌥⇧↑</code> and <code>⌥⇧↓</code></td>
<td><code>Alt + Shift + Up</code> and <code>Alt + Shift + Down</code></td>
</tr>
</tbody>
</table>
<p>These shortcuts move whatever line of code the cursor is on up or down a single line.</p>
<p>Very handy for changing the order of an array or declared variables. And most times, it will even shuffle the commas around appropriately too!</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-move-line-up-and-down.gif"><img class="alignnone size-full wp-image-28596" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-move-line-up-and-down.gif" alt="PhpStorm Keyboard Shortcut: Move Line Up and Down" width="925" height="615" /></a></p>
<h3>Move Statement Up / Down</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌘⇧↑</code> and <code>⌘⇧↓</code></td>
<td><code>Ctrl + Shift + Up</code> and <code>Ctrl + Shift + Down</code></td>
</tr>
</tbody>
</table>
<p>These work much like the Move Line Up / Down shortcuts, but these will move whole statements up or down a single line.</p>
<p>Think along the lines of entire functions, objects, or arrays instead of just a single part of those things.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-move-statement-up-and-down.gif"><img class="alignnone size-full wp-image-28597" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-move-statement-up-and-down.gif" alt="PhpStorm Keyboard Shortcut: Move Statement Up and Down" width="925" height="615" /></a></p>
<h3>Debugging</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>F7</code> (Step Into), <code>F8</code> (Step Over), and <code>⌥⌘R</code> (Resume)</td>
<td><code>F7</code> (Step Into), <code>F8</code> (Step Over), and <code>F9</code> (Resume)</td>
</tr>
</tbody>
</table>
<p>Once you <a title="How To Setup and Configure PhpStorm, Xdebug, and MAMP for Debugging" href="http://manovotny.com/setup-phpstorm-xdebug-mamp-debugging/">setup and launch a debugging session</a>, I use these shortcuts to navigate through the code with ease.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-debugging.gif"><img class="alignnone size-full wp-image-28598" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-debugging.gif" alt="PhpStorm Keyboard Shortcut: Debugging" width="925" height="615" /></a></p>
<h3>Extend / Shrink Selection</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌥↑</code> and <code>⌥↓</code></td>
<td><code>Ctrl + W</code> and <code>Ctrl + Shift + W</code></td>
</tr>
</tbody>
</table>
<p>These shortcuts will gradually increase or decrease what you have selected, at logical breaking points, and even within strings!</p>
<p>This is one of those features that wish was available in any application or operating system once you start to use it.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-extend-and-shrink-selection.gif"><img class="alignnone size-full wp-image-28599" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-extend-and-shrink-selection.gif" alt="PhpStorm Keyboard Shortcut: Extend and Shrink Selection" width="925" height="615" /></a></p>
<h3>Extract Variable</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌥⌘V</code></td>
<td><code>Ctrl + Alt + V</code></td>
</tr>
</tbody>
</table>
<p>Extract Variable works by taking whatever you have selected and creating a new variable out of it.</p>
<p>This even works for Less / Sass variables too!</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-extract-variable.gif"><img class="alignnone size-full wp-image-28600" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-extract-variable.gif" alt="PhpStorm Keyboard Shortcut: Extract Variable" width="925" height="615" /></a></p>
<h3>Extract Method</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌥⌘M</code></td>
<td><code>Ctrl + Alt + M</code></td>
</tr>
</tbody>
</table>
<p>Extract Method works by taking whatever you have selected and creating a new method / function out of it, including any necessary parameters.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-extract-method.gif"><img class="alignnone size-full wp-image-28601" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-extract-method.gif" alt="PhpStorm Keyboard Shortcut: Extract Method" width="925" height="615" /></a></p>
<h3>Inline</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌥⌘N</code></td>
<td><code>Ctrl + Alt + N</code></td>
</tr>
</tbody>
</table>
<p>Inline is the opposite of the extract shortcuts mentioned above.</p>
<p>It will take variables and methods and will bring them back inline where they are in use.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-inline.gif"><img class="alignnone size-full wp-image-28602" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-inline.gif" alt="PhpStorm Keyboard Shortcut: Inline" width="925" height="615" /></a></p>
<h3>Duplicate Line or Block</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌘D</code></td>
<td></td>
</tr>
</tbody>
</table>
<p>This shortcut will duplicate the line of code the cursor is on, if nothing is selected.</p>
<p>If something is selected, it will duplicate whatever is selected.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-duplicate-line-or-block.gif"><img class="alignnone size-full wp-image-28605" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-duplicate-line-or-block.gif" alt="PhpStorm Keyboard Shortcut: Duplicate Line or Block" width="925" height="615" /></a></p>
<h3>Delete Line</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌘⌫</code></td>
<td><code>Ctrl + Y</code></td>
</tr>
</tbody>
</table>
<p>This shortcut will remove the line of code the cursor is on, if nothing is selected.</p>
<p>If something is selected, it will remove whatever lines are selected.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-delete-line.gif"><img class="alignnone size-full wp-image-28606" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-delete-line.gif" alt="PhpStorm Keyboard Shortcut: Delete Line" width="925" height="615" /></a></p>
<h3>Code Completion</h3>
<table>
<thead>
<tr>
<th>Mac</th>
<th>Windows</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>⌃Space</code></td>
<td><code>Ctrl + Space</code></td>
</tr>
</tbody>
</table>
<p>This feature pretty standard in most apps, but even though it&#8217;s such a common feature, I still use it every single day, so it&#8217;s worth the mention.</p>
<p>Code Completion works by offering suggestions for variables and methods to complete what you have partially typed.</p>
<p>Most of the time, this will just work on its own, but if you&#8217;re typing really fast, then you can explicitly invoke it with the shortcut.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-code-completion.gif"><img class="alignnone size-full wp-image-28607" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-code-completion.gif" alt="PhpStorm Keyboard Shortcut: Code Completion" width="925" height="615" /></a></p>
<h2>Custom Keyboard Shortcuts</h2>
<p>So that is all well and good. But what if you want to change or customize your keyboard shortcuts? What if you want to create new keyboard shortcuts for features you use within PhpStorm that don&#8217;t have a keyboard shortcut defined?</p>
<p>No problem! PhpStorm has this covered in what they call Keymap. Just navigate to <code>PhpStorm &gt; Preferences &gt; IDE Settings &gt; Keymap</code> to uncover all the goodies.</p>
<p>In the Keymap,  you can search for actions by their name or by their assigned keyboard shortcut.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keymap-searching.gif"><img class="alignnone size-full wp-image-28608" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keymap-searching.gif" alt="PhpStorm Keymap Searching" width="925" height="615" /></a></p>
<p>For example, I use the Split Vertically action all the time, so I can have two editor windows open at the same time, usually when I want to write some markup and some styles at the same time. This is such a huge timesaver to have either file accessible as I am building things out.</p>
<p>Split Vertically doesn&#8217;t have a keyboard shortcut by default, so add it to the Keymap, and you&#8217;re ready to go! I chose <code>⌃⌥⌘V</code> as my Split Vertically shortcut.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-split-vertically.gif"><img class="alignnone size-full wp-image-28609" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-keyboard-shortcut-split-vertically.gif" alt="PhpStorm Custom Keyboard Shortcut: Split Vertically" width="925" height="615" /></a></p>
<p>Don&#8217;t worry if you use something that is already defined as a shortcut. PhpStorm will let you know and ask you if you want to remap the keys.</p>
<h2>Mouse Shortcuts</h2>
<p>I know that sounds weird, but hear me out.</p>
<p>There are a couple of mouse shortcuts I want to point out that I find incredibly handy.</p>
<h3>Hide / Reveal Tool Windows</h3>
<p>You have your headphones jacked in, your tunes are cranked, and you&#8217;re ready to get in the zone and just crank out some code. Now you want to eliminate all the distractions and you want to see as many lines of code as possible.</p>
<p>Just double-click any editor tab to hide all the open Tool Windows. And double-click again to bring them all back.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-mouse-shortcut-hide-and-reveal-tool-windows.gif"><img class="alignnone size-full wp-image-28610" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-mouse-shortcut-hide-and-reveal-tool-windows.gif" alt="PhpStorm Mouse Shortcut: Hide and Reveal Tool Windows" width="925" height="615" /></a></p>
<h3>Redistribute Editor Windows</h3>
<p>When I have multiple editor windows open, I am constantly moving things around, resizing the windows to give me the most space on what I am working on the most, but now I want to have them be evenly spaced again.</p>
<p>Simply double-click on the space between the split editors to evenly redistribute them.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-mouse-shortcut-redistribute-editor-windows.gif"><img class="alignnone size-full wp-image-28611" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-mouse-shortcut-redistribute-editor-windows.gif" alt="PhpStorm Mouse Shortcut: Redistribute Editor Windows" width="925" height="615" /></a></p>
<h2>Conclusion</h2>
<p>Once you get the hang of these shortcuts, you&#8217;ll feel and incredible source of power and confidence, especially when refactoring. And you&#8217;ll wonder why you waited so long to ditch your text editor of choice for a fully functional IDE, if you just give PhpStorm a shot.</p>
<p>How about you? What PhpStorm keyboard shortcuts have you found indispensable in your daily workflow? Share them in the comments below!</p>
<p>The post <a rel="nofollow" href="http://manovotny.com/phpstorm-keyboard-shortcuts/">Timesaving PhpStorm Keyboard Shortcuts to Increase Productivity</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://manovotny.com/phpstorm-keyboard-shortcuts/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>How To Setup and Configure PhpStorm, Xdebug, and MAMP for Debugging</title>
		<link>http://manovotny.com/setup-phpstorm-xdebug-mamp-debugging/</link>
		<comments>http://manovotny.com/setup-phpstorm-xdebug-mamp-debugging/#comments</comments>
		<pubDate>Tue, 06 Jan 2015 15:07:14 +0000</pubDate>
		<dc:creator><![CDATA[Michael Novotny]]></dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[MAMP]]></category>
		<category><![CDATA[PhpStorm]]></category>
		<category><![CDATA[Xdebug]]></category>

		<guid isPermaLink="false">http://manovotny.com/?p=28522</guid>
		<description><![CDATA[<p>I must have read 8 &#8211; 10 articles scattered about the internet when I first got PhpStorm setup to do debugging with Xdebug and MAMP. Each article seems to be missing one key piece of the puzzle. After a few days mucking with everything, I was able to get the stars to align. And it&#8217;s one &#8230; <a href="http://manovotny.com/setup-phpstorm-xdebug-mamp-debugging/" class="more-link">Continue reading <span class="screen-reader-text">How To Setup and Configure PhpStorm, Xdebug, and MAMP for Debugging</span></a></p>
<p>The post <a rel="nofollow" href="http://manovotny.com/setup-phpstorm-xdebug-mamp-debugging/">How To Setup and Configure PhpStorm, Xdebug, and MAMP for Debugging</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>I must have read 8 &#8211; 10 articles scattered about the internet when I first got <a title="JetBrains PhpStorm - PHP IDE" href="https://www.jetbrains.com/phpstorm/">PhpStorm</a> setup to do debugging with <a title="Xdebug - Debugger and Profiler Tool for PHP" href="http://xdebug.org/">Xdebug</a> and <a title="MAMP &amp; MAMP PRO - Provides an all in one solution to install Apache, PHP and MySQL on a Mac OS environment" href="http://www.mamp.info/">MAMP</a>. Each article seems to be missing one key piece of the puzzle. After a few days mucking with everything, I was able to get the stars to align. And it&#8217;s one of those things that, once you get it working, it just works and you don&#8217;t have to bother with it again.</p>
<p>However, that initial setup can be very frustrating. And since my good friend, <a title="Follow Tom McFarlin on Twitter" href="https://twitter.com/tommcfarlin">Tom McFarlin</a>, <a title="Tom McFarlin on Twitter: &quot;okay, phpstorm. this is my last time giving you a try. do not disappiont. do not fail me for the last time.&quot;" href="https://twitter.com/tommcfarlin/status/551119562176221185">decided to give PhpStorm another serious look</a>, I thought I&#8217;d document how I was able to get things setup and hopefully save him and you some time.</p>
<p><span id="more-28522"></span></p>
<p>What I am about outline below is working with MAMP PRO 3 and PhpStorm 8, though I have had the same success with MAMP PRO 2 and PhpStorm 7. I also assume that most of this is applicable to the regular, non-pro version of MAMP, though I have not tested it.</p>
<h3>Xdebug</h3>
<p>Fortunately, Xdebug is already included with MAMP, so there is nothing we need to install in addition to MAMP itself. We simple need to enable it within MAMP.</p>
<h3>MAMP</h3>
<p>You should just be able to enable Xdebug within MAMP by checking the Activate Xdebug option under the PHP tab. And that should be it, at least for MAMP 3.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/mamp-pro-activate-xdebug.jpg"><img class="alignnone size-medium wp-image-28537" src="http://manovotny.com/wp-content/uploads/2015/01/mamp-pro-activate-xdebug-770x367.jpg" alt="MAMP PRO - Activate Xdebug" width="770" height="367" srcset="http://manovotny.com/wp-content/uploads/2015/01/mamp-pro-activate-xdebug-770x367.jpg 770w, http://manovotny.com/wp-content/uploads/2015/01/mamp-pro-activate-xdebug-1170x557.jpg 1170w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p><em>For most of you reading this, you can just stop here and move onto the PhpStorm section. </em></p>
<p>However, if you are using MAMP 2, or if you want to ensure that MAMP 3 is indeed configured correctly, you&#8217;ll first need to identify what version of PHP you&#8217;re using with MAMP. Simply navigate to the PHP tab in MAMP and take note of what you&#8217;re default PHP version is.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/mamp-pro-default-php-version.jpg"><img class="alignnone size-medium wp-image-28538" src="http://manovotny.com/wp-content/uploads/2015/01/mamp-pro-default-php-version-770x263.jpg" alt="MAMP PRO - Default PHP Version" width="770" height="263" srcset="http://manovotny.com/wp-content/uploads/2015/01/mamp-pro-default-php-version-770x263.jpg 770w, http://manovotny.com/wp-content/uploads/2015/01/mamp-pro-default-php-version-1170x399.jpg 1170w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p>Or, if you&#8217;re running a more advanced setup in MAMP PRO, with different PHP versions for different hosts, head to your Hosts tab to see what PHP version you&#8217;re running for the particular host you&#8217;re wanting to debug.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/mamp-pro-hosts-php-version.jpg"><img class="alignnone size-medium wp-image-28539" src="http://manovotny.com/wp-content/uploads/2015/01/mamp-pro-hosts-php-version-770x285.jpg" alt="MAMP PRO - Hosts PHP Version" width="770" height="285" srcset="http://manovotny.com/wp-content/uploads/2015/01/mamp-pro-hosts-php-version-770x285.jpg 770w, http://manovotny.com/wp-content/uploads/2015/01/mamp-pro-hosts-php-version-1170x433.jpg 1170w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p>With the PHP version identified, you&#8217;ll want to open and edit the corresponding php.ini file to enable Xdebug by navigating to <code>File &gt; Edit Template &gt; PHP &gt; PHP [VERSION] php.ini</code>.</p>
<p>With the <code>php.ini</code> file open, you&#8217;ll want to find the <code>[xdebug]</code> section, which is usually at the very bottom of the file.</p>
<p>At the very minimum, you&#8217;ll want to have the following entered and uncommented.</p>
<script src="https://gist.github.com/manovotny/7c02adf0cde8b21cbb1e.js?file=mamp-xdebug-php.ini"></script>
<p>MAMP 2 used to require a bit more configuration, specifically the definition of a zend_extension, so you might want to add all of the following of the minimum configuration does not work for you. Or if you&#8217;re using MAMP 3 and you want to enable things like coverage and profiling capabilities.</p>
<p><em>Please note that the zend_extensions path to the <code>xdebug.so</code> file will vary depending on the PHP version you&#8217;re using, so make sure you look up the correct path on your filesystem.</em></p>
<script src="https://gist.github.com/manovotny/7c02adf0cde8b21cbb1e.js?file=mamp-xdebug-advanced-php.ini"></script>
<h3>PhpStorm</h3>
<p>With PhpStorm open, navigate to <code>Run &gt; Edit Configurations...</code>.</p>
<p>Now, if I were to type out everything you&#8217;d need to do, it&#8217;d be very lengthy. Instead, I created a short GIF to demonstrate what needs to happen. In short, we need to point PhpStorm to the server we want to debug.</p>
<p>You&#8217;ll use whatever host and port you&#8217;ve configured within MAMP. For this example, I&#8217;ve created the host <code>iowagirleats.dev</code> in MAMP PRO (which is also shown in the screenshots above) and I customized my MAMP Apache port to run on port <code>80</code>. If you&#8217;re running just MAMP (the non-pro version) or if you didn&#8217;t create a custom host, or if you didn&#8217;t customize the ports within MAMP, then you&#8217;d probably be using <code>localhost</code> with a port of <code>8888</code> for the configuration below.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-php-xdebug-configuration.gif"><img class="alignnone wp-image-28540 size-full" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-php-xdebug-configuration.gif" alt="PhpStorm - PHP Xdebug Configuration" width="924" height="616" /></a></p>
<p>Once this is complete, you should see the Debug configuration you just created in the upper right part of PhpStorm.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstrom-debug.jpg"><img class="alignnone size-full wp-image-28542" src="http://manovotny.com/wp-content/uploads/2015/01/phpstrom-debug.jpg" alt="PhpStorm - Debug" width="442" height="54" /></a></p>
<h3>Seeing Is Believing!</h3>
<p>And that should be it!</p>
<p>Set a breakpoint in PhpStorm by clicking in the margin of an open PHP file, click the &#8220;bug&#8221; next to the configuration you just created to start debugging, and you should hit your breakpoint and feel like you finally have visibility into a once dark and secret world. Gone are the days of the antiquated <code>var_dump</code> as you fumble around to discover what is going on!</p>
<p><a href="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-breakpoint-example.jpg"><img class="alignnone size-medium wp-image-28543" src="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-breakpoint-example-770x468.jpg" alt="PhpStorm - Breakpoint Example" width="770" height="468" srcset="http://manovotny.com/wp-content/uploads/2015/01/phpstorm-breakpoint-example-770x468.jpg 770w, http://manovotny.com/wp-content/uploads/2015/01/phpstorm-breakpoint-example-1170x712.jpg 1170w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p>Hopefully that helped connect all the dots for you and you&#8217;re also up and running.</p>
<p>Please let me know in the comments below if you hit any snags and I&#8217;ll try my best to help out.</p>
<p>The post <a rel="nofollow" href="http://manovotny.com/setup-phpstorm-xdebug-mamp-debugging/">How To Setup and Configure PhpStorm, Xdebug, and MAMP for Debugging</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://manovotny.com/setup-phpstorm-xdebug-mamp-debugging/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Pagely Review: Fine-Tuned Managed WordPress Hosting</title>
		<link>http://manovotny.com/pagely/</link>
		<comments>http://manovotny.com/pagely/#respond</comments>
		<pubDate>Mon, 27 Oct 2014 16:57:28 +0000</pubDate>
		<dc:creator><![CDATA[Michael Novotny]]></dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://manovotny.com/?p=27770</guid>
		<description><![CDATA[<p>Apparently I am becoming somewhat of a managed WordPress host reviewer. I have previous written a WP Engine review on my own blog, and today, Envato published an article I wrote for their Code tutorials, reviewing Pagely as managed WordPress host. Both are excellent hosts worthy of  your consideration. So check out both of the articles &#8230; <a href="http://manovotny.com/pagely/" class="more-link">Continue reading <span class="screen-reader-text">Pagely Review: Fine-Tuned Managed WordPress Hosting</span></a></p>
<p>The post <a rel="nofollow" href="http://manovotny.com/pagely/">Pagely Review: Fine-Tuned Managed WordPress Hosting</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Apparently I am becoming somewhat of a managed WordPress host reviewer.</p>
<p><a href="http://manovotny.com/wp-content/uploads/2014/10/pagely.jpg"><img class="alignnone size-medium wp-image-27771" src="http://manovotny.com/wp-content/uploads/2014/10/pagely-770x266.jpg" alt="Pagely - The Most Scalable WordPress Hosting Platform In The World, Powered by the Amazon cloud." width="770" height="266" srcset="http://manovotny.com/wp-content/uploads/2014/10/pagely-770x266.jpg 770w, http://manovotny.com/wp-content/uploads/2014/10/pagely-1170x404.jpg 1170w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p>I have previous written a <a title="WP Engine: Is Managed WordPress Hosting Worth The Premium Price?" href="http://manovotny.com/wp-engine/">WP Engine review</a> on my own blog, and today, <a title="Envato - An ecosystem of sites to help you get creative" href="http://www.envato.com">Envato</a> published an article I wrote for their <a title="Envato Tuts+ Code" href="http://code.tutsplus.com">Code</a> tutorials, <a title="Pagely – The Most Scalable WordPress Hosting Platform In The World, Powered by the Amazon cloud" href="http://code.tutsplus.com/articles/pagely-review-fine-tuned-managed-wordpress-hosting--cms-22444">reviewing Pagely as managed WordPress host</a>.</p>
<p>Both are excellent hosts worthy of  your consideration.</p>
<p>So check out both of the articles and let me know if you have any questions!</p>
<p>The post <a rel="nofollow" href="http://manovotny.com/pagely/">Pagely Review: Fine-Tuned Managed WordPress Hosting</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://manovotny.com/pagely/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP Engine: Is Managed WordPress Hosting Worth The Premium Price?</title>
		<link>http://manovotny.com/wp-engine/</link>
		<comments>http://manovotny.com/wp-engine/#comments</comments>
		<pubDate>Wed, 06 Nov 2013 15:12:50 +0000</pubDate>
		<dc:creator><![CDATA[Michael Novotny]]></dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WP Engine]]></category>

		<guid isPermaLink="false">http://manovotny.com/?p=451</guid>
		<description><![CDATA[<p>I guess you could call me a bit promiscuous when it comes to hosting providers. As I&#8217;ve already said, I&#8217;ve personally been though seven hosts and I have probably worked my way through just as many with clients. And let&#8217;s just be honest&#8230; A vast majority of hosts will meet the demands for many of our &#8230; <a href="http://manovotny.com/wp-engine/" class="more-link">Continue reading <span class="screen-reader-text">WP Engine: Is Managed WordPress Hosting Worth The Premium Price?</span></a></p>
<p>The post <a rel="nofollow" href="http://manovotny.com/wp-engine/">WP Engine: Is Managed WordPress Hosting Worth The Premium Price?</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>I guess you could call me a bit promiscuous when it comes to hosting providers.</p>
<p>As I&#8217;ve already said, I&#8217;ve <a title="Essential Blog Accounts And Services" href="http://manovotny.com/accounts-and-services/" target="_blank">personally been though seven hosts</a> and I have probably worked my way through just as many with clients. And let&#8217;s just be honest&#8230; A vast majority of hosts will meet the demands for many of our sites, especially when you&#8217;re just getting started.</p>
<p>But over time, things can get&#8230;complicated.</p>
<p>Your site starts to gain some traction, which is awesome, but it can come with a laundry list of side effects.</p>
<ul>
<li>Server resources like database, storage, bandwidth, etc. start to explode.</li>
<li>Pages load starts to crawl.</li>
<li>Lovely white pages of death like &#8220;internal server error&#8221; or &#8220;error establishing a database connection&#8221;.</li>
<li>Start spending late nights parsing log files to track down memory, performance, or caching issues with magical combinations of server operating system, PHP, MySQL, WordPress, plugin, and theme configurations and versions.</li>
</ul>
<p>Yuck.</p>
<p>I don&#8217;t know about you, but as much as I really want to dig in and do and know it all, it&#8217;s simply not possible. There just isn&#8217;t enough time and I know I cannot be an expert at all those things. I just want as much time to work on the things I am great at and leave the rest alone.</p>
<p>Is there any hope? Can managed hosting focused strictly on WordPress <em>really</em> be the answer?</p>
<p><span id="more-451"></span></p>
<h3>The Case Study</h3>
<p>I have been incredibly fortunate to partner with <a title="Follow Kristin on Twitter" href="https://twitter.com/iowagirleats" target="_blank">Kristin</a> on <a title="Iowa Girl Eats - Eat Well, Run Often, Travel Far" href="http://iowagirleats.com/" target="_blank">Iowa Girl Eats</a> for the past two years. Her site has always been a hit, but it has seen explosive growth from the time I started working with her, especially with things like <a title="Pinterest - A few (million) of your favorite things" href="https://www.pinterest.com/" target="_blank">Pinterest</a> making sites like hers a mecca for foodies.</p>
<p>It has provided me with a tremendous amount of exposure to things that I would have never had to face, learn, and overcome on something like my own measly blog. While it&#8217;s been some intense problems, I am always grateful to concur something new that I would not of otherwise had the opportunity to learn.</p>
<p>In the past two years we have:</p>
<ul>
<li>Written a completely custom theme.</li>
<li>Been through four hosts, ranging from shared to VPS to cloud.</li>
<li>Started using <a title="NetDNA - Content Delivery Network" href="http://www.netdna.com/" target="_blank">NetDNA</a> as our CDN to offload the nearly 4.5TB of bandwidth usage <em>per month</em>.</li>
<li>Scrutinized every plugin and reduced the number used by more than half.</li>
<li>Tracked down and killed every PHP error and warning.</li>
<li>Optimized the database, <a title="Comparing InnoDB to MyISAM Performance" href="https://blogs.oracle.com/MySQL/entry/comparing_innodb_to_myisam_performance" target="_blank">converted to InnoDB</a>, and cleaned up a lot of cruft in options and revisions, which still left it with a 500MB footprint.</li>
<li>Wrote a completely custom caching system <a title="Redis - Advanced Key-Value Store and Data Structure Server" href="http://redis.io/" target="_blank">Redis</a> because popular caching plugins couldn&#8217;t keep up.</li>
</ul>
<p>To be honest, I do feel quite proud that I&#8217;ve helped keep the wheels on for this long.</p>
<p>But even with all these pieces in place, we were still running up against issues. Issues that I will fully admit are beyond my capabilities, like the WordPress Cron getting hung about once a week which caused a core WordPress error to get thrown hundreds of times&#8230;<em>per</em> <em>millisecond</em>&#8230;and required a server reboot. Not to mention random site slowness / sluggishness, especially in the WordPress admin, with no rhyme or reason that I or hosting support could discern.</p>
<p>These are exactly the kinds of things me or my client should not need to worry about at this point.</p>
<p>I knew I couldn&#8217;t continue to battle this on my own. I needed help. I needed experts.</p>
<p>This led me to <a title="WP Engine - WordPress Hosting &amp; Managed WordPress Hosting" href="http://wpengine.com/" target="_blank">WP Engine</a>.</p>
<h3>Show Me The Money</h3>
<p>There are a few managed hosts out there completely dedicated to WordPress, but without question, one of the most well known ones is WP Engine. Their reputation within the WordPress community is undeniable, especially for their support and expertise. It&#8217;s almost absurd how overwhelmingly satisfied WP Engine customer seem to be and they are not shy about letting people know.</p>
<p>So let&#8217;s just cut straight to the chase&#8230; The price.</p>
<p>Even WP Engine&#8217;s entry-level <a title="WP Engine Plans" href="http://wpengine.com/plans/" target="_blank">plan</a> will cost you $29 a month for a single site. Compare that to shared hosting, which can be had for $5 &#8211; $10 a month at several very popular and reputable companies. On top of that, you can usually run as many sites as you want for that same price on those other hosts. You can also get into VPS and cloud hosting for under a $100 at most of those same places, which is equal to or under WP Engines next two plans. And if you&#8217;re doing more than 400k pageviews per month, that can send you into the unsettling &#8220;Let&#8217;s Talk&#8221; price range on WP Engine.</p>
<p>So the question at hand&#8230; Is WP Engine worth it?</p>
<h3>The Verdict</h3>
<p>In short, the answer is a resounding&#8230;<strong><em>yes</em></strong>!</p>
<p>I have <em>never</em> been more impressed with a hosting company. I completely understand why their users rave about them so much. They literally are experts, through and through.</p>
<p>Here are just a few reasons why I have been so impressed.</p>
<ul>
<li>I had multiple phone calls, with a <em>real</em> person and with the <em>same</em> person, throughout the setup and customization process. Yes, email is convenient, but it was really refreshing and comforting to talk to a real person.</li>
<li>After the setup and customization process, you get access to support via live chat and tickets. I know that other companies do this too, but their live chat people are <em>always and consistently</em> available and wicked smart. I have yet to stump any one of them on anything.</li>
<li>Zero configuration, zero hassle. I have literally had to do nothing. In fact, I have had to undo / remove a lot of things I&#8217;ve done in the past on my own because they just handle it automatically. Things like advanced .htaccess, CDN integration, and <a title="WP Engine - EverCache Speed and Scalibility" href="http://wpengine.com/scale-to-millions-of-hits-a-day-or-hour/" target="_blank">caching</a>. No plugins necessary. Again, it just happens. Their <a title="WP Engine - Our Infrastructure" href="http://wpengine.com/our-infrastructure/" target="_blank">infrastructure</a> is dazzling, even just to read about.</li>
<li>We no longer need to use <a title="VaultPress - Backup and Security for Your WordPress Site" href="http://vaultpress.com/" target="_blank">VaultPress</a> for backups. They do all of this automatically, too.</li>
<li>You can <a title="Deploy Your WP Engine Hosted Application With The Ease Of Git" href="http://wpengine.com/git/" target="_blank">deploy new versions of your site by simply pushing to a Git repository</a>. No S/FTP. Just push and it&#8217;s live.</li>
<li>A completely sandboxed staging environment to do all your testing, configuring, tinkering, and client approval before you go live. <a title="WP Engine - One-Click Staging" href="http://wpengine.com/one-click-staging/" target="_blank">All with a single click of a button</a>. And you have Git push to deploy access to here too!</li>
<li>They audit your codebase for poor performing plugins, notify you, and recommend replacements that perform better. They do this for slow performing parts of themes and error logs too. it&#8217;s like having a whole team of developers working with you.</li>
<li>The speed is absolutely gross and that is saying a lot for Iowa Girl Eats, which is extremely image rich. No matter what we have tried in the past, the site is the fastest it has ever been.</li>
<li>And probably the most impressed I&#8217;ve been with them is when we had completed our migration to WP Engine, we were having issues with newly uploaded images. They would display in the WordPress post editor, but not on the live site when previewing the post. I was fairly confident it was a CDN issue, but I assumed something got setup incorrectly on our account. I cannot tell you how liberating it was to know this wasn&#8217;t my problem and I could just contact them about it. The best part, it was actually my error. I forgot to change the origin IP address on our CDN account to point to WP Engine&#8217;s server, but they figured that out for me and very kindly let me know. They figured out an issue what was my fault in a system that was not even their own!</li>
</ul>
<p>The bottom line is this&#8230;</p>
<p>As a developer, I don&#8217;t have to worry about what I don&#8217;t know or what I&#8217;ll have to become an expert on, especially with things I really don&#8217;t want to be an expert on. And my client doesn&#8217;t have to worry how her site is performing, how it is impacting her readers, hampering her ability to compose posts, or feel like she is constantly bothering me.</p>
<p>For both myself, and my client, the extra price is well worth the time we save and the stress we no longer have.</p>
<p>What I have really learned is that not all hosting is created equal. If you value your time, it&#8217;s most certainly worth every bit more.</p>
<p>You should do yourself a favor, <a title="WP Engine Affiliate Link" href="https://wpengine.com/plans/" target="_blank">sign up</a>, and give them a try.</p>
<p>Trust me. You will not regret it.</p>
<p>The post <a rel="nofollow" href="http://manovotny.com/wp-engine/">WP Engine: Is Managed WordPress Hosting Worth The Premium Price?</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://manovotny.com/wp-engine/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Introducing WP Test: The Best Tests For WordPress</title>
		<link>http://manovotny.com/wp-test/</link>
		<comments>http://manovotny.com/wp-test/#comments</comments>
		<pubDate>Wed, 27 Mar 2013 14:28:10 +0000</pubDate>
		<dc:creator><![CDATA[Michael Novotny]]></dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://manovotny.com/?p=391</guid>
		<description><![CDATA[<p>Accounting for all the variables is one of the most challenging aspects of developing for WordPress. There are so many scenarios to account for, such as WordPress versions, plugin versions, plugin conflicts, host server configurations, browsers, and the endless ways you can customize WordPress through post formats, custom post types, theme options, theme templates, etc. In &#8230; <a href="http://manovotny.com/wp-test/" class="more-link">Continue reading <span class="screen-reader-text">Introducing WP Test: The Best Tests For WordPress</span></a></p>
<p>The post <a rel="nofollow" href="http://manovotny.com/wp-test/">Introducing WP Test: The Best Tests For WordPress</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Accounting for all the variables is one of the most challenging aspects of developing for WordPress.</p>
<p>There are so many scenarios to account for, such as WordPress versions, plugin versions, plugin conflicts, host server configurations, browsers, and the endless ways you can customize WordPress through post formats, custom post types, theme options, theme templates, etc.</p>
<p>In this vast sea of variety is both the pleasure and the pain in developing WordPress themes and plugins for mass distribution.</p>
<p>Today I would like to begin to put an end to one of those variables. I would like to introduce the release of <a title="WP Test - The Best Tests For WordPress" href="http://wptest.io/" target="_blank">WP Test</a>, the best tests for <a title="WordPress" href="http://wordpress.org/" target="_blank">WordPress</a>.</p>
<p><span id="more-391"></span></p>
<p style="text-align: center;"><a href="http://manovotny.com/wp-content/uploads/2013/03/wp-test-website.png"><img class="size-medium wp-image-402 aligncenter" alt="WP Test Website" src="http://manovotny.com/wp-content/uploads/2013/03/wp-test-website-770x661.png" width="770" height="661" srcset="http://manovotny.com/wp-content/uploads/2013/03/wp-test-website-770x661.png 770w, http://manovotny.com/wp-content/uploads/2013/03/wp-test-website-1170x1005.png 1170w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p>WP Test is exhaustive set of test data to measure the quality and integrity of your plugins and themes.</p>
<p>The foundation of these tests are derived from the <a title="WordPress Theme Unit Test Codex" href="http://codex.wordpress.org/Theme_Unit_Test" target="_blank">WordPress Theme Unit Test Codex</a> data. On top of that, I added three years of leading quality, support, and testing for <a title="8BIT - Press Start" href="http://8bit.io" target="_blank">8BIT</a>, which has uncovered some corner cases in the way people use WordPress.</p>
<p><a title="WP Test: An exhaustive set of test data" href="http://wpdaily.co/wp-test/" target="_blank">WP Daily</a>, <a title="WP Test: Library of tests for themes and plugins" href="http://poststat.us/wp-test-io/" target="_blank">Post Status</a>, and <a title="The Most Exhaustive Set of WordPress Test Data" href="http://tommcfarlin.com/wordpress-test-data/" target="_blank">Tom McFarlin</a> have already given WP Test some great coverage (thanks guys!), but I want to expand upon the reasons why I created WP Test.</p>
<h3>Transparency</h3>
<p>Without question, the WordPress Theme Unit Test Codex data is good place to start. My frustration with it was born out of lack of updates. It could go more than a year without any attention, even when major updates to WordPress introduced new features that lacked examples and testing coverage. And when the test data did update, there was no indication of what had changed within the data.</p>
<p>WP Test comes with a <a title="WP Test - Changelog" href="https://github.com/manovotny/wptest/blob/master/changelog.md" target="_blank">changelog</a> indicating what has been added, removed, or changed within the data for each release. The website also has a <a title="WP Test - Release Notes" href="http://wptest.io/release-notes/" target="_blank">release notes</a> page also indicating the history of changes to the test data.</p>
<h3>Contribution</h3>
<p><a title="Contributing To WordPress" href="http://codex.wordpress.org/Contributing_to_WordPress" target="_blank">Contributing to the WordPress Codex</a> is fairly straightforward, but contributing to the test data is not.</p>
<p>By using GitHub to host the test data, anyone is free to contribute to the project by making pull requests or by adding issues. There is also a <a title="WP Test - Contact" href="http://wptest.io/contact/" target="_blank">contact</a> page on the website if you are not comfortable with <a title="Git - Fast Version Control" href="http://git-scm.com/" target="_blank">Git</a> and / or <a title="GitHub - Social Coding" href="http://github.com" target="_blank">GitHub</a>.</p>
<p>I purposely excluded the word &#8220;comprehensive&#8221; in the description of the tests. I know the test data is most likely missing coverage in some areas. That&#8217;s where the community comes in. Let me know of a test that is not covered and I will get it added to the data so we can all account for it in our products.</p>
<h3>Life</h3>
<p>Testing can be tedious and boring enough, but there is no need for the test data itself to be mundane.</p>
<p>Lorem ipsum is effective. It does simulate text flow fairly well, but it&#8217;s boring as hell. I wanted content with life and character.</p>
<p>There are no testing benefit to this, but it does inject personality and fun into traditionally dry content. This alone is a good enough reason for it to exist in this way.</p>
<h3>Purpose</h3>
<p>Not only is your test data content funny, but it&#8217;s smart and helpful.</p>
<p>Whenever possible, the test data references the <a title="WordPress Codex" href="http://codex.wordpress.org/" target="_blank">WordPress Codex</a> for best practices and <a title="WordPress Codex - Function Reference" href="http://codex.wordpress.org/Function_Reference/" target="_blank">function references</a>.</p>
<p>These kind of integration into the test data will only increase over time and lessen the barrier to resolving the issues the test data uncovers.</p>
<h3>Consolidation</h3>
<p>I had test cases scattered all over the place&#8230; Across three servers and ten WordPress installations. It was a chore to remember where everything was located, so I decided to centralize it.</p>
<p>This way everyone on the 8BIT team are consistently developing against common WordPress scenarios for both internal and personal projects.</p>
<h3>Community</h3>
<p>Sharing is caring, right?</p>
<p>I was going to consolidate all these test cases anyway, so I could have either kept it private for just our team or I could release it for the greater good of the WordPress community.</p>
<p>All it literally cost me was a domain name. That seems like a small price to pay for continuity.</p>
<p>The decision to make it public was a no brainer.</p>
<h3>The Future</h3>
<p>WP Test would be good enough as just test data, but I do have bigger plans for what it could be beyond what it is today. I would love to see it grow into an all encompassing suite of WordPress testing tools and data. Who knows if it will ever get there, but at the very least, now we can all share and contribute to an impressive set of test data.</p>
<p>Please let me know if you have any ideas, additional test cases, or feedback!</p>
<p>Let’s make WordPress testing easier and resilient together.</p>
<p>The post <a rel="nofollow" href="http://manovotny.com/wp-test/">Introducing WP Test: The Best Tests For WordPress</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://manovotny.com/wp-test/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>How To Test And Troubleshoot WordPress Plugins And Themes</title>
		<link>http://manovotny.com/test-and-troubleshoot-wordpress/</link>
		<comments>http://manovotny.com/test-and-troubleshoot-wordpress/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 14:16:21 +0000</pubDate>
		<dc:creator><![CDATA[Michael Novotny]]></dc:creator>
				<category><![CDATA[Speaking]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://manovotny.com/?p=333</guid>
		<description><![CDATA[<p>I had the incredible honor and privilege to speek at WordCamp Atlanta last week. I gave a presentation on Testing &#38; Troubleshooting WordPress Plugins &#38; Themes, which is the culmination of all that I have learned from leading quality at 8BIT for the past three years. I am posting my enture presentation along with bullet point cliff notes and &#8230; <a href="http://manovotny.com/test-and-troubleshoot-wordpress/" class="more-link">Continue reading <span class="screen-reader-text">How To Test And Troubleshoot WordPress Plugins And Themes</span></a></p>
<p>The post <a rel="nofollow" href="http://manovotny.com/test-and-troubleshoot-wordpress/">How To Test And Troubleshoot WordPress Plugins And Themes</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>I had the incredible honor and privilege to speek at <a title="WordCamp Atlanta 2013" href="http://2013.atlanta.wordcamp.org/" target="_blank">WordCamp Atlanta</a> last week.</p>
<p>I gave a <a title="Testing &amp; Troubleshooting WordPress Plugins &amp; Themes" href="http://manovotny.com/speaking-at-wordcamp-atlanta/">presentation on Testing &amp; Troubleshooting WordPress Plugins &amp; Themes</a>, which is the culmination of all that I have learned from leading quality at <a title="8BIT - Press Start" href="http://8bit.io/" target="_blank">8BIT</a> for the past three years.</p>
<p>I am posting my enture presentation along with bullet point cliff notes and resource links for each slide.</p>
<p><span id="more-333"></span></p>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-01.jpg"><img class="alignnone size-medium wp-image-334" alt="Michael Novotny" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-01-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-01-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-01-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-01.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>I live from Des Moines, IA.</li>
<li>I am a frontend developer for <a title="John Deere" href="http://deere.com/" target="_blank">John Deere</a>.</li>
<li>My website is <a title="Michael Novotny" href="http://manovotny.com/">manovotny.com</a>.</li>
<li>You can follow me on Twitter at <a title="Michael Novotny on Twitter" href="http://twitter.com/manovotny" target="_blank">@manovotny</a>.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-02.jpg"><img class="alignnone size-medium wp-image-335" alt="8BIT - Press Start" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-02-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-02-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-02-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-02.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>I have been working for <a title="8BIT - Press Start" href="http://8bit.io/" target="_blank">8BIT</a> for three years.</li>
<li>I oversee quality for 8BIT, which means I test the integrity of our products before they are released.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-03.jpg"><img class="alignnone size-medium wp-image-336" alt="Testing &amp; Troubleshooting WordPress Plugins &amp; Themes" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-03-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-03-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-03-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-03.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-04.jpg"><img class="alignnone size-medium wp-image-337" alt="Outline" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-04-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-04-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-04-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-04.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-05.jpg"><img class="alignnone size-medium wp-image-338" alt="Safeguards" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-05-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-05-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-05-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-05.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-06.jpg"><img class="alignnone size-medium wp-image-339" alt="jQuery And Other Default Scripts" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-06-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-06-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-06-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-06.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>Most theme, and especially plugin issues, can be mitigated by properly using <a title="jQuery" href="http://jquery.com/" target="_blank">jQuery</a>.</li>
<li>Do not add your own version of jQuery.</li>
<li>Do not deregister the version of jQuery that comes with WordPress.</li>
<li>To use jQuery, properly enqueue the version of jQuery that comes with WordPress.</li>
<li>While jQuery is the most popular example, there are actually several included scripts that come with WordPress, so be sure and <a title="Default Scripts Included and Registered by WordPress" href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Default_Scripts_Included_and_Registered_by_WordPress" target="_blank">properly queue</a> those versions instead of using your own.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-07.jpg"><img class="alignnone size-medium wp-image-340" alt="WordPress Conditionals" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-07-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-07-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-07-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-07.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>Use <a title="Conditional Tags" href="http://codex.wordpress.org/Conditional_Tags " target="_blank">WordPress conditionals</a> to only display scripts on pages when they are needed. This reduces the changes of scripts conflicting with each other.</li>
<li>For example, only load the CSS and / or JavaScript for a widget plugin if that widget is being used and be displayed on the current page.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-08.jpg"><img class="alignnone size-medium wp-image-341" alt="Testing" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-08-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-08-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-08-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-08.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-09.jpg"><img class="alignnone size-medium wp-image-342" alt="WP Test - Data" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-09-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-09-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-09-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-09.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>I created <a title="WP Test - The Best Tests For WordPress" href="http://wptest.io" target="_blank">WP Test</a> to help identify issues while developing WordPress themes and plugins.</li>
<li>It is a fantastically exhaustive set of test data to measure the integrity of your plugins and themes.</li>
<li>It contains lessons learned from over three years of theme and plugin support, and baffling corner cases, to create a potent cocktail of simulated, quirky user content.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-10.jpg"><img class="alignnone size-medium wp-image-343" alt="Plugins" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-10-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-10-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-10-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-10.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-11.jpg"><img class="alignnone size-medium wp-image-344" alt="Setup wp-config.php" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-11-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-11-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-11-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-11.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>In your development environments, tell WordPress to start logging and reporting errors so you can address them.</li>
<li>Find your wp-config.php file, which should be at the root of your WordPress installation. Just replace the existing <code>define( 'WP_DEBUG', false );</code> with the code below.</li>
</ul>
<script src="https://gist.github.com/manovotny/5193378.js?file=debug-wp-config.php"></script>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-12.jpg"><img class="alignnone size-medium wp-image-345" alt="Debug Bar" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-12-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-12-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-12-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-12.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li><a title="Debug Bar" href="http://wordpress.org/extend/plugins/debug-bar/" target="_blank">Debug Bar</a> is a debugging menu added to the admin bar that quickly shows query, cache, and other helpful debugging information.</li>
<li>A very useful way to view the errors being logged and reported.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-13.jpg"><img class="alignnone size-medium wp-image-346" alt="Debug Bar Example" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-13-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-13-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-13-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-13.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>Notice the &#8220;Debug&#8221; button in the WordPress admin bar turns red when there is a error or warning.</li>
<li>Click it to open the Debug Bar panel.</li>
<li>Notice the message it&#8217;s reporting so you can fix them.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-14.jpg"><img class="alignnone size-medium wp-image-347" alt="Debug Bar Extensions &amp; Add-ons" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-14-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-14-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-14-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-14.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p>There are many Debug Bar extensions that can provide a deeper view into what is happening.</p>
<ul>
<li><a title="Debug Bar Actions and Filters Addon" href="http://wordpress.org/extend/plugins/debug-bar-actions-and-filters-addon/" target="_blank">Debug Bar Actions and Filters Addon</a></li>
<li><a title="Debug Bar Console" href="http://wordpress.org/extend/plugins/debug-bar-console/" target="_blank">Debug Bar Console</a></li>
<li><a title="Debug Bar Cron" href="http://wordpress.org/extend/plugins/debug-bar-cron/" target="_blank">Debug Bar Cron</a></li>
<li><a title="Debug Bar Post Meta" href="http://wordpress.org/extend/plugins/tdd-debug-bar-post-meta/" target="_blank">Debug Bar Post Meta</a></li>
<li><a title="Debug Bar Query Tracer" href="http://wordpress.org/extend/plugins/debug-bar-query-tracer/" target="_blank">Debug Bar Query Tracer</a></li>
<li><a title="Debug Bar Super Globals" href="http://wordpress.org/extend/plugins/debug-bar-super-globals/" target="_blank">Debug Bar Super Globals</a></li>
<li><a title="Debug Bar Transients" href="http://wordpress.org/extend/plugins/debug-bar-transients/" target="_blank">Debug Bar Transients</a></li>
<li><a title="Debug Bar-Extender" href="http://wordpress.org/extend/plugins/debug-bar-extender/" target="_blank">Debug Bar-Extender</a></li>
<li><a title="Kint Debugger" href="http://wordpress.org/extend/plugins/kint-debugger/" target="_blank">Kint Debugger</a></li>
<li><a title="WooCommerce Debug Bar" href="http://wordpress.org/extend/plugins/woocommerce-debug-bar/" target="_blank">WooCommerce Debug Bar</a></li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-15.jpg"><img class="alignnone size-medium wp-image-348" alt="Log Deprecated Notices" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-15-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-15-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-15-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-15.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li><a title="Log Deprecated Notices" href="http://wordpress.org/extend/plugins/log-deprecated-notices/" target="_blank">Log Deprecated Notices</a> is a plugin that helps you identify old WordPress API functions your theme or plugin is currently using so you can update to the newer methods.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-16.jpg"><img class="alignnone size-medium wp-image-349" alt="Log Deprecated Notices Example" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-16-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-16-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-16-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-16.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>Log Deprecated Notices logs its calls under the Tools menu in the WordPress admin.</li>
<li>Sometimes themes or plugins will want to keep these deprecated calls anyway, especially if they want to support older versions of WordPress, so you will need to make that call on your own when reported.</li>
<li>Note that it is a best practice to keep up-to-date with the newer methods instead of keeping legacy support whenever possible.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-17.jpg"><img class="alignnone size-medium wp-image-350" alt="Theme-Check" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-17-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-17-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-17-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-17.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li><a title="Theme-Check" href="http://wordpress.org/extend/plugins/theme-check/" target="_blank">Theme-Check</a> is a simple and easy way to test your theme for all the latest WordPress standards and practices.</li>
<li>It is located under the Appearance menu in the WordPress admin.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-18.jpg"><img class="alignnone size-medium wp-image-351" alt="Theme-Check Example" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-18-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-18-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-18-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-18.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>Sometimes Theme-Check reports false positives, so you will need to determine if something is a legitimate claim that needs to be fixed or not.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-19.jpg"><img class="alignnone size-medium wp-image-352" alt="Theme Mentor" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-19-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-19-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-19-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-19.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li><a title="Theme Mentor" href="http://wordpress.org/extend/plugins/theme-mentor/" target="_blank">Theme Mentor</a> is the cousin of Theme-Check plugin.</li>
<li>It does deeper code analysis to ensure best practices, like checking for the dequeueing of jQuery as we discussed above.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-20.jpg"><img class="alignnone size-medium wp-image-353" alt="RTL Tester" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-20-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-20-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-20-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-20.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li><a title="RTL Tester" href="http://wordpress.org/extend/plugins/rtl-tester/" target="_blank">RTL Tester</a> is essential for troubleshooting for plugins and themes that offer support for right-to-left reading languages.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-21.jpg"><img class="alignnone size-medium wp-image-354" alt="Slim Jetpack" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-21-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-21-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-21-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-21.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li><a title="Slim Jetpack" href="http://wordpress.org/extend/plugins/slimjetpack/" target="_blank">Slim Jetpack</a> is simply <a title="Jetpack for WordPress" href="http://jetpack.me/" target="_blank">Jetpack</a> without the need to connect to a <a title="WordPress.com" href="http://wordpress.com/" target="_blank">WordPress.com</a> account.</li>
<li>Handy for development environments who do not need the connection to WordPress.com to test Jetpack features.</li>
<li>Someone in the Q&amp;A session mentioned that Jetpack does now ship with a &#8220;Developer Mode&#8221; which you can enable to not require the connection to WordPress.com while in development environments. Simply add the code below to <code>wp-config.php</code> to enable developer mode.</li>
</ul>
<script src="https://gist.github.com/manovotny/5193378.js?file=jetpack-developer-mode-wp-config.php"></script>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-22.jpg"><img class="alignnone size-medium wp-image-355" alt="Troubleshooting" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-22-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-22-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-22-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-22.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-23.jpg"><img class="alignnone size-medium wp-image-356" alt="Browser Cache" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-23-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-23-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-23-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-23.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>At some point in your development career, you will be bit by browser cache.</li>
<li>If you are not seeing changes you&#8217;ve made to CSS and JavaScript files, try clearing your browser cache.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-24.jpg"><img class="alignnone size-medium wp-image-357" alt="Plugins vs. Themes vs. WordPress Core" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-24-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-24-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-24-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-24.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>We use a process of elimination procedure at 8BIT to determine where to begin looking for a point of failure.</li>
<li>If things are not working, we first disable all plugins to see if that resolves the issue. If things start working again, then we enable plugins one by one until the issue reappears. Then we know we&#8217;ve found our culprit and we can begin troubleshooting the plugin.</li>
<li>If plugins are not the issue, then we try switching to one of the default WordPress themes like TwentyEleven or TwentyTwelve. If the issue goes away, then we know it&#8217;s a theme problem we need to resolve.</li>
<li>If both plugins and themes are not causing the issue, then you know you have an issue with WordPress core or a server configuration issue.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-25.jpg"><img class="alignnone size-medium wp-image-358" alt="Chrome Developer Tools" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-25-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-25-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-25-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-25.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li><a title="Chrome Developer Tools" href="https://developers.google.com/chrome-developer-tools/" target="_blank">Chrome Developer Tools</a> is the most advanced way to inspect what is going on underneath the covers of your website.</li>
<li>The <a title="Firebug - Web Development Evolved" href="http://getfirebug.com/" target="_blank">Firebug</a> extension / add-on is a good alternative for other browsers, though it is not as capable as Chrome Developer Tools.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-26.jpg"><img class="alignnone size-medium wp-image-359" alt="Launch Chrome Developer Tools" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-26-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-26-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-26-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-26.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>You can open Chrome Developer Tools by right-clicking anywhere on the website and select <code>Inspect Element</code>.</li>
<li>This will open a panel at the bottom of your browser (I have moved mine to the right).</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-27.jpg"><img class="alignnone size-medium wp-image-360" alt="Chrome Developer Tools - Elements Tab" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-27-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-27-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-27-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-27.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>The <code>Elements</code> tab contains markup and CSS for the current page.</li>
<li>In this panel you can select an element. In the screenshot I have selected the <code>&lt;div class="container"&gt;&lt;/div&gt;</code> element. This also highlights that element on the web page itself in a light blue overlay as seen in the top navigation of the website.</li>
<li>The far right of the screenshot also shows the CSS being applied to the element, the selector that is causing the CSS to be applied, as well as the order the CSS styles were loaded in. These CSS properties an values are editable, so you can make live changes to your website and see what it looks like without even refreshing your browser.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-28.jpg"><img class="alignnone size-medium wp-image-361" alt="Chrome Developer Tools - Sources Tab" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-28-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-28-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-28-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-28.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>The <code>Sources</code> tab shows you all the CSS and JavaScript files that were loaded as a part of the page.</li>
<li>You can open files by clicking the little file browser icon above the line numbers or by pressing <code>Control + R</code> or <code>⌘R</code> while in the tab.</li>
<li>The content of these files can be edited live and the changes will take place immediately without needing to refresh the page. This is a great way to quickly troubleshoot.</li>
<li>You can also set breakpoints by clicking on a line number. The next time the page is loaded, it will stop there and you can inspect variable values to see what is going wrong.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-29.jpg"><img class="alignnone size-medium wp-image-362" alt="Chrome Developer Tools - Console Tab" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-29-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-29-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-29-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-29.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>The <code>Console</code> tab is a essentially a full on Terminal or Command Prompt.</li>
<li>For the sake of troubleshooting, all we need to use it for is to see if the site is throwing any errors. It will report things like not being able to find a file or if your JavaScript is throwing an error. Just keep it open at all timers during testing and make sure nothing pops up in there.</li>
<li>There can be false positives, like loading a YouTube video. These errors can just be ignored.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-30.jpg"><img class="alignnone size-medium wp-image-363" alt="Cross Browser &amp; Device Testing" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-30-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-30-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-30-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-30.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-31.jpg"><img class="alignnone size-medium wp-image-364" alt="Viewport Resizer" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-31-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-31-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-31-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-31.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li><a title="Viewport Resizer - Responsive Design Bookmarklet" href="http://lab.maltewassermann.com/viewport-resizer/" target="_blank">Viewport Resizer</a> is a handy bookmarklet that will load your site in a viewport the size of common devices. This is helpful in testing responsive design.</li>
<li>It is one of the few plugins that accurately display websites that are not built to be fully responsive, yet you want to still see what it looks like on a mobile device.</li>
<li>Someone in the Q&amp;A session also recommended the <a title="Web Developer" href="http://chrispederick.com/work/web-developer/" target="_blank">Web Developer</a> extension as an alternative that properly displays websites with the correct user agents.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-32.jpg"><img class="alignnone size-medium wp-image-365" alt="Viewport Resizer Example" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-32-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-32-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-32-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-32.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>Note that you can select different devices from the Viewport Resizer Toolbar in the upper left corner of the browser window.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-33.jpg"><img class="alignnone size-medium wp-image-366" alt="BrowserStack" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-33-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-33-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-33-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-33.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li><a title="BrowserStack - Live, Web-Based Cross Browser Testing" href="http://www.browserstack.com/" target="_blank">BrowserStack</a> is a paid service that will give you access to testing your website on all browsers, devices, and operating systems.</li>
<li>It also comes with built-in debugging tools.</li>
<li>Someone in the Q&amp;A session also mentioned that if you have a Mac, you can pair Xcode&#8217;s iPhone / iPad simulator to Safari&#8217;s Web Inspecter to debug. You can also plugin your iPhone / iPad via USB and use Safari 6 to live debug webpages on your iDevice with Web Inspecter. This Webdesigntuts+ <a title="Quick Tip: Using Web Inspector to Debug Mobile Safari" href="http://webdesign.tutsplus.com/tutorials/workflow-tutorials/quick-tip-using-web-inspector-to-debug-mobile-safari/" target="_blank">article</a> will walk you through that process.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-34.jpg"><img class="alignnone size-medium wp-image-367" alt="BrowserStack Example" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-34-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-34-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-34-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-34.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<ul>
<li>An example of a website in IE 8 running on a Windows 7 machine all from within my browser.</li>
<li>The websites are fully interactive not just a screenshots.</li>
</ul>
<p><a href="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-35.jpg"><img class="alignnone size-medium wp-image-368" alt="Questions?" src="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-35-770x433.jpg" width="770" height="433" srcset="http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-35-770x433.jpg 770w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-35-1170x658.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/03/wordcamp-atlanta-2013-slide-35.jpg 1280w" sizes="(max-width: 770px) 100vw, 770px" /></a></p>
<p>A special thanks to <a title="Jared Erickson" href="http://jarederickson.com/" target="_blank">Jared Erickson</a> for making our team look <a title="In Sync" href="http://8bit.io/in-sync/" target="_blank">united</a> in our presentations. The guy can make <em>anything</em> look good, even slides and presentations.</p>
<p>And thanks to everyone who attended my talk and to everyone who came to WordCamp Atlanta. It was great to meet you all face-to-face and the conversations we had are priceless.</p>
<p>Please let me know if you have any additional questions about my talk or these notes. I would love to help answer them for you.</p>
<h3>Slides</h3>
<p>I am also making all the slides available in a single PDF, which you can download below.</p>
<p><a class="btn btn-primary" href="http://manovotny.com/wp-content/uploads/2013/03/How-To-Test-Troubleshoot-WordPress-Plugins-Themes.pdf" target="_blank">Download Slides</a></p>
<h3>Video</h3>
<p>Below is the video recording of the session, if you would like to watch it &#8220;live&#8221; instead.</p>
<p>You can also <a title="Michael Novotny: Testing / Troubleshooting WordPress Plugins &amp; Themes" href="http://wordpress.tv/2013/04/23/michael-novotny-testing-troubleshooting-wordpress-plugins-themes/" target="_blank">watch this talk on WordPress.tv</a> along with all the other <a title="WordCamp Atlanta 2013 Videos" href="http://wordpress.tv/event/wordcamp-atlanta-2013/" target="_blank">WordCamp Atlanta 2013 videos</a>.</p>
<div class="jetpack-video-wrapper"><iframe class='youtube-player' type='text/html' width='660' height='402' src='http://www.youtube.com/embed/T9JghRb9I-4?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></div>
<p>The post <a rel="nofollow" href="http://manovotny.com/test-and-troubleshoot-wordpress/">How To Test And Troubleshoot WordPress Plugins And Themes</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://manovotny.com/test-and-troubleshoot-wordpress/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Speaking At WordCamp Atlanta</title>
		<link>http://manovotny.com/speaking-at-wordcamp-atlanta/</link>
		<comments>http://manovotny.com/speaking-at-wordcamp-atlanta/#comments</comments>
		<pubDate>Fri, 15 Mar 2013 14:05:06 +0000</pubDate>
		<dc:creator><![CDATA[Michael Novotny]]></dc:creator>
				<category><![CDATA[Speaking]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://manovotny.com/?p=324</guid>
		<description><![CDATA[<p>For the next two days I will be attending WordCamp Atlanta. I also have the privilege of speaking this year. I will be giving a presentation on Testing &#38; Troubleshooting WordPress Plugins &#38; Themes on Saturday, March 16th at 10:00am EST. So if you want some practical techniques, tips, tools, and resources on how to help test, troubleshoot, &#8230; <a href="http://manovotny.com/speaking-at-wordcamp-atlanta/" class="more-link">Continue reading <span class="screen-reader-text">Speaking At WordCamp Atlanta</span></a></p>
<p>The post <a rel="nofollow" href="http://manovotny.com/speaking-at-wordcamp-atlanta/">Speaking At WordCamp Atlanta</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>For the next two days I will be attending <a title="WordCamp Atlanta 2013" href="http://2013.atlanta.wordcamp.org/" target="_blank">WordCamp Atlanta</a>.</p>
<p>I also have the privilege of speaking this year. I will be giving a presentation on Testing &amp; Troubleshooting WordPress Plugins &amp; Themes on Saturday, March 16th at 10:00am EST.</p>
<p><span id="more-324"></span></p>
<p>So if you want some practical techniques, tips, tools, and resources on how to help test, troubleshoot, and proactively address common WordPress plugin and theme issues, then come find me and have a listen.</p>
<p>I will post my slides after I actually give my presentation.</p>
<p>Looking forward to meeting all of you I know digitally and to meeting many new WordPressers. Come and find me and say hello!</p>
<p>The post <a rel="nofollow" href="http://manovotny.com/speaking-at-wordcamp-atlanta/">Speaking At WordCamp Atlanta</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://manovotny.com/speaking-at-wordcamp-atlanta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How To Fix WordPress Admin Styles Not Loading</title>
		<link>http://manovotny.com/fix-wordpress-admin-styles-not-loading/</link>
		<comments>http://manovotny.com/fix-wordpress-admin-styles-not-loading/#comments</comments>
		<pubDate>Thu, 28 Feb 2013 15:19:44 +0000</pubDate>
		<dc:creator><![CDATA[Michael Novotny]]></dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://manovotny.com/?p=297</guid>
		<description><![CDATA[<p>This is one of those articles you tuck away in Evernote or your favorite &#8220;read it later&#8221; app because it will most likely not mean anything to you right this moment, but when it does happen, you will be glad you saved this. When I got my new computer, I took the opportunity to clean &#8230; <a href="http://manovotny.com/fix-wordpress-admin-styles-not-loading/" class="more-link">Continue reading <span class="screen-reader-text">How To Fix WordPress Admin Styles Not Loading</span></a></p>
<p>The post <a rel="nofollow" href="http://manovotny.com/fix-wordpress-admin-styles-not-loading/">How To Fix WordPress Admin Styles Not Loading</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>This is one of those articles you tuck away in <a title="Evernote" href="http://evernote.com" target="_blank">Evernote</a> or your favorite &#8220;read it later&#8221; app because it will most likely not mean anything to you right this moment, but when it does happen, you will be glad you saved this.</p>
<p>When I got my <a title="13″ MacBook Air vs. 13″ Retina MacBook Pro…Fight!" href="http://manovotny.com/macbook-air-vs-retina/">new computer</a>, I took the opportunity to clean up my local development environment. That meant a fresh installation of <a title="MAMP Pro" href="http://www.mamp.info/en/mamp-pro/index.html" target="_blank">MAMP Pro</a> and some new databases.</p>
<p>I got everything setup and I was settling in for a good, long second shift when I saw this in my WordPress admin.</p>
<figure id="attachment_299" style="width: 557px" class="wp-caption aligncenter"><img class="size-full wp-image-299" title="WordPress Admin Styles Missing" alt="WordPress Admin Styles Missing" src="http://manovotny.com/wp-content/uploads/2013/02/wordpress-admin-missing-styles.png" width="557" height="571" /><figcaption class="wp-caption-text">WordPress admin CSS styles missing.</figcaption></figure>
<p>All the WordPress admin styles were not loading.</p>
<p>This was <em>not</em> what I had planned for my evening&#8230; <em>*sigh*</em></p>
<p><span id="more-297"></span></p>
<p>I wasn&#8217;t sure what was going on&#8230; Could it be something wonky with my new computer? Was it due to updating to the shiny new WordPress 3.5? I tried to reinstall WordPress a couple of times to no avail, so intense Google searching ensued.</p>
<p>I cannot remember how many articles I read or how many suggested hacks I attempted. I do know it took well over an hour and none of them worked. Then I found something buried deep in some sketchy looking site, but it worked!</p>
<p>I am not trying to hold out on giving credit to the person who suggested it. I simply did not think to save the URL at the time. But this is what the article suggested.</p>
<p>And let me be clear&#8230; I do not encourage WordPress core hacks, but in the moment, I just wanted to fix it and move on with my small window of time I had to work on my hotfix.</p>
<p>In the <code>wp-admin/load-styles.php</code> file, find this line of code&#8230;</p>
<script src="https://gist.github.com/manovotny/5014426.js?file=find-this-line-in-load-styles.php"></script>
<p>&#8230;and change it to this&#8230;</p>
<script src="https://gist.github.com/manovotny/5014426.js?file=replace-existing-line-in-load-styles.php"></script>
<p>&#8230;and then simply refresh your WordPress admin screen a few times. You should see the WordPress admin CSS styles come back to normal.</p>
<p>That&#8217;s it! And you do not even have to leave this WordPress core modification in place. Once the admin styles come back, you can revert the line of code back to what it was and you should still have smooth sailing after that.</p>
<p>Bizarre&#8230;</p>
<p>Dan in the comments also <a title="Dan suggests a solution to fix WordPress admin styles not loading using wp-config.php" href="http://manovotny.com/fix-wordpress-admin-styles-not-loading/#comment-924">said</a> that simply adding the code below to your <code>wp-config.php</code> file will also do the same trick. It certainly feels better than modifying the WordPress core, even if it is just temporarily.</p>
<script src="https://gist.github.com/manovotny/5014426.js?file=wp-config.php"></script>
<p>So if you ever run across this, perhaps it can save you some time and get you back on track. I am not saying this will work in all cases of the WordPress admin not loading the styles, but this is what worked for me.</p>
<p>I have no idea why this works, so if you have a more technical or detailed explanation of why, then I would love to hear so in the comments.</p>
<p>I have never had this happen again, otherwise, I will dig in much deeper next time to see if I can identify a root cause.</p>
<p>The post <a rel="nofollow" href="http://manovotny.com/fix-wordpress-admin-styles-not-loading/">How To Fix WordPress Admin Styles Not Loading</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://manovotny.com/fix-wordpress-admin-styles-not-loading/feed/</wfw:commentRss>
		<slash:comments>47</slash:comments>
		</item>
		<item>
		<title>13&#8243; MacBook Air vs. 13&#8243; Retina MacBook Pro&#8230;Fight!</title>
		<link>http://manovotny.com/macbook-air-vs-retina/</link>
		<comments>http://manovotny.com/macbook-air-vs-retina/#comments</comments>
		<pubDate>Wed, 20 Feb 2013 16:05:55 +0000</pubDate>
		<dc:creator><![CDATA[Michael Novotny]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://manovotny.com/?p=254</guid>
		<description><![CDATA[<p>I have to admit, I have been pretty spoiled when it comes to computers over the past several years. I have not bought a computer for myself since 2007. I have been incredibly fortunate to have employers give me top-of-the-line hardware for both company and personal use. My new job is decidedly more corporate, which means it came time &#8230; <a href="http://manovotny.com/macbook-air-vs-retina/" class="more-link">Continue reading <span class="screen-reader-text">13&#8243; MacBook Air vs. 13&#8243; Retina MacBook Pro&#8230;Fight!</span></a></p>
<p>The post <a rel="nofollow" href="http://manovotny.com/macbook-air-vs-retina/">13&#8243; MacBook Air vs. 13&#8243; Retina MacBook Pro&#8230;Fight!</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><img class="alignnone size-medium wp-image-255" title="MacBook Air vs. Retina" src="http://manovotny.com/wp-content/uploads/2013/01/macbook-air-vs-retina-770x276.jpg" alt="MacBook Air vs. Retina" width="770" height="276" srcset="http://manovotny.com/wp-content/uploads/2013/01/macbook-air-vs-retina-770x276.jpg 770w, http://manovotny.com/wp-content/uploads/2013/01/macbook-air-vs-retina-1170x420.jpg 1170w, http://manovotny.com/wp-content/uploads/2013/01/macbook-air-vs-retina.jpg 1323w" sizes="(max-width: 770px) 100vw, 770px" /></p>
<p>I have to admit, I have been pretty spoiled when it comes to computers over the past several years. I have not bought a computer for myself since 2007. I have been incredibly fortunate to have employers give me top-of-the-line hardware for both company and personal use.</p>
<p>My new job is decidedly more corporate, which means it came time for me to once again separate work and personal computer use.</p>
<p>Now, which computer to get?</p>
<p><span id="more-254"></span></p>
<p>In the past six years, I have gone from a 15&#8243; MacBook Pro, to a 17&#8243; MacBook Pro, to a 15&#8243; Retina MacBook Pro. I sadly had to return the latter when I <a title="Breaking Up With Flash" href="http://manovotny.com/flash/">resigned</a>. I also knew I would be getting another 15&#8243; MacBook Pro at my new gig, though not a retina one. So with my more demanding development environment on my work machine, it seemed a bit overkill to also have a 15&#8243; MacBook Pro of some flavor as a personal machine too.</p>
<p>This brought the battle down to the 13&#8243; beauties&#8230; The MacBook Air vs. the Retina MacBook Pro.</p>
<h3>Pre-Game</h3>
<p>Nearly all of my close friends all sport a MacBook Air. They swear by the machine as the ultimate combination of portability and power. I had some reservations about the power (again, I have been spoiled) and the screen, but they all convinced me that everything would be ok.</p>
<p>I had also heard a rumor that the 13&#8243; Retina MacBook Pro was graphically underpowered trying to serve up all that sweet, sweet retina, which gave me pause as well.</p>
<p>The good news is, Apple also allows you to return a computer, no questions asked, within 14 days. WIth that safety net in place, I decided to purchase the Air first as the most svelte and affordable option.</p>
<h3>13&#8243; MacBook Air</h3>
<p>By far, the most appealing aspect of the Air is its form factor. The thing is ridiculously light and thin. I mean, I have been to the Apple Store and seen one, but you do not fully appreciate its agility until you own one and actually use it and lug it around. It is the most ridiculous computer I have ever owned.</p>
<p>There were no performance issues, since I am not running an enterprise app environment. Yes, I am maxing out my RAM usage more often, but nothing to the point where I saw performance hits.</p>
<p>But the screen&#8230; It is very, very sad.</p>
<p><strong>Display Manufacturers</strong></p>
<p>The first thing you need to know is that there are two different manufactures of the MacBook Air displays, LG and Samsung. It is a complete toss-up as to which one you will get. Most agree that the Samsung display is far superior to the LG display. Mine was an LG and all the ones at my local Apple Store were Samsung. Side-by-side, the different was astounding. The LG is incredibly dull and washed out compared to the vibrant and rich Samsung.</p>
<p>To determine what display your MacBook Air has, you can launch Terminal and enter this command.</p>
<script src="https://gist.github.com/manovotny/4988450.js"></script>
<p>The command will spit out a string of letters and numbers. If the output starts with <code>LP</code>, then you know you have an LG display. Anything else should be a Samsung display.</p>
<p><strong>Color Profiles</strong></p>
<figure id="attachment_271" style="width: 620px" class="wp-caption aligncenter"><img class="size-full wp-image-271" title="MacBook Air Calibrated vs. Uncalibrated Display" src="http://manovotny.com/wp-content/uploads/2013/02/macbook-air-calibrated-vs-uncalibrated-display.jpg" alt="MacBook Air Calibrated vs. Uncalibrated Display" width="620" height="381" /><figcaption class="wp-caption-text"><a title="Fix Dull Colors &amp; Contrasts on New MacBook Air/Pro by Calibrating the Display" href="http://osxdaily.com/2012/06/29/fix-dull-color-contrast-on-mac-screen-calibrate-display/">Image by OS X Daily.</a></figcaption></figure>
<p>One way to overcome the LG issues is to calibrate your display. To calibrate your Mac, you can go to <code>System Preferences &gt; Displays &gt; Color</code>. You can walk through the process yourself (do the advanced mode) or you can scour the internet for <a title="ICC Profile" href="http://en.wikipedia.org/wiki/ICC_profile" target="_blank">ICC color profiles</a> to install on your machine.</p>
<p>I had mixed results doing the process myself, so I spent hours looking for the best color profile to install. I searched endless forums threads until I came up with the best I could find. I saved you some time and attached what I considered the best three I found.</p>
<p><a class="btn btn-primary" title="Download MacBook Air Color Profiles" href="http://manovotny.com/wp-content/uploads/2013/02/macbook-air-color-profiles.zip">Download MacBook Air Color Profiles</a></p>
<p>To install color profiles Macs:</p>
<ol>
<li>In Finder, navigate to <code>/Library/ColorSync/Profiles/Displays/</code> and drop in the .icc files.</li>
<li>Go to <code>System Preferences &gt; Displays &gt; Color</code> and select which color profile to use.</li>
</ol>
<p>In the end, I simply could not look past the screen. It bothered me every single time I sat down at my laptop. There was no way I could keep it.</p>
<h3>13&#8243; Retina MacBook Pro</h3>
<p>So I went back to the Apple Store and traded in the MacBook AIr with zero hassles and walked out with a retina MacBook Pro. In a word&#8230; Stunning.</p>
<p>Like I said, I had used a retina MacBook Pro for 8 months. My iPhone is also retina. My eyes are not only drawn to the sharpness, but they had become accustomed to it. I could go on and on about the screen, but <a title="Brian Gardner" href="https://twitter.com/bgardner" target="_blank">Brian Gardner</a>, who was a diehard MacBook Air fan, sums up everything I could try to articulate in <a title="Why I Sold My 13″ Air for a Macbook Pro Retina Display" href="http://www.briangardner.com/macbook-pro-retina-display/" target="_blank">why he sold his 13″ Air for a retina MacBook Pro</a>.</p>
<p>Aside from the screen&#8217;s incredible sharpness, it gives you a higher screen resolution compared to the Air, also due to the retina goodness. Developer and designers alike will love those extra pixels. The performance is better than the Air due to beefier hardware. I have never experienced the rumored sluggishness others had mentioned due to the lower end graphics card and the retina.</p>
<p>Apple even came out with a <a title="Apple Updates Retina MacBook Pro with New Processors, Drops Pricing on 13-Inch Models and High-End MacBook Air" href="http://www.macrumors.com/2013/02/13/apple-updates-retina-macbook-pro-with-lower-pricing-drops-pricing-on-high-end-macbook-air/" target="_blank">hardware refresh and price reduction</a> on the retina MacBooks last week making this decision an absolute no brainer.</p>
<h3>One Month Review</h3>
<p>It has now been one month since I settled in on my decision to keep the 13&#8243; Retina MacBook Pro.</p>
<p>I have zero regrets. This is the best machine I have ever owned. The perfect combination of power and portability, just like the MacBook Air, but a screen I never tire of staring at all day. A far cry from loathing every morning when I sat down with the MacBook Air wondering if I would ever get used to the dull screen.</p>
<p>Do yourself a favor and just get this machine. You will not regret it. You have my word.</p>
<p>The post <a rel="nofollow" href="http://manovotny.com/macbook-air-vs-retina/">13&#8243; MacBook Air vs. 13&#8243; Retina MacBook Pro&#8230;Fight!</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://manovotny.com/macbook-air-vs-retina/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Breaking Up With Flash</title>
		<link>http://manovotny.com/flash/</link>
		<comments>http://manovotny.com/flash/#comments</comments>
		<pubDate>Wed, 02 Jan 2013 21:14:46 +0000</pubDate>
		<dc:creator><![CDATA[Michael Novotny]]></dc:creator>
				<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://manovotny.com/?p=219</guid>
		<description><![CDATA[<p>My relationship with Adobe Flash started in 2006. I owe a lot to Flash. It has shaped my professional development career for the past six years and paid for our wedding, our house, two cars, and two kids. I have immense gratitude and respect for the platform. But things change, especially in technology. Today is bittersweet. Today &#8230; <a href="http://manovotny.com/flash/" class="more-link">Continue reading <span class="screen-reader-text">Breaking Up With Flash</span></a></p>
<p>The post <a rel="nofollow" href="http://manovotny.com/flash/">Breaking Up With Flash</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>My relationship with <a title="Adobe Flash Player" href="http://www.adobe.com/products/flashplayer.html" target="_blank">Adobe Flash</a> started in 2006. I owe a lot to Flash. It has shaped my professional development career for the past six years and paid for our wedding, our house, two cars, and two kids. I have immense gratitude and respect for the platform.</p>
<p>But things change, especially in technology.</p>
<p>Today is bittersweet. Today I am officially breaking up with Flash&#8230;for good.</p>
<p>It&#8217;s not you, Flash. It&#8217;s me. It is time to see other platforms.</p>
<p><span id="more-219"></span></p>
<p>My wife and I needed money to pay for our wedding, so I started freelancing to raise the extra cash. The HTML, CSS, and JavaScript landscape was completely different six years ago&#8230; Does anyone remember slicing an image into nine pieces to get round corners? That kind of frustration made Flash an easy choice at the time. I could simply draw a rounded rectangle on the stage and I was done! Immediate gratification. I paid $100 for a screencast course on Advanced Flash Website Development and the rest is history.</p>
<p>I started out doing simple Flash websites for about a year. It wasn&#8217;t long before I started to build advanced Flash applications. Flash was never meant to create websites or applications, but the Flash development community took it there. Adobe eventually responded by creating <a title="Adobe Flex" href="http://www.adobe.com/products/flex.html" target="_blank">Adobe Flex</a>, which at its core is still Flash, but with a much more feature rich framework. Flex gave Flash the ability to become a viable enterprise development platform and it took off like a rocket.</p>
<p>Flex gave me the opportunity to work with some of the best RIA (Rich Internet Application) companies in the world. The experience I gained in learning how to architect complex web apps was invaluable. I am very thankful for the chance to work with some of the best and brightest developers in the industry.</p>
<p>The beginning of the end, for me, was in 2010 when Steve Jobs published his <a title="Steve Job's Thoughts on Flash" href="http://www.apple.com/hotnews/thoughts-on-flash/" target="_blank">Thoughts on Flash</a>. I believe this single article is responsible for the current landscape of technology, namely the two differing perspectives of Google and Apple. Most of my colleagues fell into the Google camp due to their allegiance to Flash. I took Steve&#8217;s article as a wake up call. I knew that it would be irresponsible of me to continue to invest my professional career into a language that was dead or dying, so I began to spend any free time I could muster investing in myself and learning other technologies.</p>
<p>During the next two years, it would turn out that Steve Jobs was right. In the fall of 2011, <a title="Adobe announces important changes to Flex SDK" href="http://www.adobe.com/devnet/flex/articles/flex-announcements.html" target="_blank">Adobe announced their intention to open source the Flex SDK</a>, which I interpreted as a kind way of saying, &#8220;We&#8217;re done with Flash, too&#8221;. Their attempt at a <a title="Your Questions About Flex" href="http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html" target="_blank">FAQ article</a> only confirmed my assumptions that they were shifting their focus to HTML5. This only increased my desire and decision to make a transition.</p>
<p>These turn of events is what led me to <a title="Why I Use WordPress" href="http://manovotny.com/wordpress/">WordPress</a> and the more traditional web stack of HTML, CSS, and JavaScript. Technologies like HTML5 and CSS3 have emerged in the wake of this new post-Flash era, with an unrelenting and unapologetic attitude.</p>
<p>I have been doing development for 11 years now and I have never experienced such an explosion in development as we are in right now. Yes, I know I am young with even 11 years of experience in the technology landscape, but just look at what is going on now that did not even exist just 2 &#8211; 3 years ago. Entire industries and livelihoods have been birthed in such a short time.</p>
<ul>
<li>The aforementioned <a title="HTML5" href="http://www.w3.org/html/logo/" target="_blank">HTML5</a> and <a title="CSS3" href="http://www.w3.org/html/logo/index.html#css3-styling-desc" target="_blank">CSS3</a>.</li>
<li>Mobile and tablet platforms, like <a title="iOS" href="http://www.apple.com/ios/" target="_blank">iOS</a> and <a title="Android" href="http://www.android.com/" target="_blank">Android</a>.</li>
<li>Responsive frameworks, like <a title="Bootstrap" href="http://getbootstrap.com/" target="_blank">Bootstrap</a> and <a title="Foundation: The most advanced responsive front-end framework in the world" href="http://foundation.zurb.com/" target="_blank">Foundation</a>.</li>
<li>New frameworks, libraries, and plugins released nearly every day.</li>
</ul>
<p>It really is an exciting time to be a developer and I simply could not continue to try and keep up with where development is going in what little free time I have. The time came to make a dramatic change.</p>
<p>December 31st, 2012 officially marked the last day I will be doing Flash development and I could not be more excited to finally say that.</p>
<p>So what&#8217;s next?</p>
<p>I will be turing my focus towards UI / UX front-end development, both in web and mobile. Really looking forwards to taking what I already know about HTML, CSS, JavaScript, and Objective-C to the next level.</p>
<p>I am really stoked for 2013! It will be a year of immense learning, new opportunities, renewed focus, and incredible growth.</p>
<p>I never imagined I would be where I am today as a developer. Flash played an important part of my professional life, and for that, I thank it. But it is time to move on and I cannot wait to see how it all turns out.</p>
<p>The post <a rel="nofollow" href="http://manovotny.com/flash/">Breaking Up With Flash</a> appeared first on <a rel="nofollow" href="http://manovotny.com">Michael Novotny</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://manovotny.com/flash/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
