<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Chase's Blog</title>
    <link>https://chasechristian.com/post/</link>
    <description>Recent content in Posts on Chase&#39;s Blog</description>
    <generator>Hugo - gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>madsushi@gmail.com (Chase Christian)</managingEditor>
    <webMaster>madsushi@gmail.com (Chase Christian)</webMaster>
    <lastBuildDate>Thu, 18 Jan 2024 00:03:00 -0700</lastBuildDate>
    
        <atom:link href="https://chasechristian.com/post/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Recipe: Slake&#39;s Chili</title>
      <link>https://chasechristian.com/blog/2024/01/recipe-slakes-chili/</link>
      <pubDate>Thu, 18 Jan 2024 00:03:00 -0700</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2024/01/recipe-slakes-chili/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com/img/slakes.jpg" />
	

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/chili/chili.jpg&#34; alt=&#34;Slake&#39;s Chili&#34; /&gt;&lt;/p&gt;

&lt;h2 id=&#34;the-chili&#34;&gt;THE CHILI&lt;/h2&gt;

&lt;p&gt;I&amp;rsquo;ve made The Chili recipe dozens of times. I&amp;rsquo;ve won multiple chili contests with it. I&amp;rsquo;ve never come home with leftovers. A double-batch fits into a large-sized dutch oven pretty nicely. It&amp;rsquo;s a real Texas chili.&lt;/p&gt;

&lt;p&gt;However, it&amp;rsquo;s not my recipe. The original creator and namesake, Slake, takes the credit. Here&amp;rsquo;s his recipe, unedited, below:&lt;/p&gt;

&lt;h2 id=&#34;slake-s-chili-recipe&#34;&gt;SLAKE&amp;rsquo;S CHILI RECIPE&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;2 tablespoons olive oil&lt;/li&gt;
&lt;li&gt;2 pounds sirloin steak, cut into 1-inch cubes (editor&amp;rsquo;s note: short ribs are also great here)&lt;/li&gt;
&lt;li&gt;&amp;frac12; pound ground beef&lt;/li&gt;
&lt;li&gt;12 ounces chorizo sausage, casing removed, cut into &amp;frac12; cubes&lt;/li&gt;
&lt;li&gt;1 large yellow onion, coarsely chopped&lt;/li&gt;
&lt;li&gt;&amp;frac14; cup chili powder&lt;/li&gt;
&lt;li&gt;1 tablespoon garlic salt&lt;/li&gt;
&lt;li&gt;2 teaspoons cumin&lt;/li&gt;
&lt;li&gt;1 teaspoon dried basil&lt;/li&gt;
&lt;li&gt;2 (14.5 oz) cans beef broth&lt;/li&gt;
&lt;li&gt;2 (14.5 oz) cans whole tomatoes, drained&lt;/li&gt;
&lt;li&gt;&amp;frac12; (12 oz) can Coca-Cola&lt;/li&gt;
&lt;li&gt;&amp;frac12; (12 oz) can beer (your choice here, doesn&amp;rsquo;t have a huge impact what you use, just make sure it&amp;rsquo;s not too shitty)&lt;/li&gt;
&lt;li&gt;1 cup cilantro, chopped&lt;/li&gt;
&lt;li&gt;1 cinnamon stick&lt;/li&gt;
&lt;li&gt;3 bay leaves&lt;/li&gt;
&lt;li&gt;2-4 green jalapenos, slit lengthwise 3 times each (alternately, 1 habanero and 1 jalapeno)&lt;/li&gt;
&lt;li&gt;1 tablespoon yellow cornmeal&lt;/li&gt;
&lt;li&gt;Salt and pepper, to taste&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/chili/slakes.jpg&#34; alt=&#34;Mise En Place&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/chili/meat.jpg&#34; alt=&#34;Meats&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Directions:&lt;/strong&gt;
Place oil in a large, heavy pot over medium heat. Brown the sirloin in batches. Remove to a bowl with a slotted spoon.&lt;/p&gt;

&lt;p&gt;Add ground beef, chorizo and onions to the pot and brown. Make sure to break up the meat.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/chili/brown.jpg&#34; alt=&#34;Browning Meat and Onions&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Return sirloin to the pot and stir in remaining ingredients, except for garnishes.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/chili/simmer.jpg&#34; alt=&#34;Simmering Chili&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Bring to a boil, reduce heat, simmer for 3-5 hours (longer is better). Stir occasionally, breaking up tomatoes.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/chili/reduce.jpg&#34; alt=&#34;Reduced Chili&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Before serving, discard cinnamon stick and bay leaves (and habanero if you used it, don&amp;rsquo;t want someone biting into that!). Garnish with cheese and sour cream, if desired.&lt;/p&gt;

&lt;p&gt;Seriously though that chili is amazing. I usually eat it with some kind of carbohydrates, be it rice, pasta, or a baked potato. The longer you let it reduce the richer the flavors become and the less &amp;lsquo;sharp&amp;rsquo; the spices are.&lt;/p&gt;

&lt;h2 id=&#34;chase-s-notes&#34;&gt;CHASE&amp;rsquo;S NOTES&lt;/h2&gt;

&lt;p&gt;I like to reduce the chili to a very thick consistency, and I find that a little bit goes a long way. My favorite preparation is to scoop out an avocado, fill it with chili, and top with sour cream and cheese. Also makes a great Frito Pie.&lt;/p&gt;

&lt;p&gt;For the Coca-Cola, use Mexican Coke (real sugar) for the best effect. For the beer, I typically use Shiner or Guinness.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve used a variety of meats for the &amp;ldquo;sirloin steak&amp;rdquo; portion, including short ribs, etc. Since you&amp;rsquo;re braising it so long, most beef cuts will work out pretty well here. I personally usually add more than the 2lbs quoted above, making it a little steak-ier.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m not a big jalepeno person, but I find that slicing them and removing them after does add a nice spiciness. I usually do 3 jalepenos, as someone who likes mild-to-medium spiciness.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Ivy</title>
      <link>https://chasechristian.com/blog/2021/08/ivy/</link>
      <pubDate>Sun, 01 Aug 2021 00:14:00 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2021/08/ivy/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com/img/ivysmile.jpg" />
	

&lt;p&gt;My dog Ivy passed away due to an unknown illness&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;00&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;00&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;TW: Details at the bottom of this post.
    &lt;/span&gt;
&lt;/label&gt;
 on 07/27/2021. She was 7 years, 9 months old.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivysmile.jpg&#34; alt=&#34;Ivy smiling&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Writing this post over the past few days has been difficult for me. I start on one section, fall into scrolling through pictures and memories, and end up too upset to continue. Ivy was a constant in my life in Washington. Her presence was built into my rituals, into my mind. I still find myself checking for the &amp;ldquo;3rd dog&amp;rdquo; when I open the doors in the morning or close them at night. She was a comfort in times of deep sadness, and a light in times of great joy.&lt;/p&gt;

&lt;p&gt;For those who have reached out or messaged me before this, thank you for your kindness, I have appreciated every word. I am through the worst of the grief and mourning now. I am focusing on celebrating the time that she was here. No more &amp;ldquo;sorry&amp;rdquo;s are needed.&lt;/p&gt;

&lt;h2 id=&#34;ivy-posts&#34;&gt;Ivy Posts&lt;/h2&gt;

&lt;p&gt;&lt;a href=&#34;https://chasechristian.com/blog/2016/03/my-two-dogs/&#34;&gt;My Two Dogs&lt;/a&gt; - About Ivy and Rex&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://chasechristian.com/blog/2018/11/my-three-dogs/&#34;&gt;My Three Dogs&lt;/a&gt; - About Ivy&amp;rsquo;s first litter and Lia&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://puppiesbyivy.com/2018/index.php&#34;&gt;Puppies By Ivy&lt;/a&gt; - About Ivy&amp;rsquo;s litters&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Guide this one, Kalahira, and she will be a companion to you as she was to me.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&#34;ivy-in-2013&#34;&gt;Ivy in 2013&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2013ivyfirst.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Our first pic of Ivy, the day we picked her from the litter&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2013ivypup.jpg&#34; alt=&#34;Ivy&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ivy on her way home with us. My work was closed for two weeks right when we picked up Ivy, so I got to spend a bunch of time with her when she was a pup&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2013ivyback.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy loved rolling over for belly rubs from a young age&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2013ivycrate.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy&amp;rsquo;s first crate&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&#34;ivy-in-2014&#34;&gt;Ivy in 2014&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivystick.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy loved to bring home way-too-big sticks&lt;/em&gt;&lt;/p&gt;

&lt;video controls&gt;&lt;source src=&#34;https://chasechristian.com/img/ivy/2014ivyhall.mp4&#34;&gt;Your browser does not support the video tag.&lt;/video&gt;


&lt;p&gt;&lt;em&gt;I&amp;rsquo;d play fetch with Ivy in the hall&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivyblur.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;We also played tug-of-war, where she&amp;rsquo;d turn into a blur&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivygame.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;She helped me play video games&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivybeach.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy visited California with us, and got to check out the beach&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivyrain.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy&amp;rsquo;s first raincoat, for PacNW walks&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivyswim.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy&amp;rsquo;s first swim at Marymoor, biting the water&lt;/em&gt;&lt;/p&gt;

&lt;video controls&gt;&lt;source src=&#34;https://chasechristian.com/img/ivy/2014ivygrass.mp4&#34;&gt;Your browser does not support the video tag.&lt;/video&gt;


&lt;p&gt;&lt;em&gt;Ivy loved rolling her back in the grass&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivyyard.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;We moved out of an apartment and into a house with a yard&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivychill.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy and I chilling out&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivymud.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy also loved rolling in mud&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivyfetch.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;And playing fetch&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivycostume.jpg&#34; alt=&#34;Ivy&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Our first joint Halloween costume&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivyshoulder.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;My favorite Ivy memory is her head on my shoulder on a drive&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivytree.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;She hated Christmas trees&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2014ivynap.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;But enjoyed naps&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&#34;ivy-in-2015&#34;&gt;Ivy in 2015&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2015ivyrex.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;We got Rex to give Ivy a buddy&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2015ivyrexnap.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;They got along really well&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2015ivyrexkiss.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;They were best friends&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2015ivyrexwalk.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy showed Rex the ropes&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2015ivysmile.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy was almost fully grown&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2015ivyrexswim.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy taught Rex how to swim&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2015ivyrexmontana.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;And we took them to Montana&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2015ivyrexmud.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Rex also loved the mud&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2015ivyshoulder.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Another car ride&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2015ivychair.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy owning the foot of my recliner&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&#34;ivy-in-2016-and-2017&#34;&gt;Ivy in 2016 and 2017&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2016ivyblep.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy making a face&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2016ivydinner.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;We started our ritual of steak &amp;amp; eggs for dog birthdays&lt;/em&gt;&lt;/p&gt;

&lt;video controls&gt;&lt;source src=&#34;https://chasechristian.com/img/ivy/2017ivyrexsync.mov&#34;&gt;Your browser does not support the video tag.&lt;/video&gt;


&lt;p&gt;&lt;em&gt;Ivy and Rex were in sync&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2017ivycouch.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy on the chair&lt;/em&gt;&lt;/p&gt;

&lt;video controls&gt;&lt;source src=&#34;https://chasechristian.com/img/ivy/2017ivyrexgrass.mov&#34;&gt;Your browser does not support the video tag.&lt;/video&gt;


&lt;p&gt;&lt;em&gt;Ivy and Rex on the grass at our new house. You can also see Ivy using her patented &amp;ldquo;fall over on top of you&amp;rdquo; move here&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2017ivyhay.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy on a haybail&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2017ivymud.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy finding the mud again&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2017ivyhot.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy trying to beat the heat with the A/C&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&#34;ivy-in-2018&#34;&gt;Ivy in 2018&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2018ivycouch.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy had her first litter in 2018&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2018ivyrexlia.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;And we kept her daughter, Lia&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2018ivylia.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy and Lia were close&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2018ivyliacopy.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Almost carbon copies&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2018ivyliamotherhood.jpg&#34; alt=&#34;Ivy&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Although Lia could get on her nerves&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2018ivybday.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy&amp;rsquo;s birthday showed she had some white fur&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&#34;ivy-in-2019&#34;&gt;Ivy in 2019&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2019ivy.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Mory took all the good photos of Ivy&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2019ivysnow.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy also loved the snow, when we had it&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2019ivyrexliastick.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Even after her litter, she was still a fighter&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2019ivyliakiss.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;And a good mom&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2019ivyrexliatrouble.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;And  a troublemaker&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2019ivybelly.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;And still loved belly rubs&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&#34;ivy-in-2020&#34;&gt;Ivy in 2020&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2020ivylook.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy had her second litter in 2020&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2020ivybuster.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;With the singleton puppy, Buster&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2020ivybuster2.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;She took good care of Buster&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2020ivybuster3.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;And he was huge&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2020ivywhite.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;After her second litter, her face lost color&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2020ivysmile.jpg&#34; alt=&#34;Ivy&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;But she was loved to smile anyway&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2020ivynap.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy relaxing&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2020ivybday.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;From her last birthday&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&#34;ivy-in-2021&#34;&gt;Ivy in 2021&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2021ivycar.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy loved car rides the most&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2021ivyhat.jpg&#34; alt=&#34;Ivy&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;She was the queen of patience&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2021ivycouch.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;She was a frequent guest on my office couch while working from home&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2021ivyliacopy.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Her and Lia still did the same pose&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2021ivygrass.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;And loved rolling in the grass&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2021ivyjeff.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Outside of the family, Ivy&amp;rsquo;s best friend was Jeff&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2021ivybbq.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;She supervised the BBQ&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2021ivytable.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;And asked for some extra&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2021ivyyard.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy would lay in the sun to recharge her gold&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2021ivyvet.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Ivy on the way to the vet, the last picture I took of her&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivy/2021ivylast.jpg&#34; alt=&#34;Ivy&#34; /&gt;
&lt;em&gt;Our last pic of Ivy, from our visit on July 26&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&#34;nicknames&#34;&gt;Nicknames&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ivy&lt;/li&gt;
&lt;li&gt;I.V.&lt;/li&gt;
&lt;li&gt;Iverson&lt;/li&gt;
&lt;li&gt;Allison&lt;/li&gt;
&lt;li&gt;A.I.&lt;/li&gt;
&lt;li&gt;Ivysaur&lt;/li&gt;
&lt;li&gt;Ivysaurus&lt;/li&gt;
&lt;li&gt;Ivybyevy&lt;/li&gt;
&lt;li&gt;Bones&lt;/li&gt;
&lt;li&gt;Tubba Bubba&lt;/li&gt;
&lt;li&gt;Mama&lt;/li&gt;
&lt;li&gt;Chocolate Chip Cookie&lt;/li&gt;
&lt;li&gt;Cinnamon Sugar&lt;/li&gt;
&lt;li&gt;Powdered Sugar&lt;/li&gt;
&lt;li&gt;Fatty&lt;/li&gt;
&lt;li&gt;Fat Butt&lt;/li&gt;
&lt;li&gt;Lumpy&lt;/li&gt;
&lt;li&gt;Rolly Polly&lt;/li&gt;
&lt;li&gt;Potato Bug&lt;/li&gt;
&lt;li&gt;Old Lady&lt;/li&gt;
&lt;li&gt;Ives&lt;/li&gt;
&lt;li&gt;Ives St Laurent&lt;/li&gt;
&lt;li&gt;Boney Ives&lt;/li&gt;
&lt;li&gt;The Queen&lt;/li&gt;
&lt;li&gt;Loaf&lt;/li&gt;
&lt;li&gt;Eevee&lt;/li&gt;
&lt;li&gt;Baby Mama&lt;/li&gt;
&lt;li&gt;Lazy Bones&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;memories&#34;&gt;Memories&lt;/h2&gt;

&lt;p&gt;If you have any pictures or memories of Ivy that you&amp;rsquo;d like to share, feel free to send them my way.&lt;/p&gt;

&lt;h2 id=&#34;illness-details&#34;&gt;Illness Details&lt;/h2&gt;

&lt;p&gt;Ivy started medication for a thyroid imbalance in April 2021. She had been gaining weight and acting more lethargic in the prior months. After starting treatment, she rapidly began losing weight and gaining energy. After a check-up to test and adjust the dosage in June, there was an abnormal reading on the blood test for a protein. We scheduled a follow-up visit for July 12 to have an ultrasound and to check her blood again. The ultrasound showed no abnormalities, and Ivy seemed to be doing well (down 30 lbs from April/May), so we tried switching Ivy to a hydrolyzed protein (HP) diet.&lt;/p&gt;

&lt;p&gt;In the week after the ultrasound, we noticed that Ivy was not wanting to eat much. Neither her old food or the new HP food was very attractive to her. We tried a few different types of canned food and direct food like chicken, but she wasn&amp;rsquo;t eating much. This was a big departure from the dog who would come running at the sound of anybody eating lunch. On July 20, we noticed that her stomach was also a bit distended, despite not eating much. The vet recommended that we start Ivy on steroids, which we did on July 22, to try to improve her appetite. Most dogs are very hungry when taking steroids. But, Ivy now refused to eat anything. I managed to get her to eat two bites of chicken, after quite a bit of convincing.&lt;/p&gt;

&lt;p&gt;On July 24, Ivy&amp;rsquo;s belly was quite distended and she had not eaten anything in over 24 hours. She was also looking a little bit yellow, which suggested jaundice / icterus. I took her to our vet (open Saturday mornings) and then was referred to an emergency / specialist vet. Ivy was checked in on Saturday afternoon. They started Ivy on an IV and started monitoring her stats. Her vitals were all stable. On July 26, she had a repeat ultrasound and a bunch of other tests, all of which were inconclusive. Her liver and internals looked fine, but her bilirubin was still abnormal, her abdomen had transudative fluid, and she wouldn&amp;rsquo;t eat much at all. We visited Ivy that evening for about an hour, and she was about the same as when we had brought her in.&lt;/p&gt;

&lt;p&gt;On July 27, Ivy&amp;rsquo;s vitals were stable. In the afternoon, Ivy had a needle aspiration of her liver. The hope was to narrow down the cause to either a GI issue or a liver issue, to guide the next steps of either a scope or biopsy. After the aspiration, at about 17:00, Ivy&amp;rsquo;s blood pressure and red blood cell count both started going down, and she was very lethargic. She had a transfusion of both red blood and plasma, which improved things for a short time, before her pressure and cells continued downward. She had a second round of transfusions, which did not help, and her breathing started getting labored. We drove straight to her. By the time we arrived at 21:55, she was nearing critical vital signs for heart and breathing rates. We had a minute to say good bye, as she was laying on the emergency table.&lt;/p&gt;

&lt;p&gt;Our vet, the specialist vets, and the emergency vets did all that they could. We have some guesses, but will never know the final cause of her illness.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>TMCon</title>
      <link>https://chasechristian.com/blog/2019/04/tmcon/</link>
      <pubDate>Thu, 18 Apr 2019 01:21:00 -0800</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2019/04/tmcon/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com/img/tmcon/logo.png" />
	

&lt;p&gt;&lt;strong&gt;&amp;lt;&lt;em&gt;Trademarked&lt;/em&gt;&amp;gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The guild I&amp;rsquo;ve led since 2007. Horde forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[&lt;em&gt;HordeTM&lt;/em&gt;]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The clan I started to carry on the tradition into Destiny, and beyond.&lt;/p&gt;

&lt;h3 id=&#34;tmcon&#34;&gt;TMCon&lt;/h3&gt;

&lt;p&gt;The LAN party we designed to bring us together.&lt;/p&gt;

&lt;h1 id=&#34;blizzcon&#34;&gt;BlizzCon&lt;/h1&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/bc20131.jpg&#34; alt=&#34;blizzcon 2013&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;An early Lucille&amp;rsquo;s BBQ visit&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/bc20141.jpg&#34; alt=&#34;blizzcon 2014&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The entire party room of Lucille&amp;rsquo;s&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/bc20161.jpg&#34; alt=&#34;blizzcon 2015&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Our first house party&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/blizzcon.jpg&#34; alt=&#34;BlizzCon Halls&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Those hallowed halls&amp;hellip;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every November, we meet at BlizzCon in Anaheim to celebrate our victories and to drink to our futures. We&amp;rsquo;ve been playing together for more than a decade, and BlizzCon was the obvious rallying call. We play Blizzard games together, everybody loves a swag bag, and there&amp;rsquo;s nothing more suspenseful than waiting for the opening ceremony to start. Chris Metzen yelling to the audience? Pure joy.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/pastrami.jpg&#34; alt=&#34;The Hat&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We took a vegetarian here&amp;hellip; sorry Phil&amp;hellip;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We had our yearly rituals: pastrami at The Hat on Thursday after picking up our bags, bagels and Red Bull and waiting in line on Friday morning, a guild dinner at Lucille&amp;rsquo;s BBQ on Friday night, and trying to find an open bar party on Saturday after closing ceremonies&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;00&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;00&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Shout out to the Twitch after-parties, I appreciate you.
    &lt;/span&gt;
&lt;/label&gt;
. We had a great time together every year.&lt;/p&gt;

&lt;p&gt;There&amp;rsquo;s just one problem: Anaheim wasn&amp;rsquo;t big enough for us anymore.&lt;/p&gt;

&lt;p&gt;As the Trademarked family grew in size, it became harder and hard to find accommodations in Anaheim. We were spread out across Disney-themed rental houses and overpriced hotel rooms. Code Enforcement was showing up any time we tried to congregate. We couldn&amp;rsquo;t even host a barbecue without the &amp;ldquo;neighbors&amp;rdquo; calling us in. Everybody in the entire damn town is a narc. We even had to drive to the next city over to get liquor at reasonable prices&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;01&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;01&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Shout out to the Total Wine in Brea, I appreciate you.
    &lt;/span&gt;
&lt;/label&gt;
.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/bcroom.jpg&#34; alt=&#34;Rented Room&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Three hours of ping pong and various chips/dips&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It was BlizzCon 2018&amp;rsquo;s muted celebration that finally broke me. We had to rent out a party room just to get our crew all together at the same time. Paying for craft beer bracelets, serving cold cuts, and hitting shuffle on my Daft Punk playlist was never what I imagined.&lt;/p&gt;

&lt;h1 id=&#34;planning&#34;&gt;Planning&lt;/h1&gt;

&lt;p&gt;First, I want to set the record straight. There&amp;rsquo;s a reason that I don&amp;rsquo;t call it &amp;ldquo;SushiCon&amp;rdquo;, and that&amp;rsquo;s because Mory does way more than her share of the work. It&amp;rsquo;s &lt;strong&gt;TMCon&lt;/strong&gt; because it&amp;rsquo;s put on by all of Trademarked for all of Trademarked, and it&amp;rsquo;s not about any one person. When I say &amp;ldquo;we&amp;rdquo; here, I mean Mory and myself, and probably mostly Mory.&lt;/p&gt;

&lt;p&gt;Mory and I started planning TMCon right after BlizzCon 2018, in early November. We were sitting in the airport, waiting for our flight back to Seattle, and feeling like we hadn&amp;rsquo;t gotten to spend time with the people we came for. Housing and transportation restrictions ruined the community aspect. But if not BlizzCon, then what? What about just having people over to our house? Would that even work?&lt;/p&gt;

&lt;p&gt;We ruled out trying to line up with events in Seattle like PAX Prime, where people would have to pay for tickets and flights would be full. Our house in Kent is also too far from Seattle to make it a cheap ride away. We ended up picking a regular weekend in March that coincided with Saint Patrick&amp;rsquo;s Day&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;02&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;02&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Improvement #1: We&amp;rsquo;re planning TMCon 2020 to fall on a natural 3-day-weekend, to allow people to stay longer.
    &lt;/span&gt;
&lt;/label&gt;
. Flights were cheap, and we could add some holiday theming to the event. March also avoided the &amp;ldquo;too hot&amp;rdquo; problem that can happen at summer LAN parties, but also was late enough that we didn&amp;rsquo;t have to worry about snow. We planned for four days, Friday through Monday, but Saturday and Sunday were by far the most-attended days. On Monday, we were reduced to just those few folks waiting on their flights.&lt;/p&gt;

&lt;p&gt;I also made &lt;a href=&#34;https://hordetm.com/con2019&#34;&gt;a page on our website for TMCon&lt;/a&gt; to be able to easily invite people!&lt;/p&gt;

&lt;h1 id=&#34;setup&#34;&gt;Setup&lt;/h1&gt;

&lt;p&gt;We had no idea how many people would show up, so we posted signups in late December. We hoped that would give people enough time to buy flights and ask for time off of work. All told, we had over &lt;strong&gt;THIRTY&lt;/strong&gt; attendees at the inaugural TMCon.&lt;/p&gt;

&lt;p&gt;We broke our budget and planning up into broad categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bedding&lt;/li&gt;
&lt;li&gt;Food&lt;/li&gt;
&lt;li&gt;Gear (PCs, tables and chairs, etc)&lt;/li&gt;
&lt;li&gt;Swag/Branding&lt;/li&gt;
&lt;li&gt;Other&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;bedding&#34;&gt;Bedding&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/map.jpg&#34; alt=&#34;map&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I&amp;rsquo;m an artist too&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We measured every room in the house, and figured that we could host at least a dozen people. I originally planned for bunk beds&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;06&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;06&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;I had a grand vision for barracks-style accommodations, but alas, it wasn&amp;rsquo;t meant to be.
    &lt;/span&gt;
&lt;/label&gt;
, but we found that &lt;a href=&#34;https://smile.amazon.com/gp/product/B07F3FBSYS/&#34;&gt;high-quality air mattresses&lt;/a&gt; (a mix of twin and queen) were actually much more reasonable. We bought all of our bedding in bulk from Costco and Ross. I actually went to Costco for our normal grocery run, and I saw a display with jumbo pillows and blankets up front. I texted Mory and she had me fill a cart with them. We made some educated guesses about who would be staying over, and tried to assign rooms. We wanted a bed, sheet, blanket, pillow, case, and towel for every single sleeper. This had a high initial cost, but luckily, is 100% reusable for future years.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/bedding.jpg&#34; alt=&#34;Pillows&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/beds1.jpg&#34; alt=&#34;Beds 1&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/beds2.jpg&#34; alt=&#34;Beds 1&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We also planned a few extra beds for folks that needed to &amp;ldquo;crash&amp;rdquo;, which worked out in our favor. Our maximum capacity was the 19 people that stayed over on Saturday night. The tankless water heater was able to keep up with the demand, and I think everybody had plenty of space for themselves. We stacked 4-5 of the beds on top of each other in the corner of the VR/upstairs media room, which worked great to convert it into usable space after everyone woke up.&lt;/p&gt;

&lt;h2 id=&#34;food&#34;&gt;Food&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/bbq.jpg&#34; alt=&#34;Dogs&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Hot dogs parallelize well&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We planned out the meal schedule for three square meals a day: breakfast, lunch, and dinner. We had a snack and drink budget too, but we knew that meals would make up the bulk of our time and cost&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;03&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;03&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Improvement #2: We&amp;rsquo;re going to have more self-serve meals in 2020, to avoid any bottlenecks.
    &lt;/span&gt;
&lt;/label&gt;
.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/food-planning.jpg&#34; alt=&#34;food planning&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We redid this like 100 times&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We planned some of our signature meals, like Chris&amp;rsquo; Famous Skewers, Little Mac&amp;rsquo;s BBQ, and my Smash Burgers&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;04&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;04&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Well, &lt;a href=&#34;https://www.seriouseats.com/recipes/2014/03/ultra-smashed-cheeseburger-recipe-food-lab.html&#34;&gt;Kenji&amp;rsquo;s&lt;/a&gt;; I just cook &amp;lsquo;em.
    &lt;/span&gt;
&lt;/label&gt;
.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/costco1.jpg&#34; alt=&#34;Costco&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We updated the $100 game to be the $1000 game&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We bought food in three batches: a preliminary dry food and drink run, a two-cart Costco trip to load up on meats, and then a final Costco and Safeway trek to get all of the vegetables and fresh foods. I started food prep a full week before, trimming and brining a prime brisket for corned beef. I bought a cheap used fridge off of LetGo from a family in Tacoma just to give us the extra drink and freezer space. I also might&amp;rsquo;ve had a few impulse snack buys on the way, too.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/cookies.jpg&#34; alt=&#34;cookies&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;They were camping the spawn/doors&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/brisket.jpg&#34; alt=&#34;Brisket&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This turned into corned beef&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Meals went mostly according to plan, although I think we were just a little short in a few places. We did have a cascading bread failure:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;People used outdoor rolls instead of bread for sandwiches, because ?? reasons ??&lt;/li&gt;
&lt;li&gt;People used brioche buns instead of outdoor rolls for hot dogs, since we ran out of outdoor rolls (see #1)&lt;/li&gt;
&lt;li&gt;People used Hawaiian rolls instead of brioche buns for hamburgers, since we ran out of brioche buns (see #2)&lt;/li&gt;
&lt;li&gt;We didn&amp;rsquo;t have enough Hawaiian rolls for the pulled pork (see #3)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/marbled.jpg&#34; alt=&#34;skewers&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Look at this beef that Chris got for skewers&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/meat.jpg&#34; alt=&#34;meat&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cooking with gas&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We ended up pivoting on a couple of scheduled recipes&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;04&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;04&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;We didn&amp;rsquo;t have the food schedule posted anywhere, so we kept fielding questions about it. It&amp;rsquo;ll be posted next year!
    &lt;/span&gt;
&lt;/label&gt;
, namely the chili. After seeing how much time was being consumed on preparing meals, I wanted something simpler than the all-day affair that Slake&amp;rsquo;s chili demands. I definitely underestimated the work it takes to cook for 25 people. At one point, I had my two sous-chefs, David and Scott, running all 4 burners on my stove at the same time. The food was great, it just took most of my time throughout the weekend.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/overclocked.jpg&#34; alt=&#34;overclocked sous vide&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Now we&amp;rsquo;re thinking with portals&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/cornedbeef.jpg&#34; alt=&#34;corned beef&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I didn&amp;rsquo;t remember to get green beer&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I also made a few steaks for folks after 2 AM, which is about the time when you want some meat to soak up the alcohol you&amp;rsquo;ve been drinking.&lt;/p&gt;

&lt;h2 id=&#34;gear&#34;&gt;Gear&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/gaming.jpg&#34; alt=&#34;gaming&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The main LAN area, 10 PCs deep&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My garage was already full of computers and computer accessories from LAN parties past. I added a few more PCs and monitors to bring us up to 16 total stations. Jeff and Roman went over the top on helping me here. I wanted to be able to field at least a full Overwatch lobby, plus a few extra. We planned a few spots for people to bring their laptops or their own rigs too. I created a new wifi guest network with my Ubiquiti gear in like 30 seconds.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/periphs.jpg&#34; alt=&#34;periphs&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Amazon is the best&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Like bedding, I knew this stuff would be reusable, so I bought a ton of &lt;a href=&#34;https://smile.amazon.com/gp/product/B06XCF8Z91/&#34;&gt;keyboards&lt;/a&gt;, &lt;a href=&#34;https://smile.amazon.com/gp/product/B07HFX399R/&#34;&gt;gaming mice&lt;/a&gt; and &lt;a href=&#34;https://smile.amazon.com/gp/product/B07CZNBFZ8/&#34;&gt;pads&lt;/a&gt;, and &lt;a href=&#34;https://smile.amazon.com/gp/product/B07LG116BF/&#34;&gt;cheap headsets&lt;/a&gt; from Amazon. We had so many unique and random peripherals attached to each PC. As we drew up our floor plan, I saw that some 8-foot tables would fit perfectly in the computer area. I found a local rental company that brought us a stack of &lt;a href=&#34;https://smile.amazon.com/gp/product/B07K4V2NN4/&#34;&gt;tables&lt;/a&gt; and chairs to accommodate everybody&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;03&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;03&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Improvement #3: We&amp;rsquo;ll be investing in our own tables/chairs for 2020.
    &lt;/span&gt;
&lt;/label&gt;
.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/chairs.jpg&#34; alt=&#34;chairs&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Shout out to Tents and Party Rents, LLC&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For consoles, I reached out to my coworkers, who came through with a ton of great gear. We had fully kitted out Xboxes and XB1s, more Switches and pro controllers than I could count, and a full room-scale VR setup. I kept everything straight by putting a small piece of &lt;a href=&#34;https://smile.amazon.com/gp/product/B0741S21B3/&#34;&gt;colored masking tape&lt;/a&gt; on each peripheral, one color per donor. I just bought a big pack of different colored rolls of tape from Amazon. We also borrowed some board games, and I bought a few party board games to round out my collection. Codenames was particular fun to play with a group like ours.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/consoles.jpg&#34; alt=&#34;consoles&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Room vs Room LAN battles&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I had two console rooms set up: one on the main floor, and one upstairs. However, we also used the upstairs room for VR, since it was out of the way and had a good layout for it. Once we had the VR experts arrive and get the equipment set up, it was Superhot and Beat Saber the rest of the weekend. I wasn&amp;rsquo;t convinced originally that we should even have VR, but it was one of the stars of the event.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/vr1.jpg&#34; alt=&#34;vr&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I had plenty of power and networking cables, save for being a single power strip short. My one and only Target run during TMCon was to grab that missing item so that we could get Artemis set up properly&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;04&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;04&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Improvement #4: We&amp;rsquo;ll have a more dedicated Artemis / collaborative gameplay room next year.
    &lt;/span&gt;
&lt;/label&gt;
. Random HDMI-DVI cable for the VR PC? Got it. 500&amp;rsquo; box of CAT-5E to run my own cable lengths? Got it. Weird power cable for the Xbox? Got it. Enough USB and lightning chargers for a few dozen phones? No problem. Bad SATA cable in the PC? Check the bin.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/phone-label.jpg&#34; alt=&#34;gear&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/gaffer.jpg&#34; alt=&#34;gaffer tape&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Don&amp;rsquo;t trip&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The early arrivers did the lion&amp;rsquo;s share of the setup work. Ryan and Chris were working together to set up PCs, just like we all did years ago. They imaged the PCs, hooked up the peripherals, tested configurations, set up networking, pre-installed games, and ran the cables. We only flipped a breaker twice the entire weekend!&lt;/p&gt;

&lt;p&gt;One thing that didn&amp;rsquo;t work out great was music. I had a dedicated Spotify iPad and a shared TMCon playlist set up, and a bluetooth speaker to provide good quality sound, but nobody seemed interested in adding any music. I ended up just putting it on different Spotify &amp;ldquo;radio&amp;rdquo; stations each day and letting it ride. Not as useful as I thought. We also never got a full room vs room console match going, since VR dominated the interest in the second console room.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/gig.jpg&#34; alt=&#34;Comcast&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I also upgraded to &lt;a href=&#34;https://smile.amazon.com/gp/product/B0723599RQ/&#34;&gt;gigabit internet&lt;/a&gt;. You know, just in case.&lt;/p&gt;

&lt;h2 id=&#34;swag-branding&#34;&gt;Swag/Branding&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/logo.png&#34; alt=&#34;logo&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The official TMCon logo&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I wanted to go big. Every year for BlizzCon, we bought everyone in the guild t-shirts. With the short timeline to the event and the drop-in/drop-out nature of the RSVPs, I didn&amp;rsquo;t want to commit to shirts. Instead, we went with a guild cup.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/cup1.jpg&#34; alt=&#34;Cup 1&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/cup2.jpg&#34; alt=&#34;Cup 2&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Mory designed the logo, and I started shopping around to short-order sites. In addition to the cups, we considered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pens&lt;/li&gt;
&lt;li&gt;Bottle openers&lt;/li&gt;
&lt;li&gt;Magnets&lt;/li&gt;
&lt;li&gt;Water bottles&lt;/li&gt;
&lt;li&gt;Umbrellas&lt;/li&gt;
&lt;li&gt;Etc&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/vinyl.jpg&#34; alt=&#34;vinyl&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I also ordered a vinyl sign to mark the house, which I think turned out great. I also purposefully left the year off the sign, so we can reuse it next time!&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/attendee1.jpg&#34; alt=&#34;Bacon&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bacon, attendee #1!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/badges.jpg&#34; alt=&#34;badges 1&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/admin-badges.jpg&#34; alt=&#34;badges 2&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We also wanted to capture some of the BlizzCon feel at TMCon, so I grabbed some &lt;a href=&#34;https://smile.amazon.com/gp/product/B01M0L6NA6/&#34;&gt;red lanyards and badge holders&lt;/a&gt;. Mory worked up a template for the badges, and I printed them out on cardstock. We even made custom vendor and admin badges to give it some more flavor. Because we had many different groups all colliding at TMCon (coworkers, friends, family, WoW folks, Destiny boys, etc), I wanted people to be able to mingle. We also put the wifi password on the back of the badge, so we wouldn&amp;rsquo;t have to field questions about it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/rules.jpg&#34; alt=&#34;rules&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We had these both posted and distributed throughout the house&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I also printed up our House Rules to distribute to attendees. Since this was the first TMCon, I wanted to make sure that we set the stage right away. The rules were both simple and loose, but got the point across&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;05&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;05&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Improvement #4: There won&amp;rsquo;t be a &amp;lsquo;kids day&amp;rsquo; at TMCon 2020, so drinking can start immediately.
    &lt;/span&gt;
&lt;/label&gt;
.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/horde.jpg&#34; alt=&#34;horde&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Complete with real hunted feathers&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Witty also crafted us a custom Horde banner, that we&amp;rsquo;ll proudly display in our home!!!&lt;/p&gt;

&lt;h2 id=&#34;other&#34;&gt;Other&lt;/h2&gt;

&lt;p&gt;We made the specific decision for the inaugural TMCon to avoid any external activities. Driving people to and from the airport would be the only time we left the house. We&amp;rsquo;d focus on keeping people engaged and entertained, instead of trying to schedule events and wrangle cats and figure out payments. People were free to leave (and some did!), but the vast majority of folks just hung out all weekend with us.&lt;/p&gt;

&lt;p&gt;We helped to coordinate a few flights, to make sure anybody that wanted to attend could come. I had been stashing my airline reward miles for just such an occasion anyway. We figured out the schedule of when everyone was arriving, and grouped people up into time slots to minimize the airport trips where we could.&lt;/p&gt;

&lt;h1 id=&#34;tmcon-2019&#34;&gt;TMCon 2019&lt;/h1&gt;

&lt;p&gt;The event itself was amazing. We had great late-night discussions until 4-5 AM every night, and we all rallied for breakfast by 10. We played video games together, side by side. We got to accuse each other of cheating at Counter-Strike and scream at our Helm team to JUST DOCK THE DAMN SHIP.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/bruery2.jpg&#34; alt=&#34;bruery&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/okies.jpg&#34; alt=&#34;OKies&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We tasted Rich&amp;rsquo;s generously donated beers and QTFOOTS&amp;rsquo; curated whiskeys, we played a D&amp;amp;D one-shot full of mystery and betrayal, and we jammed the fuck out on Beat Saber. We even got some OG Halo in for good measure. My dogs got more pets than they&amp;rsquo;ve ever gotten in a single week.&lt;/p&gt;

&lt;p&gt;TMCon 2019 was the party that I always wished we could have at BlizzCon. It was dozens of guildmates and allies playing together, sharing meals, and kicking ass. It was four days of friendship, built around games.&lt;/p&gt;

&lt;p&gt;My wife, my sister, my coworkers, my former coworkers, new local friends, and my clanmates from another timezone were all at the same table.&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;ve been playing together for over a decade. Logging in every Thursday and Sunday to play WoW, grinding power in Destiny to hit the raid on Tuesday, strategizing our Overwatch teams, rerolling for sockets in Diablo, hotdropping in every battle royale with parachutes, and everything in between.&lt;/p&gt;

&lt;p&gt;And we&amp;rsquo;re just getting started for next year.&lt;/p&gt;

&lt;p&gt;Orange 2, baby.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/tmcon/sushi.jpg&#34; alt=&#34;sushi&#34; /&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Austin, TX - 2018</title>
      <link>https://chasechristian.com/blog/2019/01/austin-tx-2018/</link>
      <pubDate>Fri, 11 Jan 2019 01:21:00 -0800</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2019/01/austin-tx-2018/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com/img/austin/franklin.jpg" />
	

&lt;p&gt;I love BBQ.&lt;/p&gt;

&lt;p&gt;In 2017, I started thinking of making a trip to all of the great BBQ cities in the US. Rather than trying to visit all of them in one go, I decided to dedicate a few days to each. The first city on my list was Austin, TX. I researched the best BBQ places in the city and surrounding area, tapping on knowledge from friends and coworkers who had lived in Austin. I had a list of 9 places to try, and planned a week to hit them all. One of the challenges was that many BBQ places are only open for lunch, as they&amp;rsquo;re out of meat by mid-afternoon.&lt;/p&gt;

&lt;h1 id=&#34;texas-bbq&#34;&gt;Texas BBQ&lt;/h1&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/tx.jpg&#34; alt=&#34;Texas&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Texas BBQ is simple: salt and pepper. There&amp;rsquo;s no sauce needed to complicate things&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;00&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;00&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Although I did have some great sauce.
    &lt;/span&gt;
&lt;/label&gt;
. A healthy dry rub with fresh-ground pepper and a several hours of indirect heat is all you need.&lt;/p&gt;

&lt;p&gt;Brisket is the signature of Texas BBQ. If your brisket isn&amp;rsquo;t good, sorry. As I went about the task of categorizing and rating all of the BBQ that I ate, brisket always pulls the most weight.  I tried the brisket everywhere that it was offered.&lt;/p&gt;

&lt;p&gt;Texas BBQ also has a certain style. A lunch tray with butcher paper is how we were served at nearly every establishment. Pickles and white bread are always available. Everything is dished out by the pound, which makes it easy to gauge exactly what you&amp;rsquo;re in for.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;la-barbecue&#34;&gt;la Barbecue&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;2027 E Cesar Chavez
Austin, TX 78702&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/labbq.jpg&#34; alt=&#34;la barbecue&#34; /&gt;&lt;/p&gt;

&lt;p&gt;One of the few BBQ places owned by women, &lt;a href=&#34;https://www.labarbecue.com/&#34;&gt;la Barbecue&lt;/a&gt; was my first stop. It&amp;rsquo;s located in Austin proper. One of the owners hails from the Mueller family line of Texas BBQ, but they do it differently at la Barbecue.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/labbq-rig.jpg&#34; alt=&#34;la barbecue rig&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/labbq-inside.jpg&#34; alt=&#34;la barbecue interior&#34; /&gt;&lt;/p&gt;

&lt;p&gt;My recon had told me that the chipotle coleslaw was a signature item, and my sources were right. It was one of the best side of the whole trip, right off the bat.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/labbq-plate.jpg&#34; alt=&#34;la barbecue plate&#34; /&gt;&lt;/p&gt;

&lt;p&gt;The brisket here was great, with melty fat. This is why you get up early and make sure you&amp;rsquo;re in line at opening: you want the best possible brisket. Wait too long, and the fat will set again.&lt;/p&gt;

&lt;p&gt;The best item on the plate, however, was the beef rib. I was surprised, because I hadn&amp;rsquo;t heard that they were known for their beef ribs.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/labbq-rib.jpg&#34; alt=&#34;la barbecue beef rib&#34; /&gt;&lt;/p&gt;

&lt;p&gt;It was cooked perfectly, had great flavor and bark, and we savored every single bite. It was our favorite beef rib we had on the entire trip.&lt;/p&gt;

&lt;h4 id=&#34;rating-4th-overall-1-beef-ribs&#34;&gt;Rating: 4th overall (#1 beef ribs)&lt;/h4&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;alamo-draft-house&#34;&gt;Alamo Draft House&lt;/h1&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/alamo.jpg&#34; alt=&#34;Alamo Draft House&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve been hearing about &lt;a href=&#34;https://drafthouse.com/austin&#34;&gt;Alamo Draft House&lt;/a&gt; from friends all over for years, and I finally got to visit one. I watched &lt;em&gt;Mission Impossible: Fallout&lt;/em&gt; while Mory went shopping at some art stores. I love the custom trailers and intros, it was very cool. They also make a great dark and stormy.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/alamo-2.jpg&#34; alt=&#34;alamo draft house seats&#34; /&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;salt-lick-bbq&#34;&gt;Salt Lick BBQ&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;18300 Farm to Market Rd 1826
Driftwood, TX 78619&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/saltlick-rig.jpg&#34; alt=&#34;Salt Lick &#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://saltlickbbq.com/driftwood/&#34;&gt;Salt Lick BBQ&lt;/a&gt; was easily the most controversial of the restaurants we visited. Half the people I asked said that I had to go, the other half tried to wave me off. We decided that it was worth the drive out to Driftwood to give it a shot, especially since they were open for dinner, which made it easy to schedule.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/saltlick.jpg&#34; alt=&#34;Salt Lick&#34; /&gt;&lt;/p&gt;

&lt;p&gt;The brisket at Salt Lick was just OK. It didn&amp;rsquo;t have the great bark or melty fat of the top-tier places. The house-made sausage was good, but not great.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/saltlick-rib.jpg&#34; alt=&#34;salt lick ribs&#34; /&gt;&lt;/p&gt;

&lt;p&gt;It would&amp;rsquo;ve been a disappointing trip if it weren&amp;rsquo;t for their pork ribs. They had an amazing sweet glaze that had me ordering an entire second plate. These ribs took the top spot for pork ribs on my trip. Perfectly cooked and absolutely delicious. Worth it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/saltlick-pie.jpg&#34; alt=&#34;salt lick pecan pie&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We got a variety of food from Salt Lick, including sides and dessert. The pecan pie and cobbler were both delicious! However, this is Texas BBQ, so the only thing being rated is the meat.&lt;/p&gt;

&lt;h4 id=&#34;rating-8th-overall-1-pork-ribs&#34;&gt;Rating: 8th overall (#1 pork ribs)&lt;/h4&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;franklin-bbq&#34;&gt;Franklin BBQ&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;900 E. 11th
Austin, TX 78702&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/franklin.jpg&#34; alt=&#34;Franklin BBQ&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://franklinbbq.com/&#34;&gt;Franklin BBQ&lt;/a&gt; is as close to a Mecca as there is for BBQ fans. It was the spot that made Austin the first city on my must-visit list. It&amp;rsquo;s one of the highest rated and acclaimed restaurants in the country, and the lines prove it. We got there bright and early and &lt;em&gt;still&lt;/em&gt; waited in line for hours. We met a couple in line that had also traveled from out of state, just for a taste of the brisket. We were visiting after a fire had shut down the restaurant for months in 2017, but they were back and smoking in August, one year later.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/franklin-plate.jpg&#34; alt=&#34;Franklin BBQ plate&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Let&amp;rsquo;s just open with the brisket: it&amp;rsquo;s the best in the state. It lived up to my wildest expectations, and then some. The bark was crisp and flavorful, and the fat was the melt-in-your-mouth meat-butter that comes from a perfect cook. When I think back to this trip, the first flavor I remember was licking my lips at Franklin, and tasting the pepper.&lt;/p&gt;

&lt;p&gt;The turkey here was also a sleeper hit. We tried the smoked turkey at several places, and Franklin&amp;rsquo;s was tops. It was savory and buttery in all the right ways, and it was one of Mory&amp;rsquo;s favorite items from the entire trip. Definitely worth getting a few slices to mix it up with the brisket.&lt;/p&gt;

&lt;p&gt;The pulled pork was similarly delicious, with a light squeeze of sauce amping it up. It was my 2nd-favorite pulled pork on the trip, with no complaints about the flavor of the meat or the cook. It was great on a fresh bun.&lt;/p&gt;

&lt;p&gt;The pork ribs were the only thing that was less-than-perfect. Not bad by any means, but simply not up to the level of pork ribs we found elsewhere. I&amp;rsquo;d double-down on more brisket or turkey next time instead.&lt;/p&gt;

&lt;h4 id=&#34;rating-tie-1st-overall-1-brisket-1-turkey-2-pulled-pork&#34;&gt;Rating: TIE - 1st overall (#1 brisket, #1 turkey, #2 pulled pork)&lt;/h4&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;rudy-s-country-store&#34;&gt;Rudy&amp;rsquo;s Country Store&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;2451 S. Capital of Texas Hwy
Austin, TX 78746&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/rudys.jpg&#34; alt=&#34;Rudy&#39;s&#34; /&gt;&lt;/p&gt;

&lt;p&gt;The only real &amp;ldquo;chain&amp;rdquo; BBQ place we visited was &lt;a href=&#34;https://rudysbbq.com/location/detail/austin-360-tx&#34;&gt;Rudy&amp;rsquo;s Country Store&lt;/a&gt;. Frequently colocated with gas stations, you can find Rudy&amp;rsquo;s all over the place in Austin. They were another easy choice for dinner, as they&amp;rsquo;re open long hours and won&amp;rsquo;t run out of meat. The prices here are also very cheap, comparatively.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/rudys-drinks.jpg&#34; alt=&#34;Rudy&#39;s drinks&#34; /&gt;&lt;/p&gt;

&lt;p&gt;The creamed corn at Rudy&amp;rsquo;s deserves its own paragraph. While they have a ton of sides, none are as delicious as the creamed corn. It was recommended to me by friends, but they didn&amp;rsquo;t hype it up enough. It&amp;rsquo;s exactly what you want creamed corn to be: buttery, and you can tell there are corn chunks in it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/rudys-plate.jpg&#34; alt=&#34;Rudy&#39;s plate&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Where Rudy&amp;rsquo;s fails is the brisket. It was easily the worst brisket we had on the trip, with zero bark and way too much smoke. I didn&amp;rsquo;t expect much from a place that sells brisket &amp;ldquo;all day&amp;rdquo; and no guarantee of freshness, but I&amp;rsquo;ve had leftover brisket better than this.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/rudys-sause.jpg&#34; alt=&#34;Rudy&#39;s sause&#34; /&gt;&lt;/p&gt;

&lt;p&gt;There were bright spots, though. The pulled pork was actually amazing, especially with Rudy&amp;rsquo;s special &amp;ldquo;sause&amp;rdquo;. This sauce is legit. I know it goes against the spirit of Texas BBQ, but that sauce elevated their pulled pork to #1 in my rankings.&lt;/p&gt;

&lt;p&gt;The prime rib was also delicious, and it was another of Mory&amp;rsquo;s favorite items. I&amp;rsquo;m not sure that prime rib counts as BBQ, but it was great anyway.&lt;/p&gt;

&lt;h4 id=&#34;rating-7th-overall-1-pulled-pork&#34;&gt;Rating: 7th overall (#1 pulled pork)&lt;/h4&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;black-s-barbecue&#34;&gt;Black&amp;rsquo;s Barbecue&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;215 North Main St
Lockhart, Texas 78644&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/blacks.jpg&#34; alt=&#34;Black&#39;s barbecue&#34; /&gt;&lt;/p&gt;

&lt;p&gt;After spending our first couple of days in Austin, we ventured out to Lockhart&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;01&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;01&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;The official &lt;a href=&#34;https://www.tsl.texas.gov/ref/abouttx/capitals.html&#34;&gt;Barbecue Capital of Texas&lt;/a&gt;
    &lt;/span&gt;
&lt;/label&gt;
 to visit two of the oldest and most storied BBQ places in the area. Black&amp;rsquo;s Barbecue claims to be oldest major BBQ restaurant in Texas, and they might be. The Black family has run the place for over 80 years now.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/blacks-inside.jpg&#34; alt=&#34;Black&#39;s family&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We got to Black&amp;rsquo;s a few minutes before opening, and waited out front. We were the first customers of the day. They have a unique setup where you can dole out your own sides and then get the tally at the register.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/blacks-plate.jpg&#34; alt=&#34;Black&#39;s plate&#34; /&gt;&lt;/p&gt;

&lt;p&gt;The brisket from Black&amp;rsquo;s was just OK. It was the driest cut we ever got, and despite good flavor, didn&amp;rsquo;t have the cook quality that we saw elsewhere. This might be a style thing, and I missed it, but it didn&amp;rsquo;t meet what I was looking for.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/blacks-rib.jpg&#34; alt=&#34;Black&#39;s beef rib&#34; /&gt;&lt;/p&gt;

&lt;p&gt;The beef ribs here are absolutely massive. Be prepared for it to be well over 1 lb in size. This was our favorite item on the menu. The custom sausage blend was unique, and in the better half of sausages that we had. The turkey was unfortunately the worst we tried as well.&lt;/p&gt;

&lt;p&gt;Somewhere had to be last, and despite high expectations, Black&amp;rsquo;s was the worst of the nine spots we visited. Don&amp;rsquo;t get me wrong, I&amp;rsquo;d happily eat there again. But when you&amp;rsquo;re comparing it at the altar of the best Texas BBQ&amp;hellip; it falls a little short.&lt;/p&gt;

&lt;h4 id=&#34;rating-9th-overall&#34;&gt;Rating: 9th overall&lt;/h4&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;kreuz-market&#34;&gt;Kreuz Market&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;619 North Colorado Street
Lockhart, Texas 78644&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/kreuz.jpg&#34; alt=&#34;Kreuz&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We had planned to wait a few hours before going to the next spot, but we were still pretty hungry after eating at Black&amp;rsquo;s. &lt;a href=&#34;https://www.kreuzmarket.com/&#34;&gt;Kreuz Market&lt;/a&gt; is just around the corner in Lockhart.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/kreuz-veggie.jpg&#34; alt=&#34;Kreuz no veg&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Their aesthetic is simple: no plates (just butcher paper), no forks, no salad, and no vegetarians. It&amp;rsquo;s one of the few spots where you come right up to the pit to order your meat.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/kreuz-rig.jpg&#34; alt=&#34;Kreuz pit&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Kreuz was refreshingly good BBQ. I didn&amp;rsquo;t want the trip out to Lockhart to be for nothing, and Kreuz made it worth the drive.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/kreuz-plate.jpg&#34; alt=&#34;Kreuz plate&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Their brisket was very good, and fresh off the pit. It was hot and smoky and exactly what I needed. They also had a special here, &amp;ldquo;shoulder clod&amp;rdquo;, which is similar to a pulled pork. It was great!&lt;/p&gt;

&lt;p&gt;The pork ribs here were the best dry pork ribs, and second only to Salt Lick&amp;rsquo;s sauced ribs overall. I really enjoyed them. They had a solid bite and some great flavor. The sausage was also savory and great.&lt;/p&gt;

&lt;p&gt;They also had prime rib here, which Mory said was great, but not quite as good as Rudy&amp;rsquo;s, as surprising as I found that. All of the sides were tasty, although also all were spicy and had some kick.&lt;/p&gt;

&lt;h4 id=&#34;rating-6th-overall-2-pork-ribs-3-sausage&#34;&gt;Rating: 6th overall (#2 pork ribs, #3 sausage)&lt;/h4&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;terry-black-s-bbq&#34;&gt;Terry Black&amp;rsquo;s BBQ&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;1003 Barton Springs Rd
Austin, TX 78704&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/terryblacks.jpg&#34; alt=&#34;Terry Black&#39;s&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Despite the name, there&amp;rsquo;s no Terry running &lt;a href=&#34;https://www.terryblacksbbq.com/&#34;&gt;Terry Black&amp;rsquo;s BBQ&lt;/a&gt;. Terry Black, from the Black family line of Texas BBQ, became a CPA in Lockhart, with his office right across the street from the family BBQ joint. His twin sons, however, have carried on the family business in Austin. Despite some disagreements with their kin in Lockhart, the heritage is hard to deny. Their mother&amp;rsquo;s side of the family is also related to Smitty&amp;rsquo;s Market in Lockhart, the one place I didn&amp;rsquo;t get to visit on this trip.&lt;/p&gt;

&lt;p&gt;After driving back to Austin, we were going to Terry Black&amp;rsquo;s for dinner. As I mentioned, many BBQ places don&amp;rsquo;t even do dinner, since they&amp;rsquo;re out of meat after lunch. Terry Black&amp;rsquo;s is much more of a traditional restaurant-style location than anywhere else we went, with a very different aesthetic. You still take your tray up to the butcher and order by the pound, but the rest was much more refined.&lt;/p&gt;

&lt;p&gt;Of course, this had me worried. Who knew when this meat was cooked? Surely it can&amp;rsquo;t be the same quality as right off the pit, in the late morning, right?&lt;/p&gt;

&lt;p&gt;My fears were unfounded. Terry Black&amp;rsquo;s has the best BBQ in Austin, outside of Aaron Franklin&amp;rsquo;s brisket.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/terryblacks-plate.jpg&#34; alt=&#34;Terry Black&#39;s plate&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Their brisket can go bite-for-bite with Aaron Franklin&amp;rsquo;s, only slipping to 2nd place due to Franklin serving it just a little bit fresher. I honestly can&amp;rsquo;t believe how dang delicious this brisket was as dinner time. It&amp;rsquo;s a miracle. Perfectly melty and with a bark to die for.&lt;/p&gt;

&lt;p&gt;Their pork ribs had a great bark as well, which is one of their clear specialties. They had a better bite than anywhere but Kreuz. The jalapeño cheddar sausage was the best sausage of the trip, hands down, no question. I went back for more brisket and sausage after under-ordering my first time through. Their sweet BBQ sauce was another tasty surprise. Franklin had better turkey, but only by a small measure.&lt;/p&gt;

&lt;p&gt;Also, every dang side was perfect. We finished every single bite on the tray.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/terryblacks-patio.jpg&#34; alt=&#34;Terry Black&#39;s patio&#34; /&gt;&lt;/p&gt;

&lt;p&gt;The meal we had at Terry Black&amp;rsquo;s, during dinner, with nearly no waiting in line, and no driving, was spectacular. If anything, it&amp;rsquo;s the underappreciated gem of Austin. If I lived there, I&amp;rsquo;m sure I&amp;rsquo;d get up early and take my tourist friends to Franklin BBQ, bud I&amp;rsquo;d eat every week at Terry Black&amp;rsquo;s. Eating out on the patio on a nice summer evening was divine.&lt;/p&gt;

&lt;h4 id=&#34;rating-tie-1st-overall-1-sausage-2-brisket-3-pork-rib-3-turkey&#34;&gt;Rating: TIE - 1st overall (#1 sausage, #2 brisket, #3 pork rib, #3 turkey)&lt;/h4&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;bats-at-congress-avenue-bridge&#34;&gt;Bats at Congress Avenue Bridge&lt;/h1&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/bat-bridge.jpg&#34; alt=&#34;bats at bridge&#34; /&gt;&lt;/p&gt;

&lt;p&gt;One of the reasons we picked August for our trip was the &lt;a href=&#34;https://www.tripsavvy.com/austins-bat-bridge-a-viewing-guide-254880&#34;&gt;annual season of flights&lt;/a&gt; of the bats that live underneath Congress Avenue Bridge. We staked out a spot in the grass early, and waited until sundown to see millions of bats flying all over the place. It was a very cool experience, and only a couple of blocks from Terry Black&amp;rsquo;s. It got way more crowded as dusk approached.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/bat-bridge-2.jpg&#34; alt=&#34;bats at bridge full&#34; /&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;snow-s-bbq&#34;&gt;Snow&amp;rsquo;s BBQ&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;516 Main Street
Lexington, Texas 78947&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/snows.jpg&#34; alt=&#34;Snow&#39;s&#34; /&gt;&lt;/p&gt;

&lt;p&gt;All the way out in Lexington, &lt;a href=&#34;https://snowsbbq.com/&#34;&gt;Snow&amp;rsquo;s BBQ&lt;/a&gt; was a late addition to my list. A coworker recommended them at the last minute, and the reviews looked too good to be true. They&amp;rsquo;re only open on Saturdays, which meant rearranging the schedule and waking up real early to get out there in time, as they open bright and early.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/snows-rig.jpg&#34; alt=&#34;Snow&#39;s rig&#34; /&gt;&lt;/p&gt;

&lt;p&gt;It was worth the long drive. We got to see some more of the Texas landscape, and the drive was easy.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/snows-line.jpg&#34; alt=&#34;Snow&#39;s line&#34; /&gt;&lt;/p&gt;

&lt;p&gt;The line, however, was not. It was longest line we had to wait in anywhere, even Franklin BBQ. The upside is that there&amp;rsquo;s free beer while you&amp;rsquo;re waiting in line.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/snows-beer.jpg&#34; alt=&#34;Snow&#39;s beer&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I can say that the Lone Star that was supplied was the most beer I&amp;rsquo;ve had before lunch just about ever. The line is even an event in itself. The pitmasters would come out and have people count off and tally up, and then they&amp;rsquo;d mark certain spots in line. There was a raffle where if they picked your number, you got shuttled right to the front of the line. No such luck for us.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/snows-case.jpg&#34; alt=&#34;Snow&#39;s counter&#34; /&gt;&lt;/p&gt;

&lt;p&gt;After a few hours in the morning Texas sun, we got to the humble counter. We asked for one of everything.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/snows-plate.jpg&#34; alt=&#34;Snow&#39;s plate&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Snow&amp;rsquo;s brisket is top-tier. A little lighter on smoke than the competition, but with tons of beefy flavor and tender fat. It was a refreshing change of pace, and great in its own right.&lt;/p&gt;

&lt;p&gt;The pork shoulder steak was much smokier, and the contrast between the two made for interesting eating. I really enjoyed it, although I generally prefer pulled pork to a pork steak. Their sausage was also very smoky and had a nice crunchy texture on the exterior. The turkey had a great herby flavor, but was just a bit dry. My one regret is that we were literally two spots away from getting pork ribs, but instead we watched them run out for the day.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/snows-sign.jpg&#34; alt=&#34;Snow&#39;s sign&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Snow&amp;rsquo;s was well worth the drive, especially for the brisket and unique sausage.&lt;/p&gt;

&lt;h4 id=&#34;rating-3rd-overall-2-sausage-3-brisket&#34;&gt;Rating: 3rd overall (#2 sausage, #3 brisket)&lt;/h4&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;louie-mueller-s-bbq&#34;&gt;Louie Mueller&amp;rsquo;s BBQ&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;206 W. Second Street
Taylor, TX 76574&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/mueller.jpg&#34; alt=&#34;louie mueller&#39;s&#34; /&gt;&lt;/p&gt;

&lt;p&gt;The Cathedral of Smoke, &lt;a href=&#34;https://www.louiemuellerbarbecue.com/&#34;&gt;Louie Mueller&lt;/a&gt;, was our final stop. It was Saturday, around lunch time, after an early start at Snow&amp;rsquo;s. College football was on every TV, with Texas in a tough match.&lt;/p&gt;

&lt;p&gt;Louie Mueller is a classic, in both good ways and bad ways. The building is several decades old, and it was incredibly hot and humid inside. I wasn&amp;rsquo;t sure if we were being smoked, or the other way around. No beer in line here, but there were coolers with soda, at least. We were cheered on by our friend, Guy Fieri.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/mueller-fieri.jpg&#34; alt=&#34;Guy Fieri&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Louie Mueller knows how to cook brisket. It was incredibly moist, but with a coarse bark, which is tough to pull off. I really enjoyed it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/austin/mueller-plate.jpg&#34; alt=&#34;louie muller plate&#34; /&gt;&lt;/p&gt;

&lt;p&gt;My notes for the trip had just one item on the list for Louie Mueller: beef rib. All of my friends had recommended it, and I wasn&amp;rsquo;t going to let them down. The beef rib here was Mory&amp;rsquo;s favorite, and worth the stop for sure.&lt;/p&gt;

&lt;p&gt;The pulled pork at Mueller could&amp;rsquo;ve used more smoke for my tastes, but was delicious with some sauce. The turkey here was actually my favorite, and so I&amp;rsquo;m glad I added a few slices on a whim. We filled up on meat here, as it was our last chance before heading to the airport. As the Longhorns fell further behind, we decided it was time to leave.&lt;/p&gt;

&lt;h4 id=&#34;rating-5th-overall-2-beef-rib-2-turkey&#34;&gt;Rating: 5th overall (#2 beef rib, #2 turkey)&lt;/h4&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h1&gt;

&lt;p&gt;We had an amazing time in Austin, with nine of the best meals of my life. I&amp;rsquo;d visit again in a heartbeat. Next up, Carolina.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>My Three Dogs</title>
      <link>https://chasechristian.com/blog/2018/11/my-three-dogs/</link>
      <pubDate>Thu, 22 Nov 2018 01:21:00 -0800</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2018/11/my-three-dogs/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com/img/puppies.jpg" />
	

&lt;p&gt;I have three dogs.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/groupdogs.jpg&#34; alt=&#34;all three dogs&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Their names are Ivy, Rex, and Lia.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/lia.jpg&#34; alt=&#34;lia&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Lia is Ivy&amp;rsquo;s daughter, and our youngest puppy. She loves bananas, and she loves to bring you things. You can see the pride in her eyes when she presents you with a gift. She has zero concept of personal space, and will happily hop right on top of Ivy or Rex on the couch.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/liaflower.jpg&#34; alt=&#34;lia flower&#34; /&gt;&lt;/p&gt;

&lt;p&gt;At one point in February 2018, I had nine (9) dogs, which is a lot of dogs to have.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/puppies.jpg&#34; alt=&#34;puppies&#34; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Where&amp;rsquo;d you get that dog? We&amp;rsquo;d LOVE a Golden Retriever like that!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It&amp;rsquo;s hard not to love a Golden. As our friends and our family met Ivy and Rex, several of them asked for our breeders&amp;rsquo; contact info. They also let us know that if they were left alone with the dogs for long enough, we might not get them back. We heard stories of people who grew up with Goldens, and wanted that same experience for their kids.&lt;/p&gt;

&lt;p&gt;We took all of these comments to heart. Ivy was not spayed young, and so we talked about her having a litter of puppies. Ivy is a beautiful and textbook Golden, her test results had all been positive, and her personality and looks had already won over everyone who had met her. I have a little bit of experience with dog breeding, as my mother had been a small dog breeder in my last few years at home. I know all about the whelping process, vaccines, necessary care, and the like. My wife also had experience with animal birth, but from the feline/kitty side.&lt;/p&gt;

&lt;p&gt;We talked with a few of our family and friends who were the most serious about trying to kidnap Ivy or Rex, and confirmed that they&amp;rsquo;d be interested in a puppy. Our #1 goal was making sure that any and every puppy would have a loving home.&lt;/p&gt;

&lt;h1 id=&#34;finding-a-stud&#34;&gt;Finding a stud&lt;/h1&gt;

&lt;p&gt;The first step towards a litter of puppies was finding a suitable father, or stud. Rex is neutered, but more importantly, his coat is very thin and not fluffy. It doesn&amp;rsquo;t make us love him any less (in fact, he&amp;rsquo;s much easier to wash!) but he is not a great example of the breed. We searched the classifieds for stud ads, and found a family nearby with a very fluffy stud, Howdy.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/howdy.jpg&#34; alt=&#34;howdy&#34; /&gt;&lt;/p&gt;

&lt;p&gt;After ensuring that Howdy and Ivy were not related (thanks to &lt;a href=&#34;http://www.k9data.com/pedigree.asp?ID=874962&#34;&gt;K9Data&lt;/a&gt;), we scheduled to for the two dogs to meet during Ivy&amp;rsquo;s next fertile cycle. When the time was right, in mid-December, we dropped Ivy off with Howdy for a weekend. Dogs have a very high fertilization rate, so our chances were good. We&amp;rsquo;d know in just a couple of weeks if Ivy would have puppies.&lt;/p&gt;

&lt;h1 id=&#34;pregnant-with-puppies&#34;&gt;Pregnant with puppies&lt;/h1&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/pregnantivy.jpg&#34; alt=&#34;pregnant Ivy&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Dogs have a very short gestation period of only about two months. Ivy was growing fast, and so it was important to get her the proper nutrition in advance. We got an xray at our vet and found out that Ivy was expecting 7 puppies. That&amp;rsquo;s an average-sized litter for a Golden. Ivy was in a litter of 13 puppies when she was born!&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/backroom.jpg&#34; alt=&#34;back room&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We prepared an unused area of our house for Ivy&amp;rsquo;s personal puppy zone. It had a dedicated wall heater to keep it warm, and I put down layers of black landscaping plastic to protect the floor and baseboards.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/whelpbox.jpg&#34; alt=&#34;whelping box&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I also &lt;a href=&#34;https://twitter.com/madsushi/status/965290332505059329&#34;&gt;built a whelping box&lt;/a&gt; for Ivy and her puppies, as that&amp;rsquo;s very important for her to feel secure that her puppies are safe.&lt;/p&gt;

&lt;h1 id=&#34;seven-puppies&#34;&gt;Seven puppies&lt;/h1&gt;

&lt;p&gt;By the time Ivy&amp;rsquo;s litter was born, all of the puppies were claimed, and we already had a &amp;ldquo;waitlist&amp;rdquo; of people who wanted their names down for the hypothetical next litter.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivypuppies.jpg&#34; alt=&#34;ivy puppies&#34; /&gt;&lt;/p&gt;

&lt;p&gt;A friend of mine &lt;a href=&#34;https://twitter.com/LessPopMoreFizz/status/961125108118097920&#34;&gt;gave me the idea&lt;/a&gt; of setting up a puppy cam to livestream the puppies. I thought this was a great idea, and bought a webcam and tripod from Amazon. I used a spare old laptop and set up a &lt;a href=&#34;https://www.youtube.com/watch?v=NU4g6GkIHRI&#34;&gt;YouTube live stream&lt;/a&gt; of the puppy pen. We ended up streaming from 10 AM to 10 PM nearly every single day of puppyhood (about 8 weeks). All of the future puppy owners were able to watch their chosen puppy grow up and interact with Ivy! It also let me watch them obsessively at all hours, including checking in on them at night and while on break at work.&lt;/p&gt;

&lt;p&gt;Of course, I also had to set up a website, &lt;a href=&#34;https://puppiesbyivy.com/&#34;&gt;Puppies by Ivy&lt;/a&gt;, to share updates and pictures of the puppies. I weighed each puppy every single day to track their weights and growth, to make sure nobody was falling behind, and charted everything in a Google Doc. The future puppy owners loved to see their puppies making progress and jockeying for the Biggest Dog title!&lt;/p&gt;

&lt;h1 id=&#34;work&#34;&gt;Work&lt;/h1&gt;

&lt;p&gt;Caring for puppies was a lot of work. My wife and I were running the laundry machine all day, every day, to keep enough clean bedding for the puppies. Poop cleanups had to happen on a regular schedule, as well as feedings, weigh-ins, and veterinary care. The workload only grew when the puppies began getting big enough to work together to escape the puppy zone, and so we had to work on reinforcing the pen and keeping them corralled. A breakout would take a long time to recover from: chasing down seven tiny puppies, and cleaning up any messes they made while on the run.&lt;/p&gt;

&lt;h1 id=&#34;the-little-things&#34;&gt;The little things&lt;/h1&gt;

&lt;p&gt;We wanted to give the puppies and future owners the best experience possible, so we tried to do all of the little things we could. We gave each puppy a velcro collar with a particular color, and built those into the stream overlay, so people could follow their particular puppy&amp;rsquo;s antics. We also had matching Wonder Walkers for each dog to keep the color scheme going. We took nice photos of each puppy individually once per week, so that you could see their growth and development week over week. We made sure all of the AKC paperwork and microchips were done ahead of time. We also hosted a couple of puppy meetup days, where the future owners could bring their family and friends to meet the puppies and help them get socialized.&lt;/p&gt;

&lt;h1 id=&#34;loving-homes&#34;&gt;Loving homes&lt;/h1&gt;

&lt;p&gt;We were able to accomplish our goal of giving every puppy a loving home. Three went to our families, two went to coworkers with older Goldens at home, and one went to a nearby friend&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;00&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;00&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;You have no idea how much I wanted to make a &lt;i&gt;&amp;ldquo;Three rings for the Elven-kings&amp;hellip;&amp;rdquo;&lt;/i&gt; joke here.
    &lt;/span&gt;
&lt;/label&gt;
. We&amp;rsquo;ve been able to meet up with the puppies and owners and see how great they&amp;rsquo;re doing. The final puppy, Lia, stayed here with us.&lt;/p&gt;

&lt;p&gt;Overall, it was a lot of work, but it was worth it. As my veterinarian told us when we asked him about Ivy having a litter: &amp;ldquo;The world can always use more Goldens.&amp;rdquo;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Found Disc Courtesy</title>
      <link>https://chasechristian.com/blog/2017/12/found-disc-courtesy/</link>
      <pubDate>Sun, 31 Dec 2017 11:21:00 -0700</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2017/12/found-disc-courtesy/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com/img/discs.jpg" />
	&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/discs.jpg&#34; alt=&#34;discs&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Everyone who plays disc golf will eventually lose one of their discs. A ravine will be too steep, a tree will be too tall, a thicket will be too thorny. Water is another popular resting place of lost discs. It happens. Traditional golfers lose balls too, but discs are more personal and also more expensive. It&amp;rsquo;s closer to losing a club than losing a ball.&lt;/p&gt;

&lt;p&gt;Most disc golfers will write their name and phone number with a Sharpie on the underside of their discs. The hope is that if the disc is ever recovered, the finder will give them a call and they&amp;rsquo;ll be reunited with their disc. Maybe a disc falls out of a tree after a wind storm, a thicket gets cut back by a maintenance crew, or somebody goes diving to the bottom of the river. We imagine the stroke of fate that would be involved in our disc returning to us! The prodigal disc arrives at our door, hungry and cold, and back to our loving embrace!&lt;/p&gt;

&lt;p&gt;Unfortunately, that&amp;rsquo;s rarely the case. Many discs are truly lost. The few that are found don&amp;rsquo;t always make it into the hands of someone altruistic. As anyone who has lost a marked disc will tell you, phone calls are rare. You have to learn to &amp;ldquo;lose&amp;rdquo; the disc as soon as it&amp;rsquo;s gone. If you do happen to get a call, and I&amp;rsquo;ve received a scarce few, it&amp;rsquo;s pure serendipity.&lt;/p&gt;

&lt;p&gt;Here are my rules of found discs:&lt;/p&gt;

&lt;p&gt;If you find a disc, you have to call the number. Not once, but twice. Leave voicemails. Wait 24 hours between calls. Texting is also pretty popular nowadays. I think one text and one call would work too. The key is to give the owner a fair shake. One missed call from a random number isn&amp;rsquo;t enough to act on, but two calls and voicemails is a pattern.&lt;/p&gt;

&lt;p&gt;If you make contact with the owner, and they want their disc back, you&amp;rsquo;re not owed anything. Don&amp;rsquo;t expect a reward. Don&amp;rsquo;t ask for a reward. I won&amp;rsquo;t go out of my way to return a disc. If someone asks for me to drive it by their house on the other side of town, no thanks. If they want to meet at the course it was found at, sure, let&amp;rsquo;s plan a time. A bar or restaurant near the course works too.&lt;/p&gt;

&lt;p&gt;If you&amp;rsquo;re the owner, and someone contacts you with a found disc, you have two options. If you don&amp;rsquo;t really care about that disc or have already replaced it, let the finder keep it. If you do care about the disc, for whatever reason (financial, sentinmental, etc), you can ask for it back. Try to find a time and place that&amp;rsquo;s convenient for the finder, as they&amp;rsquo;re doing you a favor. I like to offer the finder a gift: a beer (if we&amp;rsquo;re meeting somewhere with beers), a disc (I&amp;rsquo;ve always got a few spares or dupes), or a few bucks. Found discs can be an opportunity to meet a fellow disc golfer, and you can make friends if you set up a playthrough to give a found disc a reunion tour.&lt;/p&gt;

&lt;p&gt;Let&amp;rsquo;s say you are unable to get in contact with the owner. My personal rule is that I will never sell a found disc. If I&amp;rsquo;m going to make it a part of my rotation, I&amp;rsquo;ll add my number to the bottom of the disc with a Sharpie. Both numbers will be on there, and if I lose the disc, it&amp;rsquo;s a 50/50 shot that I get a call first. If the owner lets me know they don&amp;rsquo;t want it anymore, I&amp;rsquo;ll black out their information and add my own. I don&amp;rsquo;t like the idea of trying to remove their information with acetone or whatever other chemical. The previous owners of a disc are part of its history.&lt;/p&gt;

&lt;p&gt;One final note on losing discs: you&amp;rsquo;re going to lose discs. While it might seem heroic to strive and climb and crawl to save your disc, it can also be a big inconvenience to others in your party or on the course. If I can see my disc, but it&amp;rsquo;ll take a while to get to, I&amp;rsquo;ll try to finish the round with my party and come back on my own time to retrieve it. If I&amp;rsquo;m just searching for my disc, I will put a maximum time on how long before I&amp;rsquo;ll decide to move along and keep the round going. Nobody wants to be stuck on hole 6, waiting for you to search every inch of the brambles for your $15 disc.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Recipe: Shepherd&#39;s Pie</title>
      <link>https://chasechristian.com/blog/2017/12/recipe-shepherds-pie/</link>
      <pubDate>Fri, 01 Dec 2017 16:03:00 -0700</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2017/12/recipe-shepherds-pie/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com/img/sp.jpg" />
	

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/sp.jpg&#34; alt=&#34;shepherd&#39;s pie&#34; /&gt;&lt;/p&gt;

&lt;p&gt;One of my very favorite restaurants, &lt;a href=&#34;http://frescocafe.net/&#34;&gt;Fresco Cafe&lt;/a&gt;, has daily specials. My friends and I used to call into their specials phone line every morning, a little after 10. You&amp;rsquo;d hear a recording of someone reading off their menu board. Towards the end, they&amp;rsquo;d list their daily special entree. They had a lot of great specials, like their barbecue pork tenderloin sandwich&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;00&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;00&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;With both pork tenderloin and bacon on the same sandwich, we called it the &amp;ldquo;pork vendetta&amp;rdquo;.
    &lt;/span&gt;
&lt;/label&gt;
 or their filet mignon enchiladas. But some days were different. On those rare and precious days, the entree would be shepherd&amp;rsquo;s pie.&lt;/p&gt;

&lt;p&gt;Shredded beef braised with wine mixed with an assortment of vegetables, smothered with lightly browned mashed potatoes. Served in a ceramic dish, their shepherd&amp;rsquo;s pie would have the entire office making lunch plans. We&amp;rsquo;d reschedule meetings, plan out our paths to cross by Five Points around lunch, and try to find a big enough table.&lt;/p&gt;

&lt;h2 id=&#34;my-recipe&#34;&gt;MY RECIPE&lt;/h2&gt;

&lt;p&gt;After moving to Washington, my trips to Fresco became a lot less frequent. To fill that void, I started working on my own recipe for shepherd&amp;rsquo;s pie. I don&amp;rsquo;t eat lamb and my wife hates mushrooms, so many traditional recipes didn&amp;rsquo;t work. After a few months and many attempts, I ended up with a recipe that tastes close enough to Fresco&amp;rsquo;s but also stands on its own. It&amp;rsquo;s become a family favorite during the rainy season here&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;11&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;11&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;That is to say, almost year-round.
    &lt;/span&gt;
&lt;/label&gt;
.&lt;/p&gt;

&lt;p&gt;Shepherd&amp;rsquo;s pie consists of two main parts: the meat and the potatoes. First, the meat.&lt;/p&gt;

&lt;h2 id=&#34;meat&#34;&gt;MEAT&lt;/h2&gt;

&lt;p&gt;I started with &lt;a href=&#34;http://www.foodnetwork.com/recipes/alton-brown/shepherds-pie-recipe2-1942900&#34;&gt;Alton Brown&amp;rsquo;s recipe&lt;/a&gt; as a base, and went from there.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;1 cup onion, diced (I use a yellow onion)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;1 cup celery, chopped (you can leave this out if you hate it)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;1 cup carrots, chopped (I use baby carrots: no peeling)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;2 cloves garlic, chopped&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;+++++++++++&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;2 lbs meat (I mix 1 lb ground sirloin and 1 lb sirloin steak cut into cubes, any beef mix works)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;+++++++++++&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;2 tbsp flour&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;+++++++++++&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;2 tsp tomato paste (be very careful not to add too much)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;1 cup broth (I actually use chicken broth here, more flavor)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;0.5 tbsp worcestershire sauce&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;1 cup wine (red wine, I use merlot typically)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;+++++++++++&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;2 tsp thyme, chopped&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;2 tsp rosemary, chopped (I usually get the &amp;ldquo;poultry pack&amp;rdquo; of fresh spices from Safeway/Albertsons)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;+++++++++++&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;1 cup peas, frozen (you can leave these out&amp;hellip; but why?)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I use a big stainless steel pan with straight sides. Add some oil to the pan, and set to medium-high heat.&lt;/p&gt;

&lt;p&gt;Add the onion, celery, and carrots. Stir and cook until starting to brown, a couple of minutes. I usually give the onions an extra 30 seconds alone before adding the rest. Add the garlic, continue to stir.&lt;/p&gt;

&lt;p&gt;Add in the meat. Add salt and pepper, but not too much. You&amp;rsquo;ll have time for flavor adjustment later. Brown the meat, stirring. Sprinkle the flour over the mixture.&lt;/p&gt;

&lt;p&gt;Once you&amp;rsquo;re happy with the meat&amp;rsquo;s browning, it&amp;rsquo;s time to add the liquids. Put in the tomato paste, broth, worc sauce, and wine. Stir well. Once it&amp;rsquo;s combined, add in the thyme and rosemary.&lt;/p&gt;

&lt;p&gt;Bring the entire mixture to a boil. Once you see the bubbles, reduce to medium-low and simmer. As it cooks, the mixture will reduce some. After 10-15 minutes, the meat should be breaking down and the vegetables should be soft.&lt;/p&gt;

&lt;p&gt;Now is the time to adjust seasoning. I&amp;rsquo;ll add salt, pepper, thyme, or rosemary as needed between taste tests. Once you&amp;rsquo;re happy with the flavor, toss in the peas and then pour it into your 11&amp;rdquo;x7&amp;rdquo; glass pan.&lt;/p&gt;

&lt;h2 id=&#34;potatoes&#34;&gt;POTATOES&lt;/h2&gt;

&lt;p&gt;I started with &lt;a href=&#34;http://www.seriouseats.com/recipes/2010/11/ultra-fluffy-mashed-potatoes-recipe.html&#34;&gt;J. Kenji López-Alt&amp;rsquo;s recipe&lt;/a&gt; as a base, and went from there. You probably want to start the potatoes first when you&amp;rsquo;re making the recipe.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;4 lbs potatoes, cubed (russets usually, but yukon golds work too)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;2 cups half-and-half (or any cream)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;1.5 sticks salted butter (Tillamook here)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;+++++++++++&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;1 handful parmigiano reggiano cheese, shredded&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I peel and cube the potatoes, and rinse once in cold water after cubing.&lt;/p&gt;

&lt;p&gt;I fill a pot with water, and bring to a boil. I don&amp;rsquo;t salt the water.&lt;/p&gt;

&lt;p&gt;I add in the potatoes, and cook for 15 minutes.&lt;/p&gt;

&lt;p&gt;I drain the potatoes in a strainer, and only give a quick rinse with hot water. Just a quick spray from the hose faucet. Make sure you shake the potatoes dry afterwards.&lt;/p&gt;

&lt;p&gt;Mash the potatoes, and add salt and pepper to taste. Avoid adding too much liquid, as you don&amp;rsquo;t want the potatoes to be runny. They&amp;rsquo;ll mix with the meat if they&amp;rsquo;re too runny. I make sure I like the taste with just salt &amp;amp; pepper, then I add the cheese in.&lt;/p&gt;

&lt;h2 id=&#34;meat-potatoes&#34;&gt;MEAT &amp;amp; POTATOES&lt;/h2&gt;

&lt;p&gt;With the meat on the bottom, add the potatoes carefully to the top of the meat. You want to avoid any mixing. I spoon the potatoes on gently, then use a spatula to spread evenly. Once you have a smooth surface, use a fork to make spikes and peaks for extra browning in the oven. Sprinkle with any remaining cheese for a little something extra.&lt;/p&gt;

&lt;p&gt;Place the baking dish on a cookie sheet (in case of spillover) and cook for 20-25 minutes at 400°F.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/sp2.jpg&#34; alt=&#34;shepherd&#39;s pie&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Then, you eat it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Comcast and DHCP</title>
      <link>https://chasechristian.com/blog/2017/04/comcast-and-dhcp/</link>
      <pubDate>Sun, 23 Apr 2017 15:03:00 -0700</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2017/04/comcast-and-dhcp/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com/img/nak.jpg" />
	

&lt;p&gt;Towards the end of March, my internet connection started acting flaky. I noticed it happening during &lt;em&gt;WoW&lt;/em&gt; raids, and my wife caught Netflix and Spotify cutting out during the day. The internet would drop for a minute or so, and then come back online. It was never out for very long, and never in close succession.&lt;/p&gt;

&lt;p&gt;I chalked it up to Comcast doing some maintenance work in our region. However, after two weeks of drops that seemed to be becoming more frequent, I decided to dig into the issue. Checking the logs on my cable modem, I never saw any loss of signal or connection, which ruled out any type of physical issue. Simple ping checks confirmed that it wasn&amp;rsquo;t an internal connectivity problem. The issue was somewhere between my firewall&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;05&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;05&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;&lt;a href=&#34;https://chasechristian.com/blog/2016/04/consoles-enterprise-firewalls-and-upnp/&#34;&gt;A Palo Alto Networks VM-100&lt;/a&gt;
    &lt;/span&gt;
&lt;/label&gt;
 and Comcast&amp;rsquo;s upstream router, at a logical level.&lt;/p&gt;

&lt;h2 id=&#34;logs-don-t-lie&#34;&gt;Logs don&amp;rsquo;t lie&lt;/h2&gt;

&lt;p&gt;The revelation came when my wife noticed a pattern in the disconects. Our Mumble voice chat server logs every time someone joins or leaves. She had been disconnected several times that day, and saw in the join/leave logs that each disconnect occurred about 1 hour apart. Example logs:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;2:05pm - Mory has left the server&lt;/p&gt;

&lt;p&gt;2:06pm - Mory has joined the server&lt;/p&gt;

&lt;p&gt;3:06pm - Mory has left the server&lt;/p&gt;

&lt;p&gt;3:07pm - Mory has joined the server&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This gave me further confirmation that it was a logical issue, as physical problems will rarely manifest in such a timely fashion.&lt;/p&gt;

&lt;p&gt;Armed with the knowledge of when the next outage &lt;em&gt;should&lt;/em&gt; occur, I started monitoring all of my logs. I had my firewall&amp;rsquo;s log monitor open, I had pings running to a variety of sources, and I had Wireshark capturing my packets.&lt;/p&gt;

&lt;p&gt;The next disconnect arrived exactly as predicted. I immediately noticed a flurry of activity in my firewall&amp;rsquo;s logs. As my pings started dropping, my firewall was negotiating its DHCP lease with Comcast&amp;rsquo;s DHCP server. The firewall was unable to renew the lease on that interface, it killed all active sessions and started the DHCP lease process from the beginning. This was the ultimate cause of the internet drops.&lt;/p&gt;

&lt;h2 id=&#34;dhcpnak&#34;&gt;DHCPNAK&lt;/h2&gt;

&lt;p&gt;After doing some more investigation, I learned the details of Comcast&amp;rsquo;s DHCP process. My firewall would request an initial lease, and would receive the same public IP address from Comcast&amp;rsquo;s DHCP server (which happened to be in Oregon&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;02&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;02&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;76.96.94.198
    &lt;/span&gt;
&lt;/label&gt;
). The lease was for 7200 seconds, or 2 hours. DHCP clients will typically wait until their lease is halfway through&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;00&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;00&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Per &lt;a href=&#34;https://www.ietf.org/rfc/rfc2131.txt&#34;&gt;RFC 2131&lt;/a&gt;
    &lt;/span&gt;
&lt;/label&gt;
, and then they&amp;rsquo;ll try to refresh proactively.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/nak.jpg&#34; alt=&#34;DHCPNAK logs&#34; /&gt;&lt;/p&gt;

&lt;p&gt;My firewall would send the &lt;code&gt;DHCPRENEW&lt;/code&gt; packet, to initiate the refresh. Comcast&amp;rsquo;s DHCP server would reply back with a &lt;code&gt;DHCPNAK&lt;/code&gt;&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;01&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;01&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;NAK means &amp;lsquo;negative acknowledgement&amp;rsquo;, as opposed to ACK for &amp;lsquo;acknowledgement&amp;rsquo;.
    &lt;/span&gt;
&lt;/label&gt;
, which indicates that the server did not accept the renewal request. That caused the refresh to fail, and my firewall to dump the lease and try a &lt;code&gt;DHCPREQUEST&lt;/code&gt; from scratch. When my firewall fell back to requesting a &amp;ldquo;new&amp;rdquo; lease, the process succeeded. The strange part is that the Comcast DHCP server would respond to the &lt;code&gt;DHCPREQUEST&lt;/code&gt; with the same IP from the original lease.&lt;/p&gt;

&lt;p&gt;Unfortunately, it seemed like my firewall was acting properly, and Comcast&amp;rsquo;s DHCP server wasn&amp;rsquo;t respecting the renewal request. There&amp;rsquo;s no way to turn off DHCP renewal requests on my side (for good reason), and I didn&amp;rsquo;t have any visibility into Comcast&amp;rsquo;s server side. When one side of a protocol doesn&amp;rsquo;t work in the manner specified by the RFC, all bets are off.&lt;/p&gt;

&lt;h2 id=&#34;comcast-support&#34;&gt;Comcast Support&lt;/h2&gt;

&lt;p&gt;At this point, I tried calling Comcast tech support and explaining my issue. However, despite multiple attempts on the phone, I couldn&amp;rsquo;t get any help beyond a tech trying to reboot my modem to fix the problem. I tried explaining that the issue was occurring on a regular basis and that I had tracked down the cause. However, since my internet was always &amp;ldquo;working&amp;rdquo; at the time, there wasn&amp;rsquo;t anything they could do to help me. I could tell them the date and time the issue started, and the exact time it would happen next, but that didn&amp;rsquo;t matter since my internet was always working by the time I was talking to the tech. I received a similar response from their Twitter support account.&lt;/p&gt;

&lt;p&gt;Luckily for me, I asked around, and a friend of a friend&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;04&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;04&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Thanks Bakka!
    &lt;/span&gt;
&lt;/label&gt;
 happened to be a Comcast technician. After I talked with them, they explained that the 2 hour lease wasn&amp;rsquo;t typical, and was usually set before maintenances. Unfortunately, after looking into my account details, there wasn&amp;rsquo;t anything they could do. They did have one suggestion though: change the MAC address of my router to try getting a different public IP leased to me.&lt;/p&gt;

&lt;h2 id=&#34;mac-cycle&#34;&gt;MAC Cycle&lt;/h2&gt;

&lt;p&gt;Now, many consumers won&amp;rsquo;t be able to do this, since their router won&amp;rsquo;t let them set the MAC address arbitrarily or they don&amp;rsquo;t have configurable WAN ports. I am using a Palo Alto in a virtual machine, so I swapped to a different vNIC (ethernet 3 instead of ethernet 1) and that did the trick. I received a new public IP address from the same DHCP server, also with a 2-hour lease. However, as the half-life of the lease approached, the renewal occurred and went through without a hitch. My issue was solved.&lt;/p&gt;

&lt;p&gt;The challenging part of this issue was realizing that even though I had done the technical work to figure out exactly what was happening, when it would happen, how it would happen, what servers it was happening on, etc, it was impossible to reach out and talk technically with Comcast. If it wasn&amp;rsquo;t for a friend of a friend, I would still be in the dark. I remembered the &lt;a href=&#34;https://xkcd.com/806/&#34;&gt;XKCD comic&lt;/a&gt; about this issue, and realized it had happened to me.&lt;/p&gt;

&lt;p&gt;How would a normal user troubleshoot this issue? They wouldn&amp;rsquo;t have access to the detailed firewall DHCP logs, their hardware wouldn&amp;rsquo;t have the capability to change its WAN MAC address, etc. I can imagine they would&amp;rsquo;ve been told to try getting a new router, which would&amp;rsquo;ve &amp;ldquo;fixed&amp;rdquo; the issue but also been a waste of money.&lt;/p&gt;

&lt;p&gt;I was lucky to be able to troubleshoot and fix this issue, but it sucks that it can be so hard to have a technical conversation with a company providing a technical service. We should try to do better at both designing systems that users can troubleshoot by giving them information, and also providing channels for receiving technical feedback about the health of our systems.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Horizon Zero Dawn</title>
      <link>https://chasechristian.com/blog/2017/03/horizon-zero-dawn/</link>
      <pubDate>Tue, 07 Mar 2017 15:03:00 -0700</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2017/03/horizon-zero-dawn/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com/img/hzd.jpg" />
	&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/hzd.jpg&#34; alt=&#34;hzd&#34; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PS4&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: Action RPG with both tribal and future elements&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;Western &lt;em&gt;Monster Hunter&lt;/em&gt;&amp;ldquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Horizon Zero Dawn&lt;/em&gt; launched in March, but it&amp;rsquo;s already on my Best of 2017 list.&lt;/p&gt;

&lt;p&gt;I am not typically a fan of open world RPGs. I like structured gameplay. I don&amp;rsquo;t like exploration. Somehow, &lt;em&gt;HZD&lt;/em&gt; managed to pull me in anyway.&lt;/p&gt;

&lt;p&gt;First, &lt;em&gt;HZD&lt;/em&gt; is beautiful. The game looks crazy good. I can&amp;rsquo;t get over how clean and sharp it looks, especially as a console game. I have a suspicion that they&amp;rsquo;re stealing some processing power from the system reservations. Trying to load the PS4 menus during gameplay were very slow, and I frequently saw platform achievements fire minutes after I&amp;rsquo;d completed them. The cutscenes and facial animations were lacking in several cases. However, if that&amp;rsquo;s the #1 complaint, then you have a really awesome game on your hands.&lt;/p&gt;

&lt;p&gt;The gameplay is stellar. It&amp;rsquo;s fast and fresh. You have a wide variety of weapons and tools, which give you free reign to approach combat as you would like. The talent trees also reward a variety of gameplay styles. I saw a YouTube video where a player defeated one of the game&amp;rsquo;s signature enemies using a completely different loadout and strategy from my encounter. There are many ways to skin the robo-cat, as it were.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/hzdlaser.jpg&#34; alt=&#34;robo cat&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I love the blurring of the action RPG and third-person shooter elements. There are plenty of shooters that have veered into RPG territory. &lt;em&gt;Destiny&lt;/em&gt;, &lt;em&gt;Borderlands&lt;/em&gt;, and &lt;em&gt;The Division&lt;/em&gt; are a few examples. What sets &lt;em&gt;HZD&lt;/em&gt; apart is the intricacy of the enemies and the combat systems. Simple enemies have multiple weak points and strategies you can attempt against them. Stealth is as rewarding as lobbing arrows into the fray. You can plan your battles with precision, without the gameplay being reduced to pumping rounds into a bullet-sponge. Watching chunks of your enemies being flung off in various directions is satisfying.&lt;/p&gt;

&lt;p&gt;The idea of &amp;ldquo;shoot the boss a lot until it dies&amp;rdquo; is still a valid strategy, but it&amp;rsquo;s the &lt;strong&gt;worst&lt;/strong&gt; strategy! You&amp;rsquo;re better off planting traps ahead of time, or unleashing an elemental assault, or destroying critical components with sharpshooter accuracy, or corraling the fauna under your control, or using environmental traps, or or or or or! The variety in approaches here results in rewarding and diverse gameplay. The way you fight your first Sawtooth won&amp;rsquo;t be anything like the way you fight your last one.&lt;/p&gt;

&lt;p&gt;The only caveat here is that there is a lot of thumbskill required. While there are weapons that don&amp;rsquo;t require precise aiming, you&amp;rsquo;ll have a much harder time if you can&amp;rsquo;t land your arrow shots consistently.&lt;/p&gt;

&lt;p&gt;The story is compelling. It starts with &amp;ldquo;who&amp;rsquo;s my mom?&amp;rdquo; and ends with massive implications and an emotional final cutscene. The cast of characters is small but strong. Rather than overwhelming you with a million NPCs, the developers trimmed it down to a more reasonable number of well-defined characters. The diverse cast&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;00&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;00&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Commander Zavala, what are you doing talking to me through my &lt;s&gt;Ghost&lt;/s&gt; Focus???
    &lt;/span&gt;
&lt;/label&gt;
 helps underscore the transformation your character makes between the first and second acts. You&amp;rsquo;re moving from being an isolated hunter/gatherer to a pillar of knowledge of power within geopolitical powers. The story manages to weave together the current events with your progressive discovery of the past.&lt;/p&gt;

&lt;p&gt;There&amp;rsquo;s so many fucking cutscenes. I honestly have no idea how they got all of these into the game. You&amp;rsquo;ll spend a lot of time watching as the story unfolds. Luckily, the story is good, so the cutscenes are worth it. But I also turned on subtitles so I could zoom through some of the slower dialog portions of the game. Like I mentioned above, some of the animations in these scenes aren&amp;rsquo;t great, but that&amp;rsquo;s a minor issue.&lt;/p&gt;

&lt;p&gt;There are a few special dialog choices, called Flashpoints, where you can pick how you want to respond. There&amp;rsquo;s Compassion, the heart icon, which has you show mercy and pacifism. There&amp;rsquo;s Insight, the brain icon, which will allow you to find a clever solution. And finally, there&amp;rsquo;s Confront, the fist icon, which means you&amp;rsquo;re probably going to use violence. The system is reminiscent of the Paragon/Regenade system from &lt;em&gt;Mass Effect&lt;/em&gt;, except that the Flashpoint choices have no lasting affects. I found that many of the Confront options were incredibly satisfying to use. The game doesn&amp;rsquo;t pull any punches with the dialog here.&lt;/p&gt;

&lt;p&gt;The crafting/inventory system is so close to perfect. The biggest issue is that instead of crafting custom armor from the pristine scraps of your kills, you simply trade those scraps to a vendor instead. I feel like this takes out a ton of the impact out of gear acquisition. It&amp;rsquo;s just a vendor purchase instead of something you put together yourself. You do have to craft your inventory upgrades yourself, like your ammo pouches, and this feels great. You know that you need a Fox Skin for your next upgrade, so you go find one, and upgrade your bag immediately. Taking the Fox Skin to the vendor would cheapen the experience.&lt;/p&gt;

&lt;p&gt;I also felt like the depth of gear was a bit shallow. There are really only 3 tiers of items in the game: green, blue, and purple. Outside of a few exceptions, you can just buy the best gear from the vendors and roll with that. The socket system adds a bit of additional pursuit, but by the end of the game, you&amp;rsquo;re swimming in modifications to install. I had all-purple gear for the entire back half of the game.&lt;/p&gt;

&lt;p&gt;There&amp;rsquo;s plenty of collectibles strewn across the map, if you&amp;rsquo;re into that kind of things. I picked up a few but quickly lost interest.&lt;/p&gt;

&lt;p&gt;All in all, this was an amazing game. I thought I would beat it in a day or two, and then move onto &lt;em&gt;Breath of the Wild&lt;/em&gt;. However, I was hooked. If my Switch and &lt;em&gt;BotW&lt;/em&gt; weren&amp;rsquo;t delayed from Amazon, I&amp;rsquo;m not sure which game I would&amp;rsquo;ve picked to play.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Games I Played In 2016</title>
      <link>https://chasechristian.com/blog/2017/01/games-i-played-in-2016/</link>
      <pubDate>Sat, 07 Jan 2017 00:03:00 -0700</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2017/01/games-i-played-in-2016/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com/img/hld.jpg" />
	

&lt;p&gt;I played around 20 games this year. That&amp;rsquo;s lower than my usual count. One big factor in the decline has been the age of my gaming PC. It&amp;rsquo;s over 7 years old now, and it shows. I need to rebuild it, but I&amp;rsquo;ve been punting that work to &amp;ldquo;next year&amp;rdquo; for a while. So, there are games I&amp;rsquo;ve actually avoided buying and playing because they won&amp;rsquo;t work well on my PC and I can&amp;rsquo;t (or don&amp;rsquo;t want to) play them on console.&lt;/p&gt;

&lt;p&gt;This is my first year-in-review post for games, so I am going to focus on what I liked about the games and what my experience was like when I played them. I&amp;rsquo;m not a professional game reviewer, and I&amp;rsquo;m not going to score them on a scale of 1-10 in 5 different categories.&lt;/p&gt;

&lt;p&gt;Anyway, let&amp;rsquo;s get started. The games are listed in roughly chronological order from when I bought/played them, but not exactly.&lt;/p&gt;

&lt;h2 id=&#34;doom&#34;&gt;DOOM&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PC&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: FPS&amp;hellip;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;Doom 2016 feels like it had one design pillar: &amp;lsquo;is it speed metal?&amp;rsquo;&amp;rdquo; - Brendon Chung &lt;a href=&#34;https://twitter.com/blendogames/status/734253259561402368&#34;&gt;(@BlendoGames)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;DOOM&lt;/em&gt; is easily the best game I played in 2016. There has been more than enough ink spilled praising &lt;em&gt;DOOM&lt;/em&gt;, so I&amp;rsquo;ll stick to the three things that I tell anyone who will listen to me rant about &lt;em&gt;DOOM&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;#1 - The game is fast as hell. There&amp;rsquo;s no camping in the corner or carefully sneaking your way through a level. You&amp;rsquo;re going hard in the paint and you&amp;rsquo;re gonna get dirty. You never stop moving, you never stop shooting, and the demons never stop coming. Too many games coddle you with clean spawn waves and simple monster closets. DOOM throws enemy after enemy at you and challenges you to cover yourself in their giblets. Enemies that were once mini-bosses become trash mobs by the time you&amp;rsquo;re done.&lt;/p&gt;

&lt;p&gt;#2 - You have complete control over your environment and arsenal. There&amp;rsquo;s a plethora of weapons and upgrades available, and there&amp;rsquo;s a dozen or more ways to solve every problem. Usually I get analysis paralysis in the face of tech trees and talent nodes, but &lt;em&gt;DOOM&lt;/em&gt; makes it simply and everything gets the job done. You can duct tape a micro-missile launcher to your assault rifle or add explosive shells to your shotgun. Both options rule, and that&amp;rsquo;s important. You can get all over the map, climbing crates and jumping chasms and sprinting around the arena. The player agency in &lt;em&gt;DOOM&lt;/em&gt; is unrivaled in any other shooter.&lt;/p&gt;

&lt;p&gt;#3 - The game rewards you with fun. Watching demons explode into chunks is fun. The mini-challenge dungeons (Runes) are bite-sized fun. Ignoring the fucking NPCs that are yammering on about who knows what on your radio and stomping the shit out of McGuffins (and demons) is fun. One of DOOM&amp;rsquo;s signature weapons is the chainsaw. Do you know what happens when you kill something with the chainsaw? It explodes into a shower of ammunition like a fucking bullet piñata. Fun is baked into every single detail.&lt;/p&gt;

&lt;h2 id=&#34;rust&#34;&gt;Rust&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PC&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: Survival Shooter&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;&lt;em&gt;Minecraft&lt;/em&gt; plus &lt;em&gt;Payday&lt;/em&gt;, but with dongs&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It&amp;rsquo;s 2 AM. Your crew is outside the wall, dressed in black and shotguns&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;50&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;50&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;except one guy who is completely buck naked because he forgot his jacket and pants
    &lt;/span&gt;
&lt;/label&gt;
. The guards are asleep. Your crew farmed for a week to gather materials for these explosives. Your demolitions guy places the C4 on the wall, and counts down in Mumble. &amp;ldquo;3&amp;hellip; 2&amp;hellip; 1&amp;hellip; breach&amp;rdquo;. An explosion!&lt;/p&gt;

&lt;p&gt;But the wall still stands. It must be reinforced. You nod to one another, and everyone pulls out pickaxes and goes to work. After several minutes of furious clicking, the wall crumbles. You&amp;rsquo;re into the vault. Fan out to find the best chests and cupboards. Quickly smother the sleeping guards. Someone starts a 5-minute timer. Your firebug starts setting the base ablaze.&lt;/p&gt;

&lt;p&gt;You spend the next few precious minutes performing inventory management, as you focus on taking only the best and most valuable things. New guns? Grab &amp;lsquo;em. Tons of potatoes? Leave &amp;lsquo;em. Black biker jacket? Take it, it&amp;rsquo;s your size. Your lookout calls &amp;ldquo;time&amp;rsquo;s up&amp;rdquo; and everyone funnels out of the tunnel and into the night.&lt;/p&gt;

&lt;p&gt;You move as a column on your way back to your base. You talk about how tense the raid was, and swap details on the loot you scored. Adrenaline is pumping through your veins. Wait, what&amp;rsquo;s the smoke over there? As you crest the ridge, you see your base. Well, what&amp;rsquo;s left of it. The exterior walls look like swiss cheese, and someone&amp;rsquo;s built a giant phallic structure in your courtyard. Your only remaining possessions are what you have in your pockets. You pull your biker jacket tight, and get ready for revenge.&lt;/p&gt;

&lt;p&gt;That&amp;rsquo;s &lt;em&gt;Rust&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&amp;ldquo;Jump Check&amp;rdquo; is my favorite memory from &lt;em&gt;Rust&lt;/em&gt;. There&amp;rsquo;s no UI in &lt;em&gt;Rust&lt;/em&gt;. There&amp;rsquo;s also friendly fire. The combination of these two mechanics means that you&amp;rsquo;ll often find yourself looking at a player running across your screen, and you don&amp;rsquo;t know if they&amp;rsquo;re a friend or foe. So, you use jump check. Every time you see another player, you say &amp;ldquo;jump check&amp;rdquo; in Mumble. If the other player doesn&amp;rsquo;t immediately jump, you shoot the hell out of them. If you hear the jump check, you have to jump, no matter what you&amp;rsquo;re doing. Almost done with a 60-second crafting channel? JUMP. Or else.&lt;/p&gt;

&lt;h2 id=&#34;xcom-2&#34;&gt;XCOM 2&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PC&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: Turn-based Tactical&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;That&amp;rsquo;s more &lt;em&gt;XCOM&lt;/em&gt;, baby!&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I never played the original &lt;em&gt;XCOM&lt;/em&gt; games. &lt;em&gt;XCOM: Enemy Unknown&lt;/em&gt; was my first experience with the series. I really enjoyed the tactical gameplay. It reminded me of a high tech or sci-fi &lt;em&gt;Final Fantasy: Tactics&lt;/em&gt;. I like being able to plan at every level. You plan your base, you plan your crew, your plan your items, you plan the mission, you plan your abilities, you plan the whole dang thing. And then every shot misses and your entire team goes insane. &lt;a href=&#34;https://youtu.be/vJPwC-p-Gcs?t=1138&#34;&gt;That&amp;rsquo;s &lt;em&gt;XCOM&lt;/em&gt;, baby&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;XCOM 2&lt;/em&gt; is truly the sequel to &lt;em&gt;XCOM: Enemy Unknown&lt;/em&gt;. It&amp;rsquo;s got more tactics, more abilities, more items, etc. The gameplay is great and the campaign was fun to replay multiple times. Unfortunately, it also had a lot more bugs. At launch, there were tons of issues with frame rate, animation speeds, and gameplay problems. I ran into a particularly nasty bug related to carrying unconscious VIPs around that required me to rollback over an hour of gameplay to fix.&lt;/p&gt;

&lt;p&gt;However, thanks to buying the game on PC, I was able to fix most of these issues myself with a couple of simple mods and .ini file tweaks. PC games might not have the same level of QA and certification that console games go through, but you can often take action and fix things on your own.&lt;/p&gt;

&lt;p&gt;Despite these issues, &lt;em&gt;XCOM 2&lt;/em&gt; was a very fun and memorable game. The level design was great, the mechanics were fun, and I felt challenged at every step. The final battle is one that you&amp;rsquo;ll immediately want to talk to your friends about, to compare notes and war stories.&lt;/p&gt;

&lt;h2 id=&#34;hyper-light-drifter&#34;&gt;Hyper Light Drifter&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PC&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: Isometric ARPG&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;High-tech and low-tech &lt;em&gt;Zelda&lt;/em&gt;&amp;ldquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Hyper Light Drifter&lt;/em&gt; is one of those games that I liked better on Kickstarter than Steam. I liked the idea, the art was beautiful, and I gave them my $25 in 2013. To give you an idea on how long ago this was, the campaign was &lt;a href=&#34;https://www.kickstarter.com/projects/1661802484/hyper-light-drifter&#34;&gt;advertising OUYA support&lt;/a&gt;. Then, I forgot entirely about it, outside of the 30 seconds or so I&amp;rsquo;d spend reading the semi-regular backer update emails.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Hyper Light Drifter&lt;/em&gt;, the idea, was a stylish game with engaging mechanics and a beautiful aesthetic. Hyper Light Drifter, the game, is arcane and difficult slog. Don&amp;rsquo;t get me wrong, the game itself is great, if you like that sort of game. It&amp;rsquo;s beautiful and engaging, but incredibly difficult and terse. I don&amp;rsquo;t like long frame-perfect combos and checkpoints that don&amp;rsquo;t refill your HP. If you&amp;rsquo;re a &lt;em&gt;Dark Souls&lt;/em&gt; fan and you&amp;rsquo;re looking for a palate cleanser, this will do the trick.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/hld.jpg&#34; alt=&#34;hyper light drifter&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Something I learned in 2016 is that I am not an &lt;a href=&#34;https://en.wikipedia.org/wiki/Bartle_taxonomy_of_player_types#Explorers&#34;&gt;explorer archetype&lt;/a&gt;. I don&amp;rsquo;t like esoteric games that have obtuse maps and zero dialog/UI/explanation/anything. I just never feel like pouring the time and effort into the game to really get the most out of it. It&amp;rsquo;s the same reason I&amp;rsquo;ve never finished more than 30% of &lt;em&gt;Grand Theft Auto&lt;/em&gt; or &lt;em&gt;Skyrim&lt;/em&gt; or &lt;em&gt;The Witcher&lt;/em&gt;. I get it, you can do like 10,000 missions as Geralt. That&amp;rsquo;s really cool, it&amp;rsquo;s just not my jam.&lt;/p&gt;

&lt;h2 id=&#34;mighty-no-9&#34;&gt;Mighty No. 9&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PC&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: 2D Platformer&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;Shitty Mega Man&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My other 2013 Kickstarter dollars went to &lt;em&gt;Mighty No. 9&lt;/em&gt;, which promised to be the off brand Mega Man that skirted as close as possible to getting sued by Capcom. The net result was a mess of a game that overemphasized a single mechanic, dash, and failed to deliver any actual fun. I played it for two hours and then uninstalled it and hid it in my Steam library. I would&amp;rsquo;ve asked for a refund, but instead wrote it off as an important lesson about early 00&amp;rsquo;s nostalgia and its failures. Now excuse my while I go watch the new Netflix seasons of Arrested Development and Gilmore Girls.&lt;/p&gt;

&lt;h2 id=&#34;fallout-4&#34;&gt;Fallout 4&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PC&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: FPS RPG&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;The world&amp;rsquo;s best sandbox&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I was sitting at the hotel restaurant, eating breakfast before another long day of E3 setup work. My friends and I were watching the Bethesda press conference on someone&amp;rsquo;s phone. When the Pip-Boy collector&amp;rsquo;s edition was revealed, I took out my own phone and went straight to Amazon.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fallout 4 - Pip-Boy Edition - PC&lt;/p&gt;

&lt;p&gt;Order Placed: June 14, 2015&lt;/p&gt;

&lt;p&gt;Total: $131.39.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;ldquo;Chase, you just said you&amp;rsquo;re not an explorer and that you hate games with massive unguided plots? WTF?&amp;rdquo;&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s true, I never finished &lt;em&gt;Fallout 4&lt;/em&gt;. I&amp;rsquo;m not even sure how far into the game I actually got. I&amp;rsquo;ll never know. What I do know is that I had a ton of fun taking Fallout&amp;rsquo;s sandbox for a joyride around the wasteland.&lt;/p&gt;

&lt;p&gt;When I play games like &lt;em&gt;Fallout&lt;/em&gt;, I spare no expense. Every cheat code is turned on, every way-over-the-top mod is installed, and I aim for maximum chaos. I equipped myself with the regalia and armaments of a post-apocalyptic god-king. I slew foes small and large across the blighted city of Boston. Lasers, power suits, and every single trait in the game. Steam says I&amp;rsquo;ve put 50 hours into &lt;em&gt;Fallout 4&lt;/em&gt;, of which a solid 45 hours was spent building massive fuck-off bases with infinite resource and stomping every single living creature out of existence.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Fallout&lt;/em&gt;&amp;rsquo;s literally insane sandbox lends itself to tons of goofy fun. Watching your enemies be ripped into shreds in slomo V.A.T.S. is a real treat. Restrictions like &amp;ldquo;ammo&amp;rdquo; are fun, but spooling up your gatling gun and just letting it rip 24/7 is even more fun.&lt;/p&gt;

&lt;p&gt;I will admit that I was underwhelmed with the physical Pip-Boy itself. It was really only a fancy wrist-holder for your iPhone and a huge security hole on your computer by letting wireless devices send commands to your PC.&lt;/p&gt;

&lt;p&gt;As an aside, I also spent many hours playing the &lt;em&gt;Fallout Shelter&lt;/em&gt; pre-game on iOS before &lt;em&gt;Fallout&lt;/em&gt; proper was released. The game was fun while it lasted, with a very &lt;em&gt;XCOM&lt;/em&gt; feel to it. However, it eventually devolved into the typical mobile game monetization trap, where spending cash was the only way to continue advancing at a reasonable pace.&lt;/p&gt;

&lt;h2 id=&#34;titanfall-2&#34;&gt;Titanfall 2&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PC&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: FPS / Mecha&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;The most innovative FPS campaign that does &lt;em&gt;Mega Man&lt;/em&gt; better than &lt;em&gt;Mighty No. 9&lt;/em&gt;&amp;ldquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Titanfall 2&lt;/em&gt;&amp;rsquo;s campaign is the best FPS campaign I have played in years. They&amp;rsquo;re not afraid to add insanely fun and complex mechanics that only show up for a single campaign mission and never again. The story is rote, but compelling. The environments are stellar, including once memorable scene where you&amp;rsquo;re wallrunning on pieces of a house as it&amp;rsquo;s being constructed in a massive assembly line machine.&lt;/p&gt;

&lt;p&gt;Respawn tripled down on movement modes as their niche, and it shows. You feel like you&amp;rsquo;re flying most of the time. Most FPS levels put you into a box and ask you to clear the box before you can proceed. You can skip a fair number of enemies in &lt;em&gt;Titanfall 2&lt;/em&gt; just by stunting on them. The freedom to roam around massive and engaging environments is a ton of fun, and the shooting itself is good enough to get the job done.&lt;/p&gt;

&lt;p&gt;My favorite feature of &lt;em&gt;Titanfall 2&lt;/em&gt; is how they handle enemy titans in the campaign. Each enemy titan is named and they get their own anime-style cutscene. Once you defeat them, you gain their abilities and arsenal. Rather than force into a loadout between missions, &lt;em&gt;Titanfall&lt;/em&gt; trusts the player to find the fun, and lets you swap between any titan loadout at any point. You can pause in the middle of a battle and swap to whatever abilities and guns sound cool at the time. That cool laser that the boss tried to use on you? One swap later, you&amp;rsquo;re blasting enemies to bits with the very same laser.&lt;/p&gt;

&lt;p&gt;I normally don&amp;rsquo;t play multiplayer in random FPS games. But, since the original was multiplayer-only and I enjoyed it, I decided to give it a try here. It was worth it. There was a learning curve to the pace of the game, but the game modes (especially Amped Hardpoint) and maps were a lot of fun. I was cheesed off at some of the higher level abilities at first, like the anti-pilot turret and the shield wall. They&amp;rsquo;re really good, and starting players don&amp;rsquo;t have access to them. But you have to earn them yourself, there&amp;rsquo;s no way to buy your way to the top. I worked my way up to the &amp;ldquo;bullshit spells&amp;rdquo; eventually, and then made other newbies cry. The circle of salt.&lt;/p&gt;

&lt;h2 id=&#34;overwatch&#34;&gt;Overwatch&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PC&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: Team FPS&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;The best game I absolutely hate to play&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Everything about &lt;em&gt;Overwatch&lt;/em&gt; is awesome. The character design is tops. The art is sharp. The maps are creative. The gunplay is smooth. &lt;a href=&#34;https://www.youtube.com/watch?v=bg9FrE2dEaU&#34;&gt;Everything is awesome&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Except for one thing: my temper. There&amp;rsquo;s something about team-based objective-focused games that brings out my competitive nature, and in a bad way. I always feel like my teammates aren&amp;rsquo;t doing their jobs. I know it&amp;rsquo;s my own character flaw, but playing &lt;em&gt;Overwatch&lt;/em&gt; is a guaranteed way for me to end the night with an Alt-F4 and pissed off as hell. I yell at friends and pubs alike. So, despite my wife sinking hundreds of hours into the game, I refuse to play it anymore. I can&amp;rsquo;t play a game like &lt;em&gt;Overwatch&lt;/em&gt; casually. A team deathmatch/slayer mode might fix that, but for now, I just get too upset at my teammates to make it worth playing.&lt;/p&gt;

&lt;h2 id=&#34;guitar-hero-live&#34;&gt;Guitar Hero Live&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PS4&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: Musical/Guitar&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;The boys are back in town&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I&amp;rsquo;ll be honest, I wouldn&amp;rsquo;t have picked up &lt;em&gt;Guitar Hero Live&lt;/em&gt; if I didn&amp;rsquo;t get a great discount on it through Activision. I loved the early &lt;em&gt;Guitar Hero&lt;/em&gt; games, and I used to practice until I could finish every song on Expert difficulty. But &lt;em&gt;Live&lt;/em&gt; required a brand new guitar, which seemed like a cash grab at the time. I was wrong.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ghlguitar.jpg&#34; alt=&#34;guitar hero live guitar&#34; /&gt;&lt;/p&gt;

&lt;p&gt;The new guitar has a radically different layout, which makes it so much more fun to play. With the old guitars, you were constantly worrying about hand positioning, and making sure you could reach the top and bottom keys. Now, there are only 3 keys, so you&amp;rsquo;re not moving your hand constantly. Each key has 3 different variations: top, bottom, both. So you&amp;rsquo;ve actually got 9 total notes to work with, which makes it both easier and harder at the same time. It&amp;rsquo;s about technical skill instead of constant shifting up and down the neck. After playing with the new guitar for a few weeks, I won&amp;rsquo;t be going back.&lt;/p&gt;

&lt;p&gt;The updated visual environment, replicating the actual experience of being a guitarist and a rock star&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;55&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;55&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Am I allowed to say &amp;ldquo;rock star&amp;rdquo; or is that trademarked???
    &lt;/span&gt;
&lt;/label&gt;
 is fun. There&amp;rsquo;s something magical about a roadie handing you your guitar and giving you a big thumbs up. The crowds are realistic and exciting to play for. The atmosphere really sells the experience.&lt;/p&gt;

&lt;p&gt;Also, you get to play Eminem and Skrillex back-to-back in one playlist. It was such a treat to break out of the typical genres that &lt;em&gt;Guitar Hero&lt;/em&gt; has focused on over the years. I was really delighted to get the opportunity to branch out and try some new beats. It feels pretty kickass to be &lt;a href=&#34;https://www.youtube.com/watch?v=YJVmu6yttiw&#34;&gt;jamming to Bangarang&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I actually like the new way they&amp;rsquo;re handling song ownership. Instead of buying and owning songs, you instead have the entire catalog at your disposal, and you pay for plays. You get a certain number free per day, and you can earn more, or you can buy a pass that unlocks as many plays as you want for a set time period. It&amp;rsquo;s great to be able to look over the vast list of songs and not feel nickle-and-dimed over every single song or pack. There&amp;rsquo;s downsides to it, but for my use case, it&amp;rsquo;s actually a pretty great model.&lt;/p&gt;

&lt;h2 id=&#34;world-of-warcraft-legion&#34;&gt;World of Warcraft: Legion&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PC&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: MMORPG&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;The premier Illidan simulator of 2016&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every teenager that played &lt;em&gt;Warcraft&lt;/em&gt; has wanted to be Illidan Stormrage, and Legion delivered. Demon hunters are incredibly fun to play, and I really enjoyed the leveling and story experience. Blizzard killed it with the new level scaling system, which lets you play any zone in any order. World quests and emissaries are ripped straight from &lt;em&gt;Diablo 3&lt;/em&gt;, but that&amp;rsquo;s fine because they&amp;rsquo;re crazy fun and really make the world feel alive. Suramar is unlike anything Blizzard has done before, and it really paid off. The first two months of &lt;em&gt;Legion&lt;/em&gt; were some of my favorite months I&amp;rsquo;ve spent playing &lt;em&gt;WoW&lt;/em&gt; in the past few years.&lt;/p&gt;

&lt;h2 id=&#34;destiny-rise-of-iron&#34;&gt;Destiny: Rise of Iron&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PS4&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: Shared World Shooter&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;Yeah, I played another 300 hours of Destiny&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&#34;call-of-duty-infinite-warfare&#34;&gt;Call of Duty: Infinite Warfare&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PS4&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: FPS&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;&lt;em&gt;CoD&lt;/em&gt; meets &lt;em&gt;Star Fox&lt;/em&gt;, a fun couple of hours&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&#34;the-division&#34;&gt;The Division&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Platform&lt;/strong&gt;: PC&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genre&lt;/strong&gt;: MMORPG FPS&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Sentence Description&lt;/strong&gt;: &amp;ldquo;I wanted FPS first/MMO second, but got the opposite&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    <item>
      <title>Victoria, BC - 2016</title>
      <link>https://chasechristian.com/blog/2016/06/victoria-bc-2016/</link>
      <pubDate>Sat, 25 Jun 2016 01:22:00 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2016/06/victoria-bc-2016/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com/img/victoria/seal.jpg" />
	

&lt;p&gt;For my wife&amp;rsquo;s birthday this year, I shipped the &lt;s&gt;kids&lt;/s&gt; dogs to my family&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;00&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;00&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Thanks Caitlin!
    &lt;/span&gt;
&lt;/label&gt;
 and shipped our car (and us) to Canada.&lt;/p&gt;

&lt;p&gt;Mory and I first visited Canada in 2011 on our Thanksgiving trip. She wanted a relaxing drive along the Pacific coast, I wanted a big plate of what the French call &lt;em&gt;poutine&lt;/em&gt;. Our Civic took us from southern California to Vancouver, following the 101 and/or the ocean. We had a great time &lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;50&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;50&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;(and great poutine, thanks &lt;a href=&#34;http://www.fritzeuropeanfryhouse.com/&#34;&gt;Fritz&lt;/a&gt;!)
    &lt;/span&gt;
&lt;/label&gt;
 and knew that we&amp;rsquo;d be back again soon.&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;ve returned to Vancouver a few times since then. The drive is a bit shorter now that we&amp;rsquo;re living in the Seattle area. Vancouver is a great city, but I felt like we had already seen most of its attractions.&lt;/p&gt;

&lt;h2 id=&#34;surprise&#34;&gt;Surprise&lt;/h2&gt;

&lt;p&gt;I started planning the trip in February, long before Mory&amp;rsquo;s birthday in June. Our friends gave me great recommendations for places to go and things to do in Victoria. I kept the whole thing on the d/l, even though Mory hates surprises. When Mory was around, I even made fake-plans with my parents and family for that weekend, who were in-the-know and went along with the surprise.&lt;/p&gt;

&lt;p&gt;When I woke Mory up on the Friday before her birthday, she had no idea why I was asking her to get dressed and get in the car. She thought I was going to work and she&amp;rsquo;d have a few more hours of sleep. Our bags were already packed&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;05&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;05&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Speaking as a man, it is hard to pack clothes for your wife. I have no idea what items go together to make up an outfit. I just kept stuffing her clothes in the suitcase until it was full.
    &lt;/span&gt;
&lt;/label&gt;
, I had the tickets and $200 CAD and our passports in hand, and my sister was on her way over to take care of the dogs.&lt;/p&gt;

&lt;p&gt;Our first stop was 3 hours later, in Port Angeles. By now, the surprise was up, as pulling up to a ferry parking lot is a dead giveaway. My friend Missletoad recommended &lt;a href=&#34;http://littledevilslunchbox.com/&#34;&gt;a great lunch spot&lt;/a&gt; in Port Angeles as we waited for the ferry to leave. I had an amazing sandwich and chili, loaded with smoked meat and delicious ingredients. We also visited a small candy boutique and got snacks for the trip.&lt;/p&gt;

&lt;p&gt;The ferry ride was quiet. I played Battleheart on my iPad while Mory grabbed some of the sleep I&amp;rsquo;d deprived her of by waking her early.&lt;/p&gt;

&lt;h2 id=&#34;enter-victoria&#34;&gt;Enter Victoria&lt;/h2&gt;

&lt;p&gt;Victoria hits you with a gorgeous view right off the bat. As the ferry pulls in, you&amp;rsquo;re surrounded by historical buildings and awesome landscaping.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/victorialawn.jpg&#34; alt=&#34;Victoria Lawn&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We checked in at the Beaconsfield Inn, which is a great bed and breakfast. It was more expensive than a typical hotel, but I had been saving some free nights on Hotels.com for a special occasion and the USD:CAD rate was great at the time. It felt like staying in an antique British home, complete with sherry and crumpets served in the library in the afternoons. I had to change in our room &lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;60&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;60&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;the McClure room
    &lt;/span&gt;
&lt;/label&gt;
, as my pajamas/driving attire wouldn&amp;rsquo;t fly at our next step: the Fairmont Empress.&lt;/p&gt;

&lt;h2 id=&#34;high-tea-at-the-fairmont-empress&#34;&gt;High Tea at the Fairmont Empress&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/moulding.jpg&#34; alt=&#34;Moulding on the ceiling&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I heard rave reviews of the high tea at the Fairmont Empress from at least a dozen friends. I didn&amp;rsquo;t buy it. My wife would get a tea, and I figured I&amp;rsquo;d grab a sandwich and a Coke&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;02&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;02&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;How young and naive I was! Alas, Victoria is a Pepsi town.
    &lt;/span&gt;
&lt;/label&gt;
. The dress code said &amp;ldquo;&lt;em&gt;Sophisticated, smart casual.&lt;/em&gt;&amp;rdquo; Whatever. I wore jeans.&lt;/p&gt;

&lt;p&gt;I was wrong.&lt;/p&gt;

&lt;p&gt;I was &lt;em&gt;so&lt;/em&gt; wrong.&lt;/p&gt;

&lt;p&gt;When our server offered to bring by the tea list, I was expecting a 4x10 sheet of teas with fancy names and fancier price tags. Here&amp;rsquo;s what was delivered:&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/teas.jpg&#34; alt=&#34;Empress tea list&#34; /&gt;&lt;/p&gt;

&lt;p&gt;When this tiny Violet Hold-esque menagerie of teas arrived, I realized that this wasn&amp;rsquo;t just a pot of tea and some crumpets. This was an experience.&lt;/p&gt;

&lt;p&gt;Our server brought out two teapot warmers&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;01&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;01&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;HOLY SHIT THAT&amp;rsquo;S WHAT TEA CANDLES ARE FOR??????
    &lt;/span&gt;
&lt;/label&gt;
 and set up our chosen teas. We went with the Empress Blend and the Earl Grey. They were both phenomenal.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/teacup.jpg&#34; alt=&#34;Empress tea cup&#34; /&gt;&lt;/p&gt;

&lt;p&gt;When the tiered stand of tea treats arrived, I knew we were part of something special.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/teafood.jpg&#34; alt=&#34;Empress tea food&#34; /&gt;&lt;/p&gt;

&lt;p&gt;A selection of the best sandwiches I&amp;rsquo;ve ever had decorated the bottom tier. Make no mistake, these are the real power hitters in the lineup. I traded my salmon roll for Mory&amp;rsquo;s egg salad sandwich. I still think I won that deal.&lt;/p&gt;

&lt;p&gt;The biscuits came with a strawberry and lavender jam, with the latter picked fresh from the Empress&amp;rsquo; roof garden. The second condiment was &lt;a href=&#34;https://en.wikipedia.org/wiki/Clotted_cream&#34;&gt;clotted cream&lt;/a&gt;, which sounds somewhat gross but is actually incredibly delicious. It&amp;rsquo;s somewhere in between butter and whipped cream. Combined with the fruit, it made the biscuits a true delicacy.&lt;/p&gt;

&lt;p&gt;The top layer was loaded with flavorful desserts, including shortbread cookies that dissolved with a mouthful of hot tea. Normally when I see an assortment of tiny dessert items, I&amp;rsquo;m wary. I&amp;rsquo;ve eaten one too many awful brownies or cheesecake morsels at cheap buffets. Each of these is handcrafted and equally delicious. The Passion Fruit Strawberry Pavlova was my favorite from the top tier.&lt;/p&gt;

&lt;p&gt;Back to the teas: they were amazing. I had several cups of each, something near 10 cups total. I was mixing in different exotics sugars at various ratios like an alchemist.&lt;/p&gt;

&lt;p&gt;I spent the entire tea service oscillating between &amp;ldquo;this is the best thing I&amp;rsquo;ve ever eaten&amp;rdquo; and &amp;ldquo;no THIS is the best thing I&amp;rsquo;ve ever eaten&amp;rdquo;. One thing is certain: it was the best meal I&amp;rsquo;ve ever had. They could triple the price and I&amp;rsquo;d do it again the next time I&amp;rsquo;m there. Step aside, poutine. There&amp;rsquo;s a new sheriff in Canada&amp;rsquo;s Best Food Town.&lt;/p&gt;

&lt;h2 id=&#34;day-1-downtown-and-waterfront&#34;&gt;Day 1 - Downtown and Waterfront&lt;/h2&gt;

&lt;p&gt;After tea, we wandered out of the Empress, weaving past kids on a field trip and tourists taking selfies. Mory borrowed a camera to snap a few pics of some grateful Americans.&lt;/p&gt;

&lt;p&gt;The government buildings across the street from the Empress are an amazing scene by themselves.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/govt.jpg&#34; alt=&#34;Govt statue&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/govt2.jpg&#34; alt=&#34;Govt bldg&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We explored all over downtown. We saw the Royal BC Museum, which we&amp;rsquo;d be visiting another day. We decided to walk down to the Fisherman&amp;rsquo;s Wharf for some seafood (well, for one of us). I grabbed some very Canadian supplies from a small corner store on the way: All Dressed chips and a Kinder Egg. As we neared the water, we watched seaplanes landing and taking off from the bay.&lt;/p&gt;

&lt;p&gt;The Fisherman&amp;rsquo;s Wharf was a very cool spot. There are several attached houseboats, many of which are decorated in various artistic fashions. I bought an ice cream cone from a small shop on the wharf. There&amp;rsquo;s also a crew of seals that patrol the boardwalk, hoping for tourists to &amp;ldquo;drop&amp;rdquo; a bite of halibut or two. These seals are incredibly friendly, and will come right up to the edge of the water to take food from you. Nobody seemed to mind much.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/seal.jpg&#34; alt=&#34;Seal in the water&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We hopped a water taxi, which is basically Uber for boats. They took us back to the Empress in just a few minutes, dodging the other boaters and continuing line of seaplanes arriving and departing. Our ferrymaster told us the story of a mega-boat that was for sale in the harbor. Only a few million bucks, and the master cabin had never been slept in! We could be the talk of the marina! I told him we&amp;rsquo;d start saving our loonies.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/watertaxi.jpg&#34; alt=&#34;water taxi&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We grabbed our car from the Empress&amp;rsquo; parking lot, and headed up to Mt. Douglas. Graye had given me the great tip to head up there at dusk for an amazing panorama view of the island. It took some hiking, but he was right.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/douglas.jpg&#34; alt=&#34;Mt Douglas&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Finally, for a late dinner, we visited La Belle Patate just before closing. Graye said it was the most legit poutine in the city, even if not the cleanest. I know that a smoked meat burrito, high tea, and a tin of bacon poutine on the same day is an exercise in gluttony. I don&amp;rsquo;t care, I was on vacation.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/poutine.jpg&#34; alt=&#34;Poutine from La Belle Patate&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I also tried a can of something called Spruce Beer, which tasted like I drank Pine-Sol. Hard pass.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/spruce.jpg&#34; alt=&#34;Spruce Beer can&#34; /&gt;&lt;/p&gt;

&lt;h2 id=&#34;day-2-historic-victoria&#34;&gt;Day 2 - Historic Victoria&lt;/h2&gt;

&lt;p&gt;After a warm breakfast at the Beaconsfield and another couple of hours of sleep, we arrived at our first stop for the day: Craigdarroch Castle.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/castlewalls.jpg&#34; alt=&#34;Craigdarroch Castle&#34; /&gt;&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s not really a castle, but it&amp;rsquo;s close enough. It was one of the most enjoyable experiences I&amp;rsquo;ve had in a historical pseudo-museum before. There were great artifacts from the various eras of the castle, information about Victoria&amp;rsquo;s storied past, and an easy-to-follow flow through the exhibits. I really enjoyed some of the political commentary from the era of the castle&amp;rsquo;s construction, where the coal baron was seen as an enemy of the common people. There were also a lot of stairs.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/castlestairs.jpg&#34; alt=&#34;Craigdarroch stairs&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I bought Mory a tiny Canadian flag pin for her camera strap in the gift shop. I got myself &lt;a href=&#34;https://twitter.com/madsushi/status/743825589451120641&#34;&gt;a few things too&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After climbing all of those stairs in both directions, it was time for lunch. I had heard of a burger shop with local ingredients and good food&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;70&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;70&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Thanks again, Graye!
    &lt;/span&gt;
&lt;/label&gt;
. After eating at Big Wheel Burger, I can confirm that they serve great local burgers, along with killer fried pickles.&lt;/p&gt;

&lt;p&gt;Now fed, it was time for the Royal BC Museum. We explored several different exhibits, most notably the &lt;a href=&#34;http://royalbcmuseum.bc.ca/mammoths/&#34;&gt;Mammoth exhibit&lt;/a&gt;. There was a display that talked about a perfectly preserved baby mamoth that had been found in the Russian tundra, and how it was the only one, and how it advanced our understanding of their anatomy significantly. My wife and I both said &amp;ldquo;oh, cool&amp;rdquo; and then walked around the corner, where said mammoth corpse was right there on display in a glass box. We also learned a ton about Victoria&amp;rsquo;s history and the native peoples of the area.&lt;/p&gt;

&lt;p&gt;For dinner that evening, I had made reservations for Zambri&amp;rsquo;s, a local Italian restaurant. The dinner was amazing, but the cocktails were even better. The &amp;lsquo;Spritz Hugo&amp;rsquo; was one of our favorites.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/spritzhugo.jpg&#34; alt=&#34;Spritz Hugo cocktail&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Mory tried the cherry duck:&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/duck.jpg&#34; alt=&#34;Zambri&#39;s Duck&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I stuck with the reliable pasta bolognese:&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/pasta.jpg&#34; alt=&#34;Zambri&#39;s bolognese&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We also shared a panna cotta desert:&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/zambri.jpg&#34; alt=&#34;Zambri&#39;s panna cotta&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We turned in for an early night, since the next day would be even busier.&lt;/p&gt;

&lt;h2 id=&#34;day-3-the-gardens-butterfly-and-butchart&#34;&gt;Day 3 - The Gardens Butterfly and Butchart&lt;/h2&gt;

&lt;p&gt;After another breakfast and post-breakfast nap at the Beaconsfield, we hopped on the highway and headed out of town towards the gardens. The Butterfly Gardens were our first stop.&lt;/p&gt;

&lt;p&gt;The Butterfly Garden experience is walking into a greenhouse-turned-rainforest. The humidity is thick. The sky is blanketed with butterflies, and the exotic plants are covered with equally exotic animals like parrots and iguanas. The butterflies can (and will) land right on you. Mory took some great shots:&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/greenbutterfly.jpg&#34; alt=&#34;Green Butterfly&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/winniebfly.jpg&#34; alt=&#34;Winnie Butterfly&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/orangeblfy.jpg&#34; alt=&#34;Orange Butterfly&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Even capturing the elusive Blue Morpho:&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/bluemorpho.jpg&#34; alt=&#34;Blue Morpho&#34; /&gt;&lt;/p&gt;

&lt;p&gt;After returning back to the Pacific Northwest climate, we drove another mile down the road to the famous Butchart Gardens. They were even larger than I thought they would be. There were also many more tourists than I was hoping there would be. Every walking lane was clogged with people who I assume were taking literally their very first selfies and had no idea what buttons to push on their phone to make it happen. Also, the cafeteria food here sucked. My brother tells me that their afternoon tea is worth doing, so I&amp;rsquo;ll definitely be sampling it next time.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/hydrangea.jpg&#34; alt=&#34;hydrangea&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/fountain.jpg&#34; alt=&#34;fountain&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Mory had a bit more fun here than I did. I carried the camera bag (and often the camera), while she took pictures and got crazy gardening ideas. I also dropped my gelato onto the ground about 15 seconds after buying it.&lt;/p&gt;

&lt;p&gt;We returned to Victoria proper in the afternoon, and hit up a few different liquor shops looking for Okanogan cider. If you haven&amp;rsquo;t had it before, you&amp;rsquo;re missing out. It&amp;rsquo;s a delicious Canadian cider and comes in many different fruit flavors, including my favorite, pear. We bought&amp;hellip; a lot. More on that later.&lt;/p&gt;

&lt;p&gt;We had dinner that evening at Red Fish, Blue Fish. The line was long, but the portions were huge and the food was great. Oh, and I guess the view was alright too.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/docks.jpg&#34; alt=&#34;view from Red Fish, Blue Fish&#34; /&gt;&lt;/p&gt;

&lt;p&gt;I ended up getting an average steak from The Keg, where they not only do not serve Coke, they don&amp;rsquo;t even have Mountain Dew or Dr. Pepper as fallbacks. Get your shit together, Victoria.&lt;/p&gt;

&lt;p&gt;That night, I tried to watch Game of Thrones on my iPad. I pay for HBO. I pay for HBO GO. Apparently you can&amp;rsquo;t use them in Canada. Luckily I have a proxy, but come on. I&amp;rsquo;m paying to watch the most pirated show of all time. Get your shit together, HBO/Canada.&lt;/p&gt;

&lt;h2 id=&#34;day-4-returning-to-america&#34;&gt;Day 4 - Returning to America&lt;/h2&gt;

&lt;p&gt;Mory&amp;rsquo;s Birthday. We had to be up early to catch our ferry, as US Customs take much more processing time than their Canadian counterparts.&lt;/p&gt;

&lt;p&gt;I knew that I had more than the duty-free amount of alcohol in the car. We had bought around 20 various 6-packs of Okanogan, along with a few 2-litres. I planned to pay the duty fees, as they were relatively modest, only about $0.10 per litre.&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s my conversation with the US border agent in Port Angeles:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;CBP: &amp;ldquo;How long were you in Canada?&amp;rdquo;&lt;/p&gt;

&lt;p&gt;CC: &amp;ldquo;4 days.&amp;rdquo;&lt;/p&gt;

&lt;p&gt;CBP: &amp;ldquo;Did you bring back any tobacco, alcohol, firearms, or other restricted items?&amp;rdquo;&lt;/p&gt;

&lt;p&gt;CC: &amp;ldquo;Yeah, we brought back some cider.&amp;rdquo;&lt;/p&gt;

&lt;p&gt;CBP: &amp;ldquo;How much is &amp;lsquo;some&amp;rsquo; cider?&amp;rdquo;&lt;/p&gt;

&lt;p&gt;CC: &amp;ldquo;Uh, like 20 or so 6-packs.&amp;rdquo;&lt;/p&gt;

&lt;p&gt;CBP: &amp;ldquo;&amp;hellip; you were out of the country for how long?&amp;rdquo;&lt;/p&gt;

&lt;p&gt;CC: &amp;ldquo;4 days.&amp;rdquo;&lt;/p&gt;

&lt;p&gt;CBP: &amp;ldquo;&amp;hellip; have a nice day, move along.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And he waved us through without any inspection or duty fees to be paid. Nice. Here&amp;rsquo;s some of the haul:&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/okanogan.jpg&#34; alt=&#34;okanogan stacks&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We took a detour to Crescent Lake (West from Port Angeles), as Mory loved seeing it on our original Canadian trip and wanted to see it in the summer time.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/field.jpg&#34; alt=&#34;field&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/crescentlake.jpg&#34; alt=&#34;crescent lake 1&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/victoria/crescentlake2.jpg&#34; alt=&#34;crescent lake 2&#34; /&gt;&lt;/p&gt;

&lt;p&gt;We returned home to two very-excited-to-see-us-where-were-you-for-forever dogs and our own bed.&lt;/p&gt;

&lt;p&gt;But I still dreamt about high tea that night.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Hugo, Let&#39;s Encrypt, and Caddy</title>
      <link>https://chasechristian.com/blog/2016/05/hugo-lets-encrypt-and-caddy/</link>
      <pubDate>Sat, 14 May 2016 22:41:00 -0700</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2016/05/hugo-lets-encrypt-and-caddy/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;In February, I converted my site to the static site generator &lt;a href=&#34;https://chasechristian.com/blog/2016/02/converting-to-hyde/&#34;&gt;Hyde&lt;/a&gt; from WordPress. However, after using Hyde for a few weeks, I had some concerns. The setup was more complex than I liked, and the version of Hyde that I was using was already deprecated. I wanted writing to be simpler, and Hyde wasn&amp;rsquo;t meeting that goal.&lt;/p&gt;

&lt;h2 id=&#34;hugo&#34;&gt;Hugo&lt;/h2&gt;

&lt;p&gt;I researched various SSGs and settled on &lt;a href=&#34;https://gohugo.io&#34;&gt;Hugo&lt;/a&gt;. It&amp;rsquo;s a nice and tidy single executable and is very easy to extend via &lt;a href=&#34;https://gohugo.io/extras/shortcodes/&#34;&gt;shortcodes&lt;/a&gt;. It&amp;rsquo;s also still in active development, which is nice. Because I&amp;rsquo;d already converted all my content to Markdown, it was easy to switch generators. The structure of Hugo is easy to follow, and you can override any style/code/option by creating a copy of the file in your &lt;code&gt;layouts&lt;/code&gt; folder.&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s how easy it was to implement sidenotes on Hugo, which took me a week with Hyde:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;file: layouts/shortcodes/sidenotes.html
&amp;lt;label class=&amp;quot;margin-toggle sn-number&amp;quot; for=&amp;quot;{{ .Get 0 }}&amp;quot;&amp;gt;
  &amp;lt;input class=&amp;quot;margin-toggle&amp;quot; id=&amp;quot;{{ .Get 0 }}&amp;quot; type=&amp;quot;checkbox&amp;quot; /&amp;gt;
  &amp;lt;span class=&amp;quot;sn&amp;quot;&amp;gt;{{ .Inner }}&amp;lt;/span&amp;gt;
&amp;lt;/label&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To use the shortcode, you just call it via &lt;em&gt;&amp;#123;&amp;#123;% shortcode_name shortcode_parameters %}}&lt;/em&gt; syntax. To create a sidenote, I just wrap the text in the shortcode open/close: Here&amp;rsquo;s a sidenote &lt;em&gt;&amp;#123;&amp;#123;% sidenote 00 %}}some inner text!&amp;#123;&amp;#123;% /sidenote %}}&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;and Vine embeds:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;file: layouts/shortcodes/vine.html
&amp;lt;iframe src=&amp;quot;https://vine.co/v/{{ .Get 0 }}/embed/simple&amp;quot; width=&amp;quot;600&amp;quot; height=&amp;quot;600&amp;quot; frameborder=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;script src=&amp;quot;https://platform.vine.co/static/scripts/embed.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I was able to get everything converted to Hugo in about two weeks. Ironically, I ended up starting with a theme named Hyde-Y and modifying it to the current style. I killed the scrolling headers but updated the sidenote CSS.&lt;/p&gt;

&lt;h2 id=&#34;let-s-encrypt&#34;&gt;Let&amp;rsquo;s Encrypt&lt;/h2&gt;

&lt;p&gt;I have used &lt;a href=&#34;https://startssl.com&#34;&gt;StartSSL&lt;/a&gt; for many years, paying the $75 fee for their enhanced verification in order to get certificates for wildcard domain names. The enhanced verification is a pain if you don&amp;rsquo;t have any physical utility bills that reference your street address, which has been my situation for years as a renter. I was tired of faxing in my driver&amp;rsquo;s license and other documents just to sign up for another 2 years.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://letsencrypt.org&#34;&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt; is a free Certificate Authority that&amp;rsquo;s sponsored by some big tech companies, like Mozilla, Facebook, Cisco, and the EFF. They created a certificate request/renewal protocol called &lt;a href=&#34;https://en.wikipedia.org/wiki/Automated_Certificate_Management_Environment&#34;&gt;ACME&lt;/a&gt; and Let&amp;rsquo;s Encrypt is the first major CA to support ACME. There are several ACME clients for automating the request/renewal of certificates, including &lt;a href=&#34;https://certbot.eff.org/&#34;&gt;CertBot&lt;/a&gt;. CertBot was previously called the LetsEncrypt client and was provided directly by Let&amp;rsquo;s Encrypt. Now, the EFF is developing CertBot in order to prevent a monopoly/conflict of interest. The eventual goal of the entire project (Let&amp;rsquo;s Encrypt, ACME, etc) is to make certificates easy and ubiquitous, which includes many CAs supporting ACME for free certificates.&lt;/p&gt;

&lt;p&gt;ACME has various ways of proving that you own the domain that you&amp;rsquo;re requesting a certificate for. HTTP-01 and DNS-01 are two of these challenges, which check for the existence of a code in a particular file on a website or DNS SRV record (respectively). I created an include file (&lt;code&gt;letsencrypt.include&lt;/code&gt;) which I append to my nginx config files to automatically handle the serving of that code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;location /.well-known/acme-challenge {
    alias /etc/letsencrypt/webrootauth/.well-known/acme-challenge;
    location ~ /.well-known/acme-challenge/(.*) {
        add_header Content-Type application/jose+json;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;All the ACME requests to the &lt;code&gt;/.well-known/acme-challenge&lt;/code&gt; subdirectory are automatically routed to the &lt;code&gt;/etc/letsencrypt&lt;/code&gt; folder structure and the appropriate headers added.&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s the command that I ran to originally create the certificates:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;./certbot-auto certonly  --webroot -w /etc/letsencrypt/webrootauth -d chasechristian.com -d www.chasechristian.com  -d armoryplus.com -d www.armoryplus.com -d dev.armoryplus.com -d hordetm.com -d madsushi.com -d www.madsushi.com -d tweets.chasechristian.com -d wiki.chasechristian.com -d mail.hordetm.com -d api.mdssh.com -d mdssh.com
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I also added lines to my crontab to renew the certs automatically and to restart nginx to pick up the new certificate configuration:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;0 */22 * * * /srv/letsencrypt/certbot-auto renew --rsa-key-size 4096 &amp;gt;&amp;gt; /var/log/letsencrypt/renew.log
30 3 * * 7 service nginx restart
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Here&amp;rsquo;s my full nginx SSL configuration:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;server {
    listen       23.***.***.***:444 ssl http2; ##more on the :444 later

ssl_certificate /etc/letsencrypt/live/****/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/****/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers &amp;quot;EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH&amp;quot;;
ssl_ecdh_curve secp384r1; # Requires nginx &amp;gt;= 1.1.0
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx &amp;gt;= 1.5.9
ssl_dhparam sites/enabled/dhparams.pem;
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&#34;http-2-and-caddy&#34;&gt;HTTP/2 and Caddy&lt;/h2&gt;

&lt;p&gt;HTTP/2 requires SSL, which is part of why I went through the trouble of getting certs for everything. However, I found out that my specific server configuration (Ubuntu 14.04, nginx) won&amp;rsquo;t be supported for HTTP/2 by Chrome browsers after May 15, 2016. Due to the version of OpenSSL that ships with Ubuntu 14.04, I can&amp;rsquo;t get ALPN support, which Chrome will require for HTTP/2. I could compile nginx myself with the right version of OpenSSL, but that&amp;rsquo;s just a big hassle that I don&amp;rsquo;t want to deal with managing and updating. I also don&amp;rsquo;t want to hop to Ubuntu 16.04 just a month after its release. I was stuck trying to figure out how to get HTTP/2 support without major work.&lt;/p&gt;

&lt;p&gt;Enter &lt;a href=&#34;https://caddyserver.com/&#34;&gt;Caddy&lt;/a&gt;. Caddy is a web server written in Go, and is also a nice single-file drop-in like Hugo. It&amp;rsquo;s designed to be as simple as possible, which I appreciate. I wasn&amp;rsquo;t ready to cut my entire site over to Caddy as I have some pretty gnarly nginx configs for custom redirection, etc. Instead, I simply put Caddy in front of nginx. Caddy terminates SSL flawlessly (&amp;lsquo;A&amp;rsquo; rating from SSLLabs, HTTP/2 supported out of the box) and simply proxies everything to nginx. I put Caddy on :443 and moved nginx to :444.&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s my caddyfile:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:443

gzip

log / /var/log/caddy/access.log &amp;quot;{when} {proto} Request from {remote} type {method} to {path} proxy to {upstream} and status {status}&amp;quot; {
    rotate {
        size 100
        age 14
        keep 10
    }
}

errors {
    log /var/log/caddy/errors.log {
        size 100
        age 14
        keep 10
    }
}

tls /etc/letsencrypt/live/****/fullchain.pem /etc/letsencrypt/live/****/privkey.pem

header / {
    X-Frame-Options &amp;quot;SAMEORIGIN&amp;quot;
    X-Content-Type-Options &amp;quot;nosniff&amp;quot;
    Content-Security-Policy &amp;quot;default-src &#39;self&#39; *.google-analytics.com vine.co disqus.com *.vine.co *.disqus.com; script-src &#39;self&#39; static.wowhead.com *.google-analytics.com *.disqus.com *.googleapis.com *.vine.co data: &#39;unsafe-inline&#39;; style-src &#39;unsafe-inline&#39; &#39;self&#39; *.googleapis.com *.disquscdn.com; font-src &#39;self&#39; *.gstatic.com; img-src &#39;self&#39; * data:;&amp;quot;
    Access-Control-Allow-Origin &amp;quot;{scheme}://{host}&amp;quot;
}

proxy / https://23.***.***.***:444 {
    insecure_skip_verify
    proxy_header Host {host}
    proxy_header X-Real-IP {remote}
    proxy_header X-Forwarded-For {remote}
    proxy_header X-Forwarded-Proto {scheme}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;All requests are piped back to my nginx instance which handles serving the actual page. It&amp;rsquo;s been working great for a couple of days now!&lt;/p&gt;

&lt;p&gt;I am hoping that I&amp;rsquo;m finished tweaking my site for a while, so that I can get back to focusing on building out my networking labs.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>pip2pi - Python Package Caching</title>
      <link>https://chasechristian.com/blog/2016/04/pip2pi-python-package-caching/</link>
      <pubDate>Sat, 09 Apr 2016 11:03:00 -0700</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2016/04/pip2pi-python-package-caching/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;I ran into an issue recently where I needed to be able to install Python packages on servers without internet access. I researched various options like &lt;em&gt;devpi&lt;/em&gt; and other tools that mirror the PyPi servers. However, I didn&amp;rsquo;t want to download every single PyPi package, for both space and security reasons. Devpi says it has package whitelisting, but I couldn&amp;rsquo;t get it to work and the documentation was very lacking.&lt;/p&gt;

&lt;p&gt;I found &lt;a href=&#34;https://github.com/wolever/pip2pi&#34;&gt;&lt;em&gt;pip2pi&lt;/em&gt;&lt;/a&gt; to be the best solution. I feed a list of packages (or a &lt;code&gt;requirements.txt&lt;/code&gt; file) to pip2pi and it downloads all the packages AND their dependencies into a folder. The best part is that the final folder layout matches the PyPi index layout. You can front-end the folder with nginx or Apache and use the &lt;code&gt;-i&lt;/code&gt; parameter for pip to specify your server as the index. Now you can point pip at an internal server. Example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pip install -i http://pythoncache/ requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Pip2pi also ensures that every server gets the exact same code when they install packages, especially when not specifying a particular version like &lt;code&gt;package == 0.8&lt;/code&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Consoles, Enterprise Firewalls, and UPnP</title>
      <link>https://chasechristian.com/blog/2016/04/consoles-enterprise-firewalls-and-upnp/</link>
      <pubDate>Sun, 03 Apr 2016 22:40:00 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2016/04/consoles-enterprise-firewalls-and-upnp/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.comdoublenat.jpg" />
	

&lt;p&gt;Like many IT professionals, I have a home lab. The ability to test new technologies and ideas in the comfort of your own home without taking down a production environment&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;01&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;01&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Although the defition of &amp;ldquo;production&amp;rdquo; depends on who you ask, as the air time of &lt;em&gt;Grey&amp;rsquo;s Anatomy&lt;/em&gt; counts in my house.
    &lt;/span&gt;
&lt;/label&gt;
 is great. There&amp;rsquo;s a ton of enterprise tech that has free or very cheap licensing for home use, like the Juniper Firefly Perimeter (SRX) VM, vSphere Hypervisor (ESXi single-host), and several others. You can also get used servers and networking gear from a variety of sources to let you emulate an enterprise environment.&lt;/p&gt;

&lt;p&gt;Unfortunately, gaming consoles don&amp;rsquo;t work well with enterprise configurations and hardware at home. Consoles like the PS4 or XBONE assume that your network follows an ubiquitous setup: a single modem/router/WAP provided by your ISP. UPnP is considered table stakes for routers in the home consumer market. Without UPnP, many games and applications don&amp;rsquo;t work without a lot of troubleshooting and tedious port forwarding. Peer-to-peer multiplayer (P2P) and voice chat are the two most common offenders.&lt;/p&gt;

&lt;p&gt;However, there&amp;rsquo;s a way to get the best of both worlds: an enterprise firewall at the edge with cool features like logging, user-based policies, layer-7 inspection, and the rest, while still being able to play multiple consoles and games without any issues.&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s called &lt;em&gt;Double NAT&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&#34;double-nat&#34;&gt;Double NAT&lt;/h2&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/doublenat.jpg&#34; alt=&#34;Double NAT diagram&#34; /&gt;&lt;/p&gt;

&lt;p&gt;First, credit for this design goes to my friend Jeff Ford, who introduced it to me as &amp;ldquo;the dirtiest thing [he&amp;rsquo;d] ever done&amp;rdquo;. I use it at home and it works.&lt;/p&gt;

&lt;p&gt;Double NAT is usually a bad word for network engineers. However, I am a believer that you should use the best tool for the job, even if it&amp;rsquo;s an awful tool&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;02&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;02&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Ask me about the time I installed and used WINS &lt;em&gt;on purpose&lt;/em&gt; in a darknet.
    &lt;/span&gt;
&lt;/label&gt;
. The key to the double NAT solution is to leverage the UPnP capabilities of your typical home router to automatically create port forwarding rules. Essentially, you put a home router (like my favorite, the Asus RT-AC66U) behind your enterprise firewall (like my Palo Alto VM100).&lt;/p&gt;

&lt;p&gt;The home router&amp;rsquo;s &lt;em&gt;Internet&lt;/em&gt; port sits on your LAN, with the enterprise firewall as its default gateway, as if you were an ISP. The router&amp;rsquo;s &lt;em&gt;LAN&lt;/em&gt; ports are your custom console network, which should be a different RFC 1918 subnet from your actual LAN. The firewall feature on the router should be disabled, as well as web or admin access on the &lt;em&gt;Internet&lt;/em&gt; port. It should be configured in &amp;ldquo;router&amp;rdquo; mode as opposed to a bridge or AP mode. I also turn off wifi, as my consoles are wired directly.&lt;/p&gt;

&lt;p&gt;On the enterprise firewall, you be creating a NAT rule that sends all possible ports to the home router. Put it at the bottom of your NAT/PAT list so that your actual port forwarding takes precedence. Anything that you&amp;rsquo;re not manually creating a PAT entry for will be translated and sent to the home router.&lt;/p&gt;

&lt;p&gt;The home router receives port forwarding requests from your consoles, and then configures its own PAT table for those ports. The home router thinks it is directly connected to the internet even though you&amp;rsquo;re using RFC 1918 space for its Internet interface. The router has no idea that you&amp;rsquo;re doing the translation in front of it with the enterprise firewall. When traffic comes in to the home router, it will use its port forwarding table to send traffic to the proper console.&lt;/p&gt;

&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Enterprise Firewall untrust interface set to your public IP from your ISP&lt;/li&gt;
&lt;li&gt;Enterprise Firewall trust interface is &lt;code&gt;172.16.1.1/16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Home Router internet interface is &lt;code&gt;172.16.1.100/16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Home Router internet default gateway is &lt;code&gt;172.16.1.1/16&lt;/code&gt; (the firewall)&lt;/li&gt;
&lt;li&gt;Home Router LAN interface is &lt;code&gt;192.168.1.1/24&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Home Router is in &lt;code&gt;router&lt;/code&gt; mode with firewalling turned off&lt;/li&gt;
&lt;li&gt;Consoles are plugged into Home Router LAN ports&lt;/li&gt;
&lt;li&gt;Console IPs are provided via DHCP by the Home Router&lt;/li&gt;
&lt;li&gt;Enterprise Firewall has a 1:1 NAT rule at the bottom, mapping all incoming traffic to &lt;code&gt;172.16.1.100&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example code from Junos:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;set security nat static rule-set console-nat from zone untrust
set security nat static rule-set console-nat rule rule1 match destination-address PUBLIC_IP/32
set security nat static rule-set console-nat rule rule1 then static-nat prefix 172.16.1.100/32
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Example from Palo Alto Networks:&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/paloaltodn.jpg&#34; alt=&#34;PAN Example&#34; /&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;set rulebase nat rules OutboundConsoleRTR to Untrust
set rulebase nat rules OutboundConsoleRTR from Trust
set rulebase nat rules OutboundConsoleRTR source ConsoleRouterIP (172.16.1.100)
set rulebase nat rules OutboundConsoleRTR destination any
set rulebase nat rules OutboundConsoleRTR service any
set rulebase nat rules OutboundConsoleRTR nat-type ipv4
set rulebase nat rules OutboundConsoleRTR source-translation static-ip bi-directional yes
set rulebase nat rules OutboundConsoleRTR source-translation static-ip translated-address YOUR_PUBLIC_IP
&lt;/code&gt;&lt;/pre&gt;
</description>
    </item>
    
    <item>
      <title>My Two Dogs</title>
      <link>https://chasechristian.com/blog/2016/03/my-two-dogs/</link>
      <pubDate>Mon, 07 Mar 2016 00:14:00 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2016/03/my-two-dogs/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com/img/roaddogs.jpg" />
	

&lt;p&gt;I have two dogs.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/roaddogs.jpg&#34; alt=&#34;road dogs&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Their names are Ivy and Rexxar; they&amp;rsquo;re both purebred Golden Retrievers. They&amp;rsquo;re officially classified by the AKC as &amp;ldquo;Dark Gold&amp;rdquo;, which is a golden-brown hue that reminds me of a chocolate chip cookie that&amp;rsquo;s been left in the oven just a &lt;em&gt;bit&lt;/em&gt; too long.&lt;/p&gt;

&lt;p&gt;Ivy is two years old (plus some change) at the time of this writing. Rex recently hit the milestone of being in our care for a full year. They&amp;rsquo;re both young, active dogs that enjoy play-fighting in the backyard and immersing themselves in anything that even &lt;em&gt;looks&lt;/em&gt; wet: mud puddles, rivers, more mud puddles.&lt;/p&gt;

&lt;p&gt;Each of my dogs has their own personality and characteristics, which I try not to anthropomorphize&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;00&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;00&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Ran this one through Google immediately, spelling correct on the first try!
    &lt;/span&gt;
&lt;/label&gt;
 but it&amp;rsquo;s hard sometimes. Ivy is a meeker and more fickle dog when it comes to food and strangers, but is ferociously passionate when it comes to things she loves: walks, friends, sleeping on the bed. Rexxar, or Rex for short, is fearless. He&amp;rsquo;s an &amp;ldquo;eat first, ask questions later&amp;rdquo; kind of dog that devours any food put within his tongue&amp;rsquo;s striking distance. He&amp;rsquo;ll meet anyone and everyone, saluting them with a violently wagging tail and perked-up ears. Let me tell you a bit more about each dog.&lt;/p&gt;

&lt;h2 id=&#34;ivy&#34;&gt;Ivy&lt;/h2&gt;

&lt;p&gt;Meet Ivy. AKA Iverson, AI, Ivysaur, Ivybyevy, St. Ives, and more.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivysmile.jpg&#34; alt=&#34;Ivy smile&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Ivy&amp;rsquo;s birthday is October 27th, 2013&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;02&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;02&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Sorry, not my password hint.
    &lt;/span&gt;
&lt;/label&gt;
. She was one of a dozen puppies in her litter. My wife, Mory, wanted a puppy for Christmas. My mom used to be a dog breeder, so I knew I wanted a dog with AKC paperwork. We checked local papers and websites until we found one family with a litter of puppies that would be turning 8 weeks old on Christmas. We drove an hour north to Mt Vernon and met the family. We were swarmed by a dozen unclaimed pups. Ivy seemed to be the most interested in us, as she nipped at our jacket zippers and cuddled up against our legs. They put a marked collar on her, and we waited. When we picked her up on Christmas Eve, we knew she was the one.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivypup.jpg&#34; alt=&#34;Ivy puppy&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Ivy is a very friendly dog. She&amp;rsquo;s very gentle, even when playing with children and smaller dogs. She is very careful about where she walks, avoiding metal grates and taking the long way around obstacles. Swimming came naturally for her. A fellow Golden was paddling around in the river at Marymoor Park, and she hopped in to join them. She&amp;rsquo;s been teaching Rex how to swim lately. She loves to go on walks, and gets amped up if you even move towards the door.&lt;/p&gt;

&lt;video controls&gt;&lt;source src=&#34;https://chasechristian.com/img/ivyspin.mp4&#34;&gt;Your browser does not support the video tag.&lt;/video&gt;


&lt;p&gt;She is a cuddler, and will lay with you on the bed or sit on your lap for hours. She loves belly and ear rubs.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivybed.jpg&#34; alt=&#34;Ivy bed&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Our favorite thing about Ivy is her crazy tail. It&amp;rsquo;s huge and fluffly.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/ivytail.jpg&#34; alt=&#34;Ivy tail&#34; /&gt;&lt;/p&gt;

&lt;h2 id=&#34;rexxar&#34;&gt;Rexxar&lt;/h2&gt;

&lt;p&gt;Meet Rex. AKA Rexy Boy, Rexareth Goldpaw, Rexington, Rox, and more.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/rexmud.jpg&#34; alt=&#34;Rex mud&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Rex&amp;rsquo;s birthday is January 2nd, 2015. We wanted to get Ivy a dog companion to keep her company and help her exercise. There was a great breeder in Fall City, and we were on his waitlist for puppies. He called us out of the blue one Saturday. Someone had passed on a dog at the last minute, and he had a male Golden puppy ready to pick up immediately. We hit an ATM and drove out there that afternoon. Rex was digging a hole in the yard as his mom looked on. He was the last puppy of his litter to leave.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/rexsleep.jpg&#34; alt=&#34;Rex sleep&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Rex is a fast eater and an even faster learner. Maybe it was due to our practice with Ivy in puppy classes, but Rex picked up tricks at an accelerated rate. He is not as careful as Ivy is. He&amp;rsquo;ll jump towards things that are too tall or too far away, and is always the first dog to get tangled in his leash. He uses his paws much more than Ivy does. High-fives for you and pawprints on doors.&lt;/p&gt;

&lt;video controls&gt;&lt;source src=&#34;https://chasechristian.com/img/rexsprinkler.mp4&#34;&gt;Your browser does not support the video tag.&lt;/video&gt;


&lt;p&gt;Rex sticks his muzzle all the way into the water when he drinks. His nose and whiskers get all wet, and then he drips that water all over the place as he walks away. I have no idea why. We should&amp;rsquo;ve known from the day we met Rex that he would be a digger. If we leave him alone for too long in the yard, he&amp;rsquo;ll be covered in mud and I&amp;rsquo;ll have a hole to fill. Mud puddle? He&amp;rsquo;s in it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/img/rexpup.jpg&#34; alt=&#34;Rex pup&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Rex is much more dependent on us than Ivy is. Ivy misses us while we&amp;rsquo;re gone and is happy when we&amp;rsquo;re back, but Rex panics and gets destructive when there&amp;rsquo;s nobody around. We&amp;rsquo;ve had to work strongly with him on crate training in order to have him calm enough when we want to go out somewhere without him. He has no sense of &amp;ldquo;personal space&amp;rdquo;, and will get right up to your face, nose-to-nose, if you let him. The backseat of our Civic has been converted to the Dog Zone&amp;trade; for a long time. I try to take them with me whenever I can. They both love road trips and sticking their heads out of the windows. Their combo nickname is &amp;ldquo;Ivysaurus Rex&amp;rdquo; which is the prehistoric ancestor to all dogs.&lt;/p&gt;

&lt;p&gt;Our favorite thing about Rex is a little prance that he does when he&amp;rsquo;s proud of himself. Whenever he&amp;rsquo;s returning a thrown ball or just completed a trick, he puffs out his chest and struts his stuff.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Matchmaking in Games</title>
      <link>https://chasechristian.com/blog/2016/02/matchmaking-in-games/</link>
      <pubDate>Mon, 29 Feb 2016 23:57:00 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2016/02/matchmaking-in-games/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;When you&amp;rsquo;re designing a matchmaking system, there are 3 main variables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quality of match, usually related to skill and latency (&lt;strong&gt;QUAL&lt;/strong&gt;) - this is good, most of the time&lt;/li&gt;
&lt;li&gt;Wait time in queue (&lt;strong&gt;WAIT&lt;/strong&gt;) - this is bad and players don&amp;rsquo;t like it, but it increases the QUAL, so it&amp;rsquo;s a necessary evil&lt;/li&gt;
&lt;li&gt;Population size (&lt;strong&gt;POP&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The relationship between these elements forms the basis of matchmaking theory.&lt;/p&gt;

&lt;h2 id=&#34;pop-the-buck-stops-here&#34;&gt;POP - The buck stops here&lt;/h2&gt;

&lt;p&gt;Increasing POP size will increase QUAL and decrease WAIT, assuming an even distribution of skill/connection within POP. A rising tide lifts all boats. Well, until you hit your server limits. In fact, depending on your matchmaking churn rates (how often players are ending matches and looking for new matches), you might need a huge population to support your goals. Joost has a great post about how common issues like skill matching, playlists, and churn determing your &lt;a href=&#34;http://joostdevblog.blogspot.nl/2014/11/why-good-matchmaking-requires-enormous.html&#34;&gt;required population size&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Decreasing POP size will decrease QUAL and increase WAIT. You can alter your thresholds for each to adjust which of QUAL and WAIT is the most affected. Lower POP always results in either lower QUAL or increased WAIT, by definition, unless you have a perfectly balanced matchmaking pool of identical players in perfect team-sized groups (like a bracketed tournament). This never happens in real life. There are many tricks for handling matchmaking with &lt;a href=&#34;http://joostdevblog.blogspot.com/2015/09/designing-matchmaking-for-smaller.html&#34;&gt;a smaller population&lt;/a&gt;, but in general, higher POP = better experience for your players.&lt;/p&gt;

&lt;h2 id=&#34;wait-but-not-too-long&#34;&gt;WAIT - But not too long&lt;/h2&gt;

&lt;p&gt;Increasing WAIT will improve QUAL for a fixed POP, but players don&amp;rsquo;t like WAIT, as it means net-fewer matches will be played and net-less fun will be had. And, at some point, the WAIT increase required to get QUAL where you want it is too high, e.g. making players wait an hour until finally some group of players logs in that makes a high QUAL match. WAIT varies by game/company/etc but typically is between 30 seconds and 5-10 minutes (especially for ranked/high skill games). In some games, this can go as high as 30-60 minutes.  Increasing your WAIT too high can have the negative effect of lowering your POP as people get tired of waiting.&lt;/p&gt;

&lt;p&gt;One variable that can affect the acceptable WAIT time is the length of a match. Players are willing to WAIT longer if matches are longer, as QUAL becomes more important. Many players are OK with playing a quick match where the QUAL is bad, but they&amp;rsquo;d rather add WAIT to increase QUAL as game length increases.&lt;/p&gt;

&lt;h2 id=&#34;qual-good-enough&#34;&gt;QUAL - Good enough&lt;/h2&gt;

&lt;p&gt;Your goal is to balance the QUAL thresholds (skill, latency, other [like groups vs singles]) with your WAIT targets, adjusted for your POP. As your POP goes down (other games, lulls in play, holidays, age of the game, etc), your QUAL targets must also adjust in order to meet your WAIT targets (unless those targets were very lax to begin with). You get to choose which elements of QUAL to focus on (skill, latency, etc) based on design and what players want. Something&amp;rsquo;s got to give, and the matchmaking system decides what gives first.&lt;/p&gt;

&lt;p&gt;You also might need safety valves, namely breaking your QUAL targets when the WAIT is too long. A good example would be if six of the best players in the world queue up from Madagascar. You won&amp;rsquo;t find a good skill match and you won&amp;rsquo;t find a good latency match, so you can either punt (fail to find a game, kick them from the queue, etc) or you can force a game (with lower QUAL targets than you normally want). Typically you&amp;rsquo;ll want to use expanding filters, starting with say &amp;ldquo;within 50ms latency, within 50 points skill&amp;rdquo;, run that through your matchmaker for 30 seconds, then increase to 100/100 and run for another 30 seconds, etc, expanding your filters until you find a match. Being able to gather statistics about what percentage of matches are being made within each filter bracket helps you design and adjust the settings.&lt;/p&gt;

&lt;p&gt;There are other variables that also influence your QUAL targets. If you start adding mechanics that punish players who leave games, you&amp;rsquo;re now responsible for ensuring the QUAL is at such a level that players don&amp;rsquo;t want to leave the game. So, by encouraging players to stay in a game via incentives or punishments, you&amp;rsquo;re entering into a contract with the player where you&amp;rsquo;re committing to a high QUAL value for each match. You&amp;rsquo;re telling the player that they need to stay in the match, and it becomes your responsibility to make staying in the match fun for the player (high QUAL). One of the most damaging things you can do is put players into a long, bad match with no recourse (fear of punishment/loss of rewards).&lt;/p&gt;

&lt;p&gt;Another issue&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;00&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;00&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Games with split factions, like &lt;em&gt;WoW&lt;/em&gt;, suffer from immediately portioning their POP into two, permanent buckets. The new Mercenary PvP queue seems to be an attempt to mitigate that issue.
    &lt;/span&gt;
&lt;/label&gt;
 is when you fragment your POP into buckets, essentially creating smaller groups of POP, which as above, will decrease QUAL or increase WAIT. So every playlist/mode you create is fragmenting your POP and thus reducing your overall experience. This is why playlist-sprawl only works when POP is huge. Many games end up condensing down to just a few core playlists (maybe with a rotational schedule) in order to solve a dwindling population problem without lowering QUAL / increasing WAIT. Ranked vs unranked, hyper-sensitive latency requirements, pre-made vs solos, and many other issues can fragment even a massive playerbase beyond repair. &lt;a href=&#34;http://boards.na.leagueoflegends.com/en/c/developer-corner/XvqbAgrF-letos-talk-about-dynamic-queues-and-ranked-play?show=new&#34;&gt;Riot works very hard&lt;/a&gt; to keep their QUAL statistic maximized for both skill and latency, which can be tough.&lt;/p&gt;

&lt;h2 id=&#34;summary&#34;&gt;Summary&lt;/h2&gt;

&lt;p&gt;At the end of the day, you&amp;rsquo;re always going to have blowouts and you&amp;rsquo;re never going to hit 100% of users matched in 10 seconds. Jeff Kaplan brought up the &lt;a href=&#34;https://www.youtube.com/watch?v=4pLuXWNDsp4&#34;&gt;particularly tough issue&lt;/a&gt; of players leaving a match mid-game ruining matchmaking, as well as how skill can be variable based on a player changing their class or character or loadout mid-game. These are all outside of a matchmaking system&amp;rsquo;s control, and you have to accept some losses. It&amp;rsquo;s a balancing act of taking your current POP and figuring out what QUAL thresholds meet your goals.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Converting to Hyde</title>
      <link>https://chasechristian.com/blog/2016/02/converting-to-hyde/</link>
      <pubDate>Sun, 28 Feb 2016 15:22:00 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2016/02/converting-to-hyde/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;I hosted my blog (chasechristian.com) via WordPress for several years, with the previous iteration running from 2012-2016. I&amp;rsquo;ve never been completely happy with WordPress&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;00&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;00&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;WordPress was always &amp;ldquo;good enough&amp;rdquo;
    &lt;/span&gt;
&lt;/label&gt;
, due to issues with security, functionality, themes, and performance. I read a great post from &lt;a href=&#34;https://twitter.com/ktzhu&#34; title=&#34;Katie Zhu Twitter&#34;&gt;Katie Zhu&lt;/a&gt; about &lt;a href=&#34;http://blog.apps.npr.org/2013/02/14/app-template-redux.html&#34; title=&#34;NPR S3 page&#34;&gt;NPR&amp;rsquo;s static site template&lt;/a&gt; and how they were able to serve a popular site with purely static pages on Amazon S3. If NPR could host their site with static pages, my site should be a breeze.&lt;/p&gt;

&lt;p&gt;I had done some research into static site generators and other blog alternatives, including GitHub Pages/Jekyll, Octopress, Svbtle, Medium, and others. I made a list of features I wanted and tried to track down the right solution. &lt;a href=&#34;https://twitter.com/stevelosh&#34; title=&#34;Steve Losh Twitter&#34;&gt;Steve Losh&lt;/a&gt; migrated to the &lt;a href=&#34;https://github.com/sjl/hyde&#34;&gt;Hyde static site generator&lt;/a&gt; and comprehensively detailed the process on &lt;a href=&#34;http://stevelosh.com/blog/2010/01/moving-from-django-to-hyde/&#34; title=&#34;SJL Hyde post&#34;&gt;his blog&lt;/a&gt;. While I was more comfortable with PHP (and evaluated Pelican), I figured that this was a good opportunity to learn some more Python while following Steve&amp;rsquo;s guide. Much of the styling here comes from his examples.&lt;/p&gt;

&lt;h2 id=&#34;hyde&#34;&gt;Hyde&lt;/h2&gt;

&lt;p&gt;Steve&amp;rsquo;s migration to Hyde was six years ago, in 2010. In the time since then, the version of Hyde he used was deprecated (now called &lt;a href=&#34;https://github.com/hyde/hyde-old&#34;&gt;hyde-old&lt;/a&gt;) as well as the Aardvark Legs CSS suite. In fact, many of the Hyde documentation links you&amp;rsquo;ll find online either 404 or take you to a Chinese domain squatter. Luckily, Steve forked the version of Hyde he&amp;rsquo;s using on GitHub, so I was able to use the same code. That&amp;rsquo;s one of the benefits of a static site generator: as long as they output valid HTML, they&amp;rsquo;re never obsolete. With WordPress, it was scary to run more than a day or two without updates due to security concerns.&lt;/p&gt;

&lt;p&gt;I setup a Python virtualenv for my Hyde site, created a set of folders, and got everything installed. There were some issues with getting the right versions of things installed. This server runs Ubuntu 14.04, and many of the packages were newer than they were when Steve set up his blog, and incompatible with what I was trying to do. I had to set up several of the &lt;em&gt;requirements&lt;/em&gt; files with version information to grab the right copies of Django, etc. I set up some bash aliases to make things easier (generating pages, etc).&lt;/p&gt;

&lt;h2 id=&#34;wp-to-hyde&#34;&gt;WP to Hyde&lt;/h2&gt;

&lt;p&gt;The next step was to convert my old WordPress posts to Markdown for use with Hyde. I used &lt;a href=&#34;https://twitter.com/borismus&#34; title=&#34;Boris Smus Twitter&#34;&gt;Boris Smus&amp;rsquo;&lt;/a&gt; &lt;a href=&#34;https://github.com/borismus/exitwp&#34; title=&#34;exitwp fork&#34;&gt;fork of exitwp&lt;/a&gt;, which he to &lt;a href=&#34;http://smus.com/wordpress-to-hyde/&#34; title=&#34;Boris Smus Blog&#34;&gt;convert his own blog&lt;/a&gt; to Hyde. I decided to jettison all of my old WordPress comments (RIP) as they&amp;rsquo;re no longer needed. I also punted on trying to convert the WordPress URL format to the Hyde URL format, and just created a very long list of nginx rewrite rules, like the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;if ($request_uri ~ ^/278/wow/clearing-your-wow-creature-cache-automatically/$) {
        rewrite ^(.*)$ /blog/2013/02/clearing-your-wow-creature-cache-automatically/ permanent;
        break;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I manually added Hyde headers to all of the posts, as there were only 33 or so of them.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{% hyde
    title: &amp;quot;Converting to Hyde&amp;quot;
    snip: &amp;quot;Static site generator&amp;quot;
    date: 2016-02-28
    categories: [&amp;quot;tech&amp;quot;]
%}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;There was plenty of manual work to convert the stuff exported from exitwp into clean Markdown. I removed all the WordPress &amp;ldquo;more&amp;rdquo; buttons, completely rebuilt a bunch of tables from the ground up, and spent at least two hours redoing all of my &lt;a href=&#34;https://chasechristian.com/blog/2015/08/the-history-of-wow-class-colors/&#34;&gt;WoW class colors article&lt;/a&gt; in pure HTML.&lt;/p&gt;

&lt;p&gt;I did run into one platform issue&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;01&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;01&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Then I spent the better part of 8 hours with strace on it&amp;hellip;
    &lt;/span&gt;
&lt;/label&gt;
, where Hyde was generating my articles out of order. When I&amp;rsquo;d browse the list of articles, the years would be mixed up. I found out that this was an issue due to how Python walks directories on different platforms, and opened a &lt;a href=&#34;https://github.com/sjl/hyde/pull/1&#34;&gt;pull request&lt;/a&gt; to fix this issue. I would like to thank my friend Justin Cook for finding the fix for me!&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m using Disqus for comments, FeedBurner for feeds, Google Analytics for stats, and nginx to serve up the data.&lt;/p&gt;

&lt;h2 id=&#34;sidenotes&#34;&gt;Sidenotes&lt;/h2&gt;

&lt;p&gt;The coolest blog feature on my list of requirements was *sidenotes*&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;02&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;02&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Hi mom!
    &lt;/span&gt;
&lt;/label&gt;
. &lt;a href=&#34;https://twitter.com/tqbf&#34; title=&#34;Thomas Ptacek Twitter&#34;&gt;Thomas Ptacek&lt;/a&gt; uses sidenotes to great effect on &lt;a href=&#34;http://sockpuppet.org/blog/2015/01/15/against-dnssec/&#34; title=&#34;Thomas Ptacek blog&#34;&gt;his blog&lt;/a&gt;. I found Waylan Limberg&amp;rsquo;s &lt;a href=&#34;https://github.com/waylan/Python-Markdown/wiki/Tutorial:-Writing-Extensions-for-Python-Markdown&#34; title=&#34;Writing Extensions for Python Markdown&#34;&gt;guide to writing Python Markdown Extensions&lt;/a&gt; and sampled &lt;a href=&#34;https://github.com/exaroth&#34;&gt;exaroth&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;https://github.com/exaroth/mdx_custom_span_class&#34;&gt;Custom Span Class Markdown Extension&lt;/a&gt; for most of my code. I wrote an extension called &lt;em&gt;SNExtension&lt;/em&gt; (for Sidenote Extension) that will automatically place the text between the marker characters into a span with class &lt;em&gt;sidenote&lt;/em&gt; which then gets moved over to the right via CSS. I extended it to include the ability to number sidenotes as well as hiding them on small screens, as seen on via the &lt;a href=&#34;http://clayh53.github.io/tufte-jekyll/&#34;&gt;Tufte-Jekyll style&lt;/a&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[&amp;gt;] - start sidenote
00-content - ## is the sidenote_id, followed by a dash, then the content
[/&amp;gt;] - end sidenote
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I&amp;rsquo;ll get this up on GitHub sooner or later.&lt;/p&gt;

&lt;h2 id=&#34;style&#34;&gt;Style&lt;/h2&gt;

&lt;p&gt;I spent a long time browsing various fonts on Google Fonts before arriving at &lt;em&gt;Fira Sans&lt;/em&gt; as my font of choice. I am also using &lt;em&gt;Audiowide&lt;/em&gt; for my titles and headers. One of the cool things about separating content from layout is that I can change fonts globally with a snap of my fingers. I replaced the codehilite Markdown stuff with &lt;a href=&#34;https://highlightjs.org/&#34; title=&#34;Highlight.js&#34;&gt;highlight.js&lt;/a&gt; as Boris Smus did as well. I find that it does a better job, especially with Windows shell scripts/batch files.&lt;/p&gt;

&lt;h2 id=&#34;updates&#34;&gt;Updates&lt;/h2&gt;

&lt;p&gt;I also took the opportunity to update my nginx server (via the direct nginx repos) to support HTTP/2 and updated my SSL config. Adding &lt;a href=&#34;https://letsencrypt.org/&#34;&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt; support is coming up shortly, as my certificate from &lt;a href=&#34;https://www.startssl.com/&#34;&gt;StartSSL&lt;/a&gt; expires in May. I also pulled out CloudFlare temporarily, as it wasn&amp;rsquo;t handling SSL very well. I had hacked in CloudFlare support without actually delegating my DNS to CloudFlare (using an old hosting provider partner of theirs) but it&amp;rsquo;s time to either move my DNS there or find an alternative solution (like S3).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The history of WoW Class Colors</title>
      <link>https://chasechristian.com/blog/2015/08/the-history-of-wow-class-colors/</link>
      <pubDate>Sun, 16 Aug 2015 08:42:55 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2015/08/the-history-of-wow-class-colors/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;In my time working on &lt;em&gt;World of Warcraft&lt;/em&gt; &lt;a href=&#34;http://www.armoryplus.com/&#34;&gt;sites&lt;/a&gt; and &lt;a href=&#34;http://www.curse.com/addons/wow/cdspy&#34;&gt;addons&lt;/a&gt;, I&amp;rsquo;ve gotten to dig into some of the &lt;a href=&#34;https://chasechristian.com/blog/2014/04/more-wow-api-information/&#34;&gt;arcane bits&lt;/a&gt; of the game, like &lt;a href=&#34;https://chasechristian.com/blog/2013/11/wow-addonapi-information/&#34;&gt;class colors&lt;/a&gt;. These colors allow players to instantly identify another player&amp;rsquo;s class, and many players carry a strong bond to their class&amp;rsquo; color. In fact, coloring is the primary way that players are able to identify official Blizzard representatives in-game and on the forums, via that beautiful Blizzard Blue:&lt;/p&gt;

&lt;div style=&#34;width: 100px; height: 100px; background: #00B4FF; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#00B4FF&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;I was looking into information on the class color for the newly-announced Demon Hunter, and found a discrepancy in how the Druid class color was being reported. I dug deeper and found some interesting details about class colors that I&amp;rsquo;d like to share and document. I will do my best to avoid Rogue/Rouge jokes. No promises.&lt;/p&gt;

&lt;h2 id=&#34;rgb&#34;&gt;RGB&lt;/h2&gt;

&lt;p&gt;Every class color is represented by a simple RGB value, typically in hex, like &lt;span style=&#34;color: #fff569; background-color: #000000;&#34;&gt;&lt;strong&gt;#FFF569&lt;/strong&gt;&lt;/span&gt; (Rogue - brittle&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;00&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;00&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Rogues are anything but brittle
    &lt;/span&gt;
&lt;/label&gt;
 yellow). There are 3 pairs of digits, each represents a different color. So Rogues can be broken down into FF-F5-69, with FF representing red, F5 representing green, and 69 representing blue. &amp;ldquo;F&amp;rdquo; is a high value in hex, while &amp;ldquo;0&amp;rdquo; is a low value. &amp;ldquo;00&amp;rdquo; means there is none of that color mixed into the final color, while FF means the maximum amount of that color is mixed in. Pure red would be FF-00-00, while simple magenta could be FF-00-FF. The values range from 00 to FF, which is a total span of 256 values, so 1 point of difference is only a 0.4% change in that value of that single color. Not a huge difference.&lt;/p&gt;

&lt;p&gt;Can you tell these two blocks apart?&lt;/p&gt;

&lt;div style=&#34;width: 100px; height: 100px; background: #FFF569; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#FFF569&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #FFF570; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#FFF570&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&#34;canonical-source&#34;&gt;Canonical Source&lt;/h2&gt;

&lt;p&gt;One of the challenges I found when digging into class colors is defining the canonical source. What really defines the class colors themselves? When there&amp;rsquo;s conflicting values from various places, you have to figure out which is actually correct. I went straight to the source: the actual game code. Blizzard has obfuscated their UI code in recent years, leaving only encrypted blobs in your /Interface/AddOns folder. However, there are some &lt;a href=&#34;http://wow.gamepedia.com/Viewing_Blizzard&#39;s_interface_code&#34;&gt;advanced console commands&lt;/a&gt; you can still use to dump the source code of the &lt;em&gt;WoW&lt;/em&gt; UI to a folder. I used &lt;code&gt;ExportInterfaceFiles code&lt;/code&gt; to get the files from the client (latest, 6.2.0.20338), and then inspected the &lt;strong&gt;/FrameXML/Constants.lua&lt;/strong&gt; file &lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;05&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;05&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;The data for class colors has been moved into &lt;strong&gt;/SharedXML/Util.lua&lt;/strong&gt; at some point around &lt;em&gt;Legion&lt;/em&gt;&amp;rsquo;s launch.
    &lt;/span&gt;
&lt;/label&gt;
.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;RAID_CLASS_COLORS = {
  [&amp;quot;HUNTER&amp;quot;] = { r = 0.67, g = 0.83, b = 0.45, colorStr = &amp;quot;ffabd473&amp;quot; },
  [&amp;quot;WARLOCK&amp;quot;] = { r = 0.58, g = 0.51, b = 0.79, colorStr = &amp;quot;ff9482c9&amp;quot; },
  [&amp;quot;PRIEST&amp;quot;] = { r = 1.0, g = 1.0, b = 1.0, colorStr = &amp;quot;ffffffff&amp;quot; },
  [&amp;quot;PALADIN&amp;quot;] = { r = 0.96, g = 0.55, b = 0.73, colorStr = &amp;quot;fff58cba&amp;quot; },
  [&amp;quot;MAGE&amp;quot;] = { r = 0.41, g = 0.8, b = 0.94, colorStr = &amp;quot;ff69ccf0&amp;quot; },
  [&amp;quot;ROGUE&amp;quot;] = { r = 1.0, g = 0.96, b = 0.41, colorStr = &amp;quot;fffff569&amp;quot; },
  [&amp;quot;DRUID&amp;quot;] = { r = 1.0, g = 0.49, b = 0.04, colorStr = &amp;quot;ffff7d0a&amp;quot; },
  [&amp;quot;SHAMAN&amp;quot;] = { r = 0.0, g = 0.44, b = 0.87, colorStr = &amp;quot;ff0070de&amp;quot; },
  [&amp;quot;WARRIOR&amp;quot;] = { r = 0.78, g = 0.61, b = 0.43, colorStr = &amp;quot;ffc79c6e&amp;quot; },
  [&amp;quot;DEATHKNIGHT&amp;quot;] = { r = 0.77, g = 0.12 , b = 0.23, colorStr = &amp;quot;ffc41f3b&amp;quot; },
  [&amp;quot;MONK&amp;quot;] = { r = 0.0, g = 1.00 , b = 0.59, colorStr = &amp;quot;ff00ff96&amp;quot; },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;We can see the colors plainly spelled out, with the first &amp;ldquo;ff&amp;rdquo; referring to the alpha (RGBA) or opacity of the color. The oldest available version of this file is from 2010, via &lt;a href=&#34;https://web.archive.org/web/20100112121951/http://wowprogramming.com/utils/xmlbrowser/test/FrameXML/Constants.lua&#34;&gt;Archive.org&amp;rsquo;s copy&lt;/a&gt; of &lt;a href=&#34;http://wowprogramming.com&#34;&gt;wowprogramming.com&lt;/a&gt; (which is an amazing resource and book). The archived version matches the live version exactly, save for missing the new Monk class, and all of the values only being recorded in RGB percentage format (Rogues are 1.0/.96/.41, which converts to #FFF569 as expected). Luckily, the current file gives us both values, so it was easy to compare.&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s a trimmed list, straight from the canonical source, unchanging over a decade (with one exception - shamans):&lt;/p&gt;

&lt;div style=&#34;background: black;&#34;&gt;&lt;ul&gt;
&lt;li&gt;&lt;span class=&#34;wow-hunter&#34;&gt;Hunter - ABD473&lt;/span&gt;&lt;/li&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;wow-warlock&#34;&gt;Warlock - 9482C9&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;wow-priest&#34;&gt;Priest - FFFFFF&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;wow-paladin&#34;&gt;Paladin - F58CBA&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;wow-mage&#34;&gt;Mage - 69CCF0&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;wow-rogue&#34;&gt;Rogue - FFF569&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;wow-druid&#34;&gt;Druid - FF7D0A&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;wow-shaman&#34;&gt;Shaman - 0070DE&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;wow-warrior&#34;&gt;Warrior - C79C6E&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;wow-deathknight&#34;&gt;Death Knight - C41F3B&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;wow-monk&#34;&gt;Monk - 00FF96&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&#34;wow-demonhunter&#34;&gt;Demon Hunter - No game data&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;

&lt;p&gt;Shamans changed class colors from their former pink to their current blue when they became available to both factions in &lt;em&gt;The Burning Crusade&lt;/em&gt;. When comparing this to &lt;a href=&#34;https://chasechristian.com/blog/2013/11/wow-addonapi-information/&#34;&gt;my posted list&lt;/a&gt;, I noticed that the Monk value was not what I found previously&lt;/p&gt;

&lt;p&gt;Left: In-game, Right: My posted color
&lt;div style=&#34;width: 100px; height: 100px; background: #00FF96; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#00FF96&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #00FFBA; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#00FFBA&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Which is a not-insignificant difference. Clearly the #00FF96 value is canonical, as it comes straight from the source code for the game itself. I actually referenced the &amp;ldquo;ExportInterfaceFiles&amp;rdquo; command in that very same class colors post, but had no idea about the &lt;strong&gt;code&lt;/strong&gt; option for the command until recently.&lt;/p&gt;

&lt;h2 id=&#34;wowwiki-and-shaman&#34;&gt;WoWWiki and Shaman&lt;/h2&gt;

&lt;p&gt;One of the most-referenced sources of this data is &lt;a href=&#34;http://wowwiki.wikia.com/wiki/Class_colors&#34;&gt;WoWWiki&amp;rsquo;s class colors&lt;/a&gt; page. Unfortunately, despite going back to 2006, it has had its problems. For example, the Warlock class color was reported incorrectly due to a math error &lt;a href=&#34;http://wowwiki.wikia.com/wiki/Class_colors?diff=next&amp;amp;oldid=1600046&#34;&gt;until late 2008&lt;/a&gt;. It does chronicle the evolution of Shaman from pink to blue, including &lt;a href=&#34;http://wowwiki.wikia.com/wiki/Class_colors?diff=next&amp;amp;oldid=2326490&#34;&gt;what appears to be a swap&lt;/a&gt; in September 2010 from #2459FF to #0070DE.&lt;/p&gt;

&lt;div style=&#34;width: 100px; height: 100px; background: #F58CBA; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#F58CBA&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #2459FF; color: white; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#2459FF&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #0070DE; color: white; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#0070DE&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;That would&amp;rsquo;ve occurred right before the &lt;em&gt;Cataclysm&lt;/em&gt; expansion was released in December 2010. The user who makes the change noted that it had changed in the game files at that time as well. Our copy of &lt;strong&gt;Constants.lua&lt;/strong&gt; from January 2010 from wowprogramming indicates that the colors were already set to #0070DE at least that early. It&amp;rsquo;s hard to say when exactly Shaman swapped, but it was definitely before January 2010. A &lt;a href=&#34;https://translate.google.com/translate?hl=en&amp;amp;sl=ru&amp;amp;u=http://ru.wow.wikia.com/wiki/%25D0%259A%25D0%25BB%25D0%25B0%25D1%2581%25D1%2581&amp;amp;prev=search&#34;&gt;Russian &lt;em&gt;WoW&lt;/em&gt; wiki&lt;/a&gt; has Shaman listed with their new color as early as September 2009. August 2009 was the announcement of &lt;em&gt;Cataclysm&lt;/em&gt;, which is the only major event in that time frame.&lt;/p&gt;

&lt;h2 id=&#34;battle-net-css&#34;&gt;Battle.net CSS&lt;/h2&gt;

&lt;p&gt;While WoWWiki is second-hand information, we received a second source of direct information in late 2010. Blizzard launched the revamped Battle.net website, which included sections for each class. Browsing the Archive.org archives for Battle.net CSS files, the earliest references to class colors comes on &lt;a href=&#34;https://web.archive.org/web/20101206170357cs_/http://us.battle.net/wow/static/css/wow.css?v2&#34;&gt;December 6th, 2010&lt;/a&gt;, the day before &lt;em&gt;Cataclysm&lt;/em&gt; launched. Let&amp;rsquo;s compare the CSS with our canonical list:
&lt;table &gt;
&lt;tbody &gt;
&lt;tr &gt;
&lt;th&gt;CLASS&lt;/th&gt;
&lt;th&gt;CANON&lt;/th&gt;
&lt;th&gt;BNET CSS&lt;/th&gt;
&lt;th&gt;DIFF&lt;/th&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Hunter
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;ABD473
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;AAD372
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;(-1/-1/-1)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Warlock
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;9482C9
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;9382C9
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;(-1/0/0)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Priest
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;FFFFFF
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;F0EBE0
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;(-15/-20/-31)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Paladin
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;F58CBA
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;F48CBA
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;(-1/0/0)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Mage
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;69CCF0
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;68CCEF
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;(-1/0/-1)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Rogue
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;FFF569
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;FFF468
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;(0/-1/-1)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Druid
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;FF7D0A
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;FF7C0A
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;(0/-1/0)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Shaman
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;2459FF*
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;2359FF
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;(-1/0/0)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Warrior
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;C79C6E
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;C69B6D
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;(-1/-1/-1)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Death Knight
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;C41F3B
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;C41E3B
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;(0/-1/0)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Monk
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;00FF96
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;00FFBA
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;(0/0/+36)
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
You&amp;rsquo;ll note that every single class&amp;rsquo; color is altered slightly from the game file version. Shaman stand out strongly, as their CSS color is #2359FF, which is offset from their old color, #2459FF, which was changed to #0070DE in the game files over a year before the CSS was available. Fast-forward a year to October 23, 2011, and the class color CSS definitions are the same, so it wasn&amp;rsquo;t a launch day mistake. In fact, all of these colors are still slightly offset from the game values in the Battle.net CSS today (TYOOL 2015). These colors were picked on purpose&amp;hellip; or were they?&lt;/p&gt;

&lt;p&gt;The easiest change to explain is the move from pure white for Priests to an off-white color. &lt;strong&gt;Never Use White&lt;/strong&gt; and &lt;strong&gt;Never Use Black&lt;/strong&gt; are two common web design mantras. Most of the other tweaks are not noticeable, even when compared side-by-side.&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s a full table:&lt;/p&gt;

&lt;div style=&#34;width: 100px; height: 100px; background: #ABD473; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#ABD473&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #AAD372; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#AAD372&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #9482C9; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#9482C9&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #9382C9; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#9382C9&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #FFFFFF; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#FFFFFF&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #F0EBE0; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#F0EBE0&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #F58CBA; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#F58CBA&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #F48CBA; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#F48CBA&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #69CCF0; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#69CCF0&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #68CCEF; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#68CCEF&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #FFF569; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#FFF569&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #FFF468; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#FFF468&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #FF7D0A; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#FF7D0A&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #FF7C0A; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#FF7C0A&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #2459FF; float: left; color: white; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#2459FF&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #2359FF; float: left; color: white; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#2359FF&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #C79C6E; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#C79C6E&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #C69B6D; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#C69B6D&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #C41F3B; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#C41F3B&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #C41E3B; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#C41E3B&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #00FF96; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#00FF96&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #00FFBA; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#00FFBA&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Looking at today&amp;rsquo;s current &lt;a href=&#34;http://us.battle.net/wow/static/css/wow.css&#34;&gt;Battle.net CSS file&lt;/a&gt;, we can see the addition of the Demon Hunter with #4DD827 (which some are calling Fel Green) and also the source of my false Monk information (#00FFBA, from earlier). Fel Green in action:&lt;/p&gt;

&lt;div style=&#34;width: 100px; height: 100px; background: #4DD827; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#4DD827&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&#34;demon-hunter-update-8-21-2016&#34;&gt;Demon Hunter Update - 8/21/2016&lt;/h2&gt;

&lt;p&gt;Demon Hunters have been released to the wild, and there has been an interesting development. While the main Battle.net CSS file stills references the #4DD827 color (&lt;code&gt;.color-c12 { color: #4dd827 !important; } /* demon hunter */&lt;/code&gt;), there&amp;rsquo;s a &lt;a href=&#34;http://us.battle.net/forums/static/css/main-115881c6cd.css?v=58-84&#34;&gt;different CSS file&lt;/a&gt; that controls the coloring on the forums. It matches the Battle.net CSS file exactly, except for Demon Hunters:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;.Author-class.hunter{color:#aad372}
.Author-class.warlock{color:#9382c9}
.Author-class.priest{color:#f0ebe0}
.Author-class.paladin{color:#f48cba}
.Author-class.mage{color:#68ccef}
.Author-class.rogue{color:#fff468}
.Author-class.druid{color:#ff7c0a}
.Author-class.shaman{color:#2359ff}
.Author-class.warrior{color:#c69b6d}
.Author-class.death.knight{color:#c41e3b}
.Author-class.monk{color:#00ffba}
.Author-class.demon.hunter{color:#a330c9}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Via the CSS selector &lt;code&gt;.Author-class.demon.hunter&lt;/code&gt;, we can see that there&amp;rsquo;s a new color for the DH class on the official forums (and in-game!):&lt;/p&gt;

&lt;div style=&#34;width: 100px; height: 100px; background: #4DD827; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#4DD827&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #A330C9; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#A330C9&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s a fel purple (#A330C9)! Demon Hunters have shifted from green to purple, likely due to the overloading of green as a class color (hunter, monk).&lt;/p&gt;

&lt;div style=&#34;width: 100px; height: 100px; background: #AAD372; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;Hunter&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #00FF96; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;Monk&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #4DD827; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;Fel Green&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;A decision was made to shift Demon Hunters over to purple, which they now share with Warlocks. I would&amp;rsquo;ve loved to have been a fly on the wall of that style meeting. Let&amp;rsquo;s take a look at the CSS and game files to see what other changes were made.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;OLD WARLOCK CSS:     .color-c9,  .color-c9 a { color: #9382c9 !important; }
NEW WARLOCK CSS:     .Author-class.warlock{color:#9382c9}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So, no changes were made to Warlocks on the forums. However, the game files tell a different story (build 7.0.3.22423):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;RAID_CLASS_COLORS = {
  [&amp;quot;HUNTER&amp;quot;] = { r = 0.67, g = 0.83, b = 0.45, colorStr = &amp;quot;ffabd473&amp;quot; },
  [&amp;quot;WARLOCK&amp;quot;] = { r = 0.53, g = 0.53, b = 0.93, colorStr = &amp;quot;ff8788ee&amp;quot; },
  [&amp;quot;PRIEST&amp;quot;] = { r = 1.0, g = 1.0, b = 1.0, colorStr = &amp;quot;ffffffff&amp;quot; },
  [&amp;quot;PALADIN&amp;quot;] = { r = 0.96, g = 0.55, b = 0.73, colorStr = &amp;quot;fff58cba&amp;quot; },
  [&amp;quot;MAGE&amp;quot;] = { r = 0.25, g = 0.78, b = 0.92, colorStr = &amp;quot;ff3fc7eb&amp;quot; },
  [&amp;quot;ROGUE&amp;quot;] = { r = 1.0, g = 0.96, b = 0.41, colorStr = &amp;quot;fffff569&amp;quot; },
  [&amp;quot;DRUID&amp;quot;] = { r = 1.0, g = 0.49, b = 0.04, colorStr = &amp;quot;ffff7d0a&amp;quot; },
  [&amp;quot;SHAMAN&amp;quot;] = { r = 0.0, g = 0.44, b = 0.87, colorStr = &amp;quot;ff0070de&amp;quot; },
  [&amp;quot;WARRIOR&amp;quot;] = { r = 0.78, g = 0.61, b = 0.43, colorStr = &amp;quot;ffc79c6e&amp;quot; },
  [&amp;quot;DEATHKNIGHT&amp;quot;] = { r = 0.77, g = 0.12 , b = 0.23, colorStr = &amp;quot;ffc41f3b&amp;quot; },
  [&amp;quot;MONK&amp;quot;] = { r = 0.0, g = 1.00 , b = 0.59, colorStr = &amp;quot;ff00ff96&amp;quot; },
  [&amp;quot;DEMONHUNTER&amp;quot;] = { r = 0.64, g = 0.19, b = 0.79, colorStr = &amp;quot;ffa330c9&amp;quot; },
};    
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Warlocks&amp;rsquo; in-game color moved from #9482C9 to #8788EE, which is significantly more blue and somewhat less red. Previously, they had the same amount of blue (.79) as Demon Hunters do today:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[&amp;quot;WARLOCK&amp;quot;] = { r = 0.58, g = 0.51, b = 0.79, colorStr = &amp;quot;ff9482c9&amp;quot; },
[&amp;quot;WARLOCK&amp;quot;] = { r = 0.53, g = 0.53, b = 0.93, colorStr = &amp;quot;ff8788ee&amp;quot; },
&lt;/code&gt;&lt;/pre&gt;

&lt;div style=&#34;width: 100px; height: 100px; background: #9482C9; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#9482C9&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #8788EE; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#8788EE&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Demon Hunters actually have their CSS and game files in sync, due to all 3 hex color values rounding up (see the Rounding section). This makes them the only class with matching in-game and CSS values:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Canonical Blue: .64 -- Hex A3/RGB 163 = 63.9% (round up to 64%)
Canonical Green: .19 -- Hex 30/RGB 48 = 18.8% (round up to 19%)
Canonical Red: .79 -- Hex C9/RGB 201 = 78.8% (round up to 79%)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;An interesting note is that Mages also had their in-game color shifted in &lt;em&gt;Legion&lt;/em&gt;, from #69CCF0 to #3FC7EB:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[&amp;quot;MAGE&amp;quot;] = { r = 0.41, g = 0.8, b = 0.94, colorStr = &amp;quot;ff69ccf0&amp;quot; },
[&amp;quot;MAGE&amp;quot;] = { r = 0.25, g = 0.78, b = 0.92, colorStr = &amp;quot;ff3fc7eb&amp;quot; },
&lt;/code&gt;&lt;/pre&gt;

&lt;div style=&#34;width: 100px; height: 100px; background: #69CCF0; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#69CCF0&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #3FC7EB; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#3FC7EB&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Again, their forum CSS color did not change. The Mage change is interesting, as it might be designed to further separate them from the newly-bluer Warlock. The Mage color mix saw a big decrease in red, which makes it less sky-blue, in my opinion. Here is new-Warlock vs old-Mage:&lt;/p&gt;

&lt;div style=&#34;width: 100px; height: 100px; background: #8788EE; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#8788EE&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #69CCF0; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;#69CCF0&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s a final comparison of all of the blues:&lt;/p&gt;

&lt;div style=&#34;width: 100px; height: 100px; background: #69CCF0; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;Old Mage&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #3FC7EB; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;New Mage&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #00B4FF; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;Blizzard&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #0070DE; color: white; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;Shaman&lt;/div&gt;
&lt;div style=&#34;width: 100px; height: 100px; background: #2459FF; color: white; float: left; text-align: center; vertical-align: middle; line-height: 100px;&#34;&gt;Old Shaman&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&#34;questions&#34;&gt;Questions&lt;/h2&gt;

&lt;p&gt;It appears intentional that all of the class colors are slightly offset from their in-game representations&amp;hellip; but why? Why are Shaman still using a class color that was changed in the client 5 years ago? Why just drop a couple of values by 1 point? It&amp;rsquo;s not distinguishable to most observers. Only the Monk color changes significantly, with a large blue boost. Where&amp;rsquo;s the beef?&lt;/p&gt;

&lt;h2 id=&#34;rounding-aka-off-by-one&#34;&gt;Rounding, aka Off-By-One&lt;/h2&gt;

&lt;p&gt;Hunters, for example, are defined as: &lt;strong&gt;r = 0.67, g = 0.83, b = 0.45&lt;/strong&gt;. That&amp;rsquo;s straight from the game files. The corresponding RGB values in decimal are 171 212 115, or ABD473. ABD473 technically maps to &lt;strong&gt;67.1% / 83.1% / 45.1%&lt;/strong&gt;, which is pretty close to the canonical definition. All percentages are slightly larger than the canonically defined values.&lt;/p&gt;

&lt;p&gt;The CSS hunter is defined as: AAD372. All 3 RGB colors were decremented. That corresponds to decimal 170 211 114, or &lt;strong&gt;66.66% / 82.7% / 44.7%.&lt;/strong&gt; Those percentages actually do round up into 67/83/45 - the canonical definition. Is it possible whatever tool they&amp;rsquo;re using to generate the CSS is playing with Price Is Right rules, where it&amp;rsquo;s closest-without-going-over?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Game Hunter: &lt;strong&gt;.67 / .83 / .45&lt;/strong&gt; = ABD473 = 67.1% / 83.1% / 45.1%&lt;/p&gt;

&lt;p&gt;CSS Hunter: AAD372 = 66.66% / 82.7% / 44.7%&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If they&amp;rsquo;re rounding with CEIL instead of FLOOR or actually rounding, then AAD372 becomes the correct result to achieve the 67/83/45 split. Let&amp;rsquo;s look at one more example.&lt;/p&gt;

&lt;p&gt;Warlocks are canonically defined: &lt;strong&gt;r = 0.58, g = 0.51, b = 0.79&lt;/strong&gt;. The corresponding decimal values are 148 130 201, or 9482C9. 9482C9 maps to &lt;strong&gt;58.039%, 50.9%, and 78.8%&lt;/strong&gt;. So 50.9% (green) and 78.8% (blue) are both rounded up, while 58.039% (red) is rounded down.&lt;/p&gt;

&lt;p&gt;When we look at the CSS warlock, it&amp;rsquo;s defined as: 9382C9. Interestingly, only the first color (red) is changed. Red is also the only color percentage that was rounded down in the canonical color, while the other two color percentages were rounded up (and unaltered in the CSS). &lt;strong&gt;9382C9 = 57.6% red&lt;/strong&gt;, which can be rounded up to 58, matching the canonical definition.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Game Warlock: &lt;strong&gt;.58 / .51 / .79&lt;/strong&gt; = 9482C9 = 58% / 50.9% / 78.8%&lt;/p&gt;

&lt;p&gt;CSS Warlock: 9382C9 = 57.6% / 50.9% / 78.8%&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We&amp;rsquo;ve found the issue. The rounding being used to convert simple percentages like 0.58 into the 256-value RGB space is different between the client code and the web/CSS code. That explains why almost every value is shifted by 0 or -1, and never +1.&lt;/p&gt;

&lt;p&gt;The game values are all the closest possible to the original percentage specified, while the CSS values are all the closest without going over. So, in some cases, the CSS color values are slightly less accurate (assuming that the percentage values are canonical). Here&amp;rsquo;s an example from Death Knights:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Death Knight Canonical Value for Green: 0.12&lt;/p&gt;

&lt;p&gt;Game Value: Hex 1F/RGB 31 = 0.1216 (31/255) for a differnce of 0.0016&lt;/p&gt;

&lt;p&gt;CSS Value: Hex 1E/RGB 30 = 0.1176 (30/255) for a difference of 0.0024&lt;/p&gt;

&lt;p&gt;So CSS is 0.008 further than game from true &amp;ldquo;0.12&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Priests are set to off-white for web best practices. Monks still see a significant change, and their color is much bluer on Battle.net than it is in the game for no discernible reason. And why are Shaman still using the ancient class color? That&amp;rsquo;s a mystery for a different time&amp;hellip;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>PS Vita Remote Play and SoftEther</title>
      <link>https://chasechristian.com/blog/2015/01/ps-vita-remote-play-and-softether/</link>
      <pubDate>Tue, 13 Jan 2015 07:38:01 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2015/01/ps-vita-remote-play-and-softether/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;Sony&amp;rsquo;s latest gaming handheld, the Playstation Vita, has a great new feature: Remote Play. Your Playstation 4 turns on, starts playing a game, and then streams the video to your Vita. You control everything remotely via the Vita. It&amp;rsquo;s a great way to play PS4 games when you&amp;rsquo;re away from your console (or away from your house).&lt;/p&gt;

&lt;p&gt;Because the game is actually being executed and rendered on your PS4, it needs to be on for this to work. But what happens if your PS4 isn&amp;rsquo;t on?&lt;/p&gt;

&lt;p&gt;PS4 consoles will register themselves with a remote Sony service, which records their public IP address (which can change on most residential connections) and other information. Your PS4 is rarely &amp;ldquo;off&amp;rdquo; but rather &amp;ldquo;asleep&amp;rdquo; when you put it away. While asleep, it can be woken up by this remote Sony service, which then lets you connect to it via Remote Play (forwarded ports on your router/firewall). During the DDoS attack Sony experienced around Christmas 2014, this remote Sony service was down, so PS4s could not register themselves.&lt;/p&gt;

&lt;p&gt;My own PS4 was happily asleep at home, but I could not turn it on remotely to access it. There are no PC-based tools to turn a PS4 on, no management software, etc. But there is another way to turn on a PS4: with a Vita. The Vita can send out a specially crafted broadcast packet, which will wake up the PS4 and allow you to connect. The issue is that you can&amp;rsquo;t easily send a broadcast packet from your Vita and have it hit your PS4 without being on the same network.&lt;/p&gt;

&lt;p&gt;That&amp;rsquo;s where &lt;a href=&#34;https://www.softether.org/&#34;&gt;SoftEther&lt;/a&gt; comes in. SoftEther allows you to make a seamless layer 2 tunnel between endpoints, which lets broadcast traffic through. I installed SoftEther server on my home PC (remotely), installed SoftEther bridge on my laptop, and got to work. Because the Vita can only connect to the network via wifi, I used an extra USB NIC + wifi access point to tunnel my Vita through to my home network. The broadcast from the Vita woke up the PS4, and I was good to go!&lt;/p&gt;

&lt;p&gt;The catch with trying to use SoftEther in this manner is that Windows is not very good at allowing you to make your device a wireless access point. If you set your wireless to be an access point instead of a client, it transparently adds lots of NAT / DHCP and won&amp;rsquo;t let you natively bridge your interfaces together. In order to get around this, I needed a real access point, with a very simple config, and then bridged my LAN interfaces together in Windows. If you see an IP range like: 192.168.137.0/24, you know that Windows is silently using NAT / DHCP in the background.&lt;/p&gt;

&lt;p&gt;I also took a capture of the broadcast traffic that the Vita uses to wake up the PS4, and I plan to try replaying that PCAP file next time to see if the same packets will wake it up.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>iOS Client Certificate Expiration - April 16, 2014</title>
      <link>https://chasechristian.com/blog/2014/04/ios-client-certificate-expiration-april-16-2014/</link>
      <pubDate>Mon, 21 Apr 2014 18:16:53 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2014/04/ios-client-certificate-expiration-april-16-2014/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;All iOS devices (iPhone/iPad in particular) have built-in client certificates that are issued by Apple, that identify them as &amp;ldquo;official&amp;rdquo; Apple iPhones. Without one of these certs, a service isn&amp;rsquo;t able to verify whether the device connecting to them is actually an iPhone or not. Apps are also capable of checking this certificate to ensure they&amp;rsquo;re running on a proper iPhone and not an emulation. I believe the certificates are issued at either time of manufacturing or at time of activation.&lt;/p&gt;

&lt;p&gt;Either way, a large number (all?) of iPhones and iPads all recently shared the same certificate expiration date: &amp;ldquo;April 16, 2014, 6:55:02 PM EST.&amp;rdquo;&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2014/04/Clipboard01.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2014/04/Clipboard01.png&#34; alt=&#34;Screenshot of Apple iPhone Activation cert that is expired&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks to Twitter user &lt;a href=&#34;https://twitter.com/ryandolan123/status/454410469948669954/photo/1&#34;&gt;@ryandolan123&lt;/a&gt; for the screen cap.&lt;/p&gt;

&lt;p&gt;When this certificate expired, any app or service that checked the client certificate for a valid iPhone failed. There were several affected services, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Aruba ClearPass&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://twitter.com/BBCiPlayer/status/456804934613483520&#34;&gt;BBC iPlayer&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;http://www.techradar.com/news/software/applications/bad-friday-sky-go-and-now-tv-outage-on-ios-persists-into-second-day-1243608&#34;&gt;Sky Go Player&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Dish TV Player&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;and many others&amp;hellip;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of these issues ended up being resolved by the app producers disabling client certificate checking. I am wondering how Apple is going to handle reissuing these certificates, or if it&amp;rsquo;s even a concern for them.&lt;/p&gt;

&lt;p&gt;Update: &amp;ldquo;Apparently &lt;a href=&#34;http://www.macrumors.com/2014/04/24/ios-6-facetime-fix/&#34;&gt;FaceTime has also been affected&lt;/a&gt;.&amp;rdquo;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>More WoW API information</title>
      <link>https://chasechristian.com/blog/2014/04/more-wow-api-information/</link>
      <pubDate>Wed, 09 Apr 2014 19:06:13 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2014/04/more-wow-api-information/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;I&amp;rsquo;ve recently been working more on the &lt;em&gt;WoW&lt;/em&gt; API, specifically around hunter pet mapping. I have found several new discoveries from &lt;a href=&#34;https://chasechristian.com/blog/2013/11/wow-addonapi-information/&#34;&gt;the last time I worked on the API&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;racial-mapping&#34;&gt;Racial mapping&lt;/h2&gt;

&lt;p&gt;When retrieving character race data from the API, you simply receive a number. Here&amp;rsquo;s a table that maps that &lt;a href=&#34;http://us.battle.net/api/wow/data/character/races&#34;&gt;number to the respective race&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alliance:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 - human&lt;/li&gt;
&lt;li&gt;3 - dwarf&lt;/li&gt;
&lt;li&gt;4 - nightelf&lt;/li&gt;
&lt;li&gt;7 - gnome&lt;/li&gt;
&lt;li&gt;11 - draenei&lt;/li&gt;
&lt;li&gt;22 - worgen&lt;/li&gt;
&lt;li&gt;25 - panda-a&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Horde:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2 - orc&lt;/li&gt;
&lt;li&gt;5 - undead&lt;/li&gt;
&lt;li&gt;6 - tauren&lt;/li&gt;
&lt;li&gt;8 - troll&lt;/li&gt;
&lt;li&gt;9 - goblin&lt;/li&gt;
&lt;li&gt;10 - bloodelf&lt;/li&gt;
&lt;li&gt;26 - panda-h&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Neutral (temporary):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;24 - panda-n&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;parsing-an-entire-realm-s-characters&#34;&gt;Parsing an entire realm&amp;rsquo;s characters&lt;/h2&gt;

&lt;p&gt;I am using &lt;a href=&#34;http://wow.realmpop.com/&#34;&gt;the RealmPop method&lt;/a&gt; of parsing realm character data, namely:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How&lt;/strong&gt; - To get the list of characters for a realm, first we record all the characters who posted to the auction house. Then we fetch and record their guild rosters. This should cover the majority of characters on a realm. To avoid getting listed, a character must never post to the auction house, and never belong to a guild where a guild member posts to the auction house.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, how would you go about this? Realm auction data is packaged up into unique files every so often, and the URL of that package changes. There&amp;rsquo;s an API endpoint that will give you the latest URL of that data package.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://us.battle.net/api/wow/auction/data/**$realm**&#34;&gt;http://us.battle.net/api/wow/auction/data/**$realm**&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When you that URL, you&amp;rsquo;ll get back the file url for the auction data package. Then, you grab that data package. Here&amp;rsquo;s a recent Mal&amp;rsquo;Ganis package, for example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://us.battle.net/auction-data/e93144540f4aa366aefe80b13d2ebbb9/auctions.json&#34;&gt;http://us.battle.net/auction-data/e93144540f4aa366aefe80b13d2ebbb9/auctions.json&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once you have the auction data, you crawl through it and pull out the auction owners. The file is separated into Horde/Alliance/Neutral auction houses. I usually compile a list of auction owners from all 3 sets. I don&amp;rsquo;t record the faction data here, since it&amp;rsquo;s also contained (implicitly) in the race data I gather later. So now you just have a big list of all of the people that have current auctions posted. Then, you grab their guild information.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://us.battle.net/api/wow/character/**$realm**/**$owner**?fields=guild&#34;&gt;http://us.battle.net/api/wow/character/**$realm**/**$owner**?fields=guild&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now you turned your big list of auction owners into a big list of guilds! Finally, you then parse each guild&amp;rsquo;s roster:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://us.battle.net/api/wow/guild/**$realm**/**$guild**?fields=members&#34;&gt;http://us.battle.net/api/wow/guild/**$realm**/**$guild**?fields=members&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;RealmPop is probably done at this point, since they only really care about the basic member information. I wanted to dig deeper, so I parse out the list of members, select those that are hunters (&lt;a href=&#34;http://chasechristian.com/blog/2013/11/wow-addonapi-information/&#34;&gt;class = 3&lt;/a&gt;), and then I grab their individual Armory information:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://us.battle.net/api/wow/character/$realm/$member?fields=hunterPets,guild&#34;&gt;http://us.battle.net/api/wow/character/$realm/$member?fields=hunterPets,guild&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&#34;pet-family-mapping&#34;&gt;Pet family mapping&lt;/h2&gt;

&lt;p&gt;Similar to the racial and class mapping, each pet family type is also mapped to a number. Here&amp;rsquo;s a table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 - Wolf&lt;/li&gt;
&lt;li&gt;2 - Cat&lt;/li&gt;
&lt;li&gt;3 - Spider&lt;/li&gt;
&lt;li&gt;4 - Bear&lt;/li&gt;
&lt;li&gt;5 - Boar&lt;/li&gt;
&lt;li&gt;6 - Crocolisk&lt;/li&gt;
&lt;li&gt;7 - Carrion Bird&lt;/li&gt;
&lt;li&gt;8 - Crab&lt;/li&gt;
&lt;li&gt;9 - Gorilla&lt;/li&gt;
&lt;li&gt;11 - Raptor&lt;/li&gt;
&lt;li&gt;12 - Tallstrider&lt;/li&gt;
&lt;li&gt;20 - Scorpid&lt;/li&gt;
&lt;li&gt;21 - Turtle&lt;/li&gt;
&lt;li&gt;24 - Bat&lt;/li&gt;
&lt;li&gt;25 - Hyena&lt;/li&gt;
&lt;li&gt;26 - Bird of Prey&lt;/li&gt;
&lt;li&gt;27 - Wind Serpent&lt;/li&gt;
&lt;li&gt;30 - Dragonhawk&lt;/li&gt;
&lt;li&gt;31 - Ravager&lt;/li&gt;
&lt;li&gt;32 - Warp Stalker&lt;/li&gt;
&lt;li&gt;33 - Sporebat&lt;/li&gt;
&lt;li&gt;34 - Nether Ray&lt;/li&gt;
&lt;li&gt;35 - Serpent&lt;/li&gt;
&lt;li&gt;37 - Moth&lt;/li&gt;
&lt;li&gt;38 - Chimaera&lt;/li&gt;
&lt;li&gt;39 - Devilsaur&lt;/li&gt;
&lt;li&gt;41 - Silithid&lt;/li&gt;
&lt;li&gt;42 - Worm&lt;/li&gt;
&lt;li&gt;43 - Rhino&lt;/li&gt;
&lt;li&gt;44 - Wasp&lt;/li&gt;
&lt;li&gt;45 - Core Hound&lt;/li&gt;
&lt;li&gt;46 - Spirit Beast&lt;/li&gt;
&lt;li&gt;50 - Fox&lt;/li&gt;
&lt;li&gt;51 - Monkey&lt;/li&gt;
&lt;li&gt;52 - Dog&lt;/li&gt;
&lt;li&gt;53 - Beetle&lt;/li&gt;
&lt;li&gt;55 - Shale Spider&lt;/li&gt;
&lt;li&gt;125 - Crane&lt;/li&gt;
&lt;li&gt;126 - Water Strider&lt;/li&gt;
&lt;li&gt;127 - Porcupine&lt;/li&gt;
&lt;li&gt;128 - Quilen&lt;/li&gt;
&lt;li&gt;129 - Goat&lt;/li&gt;
&lt;li&gt;130 - Basilisk&lt;/li&gt;

&lt;li&gt;&lt;p&gt;138 - Direhorn&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;59 - Silithid &amp;ndash; (this specifically is the &amp;ldquo;brain bug&amp;rdquo; version)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;66 - Wasp &amp;ndash; (the new silithid wasp)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;68 - Hydra &amp;ndash; (very rare, &lt;a href=&#34;http://www.wowhead.com/npc=29033&#34;&gt;only one known pet&lt;/a&gt;, now unobtainable, was actually retconned to &amp;lsquo;hydra&amp;rsquo; in &lt;em&gt;Cataclysm&lt;/em&gt;, was previously a &amp;lsquo;crocolisk&amp;rsquo; type)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I&amp;rsquo;ll note that there are some additional mappings for other languages. For example, in the Spanish client, &amp;lsquo;Cat&amp;rsquo; is translated to &amp;lsquo;Gato&amp;rsquo;, so a tamed cat-type will actually be named &amp;lsquo;Gato&amp;rsquo;. Now, some people also do funny things like name their wolves and scorpions &amp;lsquo;Gato&amp;rsquo;, but that&amp;rsquo;s unrelated.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>CheckInstall - never run &#39;make install&#39; again</title>
      <link>https://chasechristian.com/blog/2014/02/checkinstall-never-run-make-install-again/</link>
      <pubDate>Sun, 23 Feb 2014 18:55:29 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2014/02/checkinstall-never-run-make-install-again/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;The first time I touched Linux was while I was working on setting up my own Minecraft server. I downloaded a free distro called MineOS. It ended up being really awful, and I eventually moved Minecraft to a Windows server (lovingly named Blocky). However, I was surprised at how functional Linux was. I came from a purely Microsoft upbringing.&lt;/p&gt;

&lt;p&gt;I bought a Linode VPS to mess around with, and it&amp;rsquo;s that same instance that this site is hosted on today. I didn&amp;rsquo;t know much about Linux when I got started, and so I made a lot of mistakes. Experience is the best teacher, and so through those mistakes, I&amp;rsquo;ve learned a lot. One of my biggest mistakes was blindly installing any package I wanted to, especially via source and &amp;lsquo;make install&amp;rsquo;.&lt;/p&gt;

&lt;p&gt;The problem with managing stuff from &amp;lsquo;make install&amp;rsquo; is that it can be hard to uninstall and you have to keep the source around in case you want to reinstall, etc. There&amp;rsquo;s a solution: &lt;a href=&#34;https://help.ubuntu.com/community/CheckInstall&#34;&gt;CheckInstall&lt;/a&gt;. When you want to install from source, you still run &lt;strong&gt;configure&lt;/strong&gt; and &lt;strong&gt;make&lt;/strong&gt;, but instead of running &amp;lsquo;make install&amp;rsquo;, you just run &amp;lsquo;checkinstall&amp;rsquo;. It will pull all of its info from the source and create a Debian package and install that instead. Now you can easily install/uninstall stuff via aptitude, and stuff installed from source will show as installed in aptitude and meet all dependencies! Seriously awesome, seriously easy.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>WoW Addon/API Information</title>
      <link>https://chasechristian.com/blog/2013/11/wow-addonapi-information/</link>
      <pubDate>Mon, 25 Nov 2013 09:36:19 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/11/wow-addonapi-information/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;I thought I would dump some &lt;em&gt;WoW&lt;/em&gt; information here that I&amp;rsquo;ve learned from the Armory API and addons.&lt;/p&gt;

&lt;p&gt;Classes in &lt;em&gt;WoW&lt;/em&gt; are numbered 1-11, and each class has a specific color attached to it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Warrior - color is &lt;span style=&#34;color: #c79c6e;&#34;&gt;#C79C6E&lt;/span&gt; - Tan or Brown&lt;/li&gt;
&lt;li&gt;Paladin - color is &lt;span style=&#34;color: #f58cba;&#34;&gt;#F58CBA&lt;/span&gt; - Pink&lt;/li&gt;
&lt;li&gt;Hunter - color is &lt;span style=&#34;color: #abd473;&#34;&gt;#ABD473&lt;/span&gt; - Green&lt;/li&gt;
&lt;li&gt;Rogue - color is &lt;span style=&#34;background-color: #000000; color: #fff569;&#34;&gt;#FFF569&lt;/span&gt; - Brittle Yellow&lt;/li&gt;
&lt;li&gt;Priest - color is &lt;span style=&#34;background-color: #000000; color: #ffffff;&#34;&gt;#FFFFFF&lt;/span&gt; - White&lt;/li&gt;
&lt;li&gt;Death Knight - color is &lt;span style=&#34;color: #c41f3b;&#34;&gt;#C41F3B&lt;/span&gt; - Red or Crimson    (isn&#39;t it interesting that DKs are #6????)&lt;/li&gt;
&lt;li&gt;Shaman - color is &lt;span style=&#34;color: #0070de;&#34;&gt;#0070DE&lt;/span&gt; - Blue&lt;/li&gt;
&lt;li&gt;Mage - color is &lt;span style=&#34;color: #69ccf0;&#34;&gt;#69CCF0&lt;/span&gt; - Light Blue&lt;/li&gt;
&lt;li&gt;Warlock - color is &lt;span style=&#34;color: #9482c9;&#34;&gt;#9482C9&lt;/span&gt; - Purple&lt;/li&gt;
&lt;li&gt;Monk - color is &lt;span style=&#34;background-color: #000000; color: #00ffba;&#34;&gt;#00FFBA&lt;/span&gt; - Jade Green&lt;/li&gt;
&lt;li&gt;Druid - color is &lt;span style=&#34;color: #ff7d0a;&#34;&gt;#FF7D0A&lt;/span&gt; - Orange&lt;/li&gt;
&lt;li&gt;??? - color is &lt;span style=&#34;color: #558a84;&#34;&gt;#558A84&lt;/span&gt; - No idea why this was in my CSS file&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to dump all of the icons from the &lt;em&gt;WoW&lt;/em&gt; client in a convenient format, start WoW with the &amp;ldquo;-console&amp;rdquo; flag in the shortcut and run this command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;exportInterfaceFiles art
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note that it will take a while (minutes) to run. You will want to dump the icons again after any new patch to grab the updated icons. The names should always match those that you get back from the Armory API.&lt;/p&gt;

&lt;p&gt;The gospel of &lt;em&gt;WoW&lt;/em&gt; API documentation is &lt;a href=&#34;http://blizzard.github.io/api-wow-docs/#&#34;&gt;the official Blizzard API page on Github&lt;/a&gt;. The data resources section is particularly awesome for grabbing lists of all achievements, all taletnts, etc. I use this to refresh my achievement comparison tools after every patch. Make sure to cache this in a database or file somewhere, since you don&amp;rsquo;t want to be pulling it constantly (it gets pretty big).&lt;/p&gt;

&lt;p&gt;The Armory APIs are down during Tuesday maintenance (usually).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The guide to enterprise storage: disks</title>
      <link>https://chasechristian.com/blog/2013/09/the-guide-to-enterprise-storage-disks/</link>
      <pubDate>Tue, 24 Sep 2013 08:01:22 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/09/the-guide-to-enterprise-storage-disks/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;Storage is one of my favorite things. I love everything about it: NAS, SAN, networks, SCSI, SSDs! However, most home users and amateurs never get the chance to do much with storage besides format it with Windows or maybe toss an SSD into their system. There&amp;rsquo;s a lot to learn with storage, and it&amp;rsquo;s been around long enough to have plenty of legacy cruft hanging around. Rather than trying to cover everything at once, I want to talk about storage in pieces. I am going to start with disks (spinning, hard disk drives) and work my way up the stack to SANs, and I&amp;rsquo;ll probably talk about SSDs separately.&lt;/p&gt;

&lt;h2 id=&#34;the-pursuit-of-4k&#34;&gt;The pursuit of 4K&lt;/h2&gt;

&lt;p&gt;While 4K televisions are the new hotness, 4K has been around in the hard drive world for a few years. When you go buy your 2TB hard drive from Western Digital on NewEgg, it&amp;rsquo;s probably partitioned into a ton of 4KB pieces called &lt;strong&gt;sectors&lt;/strong&gt;. Drives with 4K sectors are said to be Advanced Format drives, while the old drives are just Old Drives. Prior to 2010 or so, drives were cut up into &lt;strong&gt;512-byte sectors&lt;/strong&gt;. If you do your math, you&amp;rsquo;ll see that 8x 512-byte sectors add up to 1x 4-kbyte sector, so there are 8x fewer sectors on a newer drive. This allows for less overhead to be wasted, and since the size of the average write size has grown, there isn&amp;rsquo;t much space savings.&lt;/p&gt;

&lt;p&gt;When a hard drive goes to read some data, it reads it sector by sector. If you have 12KB of data to read, your hard drive has to go find the three different 4KB sectors that the data is stored in. The sector is the smallest unit of space that your hard drive can read or write at a time, and how fast it can find and read a sector is critical to determining the drive&amp;rsquo;s performance.&lt;/p&gt;

&lt;h2 id=&#34;alignment-woes&#34;&gt;Alignment woes&lt;/h2&gt;

&lt;p&gt;One of the fading issues from the storage world is &lt;strong&gt;alignment&lt;/strong&gt;, or rather, misalignment. The problem stems from older operating systems (Windows XP and Server 2003) only being programmed for 512-byte sector sizes. When Windows XP is formatting a drive, it blocks out the first 63 sectors in a row for the &lt;strong&gt;partition offset&lt;/strong&gt;. Unfortunately, 63 is not divisible by 8 (31.5 KB instead of 32 KB), so when Windows XP or Server 2003 starts laying out the partition table, everything is off by 512 bytes.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://us.hardware.info/reviews/4583/4/how-to-copy-hdd-to-ssd-with-correct-4k-alignment-4k-alignment&#34;&gt;&lt;img src=&#34;http://content.hwigroup.net/images/articles/4k-aligned-en.png&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, when Windows tries to read a single NTFS block, because the data is spread across multiple disk sectors, the hard drive has to read both sectors, doing twice the work. If you&amp;rsquo;re doing a large read or write operation, the penalty is N+1 (one extra read or write), while if you&amp;rsquo;re doing a lot of small operations, the penalty can grow to 2X (double the number of reads/writes required). Usually the penalty falls somewhere in the middle. I have typically observed a 30-40% drop in performance on a misaligned system, and as high as the worst-case (2N) with some workloads.&lt;/p&gt;

&lt;p&gt;Misalignment is mostly a thing of the past. Nobody is installing Windows XP or 2003 from scratch, and anything after (and including) Vista or Server 2008 has migrated to a 1MB partition offset (which is easily divided into 4K sectors). If you&amp;rsquo;re not dealing with legacy operating systems, you&amp;rsquo;re probably fine. But, it&amp;rsquo;s still important to know for companies that are migrating from 2003, especially with VMs. To fix your VM, there are tools that can modify the VMDK or VHD file to stuff in some extra zeroes and ones to the front of the file to get everything back into alignment.&lt;/p&gt;

&lt;h2 id=&#34;the-quintessential-input-output-operation&#34;&gt;The quintessential input/output operation&lt;/h2&gt;

&lt;p&gt;You&amp;rsquo;ve probably heard the term &amp;ldquo;IOPS&amp;rdquo; at least once. It means input/output operations per second, but what&amp;rsquo;s an input/output operation anyway? The typical I/O request is a &lt;strong&gt;4K read or write&lt;/strong&gt;. When you&amp;rsquo;re navigating your OS menus, browsing the internet, or working on a file, your computer is doing a ton of 4K read/write operations. Checking permissions, writing cookies and registry values, remembering where you left the position of a particular window. Because 4K is the smallest operation possible, it tends to happen a lot.&lt;/p&gt;

&lt;p&gt;How fast can your hard drive perform a single 4K operation? That&amp;rsquo;s a good question. Hard drive performance is tied very closely to the &lt;strong&gt;seek time&lt;/strong&gt; of that particular drive. The seek time describes how fast your hard drive can find a random spot on the hard drive (any arbitrary 4K block). Let&amp;rsquo;s say you have a reasonable seek time (plus read latency) of 18 milliseconds (ms). That&amp;rsquo;s typical for a Western Digital Black: consumer-grade, but designed for enthusiasts. How many times can your hard drive seek in 1 full second? Well, 1000ms/(18ms/seek) = 55.5 seeks/second. So, if you tell your hard drive to go find 55 random 4K blocks, it will take about a second to pull that off. If you do the math, 55 blocks at 4KB per block is only 220 KB per second, which is just slightly faster than a T1 connection. That&amp;rsquo;s pretty slow when it comes to hard drive speeds! How is this possible?&lt;/p&gt;

&lt;p&gt;Now, that&amp;rsquo;s assuming those blocks are distributed randomly. If all of the blocks are lined up in a row (by &amp;ldquo;in a row&amp;rdquo;, that means physically in a row on the actual platter), the hard drive can read those much faster. Much, much faster. Your average WD Black drive can put out at least 100 MB/s, or even higher at full blast. That&amp;rsquo;s equivalent to 25,000 of those 4K blocks per second, or almost 500 times faster than our last example. Because the seek time is reduced to near-zero, you can get great performance out of your drive. If you&amp;rsquo;re just telling the hard drive &amp;ldquo;go read these 1,000 blocks in a row&amp;rdquo;, that&amp;rsquo;s what&amp;rsquo;s called a &lt;strong&gt;sequential operation&lt;/strong&gt;. If you tell a hard drive &amp;ldquo;go read these 1,000 blocks in random spots on the drive&amp;rdquo;, that&amp;rsquo;s a &lt;strong&gt;random operation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Your hard drive will have very different performance characteristics when it comes down to sequential vs random transfers. That&amp;rsquo;s why it&amp;rsquo;s so important to know your workload&amp;rsquo;s transfer characteristics when sizing your storage. You&amp;rsquo;re never going to see 100% sequential or 100% random operations, so figuring out your mix is crucial. Applications like SQL are notorious for their focus on small block size random IO, while other applications like Exchange (2010 and above) are designed specifically for sequential ops.&lt;/p&gt;

&lt;p&gt;The operating system can request data in larger than 4K sizes. For example, it could ask for a 4MB chunk, which is equivalent to a thousand 4K blocks. Your hard drive doesn&amp;rsquo;t need to seek to each block individually, it can grab the whole 4MB in one sweep (if there&amp;rsquo;s no fragmentation). I/O requests can range from 4K (smallest) to 8MB (largest). If you want to max your IOPS, you go 4K. If you want to max your bandwidth, you go 8MB. 32K is often seen as the &amp;ldquo;sweet spot&amp;rdquo; since most files (Word documents, pictures, etc) are somewhere around that size.&lt;/p&gt;

&lt;p&gt;When someone is talking about IOPS, they&amp;rsquo;re almost always talking 4K performance, but it could be either random or sequential performance. 4K random is the worst case scenario, so you&amp;rsquo;ll see relatively small numbers, but they&amp;rsquo;re accurate as the minimum performance you&amp;rsquo;ll see from the drive. I like dealing with 4K random IOPS numbers, because ensures everyone is on the same page and that I&amp;rsquo;m looking at the worst possible performance. You want to size things for the worst case, not the best cast.&lt;/p&gt;

&lt;h2 id=&#34;how-many-iops&#34;&gt;How many IOPS?&lt;/h2&gt;

&lt;p&gt;Obviously, every hard drive is different, at the tech is advancing quickly. But here&amp;rsquo;s my cheat sheet for IOPS calculations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;SATA drive / 7200 RPM (nearly all consumer drives) &amp;mdash; 50-75 IOPS (&lt;strong&gt;13-20ms&lt;/strong&gt;)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;SAS drive / high-end SATA (Cheetah) / SFF drives 10000 RPM &amp;mdash; 100-125 IOPS (&lt;strong&gt;8-12ms&lt;/strong&gt;)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Enterprise SAS drives / 15000 RPM &amp;mdash; 150-200 IOPS (&lt;strong&gt;5-6ms&lt;/strong&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a note, look at a SAN full of SATA drives. When your minimum disk latency is 13-20ms, and you tack on some network latency, you will never get back to the requesting system in under 20-25ms. That&amp;rsquo;s considered pretty poor performance. Remember that latency plays a part!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;5ms = hearing the crunch of something you stepped on, speed of GOOD local disk&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;10ms = very quick response for a SAN, not much slower than local disk&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;15ms = acceptable&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;20ms = borderline, DBs (SQL) will start underperforming&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;25ms = unacceptable, VMware will get mad&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;30ms+ = users will start to notice their file shares are slow, etc&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Humans can easily notice latency differences of 5ms and lower, so the difference between 10ms and 15ms is recognizable, and the difference between 5ms and 10ms is monumental.&lt;/p&gt;

&lt;p&gt;How many IOPS does something use? Your average desktop user (VDI or physical) is somewhere between 10-20 IOPS. I have run setups of ~100 VM servers on about 2,000 IOPS during the day (20 IOPS/server). Obviously this depends on the workload: a single server can push 2,000 IOPS if it is busy enough (but not commonly).&lt;/p&gt;

&lt;h2 id=&#34;money&#34;&gt;$$$ MONEY $$$&lt;/h2&gt;

&lt;p&gt;If 15k RPM SAS drives are so great, why don&amp;rsquo;t we use them for everything? Because they&amp;rsquo;re really expensive.&lt;/p&gt;

&lt;p&gt;Based on some LIST NUMBERS that are at least a year old now (you should be able to get 60%+ off list EVERY TIME), let me break down some stats for you. The best IOPS/$ (performance per dollar) is a SAS disk, at around 70 IOPS/$1,000 being a common stat. You should expect around 3,500 IOPS out of a 15k RPM system that is priced at $50k. On the low end, SATA drives only offer about 15 IOPS/$1,000. That same $50k system would only furnish 750 IOPS, which is very low. Note that the difference is somewhere around 5X, that is, you get 5X the performance per dollar with faster disk.&lt;/p&gt;

&lt;p&gt;Now, when it comes to GB/$ (storage per dollar), the role is reversed. A system full of 2TB or 3TB drives will give you about 700 GB/$1,000, or 35TB raw for about $50k. A system full of 450 GB SAS drives will yield only 200 GB/$1,000, or only 10TB raw. The slower drives offer a 3X improvement in storage per dollar. Obviously you need to know what you&amp;rsquo;re buying storage for.&lt;/p&gt;

&lt;p&gt;However, there is an often overlooked stat, which is IOPS/GB, which determines how many IOPS you get for every GB of storage. Having 500 TB of storage is pointless if you don&amp;rsquo;t have the IOPS to back up your workload. You need to know the rough IOPS/GB to make sure you&amp;rsquo;re buying the right disk speed AND size. When you have 1-4TB SATA drives available, for example, you need to know which one meets your performance needs AND your storage needs. Buying 10 of the 4TB drives will yield one quarter of the performance of 40 of the 1TB drives, but the same amount of storage.&lt;/p&gt;

&lt;p&gt;As a quick aside, don&amp;rsquo;t buy the bullshit about &amp;ldquo;NL-SAS&amp;rdquo; drives. They&amp;rsquo;re either 7200 RPM or they&amp;rsquo;re not. A 7200 RPM drive, even in a nice NL-SAS wrapper, is still only capable of so many IOPS based on the physical limitations. Definitely don&amp;rsquo;t pay 10k RPM prices for them!&lt;/p&gt;

&lt;p&gt;10k RPM drives tend to be the SFF, small form factor - 2.5&amp;rdquo; instead of 3.5&amp;rdquo;, drives. These are usually only required if they fit the IOPS/GB requirement nicely, or if there&amp;rsquo;s a particular need for the extra density (storage per rack unit) they provide. They also tend to use less power, which could be important in certain environments. You&amp;rsquo;re usually better off just buying more fast drives for storage or more big drives for performance, though.&lt;/p&gt;

&lt;h2 id=&#34;ahci-and-ncq-and&#34;&gt;AHCI and NCQ and&amp;hellip;&lt;/h2&gt;

&lt;p&gt;While I could talk about desktop storage at length, let&amp;rsquo;s keep this focused on enterprise storage. It&amp;rsquo;s par for the course to assume every drive you use will be communicated with via the SCSI protocol with all of the basics like NCQ baked in. These are optimizations that can make the drive performance much faster. NCQ (usually called TCQ with SCSI) allows the drive to queue up a few I/O requests to find the best path across the disks to get all of the blocks, so that it takes the most efficient route instead of zooming about randomly due to a FIFO input queue. Let&amp;rsquo;s assume that everyone is sourcing their disks from the same places (they are) and have the same tech baked in (they do) and that per-disk performance across vendors is roughly equal (it is). Now, there are a lot of things you can do with those disks that are very cool, particularly in regards to free space allocation and fragmentation, but that&amp;rsquo;s a file system discussion.&lt;/p&gt;

&lt;h2 id=&#34;sas-vs-sata-and-controllers&#34;&gt;SAS vs SATA, and controllers&lt;/h2&gt;

&lt;p&gt;What&amp;rsquo;s the difference between a SATA drive and a SAS drive? What are SATA and SAS anyway? Where does SCSI play in?&lt;/p&gt;

&lt;p&gt;SCSI is a protocol for a computer to talk to a hard drive. SCSI is old, but also very good. You want your computer (or SAN) to be able to talk to your disks via SCSI, to get the best performance and most options. SATA is another protocol that does the same thing, but not as well. In general, SCSI&amp;gt;SATA. SAS is the newest form of SCSI. It stands for &lt;strong&gt;serial attached SCSI&lt;/strong&gt;, which can use serial-style physical connectors (SATA connectors, NOT protocol) to connect to SCSI/SAS drives.&lt;/p&gt;

&lt;p&gt;You can plug a SATA drive into a SAS card, but you can&amp;rsquo;t plug a SAS drive into a SATA card. Only the very lowest quality storage solutions will still be using SATA controllers or true SATA drives. Every solution worth buying will be using SAS, and when we talk about &amp;ldquo;SATA drives&amp;rdquo;, those are usually slower 7200 RPM drives that have a SAS controller tacked on (NL-SAS). So, they&amp;rsquo;re capable of talking SAS (thanks to the tacked-on controller) but still have the slower physical characteristics of a SATA drive. Everything is talking SAS/SCSI, typically.&lt;/p&gt;

&lt;p&gt;When we&amp;rsquo;re talking about a &amp;ldquo;SAS drive&amp;rdquo;, what that means is that the drive itself is capable of talking the SAS/SCSI protocol. The big difference advantage of SCSI as a protocol is that the endpoint (drive) has intelligence built-in and can help offload and optimize some of the storage requests. That&amp;rsquo;s why enterprise storage drives are more expensive: they&amp;rsquo;re capable of greater physical speeds (twice the RPM), they have built-in controllers and software (SCSI), and they need to be rated for extremely high durability (MTBF).&lt;/p&gt;

&lt;p&gt;Up until a couple of years ago, the SAS and SATA protocols were both capable of moving up to 3Gbps of data per port. Often, SATA controllers would share that 3Gbps across multiple drives, while SAS controllers could typically provide full bandwidth to each hard drive. Newer versions of both protocols (SAS 3 and SATA 3) can increase that limit to 6Gbps. While only SSDs are capable of even coming close to capping out either of those limits (spinning hard drives still can&amp;rsquo;t cap 3Gbps), these speeds do play an important part in your storage configuration.&lt;/p&gt;

&lt;p&gt;It is common for a shelf of storage (say 24 disks) to be attached to your SAN via a SAS cable. Those 24 disks are now all sharing that same 3Gbps/6Gbps connection to the controller, which means you could be limiting your throughput. What&amp;rsquo;s the point in having 10Gbps or more in network bandwidth to your SAN when your controller can&amp;rsquo;t even access the disk that fast? The solution is to use multiple SAS ports to aggregate your bandwidth, and to use SSDs and other controller caching options to allow for additional data to be served without hitting the disk.&lt;/p&gt;

&lt;p&gt;NetApp, for example, sells the DS4243 shelf and the DS4246 shelf. The shelves are identical in almost every way (both hold 24x 3.5&amp;rdquo; drives), but the DS424&lt;strong&gt;3&lt;/strong&gt; is only connected at 3Gbps while the DS424&lt;strong&gt;6&lt;/strong&gt; is connected at 6Gbps. The first digit (4) refers to the number of rack units (U) the shelf consumes, the second and third digits (24) refer to the number of hard drives it can hold, and the final digit is the speed at which it is connected. So the DS2246 is a 2U shelf that holds 24 disks (2.5&amp;rdquo; SFF) and is connected at 6Gbps.&lt;/p&gt;

&lt;p&gt;There also used to be FC drives, which were attached to your controller via fiber channel (but still talking SCSI the whole time). These are pretty much deprecated now. It was still SCSI commands back and forth, but using FC as a transport. FC could reach speeds of 1Gbps, 2Gbps, or 4Gbps, but had some other limitations. SAS has all but replaced FC-connected disk in the enterprise. FC for targets, however, is still alive and well.&lt;/p&gt;

&lt;h2 id=&#34;questions&#34;&gt;Questions?&lt;/h2&gt;

&lt;p&gt;Let me know if you have any questions or comments on disks, or if there&amp;rsquo;s anything you think I should add. The next article will probably be on file systems/caching/writing, with protocols to follow.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Paired failover</title>
      <link>https://chasechristian.com/blog/2013/09/paired-failover/</link>
      <pubDate>Tue, 24 Sep 2013 06:09:23 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/09/paired-failover/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;When you&amp;rsquo;re designing an infrastructure for a service or application that requires high uptime, you have to plan for certain levels of resiliency and redundancy. There are a lot of considerations that come into play. Every decision is balanced against the cost, the benefit, and the uptime requirements. You have to ensure that you have high availability at every level of your tech stack, so there&amp;rsquo;s no point in buying two firewalls and two switches if your server only has a single NIC. Do you have separate internet connections, from different carriers, coming in over different physical paths? Does each host connect to redundant network fabrics? Are key services like DNS and authentication highly available?&lt;/p&gt;

&lt;p&gt;There are a lot of different models for high availability. For example, Cisco ASA firewalls are typically deployed in an Active/Passive configuration. A trio of Juniper EX switches in a Virtual Chassis are all passing traffic at the same time, with the higher level roles being consolidated to one master device at a time. Each device has its own failover scenarios and requirements. One of the things to avoid when combining all of these different mechanisms is a &lt;strong&gt;paired failover&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A paired failover, at least by my definition, is when one failover occurs, other dependent devices are required to failover as well. A good example would be having two internet connections, with each one plugged into a different firewall. If an internet connection failover had to occur, you would also have to have a firewall failover occur at the same time. The internet connection and the firewall form a paired failover group, where one&amp;rsquo;s failover requires the other to failover too.&lt;/p&gt;

&lt;p&gt;I hated paired failovers. In the ideal network design, each object in a path is redundant, and a failover is transparent to the devices both upstream and downstream of it. There are a few good ways to accomplish this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Single-image systems (think Cisco&amp;rsquo;s VCS or &amp;ldquo;stacking&amp;rdquo; or Juniper&amp;rsquo;s Virtual Chassis)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;LACP and VRRP in both directions (Cisco&amp;rsquo;s VPC handles this well)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Quick failover routing protocol&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Active/Passive failover with state replication (Cisco ASAs fit the bill &amp;ndash; still need LACP for link redundancy)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key feature is that the identity of the device (the IP address or the link) is transparent/virtual and can move between devices. While using a routing protocol to handle failover between devices might fit the bill, it depends on the protocol and the speed of the failover. BGP is great for this, since it can support dual-active scenarios. I also particularly like single-image solutions or configurations where the state information is shared between redundant devices to further minimize the impact of a failure.&lt;/p&gt;

&lt;p&gt;How do you end up with a paired failover? It&amp;rsquo;s an easy trap to fall into.&lt;/p&gt;

&lt;p&gt;Imagine you have two firewalls (lets say Juniper SRX boxes) and a couple of Juniper switches. You obviously want networking redundancy, so you put the switches into a virtual chassis. Done, right? Nope, you still have to make sure everything is properly multihomed. Are your servers capable of LACP or another bonding protocol to the upstream switch? Both of your firewalls will need to connect to both of your switches (4 cables), otherwise a switch failover would also require the firewall to failover at the same time. Every device in the chain needs to have redundant connections to the other devices, in both directions. But what about the internet connections to the SRX boxes? Do you just have a single WAN switch out in front? Are they separate links? How would your IP space failover between the devices? You&amp;rsquo;ll probably want BGP to ensure your IPs can float. But what if your BGP addresses float to the non-active firewall, causing asymmetric routing? As you can see, there are a lot of considerations at play, and you have to be careful to address every possible failure scenario.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Playing Spotify music via Mumble</title>
      <link>https://chasechristian.com/blog/2013/07/playing-spotify-music-via-mumble/</link>
      <pubDate>Thu, 04 Jul 2013 06:49:45 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/07/playing-spotify-music-via-mumble/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;After years of chatting in Mumble while playing games, I wanted a way to provide a soundtrack. I polled my friends and came up with the following criteria:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Collaborative playlist&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Wide selection of music&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;High-quality sound&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Suppressible&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Run from my normal workstation (Win8) alongside my normal copy of Mumble&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After ruling out several options, the solution was clear: Virtual Audio Cable + Fidelify + Mumble portable mode.&lt;/p&gt;

&lt;p&gt;First, you&amp;rsquo;ll probably need to buy &lt;a href=&#34;http://software.muzychenko.net/eng/vac.htm&#34;&gt;Virtual Audio Cable&lt;/a&gt;. It&amp;rsquo;s worth every penny. I originally thought of just injecting a music stream into my microphone via VAC, but then individual listeners couldn&amp;rsquo;t selectively mute just the music without muting me too (suppressible). You end up just creating a single line in VAC (with volume control enabled) that Fidelify outputs to and Mumble listens on.&lt;/p&gt;

&lt;p&gt;Spotify removed all of their options for specifying which audio device to play sound on. &lt;a href=&#34;http://www.fidelify.net/&#34;&gt;Fidelify&lt;/a&gt; is an alternative Spotify client that allows you to specify your audio device. Pick the VAC line you created for your output and you&amp;rsquo;re good to go. I created an Open Playlist on Spotify and shared it with all of my friends, so they can add music to the playlist to suit their tastes.&lt;/p&gt;

&lt;p&gt;Finally, you have to launch Mumble in portable mode. This will ensure that your second copy of Mumble has its own settings and configuration. Create a second Windows account on your PC. Then, run Mumble with the following command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;runas /user:spotify &amp;quot;c:\Program Files (x86)\Mumble\mumble.exe -m -s&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That will launch a second copy of Mumble as the user &amp;ldquo;spotify&amp;rdquo; or whatever you named your second account. On Windows 7, I could just launch this from a shortcut. On Windows 8, I actually have to open up a command prompt and type this in every time. Log in to your server with this Spotify Mumble account, and put your Spotify account into a special protected channel. Link that special channel with your main channel in Mumble to bridge the audio. Set the Spotify Mumble program&amp;rsquo;s Audio Input to your VAC line, and set the Audio Output to something else and set the output volume to zero (so you don&amp;rsquo;t hear everything twice). Set the input transmission type to continuous and adjust the quality until you have good sound and high quality. Remember that this can soak up bandwidth on your Mumble server, if that is a concern.&lt;/p&gt;

&lt;p&gt;Any time I want to globally mute the music, I can either pause Fidelify or simply unlink the channel in Mumble, then relink it when I&amp;rsquo;m done.&lt;/p&gt;

&lt;p&gt;One big issue is skipping songs, which is still a manual process for the Fidelify operator. Fidelify also has been waiting for an update for a couple of years now, and has a few quirks/bugs (like not being very random on random and crashing sometimes).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Squid3 with SSL support, on Ubuntu 13.04</title>
      <link>https://chasechristian.com/blog/2013/06/squid3-with-ssl-support-on-ubuntu-13.04/</link>
      <pubDate>Sun, 16 Jun 2013 05:42:10 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/06/squid3-with-ssl-support-on-ubuntu-13.04/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;A few years ago, I spent many hours getting Squid with SSL working on Ubuntu 10.10. The core issue is that the Ubuntu-provided binary for Squid does not include SSL support. Thus, you have to compile Squid yourself, from source. Unfortunately, it&amp;rsquo;s not as simple as you might think, due to a lot of inconsistent information and errors that you&amp;rsquo;ll run into. I set up Squid on my Linode VPS, to act as a transparent proxy, to allow me to get my web traffic past firewall filters and other proxies. I also wanted all of the data in transit to be encrypted, which is done via SSL. Chrome would redirect all of my web traffic to Squid via an encrypted SSL tunnel, and Squid would go out to the internet and fetch my pages for me. I had everything working great for a long time.&lt;/p&gt;

&lt;p&gt;I thought I was still good to go, until a recent update of a seemingly unrelated module caused my Squid authentication mechanism, ncsa, to start segfaulting any time I tried to log in. This is the story of how I got Squid3 working again, via a rebuild.&lt;/p&gt;

&lt;h2 id=&#34;download-the-newest-source-code&#34;&gt;Download the newest source code&lt;/h2&gt;

&lt;p&gt;My first mistake was trying to use the source code provided by Ubuntu, via &amp;ldquo;apt-get source squid3&amp;rdquo;. The version of Squid3 that is provided by Ubuntu didn&amp;rsquo;t have the ncsa fix in it, so I spent a lot of time compiling source for absolutely nothing.&lt;/p&gt;

&lt;p&gt;Head straight to &lt;a href=&#34;http://www.squid-cache.org/&#34;&gt;the official Squid website&lt;/a&gt; and &lt;a href=&#34;http://www.squid-cache.org/Versions/v3/3.3/&#34;&gt;grab the latest release build&lt;/a&gt; (3.3.5 in my case) and download the tar.gz file via wget.&lt;/p&gt;

&lt;h2 id=&#34;no-debian-rules-file&#34;&gt;No debian/rules file?&lt;/h2&gt;

&lt;p&gt;Because the Squid source code directly from their site doesn&amp;rsquo;t have the nice debian/rules file built-in, you have to pass all of the variables to the &lt;em&gt;configure&lt;/em&gt; script. I took bits from &lt;a href=&#34;http://wiki.squid-cache.org/SquidFaq/CompilingSquid&#34;&gt;the Squid compiling guide&lt;/a&gt; and other sources. Here&amp;rsquo;s what my final command looked like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;./configure --prefix=/usr --localstatedir=/var --libexecdir=${prefix}/lib/squid3 --srcdir=. --datadir=${prefix}/share/squid3 --sysconfdir=/etc/squid3 --with-default-user=proxy --with-logdir=/var/log --with-pidfile=/var/run/squid3.pid --enable-inline --enable-async-io=8 --enable-storeio=&amp;quot;ufs,aufs,diskd&amp;quot; --enable-removal-policies=&amp;quot;lru,heap&amp;quot; --enable-delay-pools --enable-cache-digests --enable-underscores --enable-icap-client --enable-follow-x-forwarded-for --enable-basic-auth-helpers=&amp;quot;LDAP,MSNT,NCSA,PAM,SASL,SMB,YP,DB,POP3,getpwnam,squid_radius_auth,multi-domain-NTLM&amp;quot; --enable-ntlm-auth-helpers=&amp;quot;smb_lm,&amp;quot; --enable-digest-auth-helpers=&amp;quot;ldap,password&amp;quot; --enable-negotiate-auth-helpers=&amp;quot;squid_kerb_auth&amp;quot; --enable-external-acl-helpers=&amp;quot;ip_user,ldap_group,session,unix_group,wbinfo_group&amp;quot; --enable-arp-acl --enable-esi **--enable-ssl** --enable-zph-qos --enable-wccpv2 --disable-translation --with-logdir=/var/log/squid3 --with-filedescriptors=65536 --with-large-files --with-default-user=proxy
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So, that&amp;rsquo;s quite the long string. It pulls the Ubuntu/Debian defaults from the Squid page, then adds in several of the parameters that are in the debian/rules file that Ubuntu provides when you download the source straight from their PPA. It also includes the essential &lt;em&gt;&amp;ndash;enable-ssl&lt;/em&gt; flag, which is what gives Squid the capabilities to do SSL.&lt;/p&gt;

&lt;h2 id=&#34;configure-make-all-make-install&#34;&gt;Configure/Make All/Make Install&lt;/h2&gt;

&lt;p&gt;Just follow along with the basic Squid compiling instructions and you&amp;rsquo;ll be fine. You&amp;rsquo;ll have to build your own service or /etc/init.d/ files for controlling squid, and you&amp;rsquo;ll also need to set it up to start at system boot. I&amp;rsquo;ll leave the /etc/squid/squid.conf settings for another day, they&amp;rsquo;re pretty simple. Look for &amp;ldquo;https_port&amp;rdquo; and &amp;ldquo;ncsa_users&amp;rdquo; to find some of the common guides.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Your network must be unimpeachable</title>
      <link>https://chasechristian.com/blog/2013/05/your-network-must-be-unimpeachable/</link>
      <pubDate>Mon, 13 May 2013 07:28:39 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/05/your-network-must-be-unimpeachable/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;When someone asks me for advice on computer parts, I tell them that there&amp;rsquo;s two components that you can&amp;rsquo;t afford to skimp on: power supply and motherboard. If you buy an off-brand video card, it will be pretty easy to figure out if it is causing any problems. If your hard drive dies, which all hard drives will, you&amp;rsquo;ll know immediately. The same isn&amp;rsquo;t true of a PSU or mobo. If one of them is being flaky, they can cause all sorts of issues that are tough and expensive to troubleshoot.  They&amp;rsquo;re central components that everything else in the computer rely upon.&lt;/p&gt;

&lt;p&gt;I feel the same way about networks. Everything in IT relies on the network. End-users connect to their applications over the corporate LAN, servers connect to their SANs via storage networks, and customers connect to web services via the WAN. If you are uncertain about your network&amp;rsquo;s stability, doubt will creep into your mind every time there&amp;rsquo;s a minor issue. You&amp;rsquo;ll start spending your time chasing network ghosts instead of focusing on building and maintaining your infrastructure. The network is the heart of your environment, and buying cheap equipment or running with a bad configuration can undermine its capabilities. Your network must be unimpeachable.&lt;/p&gt;

&lt;p&gt;Nobody has an infinite budget, and networking is seen as &amp;ldquo;just a bunch of ports&amp;rdquo; instead of the core service that every devices relies upon. Networking is so crucial that it&amp;rsquo;s often taken for granted, as everyone assumes that it&amp;rsquo;s already in place, which makes it hard to see the value that it provides. Why would you spend thousands of dollars on expensive Juniper or Cisco equipment when you could spend hundreds of dollars on a Netgear or Linksys with all of the same features? The value of an enterprise-grade switch isn&amp;rsquo;t purely that it checks all of the important feature boxes, but rather that those features work in a consistent, dependable, and repeatable way.&lt;/p&gt;

&lt;p&gt;A Netgear switch might say that it supports LACP and LAG groups, but you&amp;rsquo;ll find yourself wondering whether it really supports dynamic LACP and what your selection of traffic hashing algorithms will look like and if it will interconnect with your existing network gracefully and so on. When you buy an enterprise-grade switch, you know that it&amp;rsquo; s going to pass all of the traffic you can throw at it, that it will have the logging and monitoring required to detect issues proactively, and that you won&amp;rsquo;t have to worry about half-implemented features or compatibility.&lt;/p&gt;

&lt;p&gt;When it&amp;rsquo;s 4:30pm on a Friday and you get the call that your VoIP phones are down, do you really want to be wondering whether your trunk port forgot its VLANs again or whether a cheap switch got into a weird state and needs a reboot?&lt;/p&gt;

&lt;p&gt;If networking is the heart of an infrastructure, then routers and firewalls are the heart of networking. When a SonicWall or Watchguard claims to have feature-parity with a Juniper or Palo Alto for a quarter the price, how could any rational decision-maker go with the more expensive options? The manufacturers of the second-tier networking gear do everything in their power to make the products appear capable and competitive. It&amp;rsquo;s not until you&amp;rsquo;re hours deep in troubleshooting a web app that randomly disconnects or a adjusting a VPN that just won&amp;rsquo;t negotiate or trying to build a NAT rule that the box can&amp;rsquo;t do that you realize that feature parity on paper is much easier to achieve than feature parity in practice.&lt;/p&gt;

&lt;p&gt;I have a VPS through Linode (which is currently serving this post to you) that runs in a data center in Fremont. When I&amp;rsquo;m neck-deep in code and web server configuration, I don&amp;rsquo;t want to wonder if it&amp;rsquo;s the network that&amp;rsquo;s causing my site to have issues. I don&amp;rsquo;t want to wonder if a router is silently dropping every 15th packet, I don&amp;rsquo;t want to wonder if an over-aggressive ACL is rejecting my SYN-ACK packets, and I don&amp;rsquo;t want to wonder if maybe there&amp;rsquo;s a duplex mismatch issue somewhere that&amp;rsquo;s causing slowness. The network needs to work, or else I&amp;rsquo;m always going to be suspicious that it&amp;rsquo;s failing me in some way. A simple issue now requires digging into switch logs and doing packet captures. I love running Wireshark as much as the next guy and I&amp;rsquo;ve got my gigabit port-mirroring device for grabbing captures, but I&amp;rsquo;d much rather solve application issues without worrying that the pipe somewhere down the line is messing something up.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>802.1Q trunking between network vendors</title>
      <link>https://chasechristian.com/blog/2013/04/802.1q-trunking-between-network-vendors/</link>
      <pubDate>Sun, 14 Apr 2013 06:15:49 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/04/802.1q-trunking-between-network-vendors/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;When you&amp;rsquo;re going to link two switches from different vendors together, you have to make sure that your VLAN mappings match up on both sides. Unfortunately, each switching vendor does things their own way, so you might have to adjust your configuration to get everything working properly.&lt;/p&gt;

&lt;p&gt;I am going to focus on discussing trunking between switches. At the most basic level, this is just a cable running between two switches. What&amp;rsquo;s important is the configuration of the interfaces.&lt;/p&gt;

&lt;h2 id=&#34;native-vlan&#34;&gt;Native VLAN&lt;/h2&gt;

&lt;p&gt;Every switch port has a native or default VLAN&lt;label class=&#34;margin-toggle sn-number&#34; for=&#34;01&#34;&gt;
  &lt;input class=&#34;margin-toggle&#34; id=&#34;01&#34; type=&#34;checkbox&#34; /&gt;
    &lt;span class=&#34;sn&#34;&gt;Technically, Juniper lets you remove the native VLAN if you like, and just passes untagged control packets (but not untagged data packets) to the CPU. You have to manually specify a native VLAN on the interface if trunking to Cisco, etc. Of note: you exclude the native-vlan from the &lt;code&gt;members&lt;/code&gt; list on that interface. Thanks Jeff!
    &lt;/span&gt;
&lt;/label&gt;
. Cisco calls this the native VLAN, others call it the default VLAN, Extreme Networks refers to it as the untagged VLAN, etc. The key is that this VLAN represents all of the traffic on the switch that doesn&amp;rsquo;t have an 802.1Q tag on it. You might make the assumption that you could plug a Cisco port with a native VLAN of 10 into an Extreme port with an untagged VLAN of 20 and that would bridge both networks together, without either switch knowing that there was a mismatch. Unfortunately, higher-level STP protocols will actually catch the mismatch and shut the port down unless you specifically tell STP to ignore the error. So, native VLANs should be match where possible. Because of this, I don&amp;rsquo;t recommend ever using a switch&amp;rsquo;s default VLAN, but rather resetting your &amp;ldquo;default&amp;rdquo; VLAN to 10 or 20 or something to ensure compatibility later on. Alternatively, you can create a new &amp;ldquo;native-only&amp;rdquo; VLAN that specifically serves as the native VLAN for trunk negotiation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cisco &lt;/strong&gt;calls it the native VLAN, and the default VLAN ID is 1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Juniper&lt;/strong&gt; calls it the default VLAN, and the default VLAN ID is 0.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extreme &lt;/strong&gt;calls it the untagged VLAN, and the default VLAN ID is 1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HP &lt;/strong&gt;calls it the untagged VLAN, and the default VLAN ID is 1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dell &lt;/strong&gt;is weird. They call it the untagged VLAN or the PVID, and the default VLAN ID is 1. On a PowerConnect interface in &amp;ldquo;trunk&amp;rdquo; mode, VLAN 1 is tagged! You have to set the interface mode to &amp;ldquo;general&amp;rdquo; and then mark VLAN 1 as untagged.&lt;/p&gt;

&lt;p&gt;In general, your native VLAN needs to match on both sides. Even if you plan on trunking everything other VLAN, switches often won&amp;rsquo;t negotiate a link without a matching native VLAN. Sometimes it will work, sometimes it won&amp;rsquo;t. Don&amp;rsquo;t leave it up to chance.&lt;/p&gt;

&lt;h2 id=&#34;trunking&#34;&gt;Trunking&lt;/h2&gt;

&lt;p&gt;When you configure a trunk in Cisco, it essentially adds every VLAN to that interface as tagged VLANs. If you want to connect two Cisco together, you can just set both interfaces as trunks and plug a cable in. However, most of the time we want to control which VLANs are being passed between the switches. We should always use 802.1Q for our trunk encapsulation, since it&amp;rsquo;s universally supported.&lt;/p&gt;

&lt;p&gt;Note that many vendors use the word &amp;ldquo;trunk&amp;rdquo; to describe a set of aggregated interfaces (like LACP or etherchannel), which can confuse things.&lt;/p&gt;

&lt;p&gt;In the VLAN-centric world, you configure your desired VLANs as &lt;strong&gt;tagged&lt;/strong&gt; so that they&amp;rsquo;ll be passed between the switches over a single link. Here&amp;rsquo;s an example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;configure vlan native add port 5 untagged
configure vlan voice add port 5 tagged
configure vlan storage add port 5 tagged
configure vlan data add port 5 tagged
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In the interface-centric world, you configured the &lt;strong&gt;allowed &lt;/strong&gt;VLANs that can cross the link. Don&amp;rsquo;t forget to include your designated native VLAN in your list of allowed VLANs! Here&amp;rsquo;s an example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;interface gi-0/5
switchport trunk allowed vlan add 1,5,12-13
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You need to make sure that your VLAN IDs match up on both sides, as if a switch sees a packet with an 802.1Q tag that it doesn&amp;rsquo;t recognize or have on the allowed list, the packet will be dropped.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Interface-centric vs VLAN-centric configuration</title>
      <link>https://chasechristian.com/blog/2013/04/interface-centric-vs-vlan-centric-configuration/</link>
      <pubDate>Sun, 14 Apr 2013 05:33:06 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/04/interface-centric-vs-vlan-centric-configuration/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;In the world of network switches, it&amp;rsquo;s hard to escape the shadow of Cisco. Cisco owns roughly 70% of the switching market, with something like 80% of installed switches and over 60% of all new switch sales. Cisco engineers are plentiful, and the CCNA/CCNP/CCIE certifications are considered some of the best in the industry. Because of how much momentum Cisco has behind them, it forces other vendors to emulate their product in order to emulate their success.&lt;/p&gt;

&lt;p&gt;There are two basic approaches to configuring VLANs: interface-centric and VLAN-centric. Cisco switches are all interface-centric, which means that most of the industry follows suit. However, there are a few manufacturers out there that believe VLAN-centric configuration is the better solution.&lt;/p&gt;

&lt;h2 id=&#34;interface-centric-config&#34;&gt;Interface-centric config&lt;/h2&gt;

&lt;p&gt;I&amp;rsquo;ll start by talking about the incumbent. Interface-centric VLANs all revolve around the individual interfaces. Let&amp;rsquo;s talk about a hypothetical voice/VoIP VLAN, named &amp;ldquo;&lt;strong&gt;voice&lt;/strong&gt;&amp;rdquo; and with the &lt;strong&gt;VLAN ID (tag) 225&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In an interface-centric world, &lt;strong&gt;you add the VLAN to each interface&lt;/strong&gt;. Here&amp;rsquo;s an example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;interface gi1/5
switchport access vlan 225
exit

interface gi1/6
switchport trunk allowed vlan add 225
exit
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you created a new voice VLAN on an edge switch and wanted to enable users to plug their phones into any port, you would have to configure each and every port on the switch. You can typically edit multiple interfaces (or an interface range) at once to make the job easier. The VLAN membership is contained in the configuration of each interface. Your worst case scenario is creating a new VLAN and being forced to add that VLAN to each port individually. If you can configure your multiple interfaces at once, this isn&amp;rsquo;t so bad.&lt;/p&gt;

&lt;h2 id=&#34;vlan-centric-config&#34;&gt;VLAN-centric config&lt;/h2&gt;

&lt;p&gt;In a VLAN-centric configuration paradigm, all VLAN membership configuration is done at the VLAN level, not at the interface level. &lt;strong&gt;You add each interface to the VLAN&lt;/strong&gt;. Let&amp;rsquo;s go back to our old &lt;strong&gt;voice&lt;/strong&gt; VLAN example.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;create vlan voice
configure vlan voice add ports gi1/5 untagged
configure vlan voice add ports gi1/6 tagged
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;As you can see, you&amp;rsquo;re not going into each interface&amp;rsquo;s configuration to set the VLAN. This make it very easy to run a command like &amp;ldquo;&lt;em&gt;show vlan&lt;/em&gt;&amp;rdquo; to show you all of the member ports in a particular VLAN. If you make a new VLAN, you can add all of the switch&amp;rsquo;s ports to the VLAN with one command. Your worst case scenario is adding multiple VLANs to the same interface, because you would have to go into each VLAN individually, rather than just adding all of the VLANs at once to the interface. There&amp;rsquo;s not really any good ways to mitigate this. Extreme Networks and HP are the only pure VLAN-centric switching manufacturers I&amp;rsquo;ve worked with.&lt;/p&gt;

&lt;h2 id=&#34;junos&#34;&gt;Junos&lt;/h2&gt;

&lt;p&gt;Juniper&amp;rsquo;s Junos does things a bit differently, and actually allows you to configure your VLANs either way. You can focus on an interface-centric configuration if your network engineers work with Cisco gear, or you can switch to a VLAN-centric design if you have a bunch of ex-Extreme Networks engineers working for you. The key is to be very careful to avoid overlapping both approaches on the same switch, which can have unintended results. Pick one design or the other and stick with it. I have heard that Juniper recommends configuring the untagged/access ports as VLAN-centric, and the tagged VLANs under each interface.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The guide to fiber</title>
      <link>https://chasechristian.com/blog/2013/04/the-guide-to-fiber/</link>
      <pubDate>Sat, 13 Apr 2013 00:52:45 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/04/the-guide-to-fiber/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;There are a lot of names and acronyms that get thrown around when it comes to fiber, so I thought I would sum up what I know on the topic. I will mention that I have had no formal fiber/optical training, this is just what I&amp;rsquo;ve picked up in the field. I&amp;rsquo;m not an expert here by any means!!&lt;/p&gt;

&lt;p&gt;Edit 07/15/2015 - RAS did a great talk on &lt;a href=&#34;https://www.nanog.org/meetings/nanog48/presentations/Sunday/RAS_opticalnet_N48.pdf&#34;&gt;optical networking&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Edit 03/02/2017 - Svein gave me some tips and corrections. Thanks!&lt;/p&gt;

&lt;p&gt;First: why use fiber? Because copper cables (CAT5/6 etc) can only carry data 300ft. That’s not very far. Fiber can go for miles.&lt;/p&gt;

&lt;h2 id=&#34;fiber&#34;&gt;Fiber&lt;/h2&gt;

&lt;p&gt;There are two types of fiber: &lt;strong&gt;single-mode (SM)&lt;/strong&gt; and &lt;strong&gt;multi-mode (MM)&lt;/strong&gt;. Generally speaking, single-mode is goes further, but is more expensive.&lt;/p&gt;

&lt;p&gt;Single-mode goes further (especially at high speeds), while multi-mode goes shorter (REALLY short at high speeds). Of course, single-mode is much more expensive than multi-mode.&lt;/p&gt;

&lt;p&gt;Also: while you shouldn’t look directly into EITHER type of fiber (shine it onto your palm or a piece of paper), looking into single-mode fiber will probably blind you AND it won’t show any light since it’s way too small to see. Also, NEVER TOUCH THE END OF A FIBER CABLE. Your oils/dirt can damage the contact and can ruin the cable.&lt;/p&gt;

&lt;p&gt;Need to test a multi-mode fiber cable? Shine a flashlight down one end (colored flashlights or LEDs are perfect) and put your hand/paper in front of the other end and see if you see the tiny spot of color. There are also IR detector cards that you can shine the light onto.&lt;/p&gt;

&lt;p&gt;Fiber is very tiny strands of glass-like filaments. You CAN break them if you bend the cable too far. DON’T snap your fiber cable, and throw it away immediately if you think you broke it. Don’t step on it, wind it too tight, etc. Be careful if you break or cut fiber, as the filaments are like very nasty splinters. Wash your hands!&lt;/p&gt;

&lt;p&gt;Physically, the difference comes down to the size of the fiber core.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Single-mode fiber&lt;/em&gt; is typically &lt;strong&gt;8.3 µm to 10 µm&lt;/strong&gt; (micrometer or micron) in diameter, where 9 µm is the ideal. This is very small.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Single-mode can carry data at 10Gbps up to 50 miles with commercial equipment&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Single-mode can carry data at 1Gbps a very, very long way&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Single-mode fiber doesn’t have any different “qualities” or “sizes” - SMF is SMF is SMF&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Multi-mode fiber&lt;/em&gt; is typically &lt;strong&gt;between 50 to 62.5 µm&lt;/strong&gt; in diameter. This is not as small. The smaller (50 vs 62.5), the better.&lt;/p&gt;

&lt;p&gt;Here’s a table I’m stealing from Wikipedia:
&lt;table cellpadding=&#34;0&#34; cellspacing=&#34;0&#34; border=&#34;0&#34; &gt;
&lt;tbody &gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;th width=&#34;125&#34; &gt;Fiber Quality
&lt;/th&gt;&lt;/p&gt;

&lt;p&gt;&lt;th &gt;1 Gb
&lt;/th&gt;&lt;/p&gt;

&lt;p&gt;&lt;th &gt;10 Gb
&lt;/th&gt;&lt;/p&gt;

&lt;p&gt;&lt;th &gt;40 Gb
&lt;/th&gt;&lt;/p&gt;

&lt;p&gt;&lt;th &gt;100 Gb
&lt;/th&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;OM1 (62.5/125)
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;275m (SX)
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;33m (SR)
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Not supported
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Not supported
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;OM2 (50/125)
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;550m (SX)
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;82m (SR)
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Not supported
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;Not supported
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;OM3 (50/125)
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;550m (SX)
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;300m (SR)
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;100m
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;100m
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;&lt;/p&gt;

&lt;p&gt;&lt;td  &gt;OM4 (50/125)
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;1000m (SX)
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;550m (SR)
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;150m
&lt;/td&gt;&lt;/p&gt;

&lt;p&gt;&lt;td &gt;150m
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The old “military-grade” multi-mode (50 µm) is just as good as the laser multi-mode, EXCEPT at 10+Gbps speeds&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Old multi-mode (62.5 µm) can carry 1Gbps about 275 meters or 10Gbps about 33 meters - fine for racks&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Multi-mode comes in 4 flavors: OM1 (62.5 µm), OM2 (50 µm), OM3 (50 µm laser), and OM4 (50 µm laser-enhanced)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The second number (125) is the size of the cladding around the fiber, ignore this.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, because single-mode fiber is more expensive, it tends to only be used in situations where the distance travelled is too far for multi-mode. One common way it’s phrased: “multi-mode inside the building, single-mode between the buildings”.&lt;/p&gt;

&lt;p&gt;The reason that OM3 and OM4 are “laser” is because they’re compatible with laser optics (40/100 Gbps), as opposed to the LED-only optics of OM1 and OM2. The laser optics are way better, as you’ll see later.&lt;/p&gt;

&lt;p&gt;In order to make the single-mode and multi-mode fiber easily distinguishable, there is a color code:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/04/yellow.png&#34;&gt;&lt;img src=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/yellow.png&#34; alt=&#34;yellow&#34; /&gt;&lt;/a&gt;
yellow = single-mode&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/04/orange.png&#34;&gt;&lt;img src=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/orange.png&#34; alt=&#34;orange&#34; /&gt;&lt;/a&gt;
orange = multi-mode&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/04/blue.png&#34;&gt;&lt;img src=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/blue.png&#34; alt=&#34;blue&#34; /&gt;&lt;/a&gt;
aqua = laser/laser-enhanced multi-mode&lt;/p&gt;

&lt;p&gt;The key to understand is that these are not only physically different CABLES, but also different SIGNALS. With copper networking, you can use a CAT5 or a CAT6 or a CAT7 cable with the same NIC. With fiber networking, &lt;strong&gt;ALL PIECES HAVE TO MATCH&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you want to do single-mode fiber, you have to have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Single-mode fiber all the way&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Single-mode optics of the same quality on both sides&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to do multi-mode fiber, you have to have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Multi-mode fiber of the same quality/size all the way&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Multi-mode optics of the same quality on both sides&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no mixing/matching.&lt;/p&gt;

&lt;h2 id=&#34;optics&#34;&gt;Optics&lt;/h2&gt;

&lt;p&gt;Now, we know all about the fiber cables themselves. Optics are the ports on your switch/device where you plug in the fiber cables. More powerful optics = faster/longer distances. You have to match your optics on both sides (of course). You also have to get the right optics for your fiber type.&lt;/p&gt;

&lt;p&gt;Note that the multi-mode optics don’t ever have a designated cable size that they work with. The same SX optic will work with OM1/OM2/OM3/OM4 cable just fine. The only exception is the newer laser multi-mode optics, which only work with OM3/OM4, as listed above.&lt;/p&gt;

&lt;p&gt;These ports are often described based on their SIZE.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/04/gbic.png&#34;&gt;&lt;img src=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/gbic.png&#34; alt=&#34;gbic&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/GBIC&#34;&gt;GBIC&lt;/a&gt; - Gigabit interface converter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are the really big ports. We don’t run into these anymore, and they only run 1Gbps.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/04/sfp.png&#34;&gt;&lt;img src=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/sfp.png&#34; alt=&#34;sfp&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Small_form-factor_pluggable_transceiver&#34;&gt;SFP&lt;/a&gt; - Small Form-factor Pluggable Transceiver&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are pretty common. Again, they only go to 1Gbps. Commonly (and mistakenly) referred to as “mini-GBIC”.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;For multi-mode fiber, you use an &lt;strong&gt;SX optic&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;For single-mode fiber, you use an &lt;strong&gt;LX or EX optic&lt;/strong&gt; for 1310nm, or &lt;strong&gt;ZX or EZX optic&lt;/strong&gt; for 1550nm. I haven’t seen any other options.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, if you see an “SX” optic, you know immediately it’s a multi-mode optic in the SFP form factor with 1Gbps capabilities.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/04/xfp.jpg&#34;&gt;&lt;img src=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/xfp.jpg&#34; alt=&#34;xfp&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/XFP&#34;&gt;XFP&lt;/a&gt; - 10 Gigabit Small Form Factor Pluggable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The “X” is for 10, as in 10Gbps&lt;/p&gt;

&lt;p&gt;This is the old 10Gbps standard, don’t see it in any new deployments, really was only used for a little while to replace XENPACK (the GBIC of 10Gbps)&lt;/p&gt;

&lt;p&gt;Sort of like HD-DVD… it lost the war. SFP+ ports are smaller and consume less power, so SFP+ has taken over as the standard.&lt;/p&gt;

&lt;p&gt;Doesn’t fit into an SFP/SFP+ port and isn’t backwards-compatible at all&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SFP+ - enhanced small form-factor pluggable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are the new 10Gbps options for SFP-sized slots. They look the same as SFP! They go to 10Gbps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;For multi-mode fiber, you use an &lt;strong&gt;SR optic.&lt;/strong&gt; (SR is commonly called “short reach”)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;For single-mode fiber, you use an &lt;strong&gt;LR optic.&lt;/strong&gt; (LR is commonly called “long reach”)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;For single-mode fiber at LONG range, you would use an &lt;strong&gt;ER optic&lt;/strong&gt;, which is the extra-long distance (or “extended reach”).&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;SFP+ slots are almost always backwards-compatible with SFP modules&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&#34;https://chasechristian.com/img/qsfp.jpg&#34;&gt;&lt;img src=&#34;https://chasechristian.com/img/qsfp.jpg&#34; alt=&#34;qsfp&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;QSFP+ - quad small form-factor pluggable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are used for 40Gbps speeds, are are NOT the same size as SFP/SFP+. You will need special ports on your switch for QSFP+. These can also often be broken out into multiple SFP+ connections, with a breakout cable. This gives you 4 different connections with only one physical switch port, at the cost of some cabling mess. The different optic types are also called &lt;strong&gt;SR4&lt;/strong&gt;, &lt;strong&gt;LR4&lt;/strong&gt;, and &lt;strong&gt;ER4&lt;/strong&gt;, similar to the SFP+ naming.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-mode:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SX - SFP - 1Gbps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SR - SFP+ - 10Gbps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SR4 - QSFP+ - 40Gbps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single-mode:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LX - SFP - 1Gbps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EX - SFP - 1Gbps long-range&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LR - SFP+ - 10Gbps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ER - SFP+ - 10Gbps long-range&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ZR - SFP+ - 10Gbps ultra-long-range (80km rated)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LR4 - QSFP+ - 40Gbps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ER4 - QSFP+ - 40Gbps long-range&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&#34;connectors&#34;&gt;Connectors&lt;/h2&gt;

&lt;p&gt;&lt;a href=&#34;https://chasechristian.com/img/bfoc.jpg&#34;&gt;&lt;img src=&#34;https://chasechristian.com/img/bfoc.jpg&#34; alt=&#34;st&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ST - “Stick and Twist” - also called BFOC&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the “old school” style and is used on about 50% of patch panels that I run into.  Almost exclusively used for patch panels, never for switch/device. You have to twist and push the cable to lock/unlock it, which always makes it a huge pain.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/fc.png&#34;&gt;&lt;img src=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/fc.png&#34; alt=&#34;fc&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FC - “fiber connector”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My friend Marshall says he’s seen this but I rarely see these in the field.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt; &lt;a href=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/lc.png&#34;&gt;&lt;img src=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/lc.png&#34; alt=&#34;lc&#34; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LC - “small connector”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The real name for this connector is Lucent Connector, but that&amp;rsquo;s not what I call it. The joke is that LC = Small while SC = Large.&lt;/p&gt;

&lt;p&gt;It’s backwards… but if you can remember that, you’re golden.&lt;/p&gt;

&lt;p&gt;LC is the most typical cable that switches/devices use. So your device/switch is almost always LC.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt; &lt;a href=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/sc.png&#34;&gt;&lt;img src=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/sc.png&#34; alt=&#34;sc&#34; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SC - “large connector”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The real name for this connector is Subscriber Connector. This is the replacement for the ST-type connector. This is usually what you’ll see on your patch panels or drops.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/panel.png&#34;&gt;&lt;img src=&#34;https://www.chasechristian.com/wp-content/uploads/2013/04/panel.png&#34; alt=&#34;panel&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, for cabling from a fiber patch panel to a switch, you need an SC-LC cable. From switch to switch, you want an LC-LC cable. From switch to server, you want an LC-LC cable. There are always exceptions, but these are the standards.&lt;/p&gt;

&lt;p&gt;These connectors are used for BOTH multi-mode and single-mode fiber of all types/qualities. So the connectors don’t tell you ANYTHING!!!  What matters is the fiber inside.&lt;/p&gt;

&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;10Gbps&lt;/strong&gt; - We wanted to do 10Gbps backbone cabling for a client. They had distances of over 300 meters for some runs. What fiber cable would we use?&lt;/p&gt;

&lt;p&gt;Because the distances were 300+ meters and the new OM4 multi-mode fiber wasn’t out yet, we had to go with &lt;strong&gt;single-mode fiber&lt;/strong&gt;. We had their fiber guy run SM fiber in the building. What optics would we use?&lt;/p&gt;

&lt;p&gt;Because we needed 10Gbps speed and single-mode capabilities, we used &lt;strong&gt;LR optics&lt;/strong&gt;, which came in the SFP+ form factor. What connectors would we need?&lt;/p&gt;

&lt;p&gt;Because we were going switch-to-patch panel, we used &lt;strong&gt;LC-SC&lt;/strong&gt; (or &lt;strong&gt;LC-ST&lt;/strong&gt; if using different patch panels) connectors.&lt;/p&gt;

&lt;p&gt;Solution: &lt;strong&gt;SM fiber + LR optics + LC-SC connectors&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1Gbps&lt;/strong&gt; - You want to set up 1Gbps cabling for your IDF switches. Your max distance is 350 meters. What fiber cable would you use?&lt;/p&gt;

&lt;p&gt;Because we need to get to 350 meters, OM1 multi-mode won’t reach. We would use &lt;strong&gt;OM2 multi-mode&lt;/strong&gt;, since it’s the cheapest and reaches 550 meters at 1Gbps speeds. What optics would we use?&lt;/p&gt;

&lt;p&gt;Because we are using multi-mode cabling and only need 1Gbps speed, we would use &lt;strong&gt;SX optics&lt;/strong&gt; which come in the regular SFP form factor. They’re cheap and do 1Gbps over multi-mode. What connectors would we need?&lt;/p&gt;

&lt;p&gt;Because we’re going switch-to-patch panel or switch-to-switch, we’ll need either &lt;strong&gt;LC-SC&lt;/strong&gt; connectors or &lt;strong&gt;LC-LC&lt;/strong&gt; connectors, depending on how it’s cabled.&lt;/p&gt;

&lt;p&gt;Solution: &lt;strong&gt;MM fiber (OM2) + SX optics + LC-LC connectors&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>HP Moonshot - low power, nothing else</title>
      <link>https://chasechristian.com/blog/2013/04/hp-moonshot-low-power-nothing-else/</link>
      <pubDate>Wed, 10 Apr 2013 06:02:40 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/04/hp-moonshot-low-power-nothing-else/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/04/moonshot.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/04/moonshot.png&#34; alt=&#34;moonshot&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA4-6076ENW&amp;amp;cc=us&amp;amp;lc=en&#34;&gt;Here’s the pitch&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;It’s a vertical-mounted blade chassis that&amp;rsquo;s loaded with low-end blades.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;45 blades per enclosure&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;1 CPU (Atom - these are awful) and 8GB of RAM (single stick) per blade&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;1 hard drive per blade – SATA or SSD&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;2x 1Gb ports per blade&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;4.3U per enclosure&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;45 blades per 4.3U or 10.5 blades per U, which means ~11 proc and 88 GB of RAM per U&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Low density compared to a c3000/7000 or DL360s&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;10Gb uplinks from enclosure&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Only requires 2x 1200W (redundant) PSUs, which is less than the 4-6x 1200W PSUs that are commonly needed for a c3000 chassis with 8 blades.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Moonshot is a POWER PLAY (no hockey pun intended) - HP says 89% less power.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Did I mention no support for Windows? Only officially supports Linux distros at this time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My guess is that this box is aimed squarely at companies like GoDaddy and Rackspace, where they’re carving out virtual instances for clients and they want to cut datacenter power utilization as much as possible. I wouldn&amp;rsquo;t want to be the guy buying 45 VMware licenses. Unless your workload can easily be sharded onto a lot of servers, this design probably isn&amp;rsquo;t for you.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>My backpack (with bonus car trunk action)</title>
      <link>https://chasechristian.com/blog/2013/03/my-backpack-with-bonus-car-trunk-action/</link>
      <pubDate>Sat, 30 Mar 2013 05:11:41 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/03/my-backpack-with-bonus-car-trunk-action/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;My backpack is heavy. Every time a colleague tries to pick it up, they&amp;rsquo;re surprised and dismayed by the weight of the thing. I tend to be overprepared, and my backpack is the natural extension of that mindset. I decided to crack it open to catalog its contents.&lt;/p&gt;

&lt;p&gt;I won my very sturdy OGIO backpack in a company contest during my first few months. It&amp;rsquo;s about 6 years old, has tons of pockets, and includes the very old &amp;ldquo;Juniper Your Net&amp;rdquo; logo from Juniper Networks.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/juniper.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/juniper.jpg&#34; alt=&#34;juniper&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ll have to see if Bill Kelly can get me an updated version.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/backpack-label.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/backpack-label.jpg&#34; alt=&#34;backpack-label&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sorry for the awful picture quality. Well, not sorry enough to get some more lamps or ask my wife to use her Nikon D7000, but sorry enough to apologize here on my blog.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Two NetApp DB9-to-RJ45 console adapters.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A classic &amp;ldquo;baby blue&amp;rdquo; Cisco DB9-to-RJ45 console cable.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My kneepads, which have saved me thousands of dollars worth of pain and discomfort on datacenter floors. $10 on Amazon.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Some really, really sharp scissors.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A hex screwdrive, a flexy-neck ratchet screwdriver, and a regular orange screwdriver. The orange one came from my first Riverbed install. It used to have Riverbed branding all over it, but it&amp;rsquo;s been so well-used that the logos have worn off. What a great tool.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A boxknife. Because I open lots and lots of boxes.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My laptop&amp;rsquo;s power supply.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A Logitech G400 (the MX518 successor)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;An extra battery pack for my laptop. My aging HP laptop (5+ years old now) only gets about 30m of charge by itself, this pack adds another 45m.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Two cheap Bic pens from the 100-pack on my desk, a Logitech pen (red), and a random clicky pen I must&amp;rsquo;ve picked up.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My small screwdriver set. The only standard-issue item in my pack, CIO gives a pack of these to every new engineer.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A pair of nail clippers.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A Cisco USB-to-ethernet adapter, gigabit. Yes, I know gigabit is overkill for a USB2 adapter, so sue me.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A Cisco USB-to-wifi adapter, with N capabilities.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;An Apple USB-to-lightning cable, which I have on reserve in case I need to charge my phone.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Exactly three RJ11 heads that somehow got lost.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A roll of yellow electrical tape, which I use for impromptu labeling and marking.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A collection of Sharpies.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Two null-modem serial adapters.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A Juniper-style DB9-to-RJ45 (female) adapater.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A serial gender changer.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My USB serial port, which is attached to my official Extreme Networks-branded serial cable.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My null modem serial cable, clearly marked &amp;ldquo;NM&amp;rdquo; on both sides of both ends.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My straight-through serial cable, clearly marked &amp;ldquo;ST&amp;rdquo; on both sides of both ends. This was a replacement cable. My original ST came from a former engineer, who gave me her prized ST cable when she left. I had to leave it in Madison, WI for many unfortunate reasons. I still use it (remotely) from time to time.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A very long NetApp serial cable.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A pack of CAT5E cables: a 1&amp;rdquo; yellow cable, a 3&amp;rdquo; white cable, a 10&amp;rdquo; black cable, and a 12&amp;rdquo; black cable.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I also have a pouch on top that holds my business cards and a few misc items: my Square, a NetApp flash drive loaded with software, and a 16GB flash drive.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/usb.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/usb.jpg&#34; alt=&#34;usb&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why stop at my backpack? I also keep several &amp;ldquo;go bags&amp;rdquo; ready for specific tasks. My phone bag is one of my favorites. When I&amp;rsquo;m not designing a complex enterprise virtualization/networking/storage environment, I&amp;rsquo;m running and punching analog lines and making test calls to 911.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/phone-label.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/phone-label.jpg&#34; alt=&#34;phone-label&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The &amp;ldquo;go bag&amp;rdquo; itself, a dual-sized zippy bag.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Exactly four RJ45 heads. I hate making RJ45 cables, since they transfer a digital signal and are heavily relied upon.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Exactly forty-five RJ11 heads (I counted). Yes, these are just jiggling around loosely.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My favorite wire strippers.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A handful of jumpers for 66 blocks. These particular ones are nice because you can grab them with your fingers since they have a little handle.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A regular RJ11 cable.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Miscellaneous pieces of wire/RJ11 for patching in analog lines and the like. Took about 100&amp;rsquo; off of a spool somewhere, and I&amp;rsquo;ve been using it ever since.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A set of RJ11 splices, to put two pieces of RJ11 together. Sort of like wire nuts, but better.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My basic punch-down tool.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My cable crimper, with a fuzzy velcro lock. Why the velcro? Because I once cut my index finger bad enough on its razor and bled all over my backpack while rummaging around for a pen.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A wire stripper/cutter.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;No clue, came with the set.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My Fluke punch-down tool.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My Fluke butt set. Phone guys are drooling at this point.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are a few more trick items in my phone gear repertoire&amp;hellip;&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/amphenol.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/amphenol.jpg&#34; alt=&#34;amphenol&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a spare ShoreTel amphenol + patch-panel combo, often called a &amp;ldquo;harmonica&amp;rdquo; cable.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/engenius.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/engenius.jpg&#34; alt=&#34;engenius&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is my EnGenius PoE injector. Key fact: it&amp;rsquo;s gigabit. Usually paired with:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/dualcommfront.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/dualcommfront.jpg&#34; alt=&#34;dualcommfront&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/dualcommback.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/dualcommback.jpg&#34; alt=&#34;dualcommback&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is my secret sauce. It&amp;rsquo;s a gigabit switch with a mirrored port -and- PoE passthrough. I am able to easily Wireshark the traffic from a PoE VoIP phone!!!!! Seriously this is one of the most baller tools in my kit. Took me a long, long time to find a reasonably priced device that allowed me to do mirroring and PoE passthrough, both at gigabit speeds.&lt;/p&gt;

&lt;p&gt;Here are some bonus picks of the stuff in the trunk of my car. A big tangle of cables:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/cabletangle.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/cabletangle.jpg&#34; alt=&#34;cabletangle&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My crossover and T1 and special cable converters.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/cablezz.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/cablezz.jpg&#34; alt=&#34;cablezz&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My secret weapons at company picnics.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/dipsticks.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/dipsticks.jpg&#34; alt=&#34;dipsticks&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My power driver/drill.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/drivers.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/drivers.jpg&#34; alt=&#34;drivers&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My awesome wire snips.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/snips.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/snips.jpg&#34; alt=&#34;snips&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My fake USB CD-ROM / HDD enclosure. So great. It emulates a CD-ROM and presents the ISO you preloaded into the _ISOs folder.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/zalmann.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/zalmann.png&#34; alt=&#34;zalmann&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some more miscellaneous stuff.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/misc-label.jpg&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/03/misc-label.jpg&#34; alt=&#34;misc-label&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Over ten regular (C13) power cables.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Some of the C14 power cables.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My &amp;ldquo;every possible option&amp;rdquo; screwdriver set.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A really awful label maker that I never use.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A traditional SATA/IDE to USB kit.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Lots of Fry&amp;rsquo;s brand AA batters.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Another regular phone cable.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Some cage screws&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A book.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;My needle-nose pliers for phone work.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Another well-marked ST serial cable.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A well-marked NM serial cable.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hopefully you have enjoyed this trip through a lot of my stuff. I didn&amp;rsquo;t even get to show you my 300&amp;rsquo; ethernet cable (used for when someone forgets to put a drop in the CEO&amp;rsquo;s new office).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The IT laptop</title>
      <link>https://chasechristian.com/blog/2013/03/the-it-laptop/</link>
      <pubDate>Tue, 19 Mar 2013 05:11:53 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/03/the-it-laptop/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;I want the following laptop, which will never exist.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;15&amp;rdquo; screen with a 16:10 ratio and a vertical resolution of 1200px or greater. Retina-like PPI would be nice, but unlikely.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A DB9 serial port. Infinite points if it actually had a serial cable wound up inside that I could pull out and plug in and then retract when done.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Two gigabit ethernet NICs. Yes, two.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A trackpoint.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A touchpad, with buttons.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A keyboard that includes all critical keys, like Ins/Del, Home/End, PgUp/PgDn.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Configurable up to 16GB of RAM.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Latest Intel processors.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Dedicated GPU with reasonable gaming power, see nVidia 6xxM-series.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;VGA, DVI, and HDMI ports.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The latest and greatest tech, like USB3, SATA 6Gbps, etc.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;No optical drive. It&amp;rsquo;s unnecessary in today&amp;rsquo;s world, especially with a &lt;a href=&#34;http://www.amazon.com/Zalman-ZM-VE300-B-2-5inch-External-Enclosure/dp/B007B5Y4BI&#34;&gt;Zalman optical-emulating hard drive enclosure&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Two hard drive bays. I don&amp;rsquo;t really need this, but it would be nice to have a nice 256GB SSD and also some raw space for tossing random ISOs.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Four USB ports. Yes, four.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Three hours of battery life. I don&amp;rsquo;t expect this thing to run without juice, but just long enough to get some work done during a reasonable car ride.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Weight and size are negotiable. I don&amp;rsquo;t need it to be thin and light, I expect it to save me from carrying around tons of dongles and cables and extras.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would pay a lot of money for this laptop. Unfortunately for me, the laptop manufacturer&amp;rsquo;s designs are diverging in the opposite direction. The only manufacturer making high-res screens with powerful GPUs is Apple, who doesn&amp;rsquo;t even include a single ethernet port on their laptops. The opposite side is Lenovo, who has the technical oomph but is desperate to emulate Apple&amp;rsquo;s success by dropping buttons and keys as fast as they can but without replicating the screen resolution. Creating a laptop of my own, especially with such a custom set of requirements, is impossible. I can build a desktop to any possible spec and standard that I like, but we&amp;rsquo;re locked into the laptop models offered by today&amp;rsquo;s manufacturers. Unfortunately, those manufacturers are angling to take a larger share of the consumer market, not the enterprise market, which is working against me.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Saving HTTP basic auth passwords with Chrome</title>
      <link>https://chasechristian.com/blog/2013/03/saving-http-basic-auth-passwords-with-chrome/</link>
      <pubDate>Sun, 17 Mar 2013 22:59:14 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/03/saving-http-basic-auth-passwords-with-chrome/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;If you&amp;rsquo;ve ever tried to save your credentials for an &lt;a href=&#34;http://en.wikipedia.org/wiki/Basic_access_authentication&#34;&gt;HTTP basic auth form&lt;/a&gt; in Chrome, you&amp;rsquo;ve run into problems. Chrome won&amp;rsquo;t let you save the credentials natively. You might read a few articles about mixed results or the feature working in previous Chrome builds, but that&amp;rsquo;s not the way to solve your problem.&lt;/p&gt;

&lt;p&gt;The easiest solution is to open up Firefox or IE, go to your HTTP basic auth site, log in, and save the password in FF/IE. Once the password is saved in that browser, go back to Chrome, and tell it to import the saved passwords from the other browser. It will properly import the credentials and will auto-populate the HTTP basic auth popup. It takes some extra work, and it certainly shouldn&amp;rsquo;t be so difficult, but this trick will get you where you need to go.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Palo Alto Networks - Using a dynamic public IP address</title>
      <link>https://chasechristian.com/blog/2013/02/palo-alto-networks-using-a-dynamic-public-ip-address/</link>
      <pubDate>Sun, 24 Feb 2013 19:41:43 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/02/palo-alto-networks-using-a-dynamic-public-ip-address/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;I use a Palo Alto Networks VM-100 at home as my primary firewall. I previously used a Juniper SSG5, but the VM-100 has more horsepower and way more options. I&amp;rsquo;m using a my home ESXi server (a whitebox) to run the VM-100, and it&amp;rsquo;s very fast. The only issue I run into is that I am on a residential internet connection, so I have a dynamic public IP address that my ISP can change at any time.&lt;/p&gt;

&lt;p&gt;In order to configure inbound NAT policies when you have a dynamic public IP address, you&amp;rsquo;ll have to use some tricks with dynamic DNS and address objects to make it work. I wish there was a cleaner way to do this, but I haven&amp;rsquo;t found anything. The new version of PANOS has some features where it can poll an XML server for IP addresses to add to an address object, but the Palo Alto&amp;rsquo;s XML export API doesn&amp;rsquo;t match the required XML syntax.&lt;/p&gt;

&lt;h2 id=&#34;configure-your-public-interface&#34;&gt;Configure your public interface&lt;/h2&gt;

&lt;p&gt;Your first step will be to use the &lt;em&gt;Interfaces&lt;/em&gt; section under the Network tab to configure your public interface. It will probably be in the Untrust Layer 3 zone. In the interface properties, you want to go to the IPv4 tab, and then set the &lt;strong&gt;Type&lt;/strong&gt; to DHCP Client and ensure that both boxes are checked. The interface will now automatically get a public IP address from your ISP, and will create the proper route in your routing table.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/dynamic-public-ip.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/dynamic-public-ip.png&#34; alt=&#34;dynamic public ip&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&#34;install-configure-dynamic-dns-updater&#34;&gt;Install &amp;amp; configure dynamic DNS updater&lt;/h2&gt;

&lt;p&gt;&lt;a href=&#34;http://dyn.com/&#34;&gt;Dyn&lt;/a&gt; has a service called DynDNS, where their software will automatically probe your public IP address, and will then update a public DNS record with your new IP address. The Juniper SSG5 used to be able to do this on its own, as it had a DynDNS agent built-in. The Palo Alto Networks firewalls don&amp;rsquo;t have this feature, so you&amp;rsquo;ll have to install the software from Dyn onto any of your home PCs or servers to facilitate this. &lt;a href=&#34;http://dyn.com/dns/dyndns-pro/&#34;&gt;DynDNS Pro&lt;/a&gt; is the cheapest service, which is $20/year for users. I had an account with Dyn before they started charging, so my account has been grandfathered in for free. If you&amp;rsquo;re just getting started with them, you&amp;rsquo;ll unfortunately have to pay the yearly fee. There are alternative options, like &lt;a href=&#34;http://www.noip.com/services/managed_dns/free_dynamic_dns.html&#34;&gt;No-IP&lt;/a&gt;, which still offer free dynamic DNS services. Any dynamic DNS service will do, but I would recommend sticking with Dyn if you already have a free account with them, or trying out No-IP if you want a free solution.&lt;/p&gt;

&lt;p&gt;Depending on which dynamic DNS service you use, you&amp;rsquo;ll get a custom domain name that will match your public IP address. For example, I could use &amp;ldquo;chasefirewall.dyndns.org&amp;rdquo; as my dynamic domain name that maps to my home IP address. Once you have picked a service and configured their updater software, write down the dynamic domain name that you picked (or were assigned) and move on to the next step.&lt;/p&gt;

&lt;h2 id=&#34;create-a-fqdn-address-object&#34;&gt;Create a FQDN address object&lt;/h2&gt;

&lt;p&gt;Navigate to the &lt;em&gt;Addresses&lt;/em&gt; section under the Objects tab to create a new FQDN address object. You want to create an object that will be a stand-in for your public IP address, and we&amp;rsquo;ll tell the object to use a DNS lookup to your dynamic domain name to grab the right address.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/addressobject2.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/addressobject2.png&#34; alt=&#34;addressobject2&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, in order for this to work properly, your Palo Alto Networks firewall needs to be able to do DNS lookups to resolve your dynamic domain name to the proper IP address. Make sure you&amp;rsquo;ve configured your firewall&amp;rsquo;s management interface with DNS servers and a default gateway.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/dnsservers.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/dnsservers.png&#34; alt=&#34;dnsservers&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that you can (and probably should in 99% of cases) use your Trust interface for your default gateway, which will send your management interface&amp;rsquo;s traffic through your firewall and NAT policies to the internet.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/defgw.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/defgw.png&#34; alt=&#34;defgw&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The firewall will refresh the object regularly, so the object should stay relatively accurate. Even though your address may be dynamic from your ISP, the IP itself tends not to change that often.&lt;/p&gt;

&lt;h2 id=&#34;create-your-nat-and-security-policies&#34;&gt;Create your NAT and security policies&lt;/h2&gt;

&lt;p&gt;When creating your policies, you always reference the object that we created as the &lt;strong&gt;Destination Address&lt;/strong&gt; in both the NAT and security policies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NAT Policy:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/nat.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/nat.png&#34; alt=&#34;nat&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security Policy:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/sec.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/sec.png&#34; alt=&#34;sec&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, I use my new Untrust-IP object in both policies. Because we used an FQDN Address object type, the IP address will be regularly updated and our traffic will always be allowed in.&lt;/p&gt;

&lt;p&gt;If you try to cheat by setting the &lt;strong&gt;Destination Address&lt;/strong&gt; in your NAT policy to &amp;ldquo;Any&amp;rdquo;, you&amp;rsquo;ll get a commit error.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/failed.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/failed.png&#34; alt=&#34;failed&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hopefully you find this guide useful and you&amp;rsquo;re able to set up some inbound NAT/security policies for your Palo Alto Networks firewall even though you don&amp;rsquo;t have a static IP address from your ISP.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Clearing your WoW creature cache automatically</title>
      <link>https://chasechristian.com/blog/2013/02/clearing-your-wow-creature-cache-automatically/</link>
      <pubDate>Mon, 18 Feb 2013 05:39:00 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/02/clearing-your-wow-creature-cache-automatically/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;Tired of having to clear your WoW creature cache for NPCScan manually? I wrote a little script to do the same job.&lt;/p&gt;

&lt;p&gt;First, make a batch file. You can just open up Notepad and make a new document. Here&amp;rsquo;s the command you want to run:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@ECHO OFF
del &amp;quot;C:\Program Files(x96)\WoW\Cache\WDB\enUS\creaturecache.wdb&amp;quot;
&amp;quot;C:\Program Files(x96)\WoW\wow.exe&amp;quot;
exit
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Save this file as &lt;code&gt;clearcache.bat&lt;/code&gt; and put it somewhere you&amp;rsquo;ll remember, like your C:\ drive or your Desktop. If you have trouble making it yourself, you can &lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/clearcache.zip&#34;&gt;clearcache&lt;/a&gt;, which assumes your WoW is installed at the default location. Download it to your C:\ drive and unzip it, so that it&amp;rsquo;s in the folder C:\clearcache and unzipped. Now, when you run this batch file, it will clear your cache then launch WoW, so it&amp;rsquo;s done for you every time! You can also move the batch file to your Desktop if you like and click it there.&lt;/p&gt;

&lt;p&gt;If you want to pin this to your Taskbar, you&amp;rsquo;ll have to use a custom shortcut, since you can&amp;rsquo;t pin batch files OR shortcuts to batch files. First, make a shortcut to your batch file (right-click and Create Shortcut). Then go into the shortcut properties and in the &lt;strong&gt;Target&lt;/strong&gt; field, add a &lt;code&gt;cmd /C&lt;/code&gt; before your command, so it looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cmd /C &amp;quot;C:\clearcache\clearcache.bat&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then you&amp;rsquo;ll be able to pin it properly. I also made &lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/clearcache.zip&#34;&gt;clearcache&lt;/a&gt; with both the batch file and the modified shortcut ready. You might need to modify the files to point to YOUR specific WoW installation.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Trying out Citrix XenClient</title>
      <link>https://chasechristian.com/blog/2013/02/trying-out-citrix-xenclient/</link>
      <pubDate>Sun, 10 Feb 2013 20:49:26 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/02/trying-out-citrix-xenclient/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;I was very excited when Citrix announced XenClient, their client hypervisor, in 2010. The idea is that it&amp;rsquo;s a Type 1 hypervisor (bare metal) as opposed to being run on top of Windows or another OS. It&amp;rsquo;s based on their Xen/XenServer architecture, and the idea was that you could run multiple operating systems on your laptop or desktop at once. It would be a significant improvement over our current two options: dual booting or Type 2 hypervisors (Virtual Box, VMware Workstation).&lt;/p&gt;

&lt;p&gt;Unfortunately, their version 1.0 software was awful and didn&amp;rsquo;t support most devices. I have an older laptop that I inherited from another employee, and it&amp;rsquo;s over 5 years old now. I wasn&amp;rsquo;t on their hardware compatibility list (HCL), and so I couldn&amp;rsquo;t give it a spin. I have always wanted to be able to replace Cygwin with a real Linux environment on my desktop, but I find that VMware Workstation is simply too clunky and slow for what I want. Now, in 2013, I heard XenClient mentioned again and thought I&amp;rsquo;d give it another shot. Surely Citrix has made several improvements since their 1.0 days, right?&lt;/p&gt;

&lt;h2 id=&#34;citrix-and-the-naming-disaster&#34;&gt;Citrix and the naming disaster&lt;/h2&gt;

&lt;p&gt;Citrix has a serious, institutional issue with product naming. They constantly rename and rebrand core products, incorporate different suffixes and affixes (see: Xen), and have different versions of a product bear the same name. As a Citrix partner, it has been very frustrating at times, because it becomes very difficult to search for documentation and communicate effectively when the product names are shifting constantly or don&amp;rsquo;t represent the actual product. Anyone who has tried to research the Citrix Access Gateway and its various incarnations will know exactly what I mean.&lt;/p&gt;

&lt;p&gt;It wouldn&amp;rsquo;t be the Citrix we know and love if this pattern didn&amp;rsquo;t continue to their XenClient platform. The whole issue is exacerbated by superannuated references on their website that reference old names, incorrectly name new products, and when all of their links always end up at the same page. From all of my research, it looks like there are 3 different versions of XenClient, although the naming structure is almost identical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;XenClient Enterprise 4.5 (XCE)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Locked-down and restricted version of XenClient (no SSH or root access)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Highly compatible with many, many laptops (including mine)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Designed for use with a managed Synchronizer server, but not required&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Free for individual use&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Due to restrictions in place, no options for Mac OS X and poor Linux support&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;None of the hotkeys for XenClient seemed to work in XCE&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;XenClient XT 3.0&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Security-focused version of XenClient&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;NOT the successor to XenClient 2.1&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;I didn&amp;rsquo;t actually try this one due to bad reviews&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;XenClient 2.1&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This is the original evolution from the XenClient 1.0 platform&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Poor support for older laptops and nVidia chipsets (both apply to my laptop)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Tons of features/options, including special flags for Mac OS X and Linux support&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;All of the cool hotkeys, SSH access, shell/root access&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you&amp;rsquo;re following along, there&amp;rsquo;s a 2.1 version, a 3.0 version, and a 4.5 version, all listed under XenClient, but that are all totally different products and unrelated to each other.&lt;/p&gt;

&lt;p&gt;I ended up installing XCE 4.5, assuming that was the latest build of XenClient. Of course, this was the locked-down enterprise version that didn&amp;rsquo;t have any of the options I wanted. After some reading, I found that &lt;a href=&#34;http://www.citrix.com/news/announcements/may-2012/citrix-announces-xenclient-enterprise-and-acquisition-of-virtual-computer.html&#34;&gt;Citrix acquired Virtual Computer&lt;/a&gt; and merged it with XenClient to make XCE. The original XenClient was still stuck on version 2.1, which had been released over a year ago. I tried installing XenClient 2.1, but found that my laptop was still not compatible and I could only get it to run by disabling several features and turning off graphics acceleration. I actually couldn&amp;rsquo;t even install it via DVD (since my laptop&amp;rsquo;s optical drive is PATA not SATA), nor via USB thumb drive or USB CD-ROM (since it disables legacy USB support during install). I had to install the whole thing via HTTP using IIS from my Windows desktop!&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s clear that XenClient Enterprise is where Citrix is taking XenClient in general, and it makes sense. Their customers want locked-down hypervisors where they can control the images that are deployed, and that&amp;rsquo;s what XCE brings to the table. The old XenClient, which let advanced users tinker with a Type 1 hypervisor on their laptop, was just a tech toy that has now evolved into a marketable product. Unless I buy a new laptop specifically with XenClient support, I&amp;rsquo;m out of luck. Even then, who knows if XenClient 2.1 will ever see another update? Maybe I&amp;rsquo;ll try again in 3 years and see if there have been any improvements.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Palo Alto Networks - Understanding NAT and Security Policies</title>
      <link>https://chasechristian.com/blog/2013/02/palo-alto-networks-understanding-nat-and-security-policies/</link>
      <pubDate>Sun, 10 Feb 2013 20:04:24 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/02/palo-alto-networks-understanding-nat-and-security-policies/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;When creating your NAT Policies and Security Policies on a Palo Alto Networks firewall, you have understand how the Palo Alto runs the packet through its various filters. I found &lt;a href=&#34;http://mdssh.com/UnderstandingNAT.pdf&#34;&gt;a great Palo Alto document&lt;/a&gt; that goes into the details, and I&amp;rsquo;ve broken down some of the concepts here.&lt;/p&gt;

&lt;h2 id=&#34;nat-policies-are-always-applied-to-the-original-unmodified-packet&#34;&gt;NAT policies are always applied to the original, unmodified packet&lt;/h2&gt;

&lt;p&gt;For example, if you have a packet that arrives at the firewall with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Source IP:&lt;/strong&gt; 192.168.1.10 (your private)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Destination IP:&lt;/strong&gt; 8.8.8.8&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;then your NAT policy must have those IP addresses listed. Similarly, for incoming traffic, say from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Source IP:&lt;/strong&gt; 8.8.8.8&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Destination IP:&lt;/strong&gt; 206.125.122.101 (your public)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;then you must have those IP addresses in the NAT policy. Notice that for incoming traffic from the internet, you use your public IP address in the &lt;strong&gt;Destination&lt;/strong&gt; field, not the private IP address.&lt;/p&gt;

&lt;h2 id=&#34;nat-policies-always-match-the-original-packet-s-zone-and-ip-information&#34;&gt;NAT policies always match the original packet&amp;rsquo;s zone and IP information&lt;/h2&gt;

&lt;p&gt;For that same incoming packet, the policy will read:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Source Zone:&lt;/strong&gt; Untrust&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Destination Zone:&lt;/strong&gt; Untrust&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While this seems counterintuitive at first, you have to realize that the original packet has a public IP address for both its source and destination IP addresses, and public IP addresses all live in your Untrust zone. The NAT policy elements must all reference the original packet, so don&amp;rsquo;t think about where you want the packet to go, but rather where it came from.&lt;/p&gt;

&lt;p&gt;Security policies are similar, as they also &lt;em&gt;reference the original packet&amp;rsquo;s IP information&lt;/em&gt; before any NAT has been applied. So, for an inbound security policy, you would use:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Source IP:&lt;/strong&gt; 8.8.8.8&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Destination IP:&lt;/strong&gt; 206.125.122.101&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;just like in the NAT policy. However, in security policies, you have to &lt;em&gt;reference the translated destination zones&lt;/em&gt;. Assuming that you&amp;rsquo;re translating that public IP address to a private IP address, your security policy would use:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Source Zone:&lt;/strong&gt; Untrust&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Destination Zone:&lt;/strong&gt; Trust&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;since the translated IP (which you&amp;rsquo;re NOT referencing in the policy) is in the Trust zone. For some environments, your &lt;strong&gt;Destination Zone&lt;/strong&gt; could be a DMZ instead.&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s a cheat sheet:&lt;/p&gt;

&lt;h2 id=&#34;outgoing-traffic&#34;&gt;Outgoing Traffic&lt;/h2&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/outboundnat.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/outboundnat.png&#34; alt=&#34;outboundnat&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;NAT Policy:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source Zone:&lt;/strong&gt; Trust&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination Zone:&lt;/strong&gt; Untrust&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source IP:&lt;/strong&gt; Original Private IP&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination IP:&lt;/strong&gt; Original Destination IP&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/outboundsec.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/outboundsec.png&#34; alt=&#34;outboundsec&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Security Policy&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source Zone:&lt;/strong&gt; Trust&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination Zone:&lt;/strong&gt; Untrust&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source IP:&lt;/strong&gt; Original Private IP&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination IP:&lt;/strong&gt; Original Destination IP&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;incoming-traffic&#34;&gt;Incoming Traffic&lt;/h2&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/inboundnat.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/inboundnat.png&#34; alt=&#34;inboundnat&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;NAT Policy&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source Zone:&lt;/strong&gt; Untrust&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination Zone:&lt;/strong&gt; Untrust&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source IP:&lt;/strong&gt; Original Public IP&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination IP:&lt;/strong&gt; Original Public IP&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/inbound1.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/inbound1.png&#34; alt=&#34;inbound&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Security Policy&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source Zone:&lt;/strong&gt; Untrust&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination Zone:&lt;/strong&gt; Trust&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source IP:&lt;/strong&gt; Original Public IP&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination IP:&lt;/strong&gt; Original Public IP&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;hairpin-traffic&#34;&gt;Hairpin Traffic&lt;/h2&gt;

&lt;p&gt;(internal clients accessing internal resources via public IPs)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;NAT Policy&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source Zone:&lt;/strong&gt; Trust&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination Zone:&lt;/strong&gt; Untrust&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source IP:&lt;/strong&gt; Original Private IP&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination IP:&lt;/strong&gt; Original Public IP&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Translated Source IP:&lt;/strong&gt; Your Untrust Interface/Public IP&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Translated Destination IP:&lt;/strong&gt; Translated Private IP&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;strong&gt;&lt;em&gt;Security Policy&lt;/em&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source Zone:&lt;/strong&gt; Trust&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination Zone:&lt;/strong&gt; Trust/DMZ&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source IP:&lt;/strong&gt; Original Private IP&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination IP:&lt;/strong&gt; Original Public IP&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Palo Alto Networks – User-ID agent configuration</title>
      <link>https://chasechristian.com/blog/2013/02/palo-alto-networks-user-id-agent-configuration/</link>
      <pubDate>Sun, 03 Feb 2013 03:59:23 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/02/palo-alto-networks-user-id-agent-configuration/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;The Palo Alto Networks firewall can detect the Active Directory names of users on a network and match those names against security policies. A User-ID agent will check the Active Directory domain controllers for Event Log entries that are generated that contain user names and their client IP addresses. Using this information, you can make rules that filter traffic based on particular users (or groups), allowing you to fine-tune your policies.&lt;/p&gt;

&lt;p&gt;What you&amp;rsquo;ll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The User-ID agent software from the PAN support site (optional, recommended)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A Windows server to install the User-ID agent on (optional, recommended)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A domain admin account for polling the domain controllers (or a &lt;a href=&#34;http://www.chasechristian.com/242/tech/palo-alto-networks-user-id-agent-configuration/#comment-326&#34;&gt;service account&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;install-the-user-id-agent&#34;&gt;Install the User-ID agent&lt;/h2&gt;

&lt;p&gt;Download and install the User-ID agent on a Windows server. I prefer using an agent on a server rather than using the built-in firewall agent, as it reduces the usage on the firewall and offloads it to the agent.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/useridsetup.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/useridsetup.png&#34; alt=&#34;useridsetup&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You&amp;rsquo;ll want to edit the settings to fill in your Active Directory administrator account. You can leave the rest of the settings at their defaults. Next, visit the Discovery tab to select the domain controllers you want to poll.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/useridserver.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/useridserver.png&#34; alt=&#34;useridserver&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you hit the &lt;strong&gt;auto discover&lt;/strong&gt; button, it will find all of your domain controllers. Make sure to add any that it missed, or to delete any that you don&amp;rsquo;t want to poll. That should be all the config you need on the agent.&lt;/p&gt;

&lt;h2 id=&#34;configure-the-user-id-agent&#34;&gt;Configure the User-ID Agent&lt;/h2&gt;

&lt;p&gt;The next step is to add a new User-ID Agent in the &lt;em&gt;User-ID Agents&lt;/em&gt; tab in the User Identification section under the Device tab.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/useridconfig.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/useridconfig.png&#34; alt=&#34;useridconfig&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Port 5007 is the default User-ID agent port, so make sure to punch that in. You shouldn&amp;rsquo;t need a pre-shared key, but I filled one in anyway. Now you can use Active Directory user names in your policies, or you can set up an LDAP server profile to do group-based mapping.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Palo Alto Networks - LDAP and Group Mapping config guide</title>
      <link>https://chasechristian.com/blog/2013/02/palo-alto-networks-ldap-and-group-mapping-configuration-guide/</link>
      <pubDate>Sat, 02 Feb 2013 06:14:02 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/02/palo-alto-networks-ldap-and-group-mapping-configuration-guide/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;In order to configure your Palo Alto Networks firewall to do filtering based on Active Directory (LDAP) user groups, you have to configured the firewall to poll your domain controllers for group membership information. The User-ID agents only identify the user names of your users, but in order to sort them into groups, you have to configure Group Mapping.&lt;/p&gt;

&lt;p&gt;What you&amp;rsquo;ll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The name and IP address of your domain controllers (and the domain)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A Bind DN and password of an AD administrator (CN, OU, DC, etc)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The Active Directory groups you want to add to Group Mapping&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;create-ldap-profile&#34;&gt;Create LDAP Profile&lt;/h2&gt;

&lt;p&gt;The first step is to go to the &lt;em&gt;LDAP Server Profiles&lt;/em&gt; section under the Device tab. We&amp;rsquo;ll be Adding a new LDAP Server Profile.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/ldapnew.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/ldapnew.png&#34; alt=&#34;ldapnew&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the &lt;strong&gt;server&lt;/strong&gt; column, just fill in the name of the server. Obviously you put the IP address into the &lt;strong&gt;address &lt;/strong&gt;column. Finally, pick your LDAP &lt;strong&gt;port&lt;/strong&gt;, which is 389 by default.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;domain&lt;/strong&gt;, you want the NETBIOS name of your domain, NOT the FQDN. If you put the FQDN in here, you&amp;rsquo;ll get a mismatch from your User-ID agent and nothing will work. Select &amp;lsquo;active-directory&amp;rsquo; for the LDAP &lt;strong&gt;type&lt;/strong&gt;, and then fill in the &lt;strong&gt;base&lt;/strong&gt; with your base domain LDAP string.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Bind DN&lt;/strong&gt; is the user account that the firewall will try authenticating with. If you set your view to Advanced in ADUC, you can go to the Attribute Editor tab of the user object and just copy the DN right from Active Directory. Enter in the user&amp;rsquo;s password. I suggest using a service account for this.&lt;/p&gt;

&lt;h2 id=&#34;create-a-group-mapping&#34;&gt;Create a Group Mapping&lt;/h2&gt;

&lt;p&gt;You&amp;rsquo;ll now be navigating to the &lt;em&gt;Group Mapping Settings&lt;/em&gt; tab, which is the User Identification section, under the Device tab. We&amp;rsquo;ll be making a new mapping.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/groupmapping.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/groupmapping.png&#34; alt=&#34;groupmapping&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, select the &lt;strong&gt;server profile&lt;/strong&gt; that you just created. The &lt;strong&gt;update interval&lt;/strong&gt; is the time between group refreshes, in seconds, so set it to something like 60 seconds. Finally, change the default &lt;strong&gt;object class&lt;/strong&gt; to &amp;lsquo;user&amp;rsquo; instead of &amp;lsquo;person&amp;rsquo;. Leave everything else at the default, then hit the &lt;strong&gt;group include list&lt;/strong&gt; tab at the top.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/groupmapping2.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/groupmapping2.png&#34; alt=&#34;groupmapping2&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigate the directory on the left and select the groups you&amp;rsquo;d like to map. You need to map any groups that you&amp;rsquo;ll be using in policies. In my case, I picked the &amp;ldquo;pan_nofacebook&amp;rdquo; group in order to block Facebook for certain users. If you&amp;rsquo;re not able to navigate the LDAP tree on the left, check your server profile for any errors.&lt;/p&gt;

&lt;h2 id=&#34;create-a-group-based-policy&#34;&gt;Create a Group-based Policy&lt;/h2&gt;

&lt;p&gt;****Now that we&amp;rsquo;ve created our group mappings, we can use these Active Directory groups in our security policies. I whipped up a quick URL Filtering Profile to block social networking sites.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/urlfiltering.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/urlfiltering.png&#34; alt=&#34;urlfiltering&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Head over to the &lt;em&gt;Security section&lt;/em&gt; under the Policies tab, and we&amp;rsquo;ll put all the pieces together.&lt;/p&gt;

&lt;p&gt;Create your policy from your Trust to Untrust zones, and select the Active Directory group in the &lt;strong&gt;source user&lt;/strong&gt; section.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/sourcepolicy.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/sourcepolicy.png&#34; alt=&#34;sourcepolicy&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The groups you&amp;rsquo;ve selected for mapping with automatically show up when you go to add a &lt;strong&gt;source user&lt;/strong&gt;. Now, go to the Actions tab.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/nofacebook.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/nofacebook.png&#34; alt=&#34;nofacebook&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve selected my &lt;strong&gt;URL Filtering&lt;/strong&gt; profile of &amp;lsquo;nofacebook&amp;rsquo; which will block social networking for the users, while allowing all other traffic through. This policy will only apply to users that are in the &amp;lsquo;pan_nofacebook&amp;rsquo; group that have their User-ID mapped by the User-ID agents. The final product results in targeted URL filtering application.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/nosocial.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/nosocial.png&#34; alt=&#34;nosocial&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Palo Alto Networks - Active Directory authentication (via Kerberos) configuration</title>
      <link>https://chasechristian.com/blog/2013/02/palo-alto-networks-active-directory-authentication-kerberos-guide/</link>
      <pubDate>Sat, 02 Feb 2013 02:53:57 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/02/palo-alto-networks-active-directory-authentication-kerberos-guide/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;In order to use your Active Directory accounts to log on to your Palo Alto Networks firewall, you have to configure the firewall to poll your domain controllers via Kerberos. Assuming that you&amp;rsquo;re running PANOS 5 or higher, the Kerberos agent is built-in and very easy to configure for access.&lt;/p&gt;

&lt;p&gt;What you&amp;rsquo;ll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The IP addresses and host names of the domain controllers you want to query (pick at least 2)&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The domain name of the domain your accounts are in&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A list of the Active Directory accounts you want to grant access to&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;make-a-new-kerberos-server-profile&#34;&gt;Make a new Kerberos Server Profile&lt;/h2&gt;

&lt;p&gt;The first step is to visit the &lt;em&gt;Kerberos Server Profiles&lt;/em&gt; section under the Device tab. We&amp;rsquo;ll want to Add a new Kerberos Server Profile.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/kerberosnew.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/kerberosnew.png&#34; alt=&#34;kerberosnew&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make sure that the &lt;strong&gt;realm&lt;/strong&gt; and &lt;strong&gt;domain&lt;/strong&gt; match your Active Directory domain. In most cases, these should match.&lt;/p&gt;

&lt;p&gt;When adding servers to the list, the &lt;strong&gt;server&lt;/strong&gt; column is for the IP address, while the &lt;strong&gt;host&lt;/strong&gt; column is for the DNS name. You don&amp;rsquo;t need to specify a port number if you&amp;rsquo;re using regular Active Directory domain controllers for authentication.&lt;/p&gt;

&lt;h2 id=&#34;make-a-new-authentication-profile&#34;&gt;Make a new Authentication Profile&lt;/h2&gt;

&lt;p&gt;Now we&amp;rsquo;ll be visiting the &lt;em&gt;Authentication Profile&lt;/em&gt; section under the Device tab. We&amp;rsquo;ll want to Add a new Authentication Profile.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/authprofile.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/authprofile.png&#34; alt=&#34;authprofile&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, I selected the &lt;strong&gt;authentication&lt;/strong&gt; method of Kerberos, and I chose the &lt;strong&gt;Server Profile&lt;/strong&gt; that we made in the last step. I leave the Allow List with the default &amp;lsquo;all&amp;rsquo; group active, since we&amp;rsquo;ll be restricting access later. This doesn&amp;rsquo;t give everyone access to the firewall, it just gives everyone access to the authentication method.&lt;/p&gt;

&lt;h2 id=&#34;add-your-administrators&#34;&gt;Add your administrators&lt;/h2&gt;

&lt;p&gt;Finally, we&amp;rsquo;ll be using the &lt;em&gt;Administrators&lt;/em&gt; section under the Device tab to Add a new Administrator.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/newadmin.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/newadmin.png&#34; alt=&#34;newadmin&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;name&lt;/strong&gt; that you use here is the user&amp;rsquo;s Active Directory account name. For example, my account is often &amp;lsquo;ccadmin&amp;rsquo; or something similar. Choose the &lt;strong&gt;Authentication Profile&lt;/strong&gt; that you just created to allow the user to log on via Active Directory. Finally, choose the role/access you want to give this user. The &amp;lsquo;Superuser&amp;rsquo; role is the highest level of permissions and has the ability to add and remove other administrators. The &amp;lsquo;Device Admin&amp;rsquo; role can do anything on the box EXCEPT manage other administrators. You can also use the &lt;strong&gt;Role Based&lt;/strong&gt; access to define more granular permissions and roles.&lt;/p&gt;

&lt;h2 id=&#34;log-on-with-your-new-account&#34;&gt;Log on with your new account&lt;/h2&gt;

&lt;p&gt;Now you&amp;rsquo;ll be able to use your simple username and password to manage your firewall.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/login.png&#34;&gt;&lt;img src=&#34;http://www.chasechristian.com/wp-content/uploads/2013/02/login.png&#34; alt=&#34;login&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Texas is football country</title>
      <link>https://chasechristian.com/blog/2013/01/texas-is-football-country/</link>
      <pubDate>Wed, 30 Jan 2013 06:19:08 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2013/01/texas-is-football-country/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;I was in the Dallas-Fort Worth, Texas area for business last week. It was my first visit to the state, and so my expectations were largely set by what I had seen in the media. I was planning to eat steak every day, and for everyone to wear boots and say &amp;ldquo;ya&amp;rsquo;ll&amp;rdquo; often. Country music would be the de facto soundtrack, and I&amp;rsquo;d be surrounded by pickup trucks. I even thought about buying a cowboy hat.&lt;/p&gt;

&lt;p&gt;While I did manage one steak per day and drank my fair share of sweet tea, most of my other Texas tropes proved to be unfounded. People wore sneakers, listened to classic rock, and drove Maximas and Corollas. What I did notice was an abundance of college stickers on the backs of those Maximas and Corollas. I had landed in Texas A&amp;amp;M country, from the looks of things.&lt;/p&gt;

&lt;p&gt;Where I&amp;rsquo;m from in southern Oregon, you can&amp;rsquo;t go 100 yards without seeing a bright yellow &amp;ldquo;O&amp;rdquo; sticker on the back of a Tacoma or an S-10. Oregon Ducks fans are proud to display their team&amp;rsquo;s logo everywhere. Oregon fans have a customary greeting when passing each other in the street: &amp;ldquo;Go Ducks&amp;rdquo;. Perhaps a strong fist symbol is gestured as well, particularly on a Monday after a big win. It was Oregon country, and you knew it the moment you entered town.&lt;/p&gt;

&lt;p&gt;In Santa Barbara, I feel alone in my college football fandom. None of my colleagues follow any college teams. I don&amp;rsquo;t see USC or UCLA stickers on the bumpers of the BMWs and Jettas that line State St. If I want to talk about a great play or an amazing game, I have to call my family or friends in other states. After nearly 6 years here, I&amp;rsquo;ve just come to assume that nobody else cares about college football as much as I do.&lt;/p&gt;

&lt;p&gt;Wearing my Oregon Ducks jacket in Texas, I expected to be ignored, just like I am in Santa Barbara. Everyone here just assumes I just like the color green. What I found was that everyone in Texas is not only a college football fan, but that they&amp;rsquo;re also up-to-date on their information and love to chat about their favorite teams. The coat was a sign to them that I was a fellow follower.&lt;/p&gt;

&lt;p&gt;I had over a dozen people stop me in stores, restaurants, my hotel, everywhere, just to talk about Chip Kelly&amp;rsquo;s recent departure from the Ducks, to give me their thoughts on the OC Mark Helfrich&amp;rsquo;s promotion to HC, and to brag about how Johnny Football was right to spurn Oregon to lead Texas A&amp;amp;M to its rightful SEC glory.&lt;/p&gt;

&lt;p&gt;Their questions were eager: Had I seen how badly TAMU had crushed Oklahoma? Had I seen the pictures of Manziel living it up after their bowl game? Had I prepared myself mentally to see the Ducks face off vs TAMU in the natty next year?&lt;/p&gt;

&lt;p&gt;Yes, in fact, I have.&lt;/p&gt;

&lt;p&gt;I was around my types of fans once again. My wife went to the restroom at the airport, and even just two short minutes later, someone had already approached me to discuss whether Helfrich would be able to keep Kelly&amp;rsquo;s furious pace and discipline at Oregon for seasons to come.&lt;/p&gt;

&lt;p&gt;I enjoyed getting to talk football in Texas, as opposed to being limited to just talking tech at work or gaming with friends. I hope to visit Texas again someday. I&amp;rsquo;ll just have to make sure it&amp;rsquo;s during a season where TAMU and UO don&amp;rsquo;t face off, as I want to make sure there&amp;rsquo;s no hard feelings.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Snapshots are not backups</title>
      <link>https://chasechristian.com/blog/2012/12/snapshots-are-not-backups/</link>
      <pubDate>Thu, 27 Dec 2012 06:58:11 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2012/12/snapshots-are-not-backups/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;Maintaining backups of business-critical data is one of IT&amp;rsquo;s most crucial roles in an organization. While other departments are tasked with the creation or generation of that data, IT&amp;rsquo;s job is to make sure that data is available and preserved at all times. Businesses executives decide the company&amp;rsquo;s appropriate RPOs and RTOs, and it&amp;rsquo;s up to IT to make that design a reality.&lt;/p&gt;

&lt;p&gt;Snapshots are a widely available tool that seems to promise incredibly near-line RPOs and nearly instantaneous RTOs. Every major SAN vendor has a snapshot technology available, and even operating systems like VMware and Microsoft have their snapshot stories. The truth is that snapshots aren&amp;rsquo;t really backups, and they cannot be relied upon as a backup.&lt;/p&gt;

&lt;h2 id=&#34;what-s-a-backup-anyway&#34;&gt;What&amp;rsquo;s a backup anyway?&lt;/h2&gt;

&lt;p&gt;In order for a tool to be a true backup solution, the backed-up data must be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;On separate offsite media&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Completely self-contained copy&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Immutable&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you back your SQL databases up to simple *.bak files on the same drive as the database, you haven&amp;rsquo;t created a backup, but rather you&amp;rsquo;ve created an archive. An archive is a copy of your data as it exists at a point in time that doesn&amp;rsquo;t meet all of the requirements to be a true backup. Archives can be very useful for quick restores and solving minor issues, but only backups truly protect your company&amp;rsquo;s data. Backups can be sent to external media, like portable hard drives and tape, or remote storage, like a NAS, SAN, or server at another site. A server&amp;rsquo;s RAID array does not count, as a backup must be able to survive a total failure of the source, not just a single hard drive failure.&lt;/p&gt;

&lt;p&gt;A true backup must not be reliant on the original data. VMware snapshots and Microsoft shadow copies both rely on the original source information in order to restore to that point in time. A new copy of the data isn&amp;rsquo;t created. The original file is preserved and required, which means that if it is lost, then the snapshots are worthless. You must be able to restore all of your data with nothing but the backup itself.&lt;/p&gt;

&lt;p&gt;If you&amp;rsquo;re using a mirroring strategy like NetApp&amp;rsquo;s SnapMirror technology, you&amp;rsquo;ve created a highly-available copy of your data, but not a backup. Any corruption on the source data is replicated at a block-level to your destination, which means that you are always at risk of losing the second copy of the data to an error or attack. The destination side of a backup must be completely immutable, so that any corruption or errors on the source can&amp;rsquo;t affect the destination.&lt;/p&gt;

&lt;h2 id=&#34;snapshots-are-awesome&#34;&gt;Snapshots are awesome&lt;/h2&gt;

&lt;p&gt;While snapshots aren&amp;rsquo;t true backups, they do provide a lot of value. They can allow administrators to quickly fix minor issues and restore data in most scenarios. They can also be used for testing, development, and cloning. Snapshots reduce the amount of labor needed to manage an environment and are generally good enough for daily use. The issue is simply that they can&amp;rsquo;t be relied upon in a major disaster, and any true backup strategy must go beyond snapshots.&lt;/p&gt;

&lt;h2 id=&#34;snapvault-is-the-best-of-both-worlds&#34;&gt;SnapVault is the best of both worlds&lt;/h2&gt;

&lt;p&gt;NetApp&amp;rsquo;s SnapVault technology allows companies to leverage snapshots for both quick management and backup purposes. A SnapVault relationship between NetApp filers creates a separate copy of the source data on the destination filer. The destination copy is completely self-contained and isn&amp;rsquo;t reliant on the source filer for anything after synchronization. The destination copy is completely immutable and uses its own file table and metadata to ensure that corruption in the source is prevented from affecting backups on the destination. The destination can be regularly updated via automatic replication.&lt;/p&gt;

&lt;p&gt;By meeting all of the requirements of a true backup solution, SnapVault allows companies to be sure that their data is secure. Without a solution that includes all of the requirements of a true backup, a company&amp;rsquo;s data is at risk of being lost.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Telnet isn&#39;t the problem</title>
      <link>https://chasechristian.com/blog/2012/08/telnet-isnt-the-problem/</link>
      <pubDate>Fri, 03 Aug 2012 17:43:29 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2012/08/telnet-isnt-the-problem/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;I have been receiving a lot of feedback regarding my comments on the Windows telnet client from &lt;a href=&#34;http://chasechristian.com/120/tech/my-time-with-server-2012-and-metro/&#34;&gt;my article on Server 2012&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;As a note for anyone at Microsoft reading this: not including **telnet** in the default installation is an egregious offense.&lt;/blockquote&gt;

&lt;p&gt;Between Twitter replies, emails, and comments here and on Hacker News, there are a lot of people who agree with Microsoft&amp;rsquo;s decision to leave telnet out of the default Windows installation in recent versions. I vigorously disagree with this notion, although I haven&amp;rsquo;t yet provided any facts to defend that opinion. I plan to rectify that today.&lt;/p&gt;

&lt;h2 id=&#34;1-everyone-else-does-it&#34;&gt;1 - Everyone else does it&lt;/h2&gt;

&lt;p&gt;Including telnet by default is not that great of a request. In fact, Windows used to include telnet by default, up until the Vista/Server 2008 wave. Other popular operating systems, such as Mac OSX, Ubuntu, BSD, and SUSE all include telnet by default. The only OS I could find that didn&amp;rsquo;t include telnet in the default distro was CentOS/RedHat. Have you ever heard of anyone uninstalling the telnet client from their Mac OSX installation because it was unsecure? Ubuntu is one of the most widely used server operating systems on the web, and comes with telnet pre-installed on the server distro. Nobody has a problem with these big players coming with telnet by default, why would Windows be any different?&lt;/p&gt;

&lt;h2 id=&#34;2-unencrypted-traffic-is-ok&#34;&gt;2 - Unencrypted traffic is OK&lt;/h2&gt;

&lt;p&gt;If you have a problem with a server sending unencrypted traffic, then what about the **ftp **and &lt;strong&gt;wget&lt;/strong&gt; clients that are included in most operating systems? Even CentOS has the unencrypted &lt;strong&gt;ftp&lt;/strong&gt; client available in the default distro. The ftp and wget commands both send usernames and passwords in plain-text, in addition to all of the other packets they send/receive. Many of the protocols we use every day are unencrypted, such as FTP, HTTP, DNS, and DHCP. The key is that an educated user can still use unencrypted services if they understand the limitations and precautions that need to be taken. We are a long way away from a 100% encrypted internet.&lt;/p&gt;

&lt;h2 id=&#34;3-telnet-is-outbound-only&#34;&gt;3 - Telnet is outbound only&lt;/h2&gt;

&lt;p&gt;The telnet client does not represent a significant security risk because it does not listen for requests, but rather only initiates outbound requests. There&amp;rsquo;s no risk of outside entities attacking your telnet client. You choose when and who to initiate traffic to. There are no open ports, there are no always-running daemons.&lt;/p&gt;

&lt;p&gt;The default FTP and HTTP tools have access to your hard drive and your file system, which would allow a man-in-the-middle to alter the file that you are downloading in-transit. FTP and HTTP protocols have been widely used to deploy viruses and other malware. These are unsecure protocols that are far more dangerous than telnet, and yet their presence is considered the default state. Telnet is a pure communication channel, and so it is not possible to be served a virus or other bad code through a MITM session.&lt;/p&gt;

&lt;h2 id=&#34;4-telnet-is-useful&#34;&gt;4 - Telnet is useful&lt;/h2&gt;

&lt;p&gt;Telnet is a powerful tool for testing a variety of functionality. Telnet is crucial for the validation and troubleshooting of SMTP servers. Telnet allows you to test and confirm open ports and firewall settings. As long as you&amp;rsquo;re aware of the risks (unencrypted traffic), telnet is a tool that should be in everyone&amp;rsquo;s repertoire and on every server.&lt;/p&gt;

&lt;p&gt;If you blocked all unencrypted traffic, the internet would be in shambles. Most email would stop flowing (SMTP), the majority of sites would go dark (HTTP), and file servers everywhere would disappear (FTP). You shouldn&amp;rsquo;t be using telnet to connect to your secure network devices, but you also shouldn&amp;rsquo;t be using HTTP to connect to your secure banking website. Telnet is a useful for plenty of other situations. When FTP or HTTP tools are included on every operating system, why leave out the as-secure and yet often more-useful telnet?&lt;/p&gt;

&lt;h2 id=&#34;5-don-t-blame-the-tool&#34;&gt;5 - Don&amp;rsquo;t blame the tool&lt;/h2&gt;

&lt;p&gt;We&amp;rsquo;ve all heard the stories of misguided administrators using telnet to connect to their secure network devices or very important data sources. We should be replacing telnet with SSH wherever possible, especially if there is any confidential data or passwords involved. Telnet is not even an acceptable management tool inside a firewalled network, because you never know if your network has been compromised. I am not advocating the use of telnet for purposes that do not suit it.&lt;/p&gt;

&lt;p&gt;The fact is that there are use cases for telnet that make sense and that will not be replaced by encrypted protocols in the near future. A completely encrypted worldwide SMTP network is still years away, and until then, telnet is a valuable tool when working with mail. When working with other unencrypted services, telnet is a simple and effective tool for confirming firewall settings and doing basic testing. It&amp;rsquo;s not for managing your switches or servers, but rather as a basic networking tool like netcat or ping.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Copying WoW macro and addon settings during a realm transfer</title>
      <link>https://chasechristian.com/blog/2012/08/copying-wow-macro-and-addon-settings-during-a-realm-transfer/</link>
      <pubDate>Wed, 01 Aug 2012 07:58:35 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2012/08/copying-wow-macro-and-addon-settings-during-a-realm-transfer/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;My guild is transferring from Azgalor-US to Mal&amp;rsquo;Ganis-US, so I figured this would be a good time to work on a project for copying my macro and addon settings between server profiles. You&amp;rsquo;ll need to know your new server and character names up front.&lt;/p&gt;

&lt;p&gt;Your account information is stored in:&lt;/p&gt;

&lt;blockquote&gt;C:\Program Files (x86)\World of Warcraft\WTF\Account&lt;/blockquote&gt;

&lt;p&gt;Pick the folder for the account that contains the character you&amp;rsquo;d like to transfer. I have a total of 30 account folders in my current WoW install, which means I&amp;rsquo;ve logged into 30 accounts from my PC!&lt;/p&gt;

&lt;h2 id=&#34;1-make-a-backup&#34;&gt;1 - Make a Backup&lt;/h2&gt;

&lt;p&gt;First, make a backup of the folder. Make a copy on your desktop or in your My Documents folder to ensure we can revert back if necessary.&lt;/p&gt;

&lt;h2 id=&#34;2-prepare-the-character-folder&#34;&gt;2 - Prepare the Character Folder&lt;/h2&gt;

&lt;p&gt;Now, open up your account folder. You should see some server names listed as well as some other things:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/07/servers.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/07/servers.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are a few different sections here. Basically, all of the &lt;strong&gt;files&lt;/strong&gt; at this level are safe, as none of them are specific to your server or characters. What we&amp;rsquo;re concerned with are is the &lt;strong&gt;SavedVariables&lt;/strong&gt; and &lt;strong&gt;Realm/Character&lt;/strong&gt; &lt;strong&gt;folders&lt;/strong&gt;. The files in these specific server folders and the generic SavedVariables folder all contain references to your old character name and your old realm name. We need to go through and re-do all of that in order to have everything carry over smoothly. We&amp;rsquo;re going to do the character folder first.&lt;/p&gt;

&lt;p&gt;Navigate down to the character folder that you&amp;rsquo;ll be transferring. This puts me in folder:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;C:\Program Files (x86)\WoW\WTF\Account~~\Azgalor\Cure&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We&amp;rsquo;re going to use PowerShell for this next bit, so hopefully you&amp;rsquo;re using Windows!&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s the command:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;gci -recurse | ? {$_.Attributes -ne &amp;ldquo;Directory&amp;rdquo;} | % {(gc $_.FullName) -replace &amp;ldquo;&lt;strong&gt;OLDNAME&lt;/strong&gt;&amp;rdquo;,&amp;rdquo;&lt;strong&gt;NEWNAME&lt;/strong&gt;&amp;rdquo; | sc -path $_.FullName }&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Basically, this command is going to go through and rename every instance of &amp;ldquo;&lt;strong&gt;OLDNAME&lt;/strong&gt;&amp;rdquo; with &amp;ldquo;&lt;strong&gt;NEWNAME&lt;/strong&gt;&amp;rdquo;. We&amp;rsquo;ll need to run this once or twice. If you have the same toon name on the destination server, then you just need to change your old realm name to your new realm name and everything is peachy. If you are changing your name too, you&amp;rsquo;ll need to run it again to edit the name. Here&amp;rsquo;s what I ran exactly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;C:\Program Files (x86)\WoW\WTF\Account~~\Azgalor\Cure&amp;gt; gci -recurse | ? {$_.Attributes -ne &amp;ldquo;Directory&amp;rdquo;} | % {(gc $_FullName) -replace &amp;ldquo;Cure&amp;rdquo;,&amp;ldquo;Radsushi&amp;rdquo; | sc -path $_.FullName }&lt;/p&gt;

&lt;p&gt;C:\Program Files (x86)\WoW\WTF\Account~~\Azgalor\Cure&amp;gt; gci -recurse | ? {$_.Attributes -ne &amp;ldquo;Directory&amp;rdquo;} | % {(gc $_.FullName) -replace &amp;ldquo;Azgalor&amp;rdquo;,&amp;ldquo;Mal&amp;rsquo;Ganis&amp;rdquo; | sc -path $_.FullName }&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So only two commands here. Each one will take a bit to run, but that&amp;rsquo;s fine. Once you&amp;rsquo;re done, we have &lt;strong&gt;PREPARED THE CHARACTER FOLDER&lt;/strong&gt;!&lt;/p&gt;

&lt;h2 id=&#34;3-prepare-the-savedvariables-folder&#34;&gt;3 - Prepare the SavedVariables Folder&lt;/h2&gt;

&lt;p&gt;Navigate to your account&amp;rsquo;s global SavedVariables folder. This puts me in folder:&lt;/p&gt;

&lt;blockquote&gt;C:\Program Files (x86)\WoW\WTF\Account\~~\SavedVariables\&lt;/blockquote&gt;

&lt;p&gt;Here&amp;rsquo;s the command:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;gci -recurse | ? {$_.Attributes -ne &amp;ldquo;Directory&amp;rdquo;} | % {(gc $_.FullName) -replace &amp;ldquo;&lt;strong&gt;OLDCHAR - OLDREALM&lt;/strong&gt;&amp;rdquo;,&amp;rdquo;&lt;strong&gt;NEWCHAR - NEWREALM&lt;/strong&gt;&amp;rdquo; | sc -path $_.FullName }&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This time, we&amp;rsquo;re trying to find something like &amp;ldquo;Cure - Azgalor&amp;rdquo; and we want to replace it with &amp;ldquo;Radsushi - Mal&amp;rsquo;Ganis&amp;rdquo;. This won&amp;rsquo;t fix ALL of your addons, but it should fix most of them. The reason that we don&amp;rsquo;t run the other commands for this folder is that we don&amp;rsquo;t want to overwrite the values for your other characters that might be staying behind on the old server.&lt;/p&gt;

&lt;h2 id=&#34;4-copy-the-new-folder&#34;&gt;4 - Copy the New Folder&lt;/h2&gt;

&lt;p&gt;Now we need to copy the character folder to your new realm. If you don&amp;rsquo;t already have a folder for your new realm, create one. Then, copy your old character folder from your old realm (like \Azgalor\Cure) to your new realm (\Mal&amp;rsquo;Ganis\Radsushi):&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/08/transfer.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/08/transfer.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you&amp;rsquo;re done! Kick back and fix the few addons that might&amp;rsquo;ve screwed up (Postal is one of the few that doesn&amp;rsquo;t like this process much).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>My time with server 2012 and metro</title>
      <link>https://chasechristian.com/blog/2012/07/my-time-with-server-2012-and-metro/</link>
      <pubDate>Sun, 29 Jul 2012 09:15:40 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2012/07/my-time-with-server-2012-and-metro/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;Over the past week, I spent my free time installing the new suite of Microsoft products onto my home VMware environment. I like to be ahead of the curve when it comes to new technology and software. I was an early adopter of Vista (unfortunately) and Windows 7 (just to escape Vista). Once I read about &lt;a href=&#34;http://blogs.technet.com/b/exchange/archive/2012/07/23/the-new-exchange.aspx&#34;&gt;the preview release of Exchange 2013&lt;/a&gt;, I had to give it a spin.&lt;/p&gt;

&lt;h2 id=&#34;the-installation&#34;&gt;The installation&lt;/h2&gt;

&lt;p&gt;I ran into a few issues getting the new Server 2012 operating system to work on my fully-updated ESXi 5u1 environment. Windows Server would start installing, but then stall after the first reboot. I was able to fix the issue by adding these lines to the *.vmx files for my new VMs via SSH/vi:&lt;/p&gt;

&lt;blockquote&gt;hypervisor.cpuid.v0 = FALSE

mce.enable = TRUE

vmGenCounter.enable = FALSE&lt;/blockquote&gt;

&lt;p&gt;Installation was fast onto my SSD-based datastore. I obtained my evaluation copies from Microsoft directly. I would recommend at least 4 cores for Exchange 2013 on Server 2012, as it was hitting 100% CPU usage on my original 2-core VM. A fresh Server 2012 install takes up about 12GB of space without any roles or features installed (except for &lt;strong&gt;telnet&lt;/strong&gt;). As a note for anyone at Microsoft reading this: not including &lt;strong&gt;telnet&lt;/strong&gt; in the default installation is an egregious offense.&lt;/p&gt;

&lt;p&gt;I set up one Server 2012 server as a domain controller with DNS, another Server 2012 server as my Exchange 2013 member server, and a Windows 8 workstation with Outlook 2013 as a client. I used all IPv6 for my networking, and used my favorite &lt;a href=&#34;http://www.startssl.com/&#34;&gt;StartSSL&lt;/a&gt; wildcard certificate to set up SSL. I also used my Ubuntu-based Linode VPS to relay SMTP for me, since port 25 is blocked by my residential ISP.&lt;/p&gt;

&lt;p&gt;With the &lt;strong&gt;dcpromo&lt;/strong&gt; command completely removed in Server 2012, I had to use the Roles/Features wizard (the Roles wizard and Features wizard are now combined) to add DNS and Active Directory Domain Services to my DC. I added a few necessary DNS records and then added my Exchange 2013 and Windows 8 VM to the domain. Finally, I installed Exchange 2013 onto my Server 2012 box, which required a couple of restarts and the manual uninstallation of the latest Visual C++ runtimes.&lt;/p&gt;

&lt;h2 id=&#34;issue-1-hot-corners-don-t-work&#34;&gt;Issue 1: Hot corners don&amp;rsquo;t work&lt;/h2&gt;

&lt;p&gt;While configuring my domain and my Exchange server, I ran into my first major issue with Server 2012: hot corners. By moving my mouse to the top-right corner of the screen, I&amp;rsquo;m able to activate the hot corner, which brings up the new menu:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/07/newstart.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/07/newstart.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The issue with the hot corner design is that it doesn&amp;rsquo;t work in environments where the corners aren&amp;rsquo;t fixed. If you&amp;rsquo;re actually sitting at a physical server with a single monitor attached to it, hot corners are easy to use. Unfortunately, it&amp;rsquo;s 2012, and I can&amp;rsquo;t remember the last time I actually had to plug a monitor into a server. When I&amp;rsquo;m connected to my server via iLO, or RDP, or the VMware console, I can&amp;rsquo;t easily move my mouse into the corner of the screen,  because my mouse can leave the window entirely. I am almost tempted to uninstall the VMware Tools just to lock my cursor inside the window.&lt;/p&gt;

&lt;p&gt;The supposed answer to this issue is the Windows key, which drops you right into the new menu without using your mouse. The Windows key works, if I wanted to use my keyboard. Being able to navigate Windows with just a mouse is now incredibly difficult. This is a feature that was present in every preceding version of Window Server. I don&amp;rsquo;t understand why the addition of the hot corner has to preclude the existence of the Start button. Why not provide both options? The hot corners require more mouse movement and precision than a Start menu, and provides fewer benefits.&lt;/p&gt;

&lt;p&gt;Hot corners were not designed with a mouse in mind, but I can guarantee you that 99.99% of all servers are not managed via touch. Server OS design needs to be mouse-centric, and the focus on touch negatively affects every admin. The fact that there is no &amp;ldquo;Classic&amp;rdquo; option makes it clear that Metro is here to stay, regardless of how negative its impact will be. Server 2008 brought a lot of UI changes with it, but they weren&amp;rsquo;t forced on us and I know a lot of admins that preferred Classic mode. Server 2012 brings changes that are even more dramatic with no chance to opt-out.&lt;/p&gt;

&lt;h2 id=&#34;issue-2-side-to-side-scrolling&#34;&gt;Issue 2: Side-to-side scrolling&lt;/h2&gt;

&lt;p&gt;In the new metro menus, Microsoft has replaced the typical up-down scrolling system with side-to-side scrolling, for no apparent reason.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/07/sidetoside.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/07/sidetoside.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Scrolling has been up-down since its origin, and even the physical wheels on our mouse match this design. We have PgUp and PgDown buttons on our keyboards, not PgLeft and PgRight. There are several menus that scroll side-to-side in Server 2012, and it&amp;rsquo;s disconcerting. In addition, using the scroll wheel here is painfully slow.&lt;/p&gt;

&lt;h2 id=&#34;perk-1-a-dramatically-improved-system-manager&#34;&gt;Perk 1: A dramatically improved System Manager&lt;/h2&gt;

&lt;p&gt;The new System Manager in Server 2012 is dramatically improved. My favorite feature is the landing page, which provides you with quick access to some of the most common administrative tasks:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/07/systemmanager.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/07/systemmanager.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I love the plethora of information that&amp;rsquo;s easily available here. It makes it very easy to spot-check servers to ensure everything is set up properly. In addition, the new System Manager is clearly designed to manage multiple servers quickly and efficiently. It&amp;rsquo;s easy to add and maintain servers:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/07/addservers.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/07/addservers.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/07/remotemanage.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/07/remotemanage.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am pretty impressed by how easy it was to use a single System Manager to manage multiple servers. To make it even easier, RSAT options are now available without any downloads necessary:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/07/rsat.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/07/rsat.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&#34;perk-2-built-in-ip-address-management-ipam&#34;&gt;Perk 2: Built-in IP address management (IPAM)&lt;/h2&gt;

&lt;p&gt;I have been looking for a good IPAM solution for years, and &lt;a href=&#34;http://technet.microsoft.com/en-US/library/hh831622&#34;&gt;Microsoft answered the call&lt;/a&gt;. Their new IPAM modules allow you to plug into your existing Windows DHCP and DNS servers to manage all of your subnets. You can easily provision new scopes and globally document statically assigned IPs without relying on a Google Docs spreadsheet.&lt;/p&gt;

&lt;h2 id=&#34;issue-3-the-show-password-button&#34;&gt;Issue 3: The &amp;ldquo;show password&amp;rdquo; button&lt;/h2&gt;

&lt;p&gt;I can&amp;rsquo;t think of any good reason for this button to exist, and I have to assume that it&amp;rsquo;s at least as insecure as including &lt;strong&gt;telnet&lt;/strong&gt; by default:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/07/showpassword.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/07/showpassword.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&#34;perk-3-the-new-file-management-options&#34;&gt;Perk 3: The new file management options&lt;/h2&gt;

&lt;p&gt;The new copy/paste dialogs and the shortcuts in the file manager are welcome improvements from the older versions of Windows:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/07/newoptions.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/07/newoptions.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/07/copypaste.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/07/copypaste.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These features are especially useful for consolidating folders filled with various pictures.&lt;/p&gt;

&lt;h2 id=&#34;issue-4-where-did-network-settings-go&#34;&gt;Issue 4: Where did Network Settings go?&lt;/h2&gt;

&lt;p&gt;I was pretty upset when I couldn&amp;rsquo;t click on my networking icon in the system tray to change my IP address. The new Network and Sharing Center is completely useless, but yet it adds another hoop that I have to jump through in order to get to my adapter settings. Metro takes it a step further and now clicking on the system tray icon brings you a menu that gives you nothing of value:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/07/networks.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/07/networks.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In order to get to anything useful, I have to hit a hot corner, go to Settings, type in &amp;ldquo;network&amp;rdquo;, then select View Network Connections:&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://chasechristian.com/wp-content/uploads/2012/07/network.jpg&#34;&gt;&lt;img src=&#34;http://chasechristian.com/wp-content/uploads/2012/07/network.jpg&#34; alt=&#34;&#34; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Luckily for admins everywhere, the Metro UI that we see in Server 2012 is only a fraction of what Windows 8 users will be facing. While I&amp;rsquo;m not happy about the lack of a Start menu and the clunky hot corner/search style, it&amp;rsquo;s much better than it could&amp;rsquo;ve been.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Reference points</title>
      <link>https://chasechristian.com/blog/2012/04/reference-points/</link>
      <pubDate>Tue, 24 Apr 2012 06:44:19 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2012/04/reference-points/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;I can never remember when things happened in the past. Unless there was something specific about the date or year, I simply can&amp;rsquo;t recall the details. How many years ago did I buy my car? How long have I lived in this apartment?&lt;/p&gt;

&lt;p&gt;The only way that I can figure out when something happened is by tying it to a reference point: one of the few dates that I actually remember. Some of the reference points are obvious due to their significance, while others appear minor even though they&amp;rsquo;ve lodged themselves in my mind.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I remember that I turned 13 during my first year at Rogue Community College. If an event happened before that, then I know we&amp;rsquo;re looking at pre-2000 years.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;I remember that I started my current job on May 16th, because that was payday. Julie came around the office with paychecks, and told me that if I stuck around for two more weeks, I could get one too.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;I remember that I worked for Three Rivers Hospital in Grants Pass from 10/03 to 10/06, because it was exactly three years.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;I remember that I married &lt;a href=&#34;http://glassvortex.com&#34;&gt;Mory&lt;/a&gt; on 6/6/10, because if we had married 4 years earlier, it would&amp;rsquo;ve been 6/6/06.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;I remember that the Omen came out 6/6/06 because it was the only movie I remember that exploited the date. The Dreamcast also came out on 9/9/99, which is also a reference point.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;I remember that I bought my car on July 4th, because I was going to Fry&amp;rsquo;s for their Independence Day sale when we stopped by the Honda dealership.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;I remember that I was never at home after I turned 16, so most of my memories with friends in Oregon were from 2003-2007.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If it weren&amp;rsquo;t for my handful of reference points, I wouldn&amp;rsquo;t know when anything happened. I just try to find the closest reference point to whatever I&amp;rsquo;m trying to remember, and then do some math to figure out when it actually happened. I have tried keeping a journal in the past, but I never kept it updated and it never worked the way I wanted it to. At work, my inbox is my timeline, allowing me to go back to the past. I like Facebook&amp;rsquo;s idea with timeline, but again, I don&amp;rsquo;t update there and so it&amp;rsquo;s not very valuable to me. Twitter only contains my fleeting thoughts and jokes, which makes it a poor guide to the past.&lt;/p&gt;

&lt;p&gt;I guess I&amp;rsquo;m stuck with my reference points.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Why I am learning Linux</title>
      <link>https://chasechristian.com/blog/2012/03/why-i-am-learning-linux/</link>
      <pubDate>Sat, 31 Mar 2012 21:56:51 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2012/03/why-i-am-learning-linux/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	

&lt;p&gt;I made the decision about a year ago to start learning Linux.&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s pretty commonplace in the IT world already, and becoming more prevalent every day. VMWare&amp;rsquo;s domination over the virtualization world grows each year, *nix-based firewalls are now in the Gartner leaders quadrant, even many SANs today are based on *nix technology. If your career is IT, there&amp;rsquo;s no excuse to exclude Linux from your repertoire of skills. I hate saying &amp;ldquo;I can&amp;rsquo;t do that&amp;rdquo; when someone asks me, and Linux skills was a gaping hole on my resumé.&lt;/p&gt;

&lt;p&gt;I was surprised to find that there&amp;rsquo;s so much in common between Linux and Windows. While people are often put off by the number of Linux distributions (distros or flavors), it&amp;rsquo;s no different from the various Windows builds, like Server 2000/2003/2008 or Windows XP/Vista/7. There&amp;rsquo;s a similar architecture in place, and each build or version is unique in its own way. Both Linux and Windows are designed to run on the same hardware, with a CPU, RAM, and hard drives. Because everything is based off of the same hardware model, there&amp;rsquo;s really nothing unique about either OS. Both have ways to install programs easily, run updates, and manage files.&lt;/p&gt;

&lt;h2 id=&#34;the-command-line&#34;&gt;The command line&lt;/h2&gt;

&lt;p&gt;Windows admins are often hesitant to learn Linux due to it&amp;rsquo;s command line-based interface. However, as Powershell and Windows Server Core continue to expand, we&amp;rsquo;re going to find ourselves at the command line more often. At some point, you have to bite the bullet and go back to the old days of &lt;em&gt;cd&lt;/em&gt;&amp;lsquo;ing your way around.&lt;/p&gt;

&lt;h2 id=&#34;it-doesn-t-need-to-be-user-friendly&#34;&gt;It doesn&amp;rsquo;t need to be user-friendly&lt;/h2&gt;

&lt;p&gt;I don&amp;rsquo;t use Linux for my &amp;ldquo;user&amp;rdquo; OS at all. My work laptop and my home PC both run Windows 7, and I&amp;rsquo;m unlikely to ever swap. There&amp;rsquo;s simply too many programs and too much hardware that&amp;rsquo;s incompatible with Linux, and it&amp;rsquo;s not worth the trouble. The Linux GUIs are inconsistent and constantly changing. The true value of Linux comes from its server capabilities.&lt;/p&gt;

&lt;p&gt;I constantly see guides advising people to &amp;ldquo;switch to Linux&amp;rdquo; for a few weeks, such as Ubuntu&amp;rsquo;s ability to actually dual-boot off the same partition as Windows. No. You are doing yourself a disservice as an IT professional by not knowing the world&amp;rsquo;s most popular client OS, Windows. Windows&amp;rsquo; hold on the client market is unlikely to budge any time soon. But, with Linux servers rapidly gaining market share in the enterprise IT world, you need to at least have a working knowledge of the technology to stay relevant.&lt;/p&gt;

&lt;p&gt;By learning Linux over the past several months, I have already solved several client requests/issues that I would&amp;rsquo;ve previously been unable to address. Expanding my capabilities has allowed me to tackle more issues, which directly results in a more satisfied client and a financial win for my company.&lt;/p&gt;

&lt;h2 id=&#34;break-it-then-fix-it&#34;&gt;Break it, then fix it&lt;/h2&gt;

&lt;p&gt;I began my Linux education by starting a project to run my own Mumble server. I had been paying money out of my pocket every month to my friend Antiarc for Mumble services, but I thought it would be a fun experiment to try running it on my own. I bought a small VPS from Linode on Antiarc&amp;rsquo;s advice, and installed my first build of Ubuntu server. I spent weeks poring over Linode&amp;rsquo;s library of Linux documentation and the internet, struggling with all of the challenges that come from learning a completely different OS and environment. After many long nights of struggling, I finally got my Mumble server up and running.&lt;/p&gt;

&lt;p&gt;In the months since then, I now run a website, a wiki, my Mumble server, a mail server (Postfix/Dovecot/Squirrelmail), a proxy server (Squid), and my DNS servers for all of my domains on my Ubuntu servers. Between my two geographically-separate Linux servers, I&amp;rsquo;m getting thousands of different requests a day. I am always looking for the next Linux project I want to tackle. The amazing thing is that I&amp;rsquo;m doing all of this on servers with 256MB of RAM, which is a feat I&amp;rsquo;d have a hard time replicating on Windows.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Test post from iPhone</title>
      <link>https://chasechristian.com/blog/2012/03/test-post-from-iphone/</link>
      <pubDate>Mon, 26 Mar 2012 20:02:25 +0000</pubDate>
      <author>madsushi@gmail.com (Chase Christian)</author>
      <guid>https://chasechristian.com/blog/2012/03/test-post-from-iphone/</guid>
      <description>
	<media:content type="image/jpeg" medium="image" width="900" height="600" url="https://www.chasechristian.com" />
	&lt;p&gt;&lt;img src=&#34;https://chasechristian.com/media/images/pandaexpress.jpg&#34; alt=&#34;panda express&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Going to lunch with Bjoern and Marshall.&lt;/p&gt;

&lt;p&gt;Bjoern is a crazy driver.&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;re headed to Panda Express.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
