<?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>Ja.mesBrown.com</title>
	<atom:link href="https://ja.mesbrown.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://ja.mesbrown.com</link>
	<description>Musings around technology, cloud and working at Google, including leadership and management.</description>
	<lastBuildDate>Tue, 09 May 2023 03:15:38 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<site xmlns="com-wordpress:feed-additions:1">29053517</site>	<item>
		<title>ibjhb Blog Reboot</title>
		<link>https://ja.mesbrown.com/2022/09/ibjhb-blog-reboot/</link>
		
		<dc:creator><![CDATA[James Brown]]></dc:creator>
		<pubDate>Thu, 08 Sep 2022 16:24:06 +0000</pubDate>
				<category><![CDATA[Random]]></category>
		<guid isPermaLink="false">https://ja.mesbrown.com/?p=1221</guid>

					<description><![CDATA[This is the first article I&#8217;ve posted since I started working at Google in 2015, almost five over seven years ago. As you can see from the strikethrough, I started this post two years ago. I used to publish semi-regularly (on another domain) but ended up stopping when I started the new role and moved [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>This is the first article I&#8217;ve posted since I started working at Google in 2015, <s>almost five</s> over seven years ago. As you can see from the strikethrough, I started this post two years ago. I used to publish semi-regularly (on another domain) but ended up stopping when I started the new role and moved across the country.</p>



<p>I&#8217;m rebooting this blog because I want a space to just publish and organize my thoughts. I&#8217;ve found that writing can help organize those thoughts and teaching through writing helps me learn concepts.  </p>



<p>Part of the reason I haven&#8217;t posted here in a while is that I&#8217;ve been paralyzed by trying to figure out a consistent theme to post about. Do I post about computers, cloud, Google, leadership, cycling, cooking, fatherhood, etc?  I&#8217;m at the point where I&#8217;m done with overthinking it giving up the notion that this site needs that.  I&#8217;ll likely stick to themes and ideas I encounter throughout my day-to-day, but I&#8217;m done worrying about it all being connected. </p>



<p>Lastly, I&#8217;d love for this site to be a communication channel and not just a one-way street.  Please leave feedback and comments on the posts and let&#8217;s have a discussion. Also, if you want to reach out directly, I usually have my DMs open and you can find me on Twitter: <a href="https://twitter.com/ibjhb">ibjhb@</a></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1221</post-id>	</item>
		<item>
		<title>Free High-Resolution Photos and Images on Your Website or Blog</title>
		<link>https://ja.mesbrown.com/2022/09/free-high-resolution-photos-and-images-on-your-website-or-blog/</link>
		
		<dc:creator><![CDATA[James Brown]]></dc:creator>
		<pubDate>Thu, 08 Sep 2022 16:20:41 +0000</pubDate>
				<category><![CDATA[Random]]></category>
		<guid isPermaLink="false">http://ja.mesbrown.com/?p=1172</guid>

					<description><![CDATA[If you&#8217;ve ever looked for high-resolution photos for your website and haven&#8217;t heard of Unsplash before, stop everything and go visit their site. They have tons of high-resolution photos under a Creative Commons Zero license they describe as &#8220;do whatever you want&#8221; (except you can&#8217;t sell or create a site to compete with them&#8230;).  This [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>If you&#8217;ve ever looked for high-resolution photos for your website and haven&#8217;t heard of <a href="https://unsplash.com/">Unsplash</a> before, stop everything and go visit their site.</p>
<p>They have tons of high-resolution photos under a <a href="http://creativecommons.org/publicdomain/zero/1.0/">Creative Commons Zero</a> license they describe as &#8220;<a href="https://unsplash.com/license">do whatever you want</a>&#8221; (except you can&#8217;t sell or create a site to compete with them&#8230;).  This license does exactly what it sounds like, there is no copyright to the photos and you can do whatever you&#8217;d like, <strong>even for commercial purposes</strong>, all without asking permission or owing any licensing fees.</p>
<p><a href="http://ja.mesbrown.com/wp-content/uploads/2015/04/photo-1417870839255-a23faa90c6b0.jpeg"><img fetchpriority="high" decoding="async" data-attachment-id="1173" data-permalink="https://ja.mesbrown.com/2022/09/free-high-resolution-photos-and-images-on-your-website-or-blog/photo-1417870839255-a23faa90c6b0/" data-orig-file="https://ja.mesbrown.com/wp-content/uploads/2015/04/photo-1417870839255-a23faa90c6b0.jpeg" data-orig-size="4970,3313" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;3.5&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon EOS 600D&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1403551480&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;10&quot;,&quot;iso&quot;:&quot;100&quot;,&quot;shutter_speed&quot;:&quot;13&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="photo-1417870839255-a23faa90c6b0" data-image-description="" data-image-caption="" data-large-file="https://ja.mesbrown.com/wp-content/uploads/2015/04/photo-1417870839255-a23faa90c6b0-1024x683.jpeg" class=" size-medium wp-image-1173 alignnone" src="http://ja.mesbrown.com/wp-content/uploads/2015/04/photo-1417870839255-a23faa90c6b0-300x200.jpeg" alt="photo-1417870839255-a23faa90c6b0" width="300" height="200" srcset="https://ja.mesbrown.com/wp-content/uploads/2015/04/photo-1417870839255-a23faa90c6b0-300x200.jpeg 300w, https://ja.mesbrown.com/wp-content/uploads/2015/04/photo-1417870839255-a23faa90c6b0-1024x683.jpeg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>After seeing this site, I thought that it would be great to start using these images on this site to help with the design and tell a story.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1172</post-id>	</item>
		<item>
		<title>Fundamental Rules as a Leader</title>
		<link>https://ja.mesbrown.com/2020/12/fundamental-rules-as-a-leader/</link>
		
		<dc:creator><![CDATA[James Brown]]></dc:creator>
		<pubDate>Thu, 10 Dec 2020 15:40:55 +0000</pubDate>
				<category><![CDATA[Leadership]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[leadership]]></category>
		<guid isPermaLink="false">https://ja.mesbrown.com/?p=1243</guid>

					<description><![CDATA[I&#8217;m currently reading Leadership Strategy and Tactics by Jaco Willink and wanted to capture these twelve mental rules as a leader, as written in the book: Be humble. It is an honor to be in a leadership position. Your team is counting on your to make the right decisions. Don&#8217;t act like you know everything. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;m currently reading <a rel="noreferrer noopener" href="https://www.amazon.com/dp/B07THC92JS/" target="_blank">Leadership Strategy and Tactics</a> by <a rel="noreferrer noopener" href="https://jockopodcast.com/" target="_blank">Jaco Willink</a> and wanted to capture these twelve mental rules as a leader, as written in the book:</p>



<ol class="wp-block-list"><li>Be humble. It is an honor to be in a leadership position. Your team is counting on your to make the right decisions.</li><li>Don&#8217;t act like you know everything. You don&#8217;t. The team knows that. Ask smart questions.</li><li>Listen. Ask for advice and heed it.</li><li>Treat people with respect. Regardless of rank, everyone is a human being and plays an important role in the team. Treat them that way. Take care of your people and they will take care of you.</li><li>Take ownership of failures and mistakes.</li><li>Pass credit for success up and down the chain.</li><li>Work hard. As a leader, you should be working harder than anyone else on the team. No job is beneath you.</li><li>Have integrity. Do what you say; say what you do. Don&#8217;t lie up or down the chain of command.</li><li>Be balanced. Extreme actions and opinions are usually not good.</li><li>Be decisive. When it is time to make a decision, make one.</li><li>Build relationships. That is your main goal as a leader. A team is a group of people who have relationships and trust one another. Otherwise, it is just a disconnected, incoherent cluster of people.</li><li>Lastly, get the job done. That is the purpose of the leader &#8211; to lead a team in accomplishing a mission. If you don&#8217;t accomplish the mission, you fail as a leader. Performance counts.</li></ol>



<p>There is a lot more content in this book and, even if you aren&#8217;t currently in a position of leadership, I recommend picking up a copy of it.</p>



<p></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1243</post-id>	</item>
		<item>
		<title>Caching Tips for Chrome Using the Developer Tools</title>
		<link>https://ja.mesbrown.com/2015/06/caching-tips-for-chrome-using-the-developer-tools/</link>
		
		<dc:creator><![CDATA[James Brown]]></dc:creator>
		<pubDate>Thu, 18 Jun 2015 15:05:32 +0000</pubDate>
				<category><![CDATA[Quick Tip]]></category>
		<guid isPermaLink="false">http://ja.mesbrown.com/?p=1185</guid>

					<description><![CDATA[Below are two helpful tips for controlling the cache in Chrome. Once you open the Developer Tools, you can force the browser to disable the cache when the Developer Tools are open.  This is a great feature and typically worth leaving checked when you are developing applications. Although not nearly as frequently used, another useful tip [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Below are two helpful tips for controlling the cache in Chrome.</p>
<p><span id="more-1185"></span></p>
<p>Once you open the Developer Tools, you can force the browser to disable the cache when the Developer Tools are open.  This is a great feature and typically worth leaving checked when you are developing applications.</p>
<p><img decoding="async" data-attachment-id="1187" data-permalink="https://ja.mesbrown.com/2015/06/caching-tips-for-chrome-using-the-developer-tools/devtools/" data-orig-file="https://ja.mesbrown.com/wp-content/uploads/2015/06/DevTools.gif" data-orig-size="610,463" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="DevTools" data-image-description="" data-image-caption="" data-large-file="https://ja.mesbrown.com/wp-content/uploads/2015/06/DevTools.gif" class=" wp-image-1187 size-full alignnone" src="http://ja.mesbrown.com/wp-content/uploads/2015/06/DevTools.gif" alt="DevTools" width="610" height="463" /></p>
<p>Although not nearly as frequently used, another useful tip is to Hard Reload, or Empty the Cache and Hard Reload.  To do this, open the Developer Tools then click and hold on the reload icon in the toolbar.  From there, you can select which option to select:</p>
<p><a href="http://ja.mesbrown.com/wp-content/uploads/2015/06/ChromeReset.gif"><img decoding="async" data-attachment-id="1186" data-permalink="https://ja.mesbrown.com/2015/06/caching-tips-for-chrome-using-the-developer-tools/chromereset/" data-orig-file="https://ja.mesbrown.com/wp-content/uploads/2015/06/ChromeReset.gif" data-orig-size="443,213" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="ChromeReset" data-image-description="" data-image-caption="" data-large-file="https://ja.mesbrown.com/wp-content/uploads/2015/06/ChromeReset.gif" class="alignnone wp-image-1186 size-full" src="http://ja.mesbrown.com/wp-content/uploads/2015/06/ChromeReset.gif" alt="ChromeReset" width="443" height="213" /></a></p>
<p>Have any other cache tips?  Leave them in the comments.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1185</post-id>	</item>
		<item>
		<title>The Hybrid Backbone &#038; React App &#8211; Peter Piekarczyk &#8211; JSConf 2015</title>
		<link>https://ja.mesbrown.com/2015/05/the-hybrid-backbone-react-app-peter-piekarczyk-jsconf-2015/</link>
		
		<dc:creator><![CDATA[James Brown]]></dc:creator>
		<pubDate>Fri, 29 May 2015 16:20:41 +0000</pubDate>
				<category><![CDATA[JSConf 2015]]></category>
		<guid isPermaLink="false">http://ja.mesbrown.com/?p=1181</guid>

					<description><![CDATA[The Hybrid Backbone &#38; React App By Peter Piekarczyk &#8211; https://twitter.com/peterpme UI Engineer @TrunkClub Usedpreviously: https://speakerdeck.com/jhabdas/brunch-with-panache https://github.com/trunkclub/brunch-with-panache Now using Backbone with React.js for the Views Look into and use: onClick=handleClick.bind(this, @) Migration Start with small components Use a backbone/react mixin Get familiar with the API initialize= componentDidMount remove=unmountComponentAtNode Convert your parent view to use React.createElement instead Don’t freak out about [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The Hybrid Backbone &amp; React App<br />
By Peter Piekarczyk &#8211; <a href="https://twitter.com/peterpme">https://twitter.com/peterpme</a></p>
<ul>
<li>UI Engineer @TrunkClub</li>
<li>Usedpreviously:
<ul>
<li><a href="https://speakerdeck.com/jhabdas/brunch-with-panache">https://speakerdeck.com/jhabdas/brunch-with-panache</a></li>
<li><a href="https://github.com/trunkclub/brunch-with-panache">https://github.com/trunkclub/brunch-with-panache</a></li>
</ul>
</li>
<li>Now using Backbone with React.js for the Views</li>
<li>Look into and use: onClick=handleClick.bind(this, @)</li>
<li>Migration
<ul>
<li>Start with small components</li>
<li>Use a backbone/react mixin</li>
<li>Get familiar with the API
<ul>
<li>initialize= componentDidMount</li>
<li>remove=unmountComponentAtNode</li>
</ul>
</li>
<li>Convert your parent view to use React.createElement instead</li>
<li>Don’t freak out about the templates</li>
</ul>
</li>
<li>React Backbone Component &#8211; <a href="https://github.com/magalhas/backbone-react-component">https://github.com/magalhas/backbone-react-component</a></li>
<li>Process (see the slide)
<ul>
<li>Create</li>
<li>Identify</li>
<li>Attach</li>
<li>Render</li>
<li>Dispose</li>
</ul>
</li>
<li>React Backbone Wrapper
<ul>
<li>Check for mount</li>
<li>Check for updates</li>
<li>Pass the props</li>
<li>Find the node in the DOM</li>
<li>Apply an identifier class</li>
<li>Render!</li>
</ul>
</li>
<li>“Go with Babel, It’s Awesome&#8221;</li>
<li>Passing Down Data &#8211; Multiple Models &amp; Collections as Props (See slide)</li>
<li>What are Props?
<ul>
<li>Properties that are received from above and are immutable as far as the component is concerned</li>
</ul>
</li>
<li>What is State?
<ul>
<li>The state starts with a default value when a Component mounts and then suffers from mutations in tie (mostly generated from user events)</li>
</ul>
</li>
<li>Components manage their own state internally.  They can’t change their props.  But they can change their children’s props.</li>
<li>Glue your Backbone models and collections into React components using the React Backbone Component</li>
<li>React Backbone Component gives you helper functions, this.getModel() and this.getCollection()</li>
<li>Gotchas
<ul>
<li>CJSX &#8211; Babel is much more robust, if you can use it, use it (instead of CJSX)</li>
<li>Implicit returns &#8211; remember to wrap a series of components i a parent div, otherwise it won’t render</li>
<li>CJSX &#8211; Event handlers will need to ‘return false’, otherwise React will emit a warning</li>
<li>Don’t freak out about the templates!</li>
</ul>
</li>
<li>Final Thoughts
<ul>
<li>Interim &#8211; They don’t plan on building apps this way forever.  Newer apps take a more robust Flux + React approach</li>
<li>Check into <a href="https://github.com/jhudson8/react-backbone">https://github.com/jhudson8/react-backbone</a> .  Seems awesome.</li>
</ul>
</li>
</ul>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1181</post-id>	</item>
		<item>
		<title>Woah, You Can Test IE &#038; Microsoft Edge on a Mac &#038; Linux? &#8211; Rey Bango at JSConf 2015</title>
		<link>https://ja.mesbrown.com/2015/05/woah-you-can-test-ie-microsoft-edge-on-a-mac-linux-rey-bango-at-jsconf-2015/</link>
		
		<dc:creator><![CDATA[James Brown]]></dc:creator>
		<pubDate>Wed, 27 May 2015 14:04:33 +0000</pubDate>
				<category><![CDATA[JSConf 2015]]></category>
		<guid isPermaLink="false">http://ja.mesbrown.com/?p=1177</guid>

					<description><![CDATA[ Talk by Rey Bango https://twitter.com/reybango People don’t like IE because of lack of feature knowledge in the community.  Which is MS fault. IE 11 is pretty standards based Get ISOs:  http://dev.modern.ie Want to know the current features of IE?  http://dev.modern.ie/platform/status/ IE Dev Guides:  http://bit.ly/iedevguides Compat Cookbook:  http://bit.ly/iecompatcookbook Dev Tools:  http://bit.ly/f12devtools Using remote desktop and ngrok, you can [&#8230;]]]></description>
										<content:encoded><![CDATA[<div> Talk by Rey Bango <a href="https://twitter.com/reybango">https://twitter.com/reybango</a></div>
<ul>
<li>People don’t like IE because of lack of feature knowledge in the community.  Which is MS fault.</li>
<li>IE 11 is pretty standards based</li>
<li>Get ISOs:  <a href="http://dev.modern.ie">http://dev.modern.ie</a></li>
<li>Want to know the current features of IE?  <a href="http://dev.modern.ie/platform/status/">http://dev.modern.ie/platform/status/</a></li>
<li>IE Dev Guides:  <a href="http://bit.ly/iedevguides">http://bit.ly/iedevguides</a></li>
<li>Compat Cookbook:  <a href="http://bit.ly/iecompatcookbook">http://bit.ly/iecompatcookbook</a></li>
<li>Dev Tools:  <a href="http://bit.ly/f12devtools">http://bit.ly/f12devtools</a></li>
<li>Using remote desktop and ngrok, you can test your sites in IE easily</li>
<li>Also check out <a href="https://www.browserstack.com/">https://www.browserstack.com/</a></li>
<li>Get Microsoft Edge:  <a href="http://insider.windows.com">http://insider.windows.com</a></li>
<li>Use Weinre for remote testing (use mainly for mobile testing): http://people.apache.org/~pmuellr/weinre-docs/latest/</li>
<li>Remote debugging and testing tool:  http://vorlonjs.com/</li>
<li>Microsoft is working on a headless version of IE for testing</li>
</ul>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1177</post-id>	</item>
		<item>
		<title>Selectively Loading JavaScript and CSS Files in WordPress</title>
		<link>https://ja.mesbrown.com/2015/03/selectively-loading-javascript-and-css-files-in-wordpress/</link>
					<comments>https://ja.mesbrown.com/2015/03/selectively-loading-javascript-and-css-files-in-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[James Brown]]></dc:creator>
		<pubDate>Tue, 31 Mar 2015 14:03:52 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://ja.mesbrown.com/?p=1167</guid>

					<description><![CDATA[If you&#8217;ve done any WordPress development, you&#8217;ve encountered a situation where you need to load custom JavaScript or CSS. Normally, you would do something like this: function enqueue_scripts_styles() { wp_enqueue_script('jquery'); wp_enqueue_script('custom-script', get_stylesheet_directory_uri() . '/assets/js/custom.js', array('jquery')); wp_enqueue_style('custom-style', get_stylesheet_directory_uri() . '/assets/css/custom.css', array() ); } add_action( 'wp_enqueue_scripts', 'enqueue_scripts_styles' ); This code will load jQuery, then load our custom [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>If you&#8217;ve done any WordPress development, you&#8217;ve encountered a situation where you need to load custom JavaScript or CSS. Normally, you would do something like this:</p>
<p><code>function enqueue_scripts_styles() {<br />
	wp_enqueue_script('jquery');<br />
	wp_enqueue_script('custom-script', get_stylesheet_directory_uri() . '/assets/js/custom.js', array('jquery'));<br />
	wp_enqueue_style('custom-style', get_stylesheet_directory_uri() . '/assets/css/custom.css', array() );<br />
}<br />
add_action( 'wp_enqueue_scripts', 'enqueue_scripts_styles' );</code></p>
<p>This code will load jQuery, then load our custom JavaScript after jQuery, then load our CSS.</p>
<p>This works great if you need the custom JavaScript and CSS on every page.  But what if you only need the JavaScript and CSS only on a specific page?  You don&#8217;t want to waste loading those files on every page.</p>
<p>To do so, you can use the following code:</p>
<p><code>function enqueue_scripts_styles() {<br />
	wp_enqueue_script('jquery');<br />
	if (is_page('your-page-slug')){<br />
		wp_enqueue_script('custom-script', get_stylesheet_directory_uri() . '/assets/js/custom.js', array('jquery'));<br />
		wp_enqueue_style('custom-style', get_stylesheet_directory_uri() . '/assets/css/custom.css', array() );<br />
	}<br />
}<br />
add_action( 'wp_enqueue_scripts', 'enqueue_scripts_styles' );</code></p>
<p>If you replace &#8216;your-page-slug&#8217; with your actual page&#8217;s slug, you will only load the JavaScript and CSS on that specific page.  This will save bandwidth and improve performance.  </p>
<p>You could also use &#8216;is_category&#8217; if you wanted to load JavaScript and CSS for a specific set of pages that were in a certain category.</p>
<p>Have any other WordPress questions?  Leave a comment below.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ja.mesbrown.com/2015/03/selectively-loading-javascript-and-css-files-in-wordpress/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1167</post-id>	</item>
		<item>
		<title>WordCamp Tampa – WordPress Performance Workshop by Mark Jaquith</title>
		<link>https://ja.mesbrown.com/2014/10/wordcamp-tampa-wordpress-performance-workshop-by-mark-jaquith/</link>
		
		<dc:creator><![CDATA[James Brown]]></dc:creator>
		<pubDate>Sun, 05 Oct 2014 18:44:23 +0000</pubDate>
				<category><![CDATA[Conference]]></category>
		<guid isPermaLink="false">http://ja.mesbrown.com/?p=1151</guid>

					<description><![CDATA[Why does performance matter? People hate lag.  Amazon projects that 1 sec translates to 1.6 billion a year WordPress has a bad rap.  Lots of plugins.  Complex front-ends. WordPress is dynamic. WordPress has no persistent caching in the core and is hands-off in regards to caching. Chrome HTML render time is everything (server, network, browser, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-05-14.23.55.jpg"><img loading="lazy" decoding="async" data-attachment-id="1152" data-permalink="https://ja.mesbrown.com/2014/10/wordcamp-tampa-wordpress-performance-workshop-by-mark-jaquith/2014-10-05-14-23-55/" data-orig-file="https://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-05-14.23.55.jpg" data-orig-size="5312,2988" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.2&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;SM-G900V&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1412519035&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.8&quot;,&quot;iso&quot;:&quot;400&quot;,&quot;shutter_speed&quot;:&quot;0.05&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="Mark Jaquith" data-image-description="" data-image-caption="" data-large-file="https://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-05-14.23.55-1024x576.jpg" class="alignright size-medium wp-image-1152" src="http://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-05-14.23.55-300x168.jpg" alt="Mark Jaquith" width="300" height="168" srcset="https://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-05-14.23.55-300x168.jpg 300w, https://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-05-14.23.55-1024x576.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Why does performance matter?</p>
<p>People hate lag.  Amazon projects that 1 sec translates to 1.6 billion a year</p>
<p>WordPress has a bad rap.  Lots of plugins.  Complex front-ends.</p>
<p>WordPress is dynamic.</p>
<p>WordPress has no persistent caching in the core and is hands-off in regards to caching.</p>
<p>Chrome HTML render time is everything (server, network, browser, etc) and isn&#8217;t just WordPress specifically.</p>
<p>You can use WordPress to time how long the rendering takes.</p>
<p>Times:</p>
<ul>
<li>3+ is emergency</li>
<li>1-3 is slow</li>
<li>500ms to 1sec is okay</li>
<li>250ms to 500ms is good</li>
<li>&lt;100 ms is amazing</li>
</ul>
<p>Your web host maters.  &#8220;Commodity hosts&#8221; are bad.  They cost cheap but are going to be slow.  No caching engine or low-level access.</p>
<p>WordPress managed hosts do performance better and some have caching built in.</p>
<p>Managed WordPress hosts:</p>
<ul>
<li>SiteGround</li>
<li>Pressable</li>
<li>Pagely</li>
<li>WP Engine</li>
<li>GoDaddy</li>
<li>Kinsta</li>
<li>Pantheon</li>
<li>Dreamhost</li>
</ul>
<p>The best is to have your own VPS.  Look for a company that has been around for a while and has good performance.  Cost?  Tools?</p>
<p>Linode and Digital Ocean are good WordPress companies.</p>
<p>Web stack:</p>
<ul>
<li>nginx  &#8211; config: <a href="http://bit.ly/jaquith-nginx">http://bit.ly/jaquith-nginx</a></li>
<li>PHP-FPM &#8211; <a href="http://php-fpm.org/">http://php-fpm.org/</a>
<ul>
<li>Make sure to use the latest version of PHP</li>
<li>Check into <a href="http://hhvm.com/">http://hhvm.com/</a> for performance (but might be unstable)</li>
</ul>
</li>
<li>SQL
<ul>
<li>MySQL</li>
<li>MariaDB</li>
<li>Percona</li>
<li>Make sure to use query cache</li>
<li>Use <a href="http://mysqltuner.pl">mysqltuner.pl</a> for tuning</li>
<li>HyperDB for scaling large sites and DB replication</li>
</ul>
</li>
</ul>
<p>Least elegant but most effective is to cache the HTML output.</p>
<p>You can do caching right in nginx, you can use Varnish or WordPress plugins.</p>
<p>APC &amp; APCu are two caching engines.  Fast, in-memory data store.  Good for running one server.</p>
<p>If you&#8217;re using multiples servers, you need redis or memcache.</p>
<p>WordPress core can use these cache layer, but there are wp_cache_* commands that you can use to program.</p>
<p>Libs to make caching easier:  <a href="https://github.com/markjaquith/WP-TLC-Transients">https://github.com/markjaquith/WP-TLC-Transients</a> &amp; <a href="http://bit.ly/fragment-cache">http://bit.ly/fragment-cache</a></p>
<p>Stack ideas</p>
<ul>
<li>PHP-FPM &amp; nginx:   nginx -&gt;  nginx -&gt; php</li>
<li>Or:   nginx -&gt; varnish -&gt; nginx -&gt; php</li>
</ul>
<p><strong>Tools to use</strong></p>
<ul>
<li>Chrome inspector</li>
<li>Firefox inspector</li>
<li>New Relic</li>
<li>P3 (WordPress Plugin)</li>
<li>WP Top (WordPress plugin &#8211; on github)</li>
<li>Use time_stop(true, 5) (wrapped in comments)</li>
<li>Apache Bench / Siege / Blitz.io</li>
</ul>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1151</post-id>	</item>
		<item>
		<title>WordCamp Tampa – Automating Your Repetitive WordPress Development Tasks by David Parsons</title>
		<link>https://ja.mesbrown.com/2014/10/wordcamp-tampa-automating-your-repetitive-wordpress-development-tasks-by-david-parsons/</link>
		
		<dc:creator><![CDATA[James Brown]]></dc:creator>
		<pubDate>Sat, 04 Oct 2014 18:07:07 +0000</pubDate>
				<category><![CDATA[Conference]]></category>
		<guid isPermaLink="false">http://ja.mesbrown.com/?p=1144</guid>

					<description><![CDATA[David Parsons https://twitter.com/dpjustice We all have 86,400 seconds in a day &#8220;If you don&#8217;t have time to do it right, when will you have time to do it over again?&#8221; &#8220;Let&#8217;s do ourselves a favor and build it right the first time&#8221; Backups &#8211; Use version control with deployment using Beanstalk/Tower and Automated DB Backup Theme [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>David Parsons<img loading="lazy" decoding="async" data-attachment-id="1146" data-permalink="https://ja.mesbrown.com/2014/10/wordcamp-tampa-automating-your-repetitive-wordpress-development-tasks-by-david-parsons/2014-10-04-13-41-27/" data-orig-file="https://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-04-13.41.27.jpg" data-orig-size="5312,2988" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.2&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;SM-G900V&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1412430087&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.8&quot;,&quot;iso&quot;:&quot;250&quot;,&quot;shutter_speed&quot;:&quot;0.033333333333333&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="David Parsons" data-image-description="" data-image-caption="" data-large-file="https://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-04-13.41.27-1024x576.jpg" class="alignright size-medium wp-image-1146" src="http://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-04-13.41.27-300x168.jpg" alt="David Parsons" width="300" height="168" srcset="https://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-04-13.41.27-300x168.jpg 300w, https://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-04-13.41.27-1024x576.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /><br />
<a href="https://twitter.com/dpjustice">https://twitter.com/dpjustice</a></p>
<ul style="padding-left: 30px;">
<li>We all have 86,400 seconds in a day</li>
<li>&#8220;If you don&#8217;t have time to do it right, when will you have time to do it over again?&#8221;</li>
<li>&#8220;Let&#8217;s do ourselves a favor and build it right the first time&#8221;</li>
<li>Backups &#8211; Use version control with deployment using Beanstalk/Tower and Automated DB Backup</li>
<li>Theme development &#8211; Custom built theme using _s (used Genesis Theme too) and using SASS and CodeKit</li>
<li>Know when to use plugins
<ul>
<li>WordPress SEO by Yoast</li>
<li>W3C Total Cache
<ul>
<li>Image cache, browser cache, gzip</li>
</ul>
</li>
<li>CDN (Max CDN)</li>
<li>Spam (Akismit)</li>
</ul>
</li>
<li>Seek first to understand</li>
<li>Use Grunt to automate tasks&#8230; SASS, image minify, automate all the things!</li>
</ul>
<p style="padding-left: 30px;">
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1144</post-id>	</item>
		<item>
		<title>WordCamp Tampa – 30 Things You Must Do Before Launch by Drew Barton</title>
		<link>https://ja.mesbrown.com/2014/10/wordcamp-tampa-30-things-you-must-do-before-launch-by-drew-barton/</link>
					<comments>https://ja.mesbrown.com/2014/10/wordcamp-tampa-30-things-you-must-do-before-launch-by-drew-barton/#comments</comments>
		
		<dc:creator><![CDATA[James Brown]]></dc:creator>
		<pubDate>Sat, 04 Oct 2014 15:59:44 +0000</pubDate>
				<category><![CDATA[Conference]]></category>
		<guid isPermaLink="false">http://ja.mesbrown.com/?p=1137</guid>

					<description><![CDATA[Drew Barton https://twitter.com/drewbarton http://southernweb.com/ Have a checklist Limit your admin users &#8211; Give them Editor access instead Give editor access to menus &#8211; Install Editor Theme Options No default permalinks Remove &#8220;Hello World!&#8221; content from the blog Unblock search engines Install YOAST for SEO Unique Title tags for each page Install video user manuals for [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-04-11.51.01.jpg"><img loading="lazy" decoding="async" data-attachment-id="1138" data-permalink="https://ja.mesbrown.com/2014/10/wordcamp-tampa-30-things-you-must-do-before-launch-by-drew-barton/2014-10-04-11-51-01/" data-orig-file="https://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-04-11.51.01.jpg" data-orig-size="5312,2988" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.2&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;SM-G900V&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1412423461&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.8&quot;,&quot;iso&quot;:&quot;160&quot;,&quot;shutter_speed&quot;:&quot;0.033333333333333&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="Drew Barton" data-image-description="" data-image-caption="" data-large-file="https://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-04-11.51.01-1024x576.jpg" class="alignright size-medium wp-image-1138" src="http://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-04-11.51.01-300x168.jpg" alt="Drew Barton" width="300" height="168" srcset="https://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-04-11.51.01-300x168.jpg 300w, https://ja.mesbrown.com/wp-content/uploads/2014/10/2014-10-04-11.51.01-1024x576.jpg 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>Drew Barton<br />
<a href="https://twitter.com/drewbarton">https://twitter.com/drewbarton<br />
http://southernweb.com/<br />
</a></p>
<ol>
<li>Have a checklist</li>
<li>Limit your admin users &#8211; Give them Editor access instead</li>
<li>Give editor access to menus &#8211; Install Editor Theme Options</li>
<li>No default permalinks</li>
<li>Remove &#8220;Hello World!&#8221; content from the blog</li>
<li>Unblock search engines</li>
<li>Install YOAST for SEO</li>
<li>Unique Title tags for each page</li>
<li>Install video user manuals for WordPress</li>
<li>Remove test links &#8211; Turn off your dev server</li>
<li>Install Google Tag Manager</li>
<li>Setup Google Analytics &#8211; Add user accounts for client &#8211; Setup automatic monthly reporting</li>
<li>Setup Google Webmaster Tools &#8211; Check for 404 Errors</li>
<li>Create 301 Redirects if rebuilding a site</li>
<li>Style your 404 page &#8211; Give the users something to do so they aren&#8217;t at a dead end</li>
<li>???</li>
<li>Check for JavaScript Errors in Console</li>
<li>Test for responsiveness</li>
<li>Consistent fonts &amp; styles</li>
<li>Page Load Limit &#8211; Use <a href="http://tools.pingdom.com/fpt/">Pingdom Website Speed Test</a> or <a href="http://nibbler.silktide.com/">http://nibbler.silktide.com/</a></li>
<li>Set plugin number limit</li>
<li>Confirm email addresses exists &#8211; send a test email</li>
<li>Confirm contact form works</li>
<li>Create form success pages &#8211; Tell them what is going to happen next &#8211; Put conversion tracking on the page</li>
<li>Obfuscate email addresses</li>
<li>Setup Google Webmaster Tools &#8211; Ensure you link it to the Google Analytics account</li>
<li>Submit XML Sitemap</li>
<li>Create backups &#8211; &#8220;Jesus saves.  Buddha does incremental backups&#8221;. &#8211; Setup backups outside your web host &#8211; Even physically mail a copy of the website to the client</li>
<li>Check for gremlins &#8211; text artifacts &#8211; copy/paste issue from MS Word</li>
<li>Remove development plugins &#8211; WordPress Move &#8211; WP Migrate DB Pro &#8211; etc</li>
<li>Install caching</li>
</ol>
<p>Make sure you deliver that &#8220;last mile&#8221; to the client.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ja.mesbrown.com/2014/10/wordcamp-tampa-30-things-you-must-do-before-launch-by-drew-barton/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1137</post-id>	</item>
	</channel>
</rss>
