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

<channel>
	<title>Adam Koch</title>
	<atom:link href="http://www.adamkoch.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adamkoch.com</link>
	<description>Software Developer and Clean Code Advocate</description>
	<lastBuildDate>Mon, 25 Feb 2013 14:49:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Using getters in equals() method</title>
		<link>http://www.adamkoch.com/2012/11/30/using-getters-in-equals-method/</link>
		<comments>http://www.adamkoch.com/2012/11/30/using-getters-in-equals-method/#comments</comments>
		<pubDate>Fri, 30 Nov 2012 16:56:55 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[equals]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[lazy loading]]></category>
		<category><![CDATA[proxies]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://www.adamkoch.com/?p=2565</guid>
		<description><![CDATA[I have an uncontrollable urge to refactor. To a fault. Most everything. If I was cleaning a campsite, I would be putting in indoor plumbing. So, when I opened an old class I changed the old hashcode and equals methods with our team&#8217;s standard use of HashBuilder and EqualsBuilder. (The reason for opening the class [...]]]></description>
			<content:encoded><![CDATA[<p>I have an uncontrollable urge to refactor. To a fault. Most everything. If I was cleaning a campsite, I would be putting in indoor plumbing. So, when I opened an old class I changed the old <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#hashCode()">hashcode</a> and <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#equals(java.lang.Object)">equals</a> methods with our team&#8217;s standard use of <a href="http://commons.apache.org/lang/apidocs/index.html?org/apache/commons/lang3/builder/HashCodeBuilder.html">HashBuilder</a> and <a href="http://commons.apache.org/lang/apidocs/org/apache/commons/lang3/builder/EqualsBuilder.html">EqualsBuilder</a>. (The reason for opening the class was to add a <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#toString()">toString</a> method.)</p>
<pre class="brush: java; collapse: true; light: false; title: Old Eclipse template for using EqualsBuilder; toolbar: true; notranslate">
@Override
public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj == null) {
        return false;
    }
    if (!(obj instanceof ${enclosing_type})) {
        return false;
    }
    ${enclosing_type} other = (${enclosing_type}) obj;
    ${builderType:newType(org.apache.commons.lang3.builder.EqualsBuilder)} ${builder:newName(builderType)} = new ${builderType}();
    ${builder}.append(this.${field}, other.${field}());${cursor}

    return ${builder}.isEquals();
}
</pre>
<p>When I ran the application again (I was trying to find a bug) I wasn&#8217;t getting to the same place in the code as before. Stepping through with the debugger I noticed that I was no longer returning &#8220;true&#8221; during a comparison of the object I had just changed. So I went back to the old version of the equals method. I could not visually see a difference. So I wrote a <a href="http://www.junit.org/">JUnit</a> test case to test the equals method, specifically for <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#equals(java.lang.Object)">symmetry</a>. That didn&#8217;t get me very far; everything passed as expected.</p>
<p>So I ran the program through the debugger stopping in the equals method for comparison. It looked like the passed in object had nulls for everything. I changed my JUnit tests to test for the same setup, but it worked as expected.</p>
<p>So I went back and created 2 equals methods. Then I had each run and if there was a difference between the old equals method and the new equals method, I would just exit the program:</p>
<pre class="brush: java; gutter: false; title: ; toolbar: false; notranslate">
@Override
public boolean equals(final Object obj) {
    // TEMPORARY!!!
    final boolean newEquals = newEquals(obj);
    final boolean oldEquals = oldEquals(obj);
    if (newEquals != oldEquals) {
        newEquals(obj); // for debugging, I can step through the method again
        oldEquals(obj); // for debugging, I can step through the method again
        LOGGER.error(&quot;newEquals (&quot; + newEquals + &quot;) doesn't equal oldEquals (&quot; + oldEquals + &quot;)!!!&quot;);
        LOGGER.error(&quot;this = &quot; + this);
        LOGGER.error(&quot;obj = &quot; + obj);
        System.exit(1); // TEMPORARY!!!
    }
    return oldEquals;
}</pre>
<p>I re-ran the JUnit test, but still no luck.</p>
<p>I re-ran the application and viola the equals methods were different and the app exited. But what was going on?</p>
<p>I added a breakpoint in the equals method and looked at the state of the variables again. That&#8217;s when I noticed the my object being passed in wasn&#8217;t what I expected, but some kind of proxy object. I expanded the object and found a target variable. I expanded that and saw the values matched the &#8220;this&#8221; object!</p>
<div id="attachment_2573" class="wp-caption alignnone" style="width: 650px"><a href="http://www.adamkoch.com/wp-content/uploads/2012/11/equals_comparison.png"><img class="size-large wp-image-2573" title="Equals Comparison Screenshot" src="http://www.adamkoch.com/wp-content/uploads/2012/11/equals_comparison-1024x501.png" alt="" width="640" height="313" /></a><p class="wp-caption-text">Equals Comparison Screenshot</p></div>
<p>I looked back at the <code>equals</code> methods. The original equals method has get() and mine had just the direct access to the member variable. I step throw the call to the get method and found the proxy will load the member variables to their real values.</p>
<p>So, the lesson I learned was that I need to be calling the get methods in my equals method for the object being passed in. I changed my equals template to add a long-winded explanation for the change. Here&#8217;s my Eclipse template:</p>
<pre class="brush: java; gutter: false; title: Improved Eclipse Template for EqualsBuilder; toolbar: true; notranslate">
@Override
public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj == null) {
        return false;
    }
    if (!(obj instanceof ${enclosing_type})) {
        return false;
    }
    ${enclosing_type} other = (${enclosing_type}) obj;
    ${builderType:newType(org.apache.commons.lang3.builder.EqualsBuilder)} ${builder:newName(builderType)} = new ${builderType}();
    // You want to use get() methods because ${enclosing_type} might by a &quot;proxy&quot; that libraries (such as Hibernate with CGLIB) will create. (Hibernate uses proxies for lazy loading.) And if the object is not loaded, then access to the fields directly will yield nulls. But calls to the get() methods are intercepted and the proxy returns the correct value. See https://forum.hibernate.org/viewtopic.php?t=946468
    ${builder}.append(this.${name}, other.get${name}());${cursor}

    return ${builder}.isEquals();
}
</pre>
<p>Thanks go to <cite title="equals() needed to use get() methods"><a href="https://forum.hibernate.org/viewtopic.php?t=946468">this post</a></cite> for helping me understand the issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamkoch.com/2012/11/30/using-getters-in-equals-method/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sublist not Serializable</title>
		<link>http://www.adamkoch.com/2012/10/24/sublist-not-serializable/</link>
		<comments>http://www.adamkoch.com/2012/10/24/sublist-not-serializable/#comments</comments>
		<pubDate>Wed, 24 Oct 2012 15:08:12 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[list]]></category>
		<category><![CDATA[serializable]]></category>
		<category><![CDATA[sublist]]></category>

		<guid isPermaLink="false">http://www.adamkoch.com/?p=2556</guid>
		<description><![CDATA[I guess this was already known by some, but I didn&#8217;t know that if you sublist a List that was Serializable, you will get back a list that is not. import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class SerializableSubListTest { &#160;&#160; public static void main(String[] args) { &#160;&#160;&#160;&#160; List list = new ArrayList(); &#160;&#160;&#160;&#160; list.add(new [...]]]></description>
			<content:encoded><![CDATA[<p>I guess this was already <a href="http://stackoverflow.com/questions/11045850/error-jsf-primefaces-serializable-of-arraylist-doesnt-work">known</a> <a href="http://stackoverflow.com/questions/10797663/removing-tail-of-x-elements-from-a-list">by</a> <a href="http://stackoverflow.com/questions/11685751/no-enclosed-type-error-how-does-it-work">some</a>, but I didn&#8217;t know that if you <a href="http://docs.oracle.com/javase/6/docs/api/java/util/List.html#subList(int, int)">sublist</a> a <a href="http://docs.oracle.com/javase/6/docs/api/java/util/List.html">List</a> that was <a href="http://docs.oracle.com/javase/6/docs/api/java/io/Serializable.html">Serializable</a>, you will get back a list that is not.</p>
<p><code><br />
import java.io.Serializable;<br />
import java.util.ArrayList;<br />
import java.util.List;</p>
<p>public class SerializableSubListTest {<br />
&nbsp;&nbsp;    public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;        List<Serializable> list = new ArrayList<Serializable>();<br />
&nbsp;&nbsp;&nbsp;&nbsp;        list.add(new Serializable(){private static final long serialVersionUID = 1L;});</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;        System.out.println("list instanceof Serializable = " + (list instanceof Serializable));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;        List<Serializable> subList = list.subList(0, 1);</p>
<p>        System.out.println("subList instanceof Serializable = " + (subList instanceof Serializable));<br />
&nbsp;&nbsp;    }<br />
}<br />
</code><br />
<code>list instanceof Serializable = true<br />
subList instanceof Serializable = false</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamkoch.com/2012/10/24/sublist-not-serializable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What I Learned At Barcamp</title>
		<link>http://www.adamkoch.com/2012/09/08/what-i-learned-at-barcamp/</link>
		<comments>http://www.adamkoch.com/2012/09/08/what-i-learned-at-barcamp/#comments</comments>
		<pubDate>Sat, 08 Sep 2012 21:14:49 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[barcamp]]></category>

		<guid isPermaLink="false">http://www.adamkoch.com/?p=2499</guid>
		<description><![CDATA[Slash Biltboard.com will be launching a new app to capture your work in progress process. Momomaha.com You have to develop a thick skin to blog about your personal life. And not everyone will like you &#8212; accept it. 5 things you can do to motivate your team: Stand up Hurry up Shut up Pair up [...]]]></description>
			<content:encoded><![CDATA[<p>Slash<br />
Biltboard.com will be launching a new app to capture your work in <span style="text-decoration: line-through;">progress</span> process.</p>
<p>Momomaha.com<br />
You have to develop a thick skin to blog about your personal life. And not everyone will like you &#8212; accept it.</p>
<p>5 things you can do to motivate your team:</p>
<ol>
<li>Stand up</li>
<li>Hurry up</li>
<li>Shut up</li>
<li>Pair up &#8211; not just programming</li>
<li>Think up &#8211; think positively</li>
</ol>
<p>How To Work with Your Spouse<br />
Communicate! But don&#8217;t talk about work at home or home at work.<br />
Having a 3rd person to settle debates is good.</p>
<p>Manage Users like a Roman Centenarian<br />
Accept what is not in your control. Prepare for the worst.</p>
<p>They could charge double the price and it would still be a great deal!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamkoch.com/2012/09/08/what-i-learned-at-barcamp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serialization, Beans and PMD</title>
		<link>http://www.adamkoch.com/2012/08/28/serialization-beans-and-pmd/</link>
		<comments>http://www.adamkoch.com/2012/08/28/serialization-beans-and-pmd/#comments</comments>
		<pubDate>Wed, 29 Aug 2012 00:25:12 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.adamkoch.com/?p=2460</guid>
		<description><![CDATA[There is a PMD rule that checks for getters and setters on Java Beans: BeanMembersShouldSerialize. I have a lot of these violations in my code. I'd rather understand the issue than just turn it off, but I'm struggling with what it means.]]></description>
			<content:encoded><![CDATA[<p>There is a <a href="http://pmd.sourceforge.net/">PMD</a> rule that checks for mutators (getters and setters) on Java Beans: <a href="http://pmd.sourceforge.net/snapshot/rules/java/javabeans.html">BeanMembersShouldSerialize</a>. I have a lot of these violations in my code. I&#8217;d rather understand the issue than just turn it off, but I&#8217;m struggling with what it means.</p>
<p>What I learned is: being Serializable does not make a class a Java Bean. <ins>And, to be Serializeable, you don&#8217;t need mutators.</ins></p>
<p>But PMD thinks my object is a bean. Why?<span id="more-2460"></span></p>
<p>After reading <a href="http://pmd.sourceforge.net/snapshot/xref/net/sourceforge/pmd/lang/java/rule/javabeans/BeanMembersShouldSerializeRule.html">the source</a>, I determined that there are only a few criteria that exclude classes:</p>
<ol>
<li>if it&#8217;s an interface</li>
<li>if the variable is transient</li>
<li>if the variable is static</li>
</ol>
<p>Otherwise, PMD assumes it&#8217;s a bean and tries to match variables with methods. If there isn&#8217;t both a setter and getter, it creates a violation.</p>
<p>My Serializable classes are not Beans and do not need getters and setters. So I think I can safely turn off this warning.</p>
<p>Thoughts?</p>
<p><ins>Edit: PMD should change the rule:</p>
<ol>
<li>Only check Java Beans (or at least Serializable classes)</li>
<li>Re-word the rule to something like &#8220;Java Beans should have mutators (getters and setters)&#8221;</li>
</ol>
<p></ins></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamkoch.com/2012/08/28/serialization-beans-and-pmd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>List App</title>
		<link>http://www.adamkoch.com/2012/08/25/list-app/</link>
		<comments>http://www.adamkoch.com/2012/08/25/list-app/#comments</comments>
		<pubDate>Sat, 25 Aug 2012 17:47:09 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[list]]></category>

		<guid isPermaLink="false">http://www.adamkoch.com/?p=2468</guid>
		<description><![CDATA[I have an idea for an online list making app. The list can be sorted on any number of attributes. Attributes can be added at any time and once "activated" you can drag and drop your list to the order you want for that attribute. Then, if you go to another attribute, it again can be drag and dropped into order, but the order is remembered. So if you go back to the first attribute, the items are resorted based on that attribute.]]></description>
			<content:encoded><![CDATA[<p>I have an idea for an online list making app. The list can be sorted on any number of attributes (or &#8220;sorts&#8221;). Attributes can be added at any time and once &#8220;activated&#8221; you can drag and drop your list to the order you want for that attribute. Then, if you go to another attribute, it again can be drag and dropped into order, but the order is remembered. So if you go back to the first attribute, the items are resorted based on that attribute.</p>
<p><span id="more-2468"></span></p>
<p>Let&#8217;s be materialistic and say I have a list of things I want.</p>
<ul>
<li>Car</li>
<li>TV</li>
<li>Blu-ray player</li>
<li>iPad</li>
</ul>
<p>Each of these have a different order based on different attributes. For example, if I sorted by the order of price, I might have</p>
<ul>
<li>Blu-ray player</li>
<li>iPad</li>
<li>TV</li>
<li>Car</li>
</ul>
<p>I also might want to sort how soon I want an item. (I would need a TV before a Blu-ray player.)</p>
<ul>
<li>TV</li>
<li>Blu-ray player</li>
<li>Car</li>
<li>iPad</li>
</ul>
<p>Here&#8217;s a my mockup:</p>
<div id="attachment_2475" class="wp-caption alignnone" style="width: 650px"><a href="http://www.adamkoch.com/wp-content/uploads/2012/08/balsamiq21.png"><img class="size-large wp-image-2475" title="Mockup3" src="http://www.adamkoch.com/wp-content/uploads/2012/08/balsamiq21-1024x360.png" alt="" width="640" height="225" /></a><p class="wp-caption-text">Mockup by Balsamiq</p></div>
<div class="mceTemp">Anyone know of such an app?</div>
<p>Thoughts?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamkoch.com/2012/08/25/list-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tech Lead Checklist</title>
		<link>http://www.adamkoch.com/2012/08/23/tech-lead-checklist/</link>
		<comments>http://www.adamkoch.com/2012/08/23/tech-lead-checklist/#comments</comments>
		<pubDate>Thu, 23 Aug 2012 19:05:58 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[lead]]></category>
		<category><![CDATA[leadership]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.adamkoch.com/?p=2458</guid>
		<description><![CDATA[I recently read the article Tech Lead Checklist to Kick your Team into Gear, recommended by my tech lead. Here are some things our team does and does not do. Daily Require written standup reports each day Nope. We don’t do this. Once every other week I might write something up but it contains more [...]]]></description>
			<content:encoded><![CDATA[<p>I recently read the article <a href="http://blog.assembla.com/assemblablog/tabid/12618/bid/13707/Tech-Lead-Checklist-to-Kick-your-Team-into-Gear.aspx">Tech Lead Checklist to Kick your Team into Gear</a>, recommended by my tech lead. Here are some things our team does and does not do.</p>
<h2>Daily</h2>
<table>
<tbody>
<tr>
<td>Require written standup reports each day</td>
<td>Nope. We don’t do this. Once every other week I might write something up but it contains more than what I did that day. And other times when someone (one person in particular) can’t attend our scrum they will send an email.</td>
</tr>
<tr>
<td>Attend a daily chat</td>
<td>Yup. That’s our daily scrum.</td>
</tr>
<tr>
<td>Resolve roadblocks</td>
<td>Yes, I do this.</td>
</tr>
<tr>
<td>Look at individual detailed activity</td>
<td>Really? I peruse <a href="http://www.atlassian.com/software/fisheye/overview">Fisheye</a> occasionally, but I don’t think I do any “detailed” investigation.</td>
</tr>
<tr>
<td>Move requests to ticket system</td>
<td>Yea, I usually put in “issues” which can be turned into backlogs during sprint planning.</td>
</tr>
<tr>
<td>Let team members select their own tasks.</td>
<td>We try to let our developers do that. But some ask what they should work on and I do assign tasks.</td>
</tr>
<tr>
<td>Watch for lack of commits and ask developers to break into smaller tasks</td>
<td>I believe in atomic check ins. However, without a “quiet period” the continuous server will keep rebuilding. Plus it makes it harder to say “this commit was for feature X” when really there were 10 such commits. I’ve often wondered about using Git locally to make these atomic commits and then checking them to <span class="caps">SVN.</span></td>
</tr>
</tbody>
</table>
<h2>Weekly</h2>
<table>
<tbody>
<tr>
<td>Review tickets</td>
<td>I usually review ones that are specific to the project I’m most working on more frequently than weekly.</td>
</tr>
<tr>
<td>Ask specific developers to plan large tasks</td>
<td>Done by me.</td>
</tr>
<tr>
<td>Post team tasks completed and what is planned for the next week</td>
<td>I can’t say we do this.</td>
</tr>
</tbody>
</table>
<h2>Bi-Weekly</h2>
<table>
<tbody>
<tr>
<td>Find developers interested in new projects</td>
<td>We often are asked what sounds interesting to us and we try to pass that on when talking about features of a project.</td>
</tr>
<tr>
<td>Do “onboarding”</td>
<td>Our tech lead did a great job with this a year ago when I joined his team. I’ve tried to create Eclipse templates that others can use. We would need to work on this more if we were expecting any developer to join the team.</td>
</tr>
<tr>
<td>Evaluate trial developers</td>
<td>We don’t have any trial developers but we look at our current developers and assess them. If we don’t think they are working out, we are willing to try other developers.</td>
</tr>
</tbody>
</table>
<p>So what does this mean? It means I&#8217;m already doing a lot that a tech lead should be doing, so I&#8217;d be totally comfortable taking that position. (Hint, hint, wink, wink, nudge, nudge.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamkoch.com/2012/08/23/tech-lead-checklist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Scala</title>
		<link>http://www.adamkoch.com/2012/08/03/first-scala/</link>
		<comments>http://www.adamkoch.com/2012/08/03/first-scala/#comments</comments>
		<pubDate>Fri, 03 Aug 2012 21:05:24 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://www.adamkoch.com/?p=2300</guid>
		<description><![CDATA[I was hoping for def sayHello(name) { &#160;&#160;println("Hello, " + name) } ("world", "Adam").foreach(sayHello) but will have to settle for def sayHello(name: String) { &#160;&#160;println("Hello, " + name) } List("world", "Adam").foreach(sayHello _)]]></description>
			<content:encoded><![CDATA[<p>I was hoping for</p>
<p><code>def sayHello(name) {<br />
&nbsp;&nbsp;println("Hello, " + name)<br />
}</p>
<p>("world", "Adam").foreach(sayHello)</code></p>
<p>but will have to settle for</p>
<p><code>def sayHello(name: String) {<br />
&nbsp;&nbsp;println("Hello, " + name)<br />
}</p>
<p>List("world", "Adam").foreach(sayHello _)</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamkoch.com/2012/08/03/first-scala/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>moz-proxy issues</title>
		<link>http://www.adamkoch.com/2012/05/04/moz-proxy-issues/</link>
		<comments>http://www.adamkoch.com/2012/05/04/moz-proxy-issues/#comments</comments>
		<pubDate>Sat, 05 May 2012 03:33:59 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[sockets]]></category>
		<category><![CDATA[websockets]]></category>

		<guid isPermaLink="false">http://www.adamkoch.com/?p=2164</guid>
		<description><![CDATA[I like Firefox. A lot. Even when it was named Phoenix. I even use it at work (using PortableApps.com). But some sites (ok, only StackExchange sites) I visit I get multiple popups asking for my user name and password. Because I&#8217;m behind a firewall I have to enter my credentials, no big deal. But they [...]]]></description>
			<content:encoded><![CDATA[<p>I like <a href="http://getfirefox.com">Firefox</a>. A lot. Even <a href="http://en.wikipedia.org/wiki/History_of_Firefox">when it was named Phoenix</a>.</p>
<p>I even use it at work (using <a title="Apps you can take anywhere" href="http://portableapps.com">PortableApps.com</a>).</p>
<p>But some sites (ok, only <a href="http://stackexchange.com/">StackExchange</a> sites) I visit I get multiple popups asking for my user name and password. Because I&#8217;m behind a firewall I have to enter my credentials, no big deal. But they don&#8217;t work! So I have to hit Cancel. Not just once, but, like, 4 times!</p>
<p><span id="more-2164"></span></p>
<div id="attachment_2169" class="wp-caption alignnone" style="width: 657px"><a href="http://www.adamkoch.com/wp-content/uploads/2012/04/proxy1.png"><img class="size-full wp-image-2169" title="Annoying Proxy Authentication Popup" src="http://www.adamkoch.com/wp-content/uploads/2012/04/proxy1.png" alt="Annoying Popup" width="647" height="183" /></a><p class="wp-caption-text">Annoying Popup</p></div>
<div id="attachment_2170" class="wp-caption alignnone" style="width: 657px"><a href="http://www.adamkoch.com/wp-content/uploads/2012/04/proxy2.png"><img class="size-full wp-image-2170" title="Annoying Proxy Authentication Popup 2" src="http://www.adamkoch.com/wp-content/uploads/2012/04/proxy2.png" alt="Annoying Popup 2" width="647" height="183" /></a><p class="wp-caption-text">Annoying Popup 2</p></div>
<p>And it&#8217;s not the HTTP proxy, it&#8217;s asking for a &#8220;moz-proxy&#8221;.</p>
<p>I finally decided to <a href="http://www.google.com/search?q=moz-proxy">Google my issue</a>. I found <a href="http://support.mozilla.org/en-US/questions/850627">some</a> <a href="http://support.mozilla.org/en-US/questions/814632">reports</a> of <a href="http://support.mozilla.org/en-US/questions/890084">others</a> with <a href="http://support.mozilla.org/en-US/questions/920057">the</a> <a href="http://support.mozilla.org/en-US/questions/890084">same</a> <a href="http://superuser.com/questions/398740/firefox-asks-for-proxy-details-but-only-when-accessing-facebook">issue</a>. (Ironically, the last page was from a <a href="http://stackexchange.com/">StackExchange</a> site and produced the error.)</p>
<p>When I found <a title="Firefox Proxy.InstallTrigger bug report" href="https://bugzilla.mozilla.org/show_bug.cgi?id=701029">a page suggesting</a> it was a <a title="Firebug Proxy.InstallTrigger issue" href="http://code.google.com/p/fbug/issues/detail?id=4991">Firebug issue</a> I opened it and found a bunch of &#8220;407 Proxy Authentication Required&#8221; errors for <a href="http://sockets.ny.stockexchange.com">http://sockets.ny.stockexchange.com</a>.</p>
<p><a href="http://www.adamkoch.com/wp-content/uploads/2012/04/firebug.png"><img class="alignnone size-large wp-image-2168" title="firebug" src="http://www.adamkoch.com/wp-content/uploads/2012/04/firebug-1024x510.png" alt="" width="640" height="318" /></a></p>
<p>I also found these errors in the Javascript Console.</p>
<p><a href="http://www.adamkoch.com/wp-content/uploads/2012/04/console.png"><img class="alignnone size-large wp-image-2167" title="console" src="http://www.adamkoch.com/wp-content/uploads/2012/04/console-1024x649.png" alt="" width="640" height="405" /></a></p>
<p>When I saw the &#8220;ws&#8221; protocol I was pretty sure the issue was with <a title="Web Sockets on MDN" href="https://developer.mozilla.org/en/WebSockets">web sockets</a>.</p>
<p>I decided to look to see if I could turn this off.</p>
<p>Google didn&#8217;t provide any obvious <a title="Google search for turning off web sockets" href="https://www.google.com/search?q=turn+off+web+sockets+in+firefox">hits</a>, but at the bottom of <a title="Web Sockets on MDN" href="https://developer.mozilla.org/en/WebSockets">this page</a> it mentioned turning <strong>on</strong> web sockets. So I looked in &#8220;<a href="about:config">about:config</a>&#8221; and filtered on &#8220;socket&#8221;.</p>
<p><a href="http://www.adamkoch.com/wp-content/uploads/2012/04/about-config.png"><img class="alignnone size-full wp-image-2166" title="about-config" src="http://www.adamkoch.com/wp-content/uploads/2012/04/about-config.png" alt="" width="853" height="408" /></a></p>
<p>Sure enough, I was able to disable web sockets! Hurray! And now I don&#8217;t get those popups! Problem solved!</p>
<p>(This <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=701029">bug</a> seems to be related.)</p>
<p>(Maybe I can make <a href="http://www.thedreaming.org/2008/06/18/things-i-hate-about-firefox-3-and-how-to-fix-them/">this guy</a> hate Firefox a little less.)</p>
<p><a href="http://forums.mozillazine.org/viewtopic.php?f=38&amp;t=2341325">More discussion</a> and a  <a href="http://support.mozilla.org/en-US/questions/830546">possible solution</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamkoch.com/2012/05/04/moz-proxy-issues/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Spiders</title>
		<link>http://www.adamkoch.com/2012/04/30/spiders/</link>
		<comments>http://www.adamkoch.com/2012/04/30/spiders/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 17:46:58 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.adamkoch.com/?p=2162</guid>
		<description><![CDATA[I don&#8217;t like spiders. I especially don&#8217;t like spiders that crawl out from the shelves above my desk, drop down to my desk and then disappear when I&#8217;m trying to sweep it off my desk onto the floor so I can step on it. I hate those.]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t like spiders. I especially don&#8217;t like spiders that crawl out from the shelves above my desk, drop down to my desk and then disappear when I&#8217;m trying to sweep it off my desk onto the floor so I can step on it. I hate those.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamkoch.com/2012/04/30/spiders/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Corporate Cup</title>
		<link>http://www.adamkoch.com/2012/04/24/corporate-cup/</link>
		<comments>http://www.adamkoch.com/2012/04/24/corporate-cup/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 02:44:51 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.adamkoch.com/?p=2148</guid>
		<description><![CDATA[Have you ever had a goal and did everything you could to reach that goal? Yea. Neither have I. I decided to give it a try by setting a goal of running in the 2012 Corporate Cup Run. I just got back from my 5th run. 1.5 miles around the neighborhood. And I can honestly [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever had a goal and did everything you could to reach that goal? Yea. Neither have I.</p>
<p>I decided to give it a try by setting a goal of running in the 2012 Corporate Cup Run.</p>
<p>I just got back from my 5th run. 1.5 miles around the neighborhood. And I can honestly say, I hate exercise. I don&#8217;t get any pleasure (read: endorphins) from exercising. I am listening to Java Posse so I did get a couple of chuckles along the way. But boy am I beat.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamkoch.com/2012/04/24/corporate-cup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
