<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:gd="http://schemas.google.com/g/2005" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkANSX8_fSp7ImA9WxFbEEg.&quot;"><id>tag:blogger.com,1999:blog-11698705</id><updated>2010-07-02T02:06:38.145-04:00</updated><title>jaXzin.com</title><subtitle type="html">Stuff that interests me.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.jaxzin.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.jaxzin.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/jaxzin" /><feedburner:info uri="jaxzin" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>41.433851</geo:lat><geo:long>-73.295336</geo:long><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by/3.0/" /><entry gd:etag="W/&quot;DUIFRHY-eSp7ImA9WxBaEUU.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-2820233935111540096</id><published>2010-03-21T12:05:00.000-04:00</published><updated>2010-03-21T12:05:15.851-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-21T12:05:15.851-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="oss" /><category scheme="http://www.blogger.com/atom/ns#" term="best_practices" /><category scheme="http://www.blogger.com/atom/ns#" term="maven" /><title>Best Practices with Maven: OSS forks</title><content type="html">&lt;div&gt;&lt;div&gt;Recently I came across a company that is forking several open source Java projects. I saw they were making a mistake that I also made a few years ago and have since learned from.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In Maven's distributed repository architecture project artifacts, like JAR files, are uniquely identified by a coordinate system composed of a group identifier, an artifact identifier, a version number, optionally a classifier, and a packaging type. For instance, the most recent version of the Apache Commons Lang project has a Maven coordinate (i.e.&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;groupId:artifactId:version:classifier:type&lt;/span&gt;) of &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;commons-lang:commons-lang:2.5::jar&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A few years ago, if I wanted to make custom changes to this project I would get the source, make my changes and then deploy the result to our private Nexus repository under a new groupId such as &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;com.jaxzin.oss:commons-lang:2.5::jar&lt;/span&gt;. That might seem reasonable. Then a year later or so I tried something different and changed the artifactId like this &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;commons-lang:commons-lang-jaxzin:2.5::jar&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unfortunately there is a serious problem with both of these approaches. Maven supports transitive dependencies which means, if you include a dependency you get its dependencies 'for free'. But what happens when you depend on com.jaxzin.oss:commons-lang and indirectly include commons-lang:commons-lang? With either approach, Maven has lost all knowledge that these two artifacts are actually related. And when I say 'related' I mean they include different versions of the same classes. When Maven loses this relationship, it can't perform version conflict resolution and will include both versions in the output. It will compile against both in the classpath. If you are building a WAR file, it will include both in the WEB-INF/lib directory. If you are &lt;a href="http://maven.apache.org/plugins/maven-assembly-plugin/"&gt;assembling&lt;/a&gt; or &lt;a href="http://maven.apache.org/plugins/maven-shade-plugin/"&gt;shading&lt;/a&gt; an "uber"jar, it will include the classes from both in your giant jar with all its dependencies. And unfortunately, the one that 'wins' is nearly indeterministic.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So what's the solution? How do you properly fork an open-source project privately?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The trick is to change the version, and leave the groupId and artifactId alone. That way, Maven still can detect the relationship and can perform version conflict resolution. So to complete the example I would fork Commons Lang 2.5 to a new coordinate &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;commons-lang:commons-lang:2.5-jaxzin-1::jar&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now I do have one further suggestion, but it's of questionable practice and I'm not sure how well it works. You might consider forking version 2.5 to version 2.6-jaxzin. This way, if Maven attempt to resolve version conflicts, it will know that your fork is 'newer/better' than 2.5. Maven sees version with qualifiers as being older than the unqualified version. I think the assumption is that if you are qualifying a version its a pre-release version like 1.0-alpha-1, 1.0-beta-1, or 1.0-rc-1. You can &lt;a href="http://docs.codehaus.org/display/MAVEN/Dependency+Mediation+and+Conflict+Resolution"&gt;read more about how Maven version conflict resolution works&lt;/a&gt; and I know they have a major overhaul of this logic available in Maven 3.0 with the &lt;a href="http://maven.apache.org/mercury/index.html"&gt;Mercury&lt;/a&gt; project.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But, in practice, when I've run into version conflicts like this I will add an exclusion clause where I depend on an artifact that is including the conflict transitively.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-2820233935111540096?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/24JCK2dr5AxQ1nEqaIsgIR81x5M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/24JCK2dr5AxQ1nEqaIsgIR81x5M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/24JCK2dr5AxQ1nEqaIsgIR81x5M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/24JCK2dr5AxQ1nEqaIsgIR81x5M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=tN6TMJV7x0A:PflzCyj9sqw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=tN6TMJV7x0A:PflzCyj9sqw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=tN6TMJV7x0A:PflzCyj9sqw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=tN6TMJV7x0A:PflzCyj9sqw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=tN6TMJV7x0A:PflzCyj9sqw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=tN6TMJV7x0A:PflzCyj9sqw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=tN6TMJV7x0A:PflzCyj9sqw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/tN6TMJV7x0A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/2820233935111540096/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=2820233935111540096" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2820233935111540096?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2820233935111540096?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/tN6TMJV7x0A/best-practices-with-maven-oss-forks.html" title="Best Practices with Maven: OSS forks" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2010/03/best-practices-with-maven-oss-forks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUARXk5fyp7ImA9WxBbGUk.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-4039534899124125721</id><published>2010-03-18T15:20:00.002-04:00</published><updated>2010-03-18T15:24:04.727-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-18T15:24:04.727-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="feel_good" /><category scheme="http://www.blogger.com/atom/ns#" term="daws" /><title>Not for Adoption</title><content type="html">Last night was my first session as a volunteer at the Danbury Animal Welfare Society (DAWS).  I had attended an orientation a few weeks back and that's when I saw the facility for the first time, learned about the standard operating procedures and policies, and got to meet some of the cats I'll be working with.  Now I'm not a person that enjoys change or meeting new people, but other than my immediate family I don't think many people are aware because I try very hard to hide my discomfort.  Who knows, I could be wrong so feel free to call me out in the comments!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So far, this entire experience is quite out of my normal comfort zone, but I'm forcing myself to do this for several reasons.  I learned about DAWS after attending their &lt;a href="http://www.picturesbypaula.com/Fundraisers/DAWS-3rd-PUPPY-LOVE-BALL-2010/11319537_MZWmB#794632388_Vzyf4"&gt;Puppy Love Ball&lt;/a&gt;, a fund-raiser they held in February, in support of &lt;a href="http://www.linkedin.com/pub/paul-caso/4/215/857"&gt;a friend of mine&lt;/a&gt; who was honored as their Person of the Year.  They premiered &lt;a href="http://www.youtube.com/watch?v=PJX8H2vJnQI"&gt;this mission video&lt;/a&gt; at the event and it had me hooked.  To learn that DAWS is a shelter that doesn't euthanize animals for non-medical reasons was a real inspiration to me.  I didn't even know this idea of a 'no-kill' shelter even existed.  Another reason, I have wanted to volunteer somewhere simply to give back to a community.  I'm not sure where my misunderstanding came from, but I've always imagined volunteering to be an unpleasant activity, like cleaning or manual labor.  So when I found out that I could volunteer to be a 'cat socializer', it sounded like a perfect fit.  Since my wife is very allergic to animal hair and dander, this would also be my chance to interact with cats on a regular basis without owning one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;This next statement may come off as brutally honest, another reason I was outside my comfort zone is the facility.  Inside, its a clean, spacious and wonderful facility for the animals, but when I first arrived its exterior isn't exactly what I had expected especially since my introduction to DAWS was the grandeur of the Ball held at the &lt;a href="http://www.ethanallenhotel.com/"&gt;Ethan Allen&lt;/a&gt;.  The building looks like a large residential home and could easily be overlooked as a place of business.  After visiting the DAWS location in Bethel I understood the importance of the sign and landscaping that my friend Paul created.  Hearing about their goal to fundraise for a brand-new state-of-the-art facility by 2019, it made me even more impressed and connected with DAWS.  I'd love to be a small part of them reaching that goal.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I arrived last night a few minutes early, uncertain what to do.  Seeing others waiting outside for the door to open, I introduced myself and found out they were waiting to become adopters.  I was starting to get a little nervous since none were other volunteers.  Was I late? Was there a different entrance?  Did I not read an email fully?  After a few minutes I discovered I hadn't made a mistake when other volunteers arrived.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After a few minutes we were let in and I introduced myself and was introduce to the other cat program volunteers that were there.   Unfortunately I'm joining the volunteer program at a time when everyone needs to be more hands-off with the cats because of a skin infection that is making the rounds in the shelter.  They have done an amazing job handling the situation.  I hope in a few weeks the issue will behind DAWS.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From what I gathered from the my first session, a two-hour evening consists of feeding the cats, playing with them, cleaning litter boxes and then finishing the night by getting everyone back in their cages.  This is the kind of volunteering I can handle!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The thing I really took away from last night though was my experience with a cat named Daphne.  She's a beautiful black &amp;amp; white cat and very reminiscent of the family cat I grew up with for 14 years named Purrina.  She has some trouble with her hind legs, and she seems a bit of a special-needs case because of it.  On her cage is a sign that reads "Not for Adoption" and those three words seemed to say so much about DAWS. Here is a cat that in many cases would be euthanized because no one goes to a shelter looking for a special-needs pet.  But instead DAWS, with their no-kill policy, chose to give this cat a chance to be adopted and she's so close to going home. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Daphne cemented why I want to give two hours of my week to DAWS, in a time when I feel like I don't have 5 extra minutes to spare.  If you are located in the greater Bethel/Danbury area, I encourage you to &lt;a href="http://daws.org/volunteer.html"&gt;donate your time&lt;/a&gt; or &lt;a href="http://daws.org/donate.html"&gt;donate your money&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;object width="320" height="193"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PJX8H2vJnQI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/PJX8H2vJnQI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="193"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-4039534899124125721?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mcbts2xdjTjEMcs58wLNCRh5NMk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mcbts2xdjTjEMcs58wLNCRh5NMk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mcbts2xdjTjEMcs58wLNCRh5NMk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mcbts2xdjTjEMcs58wLNCRh5NMk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=f6uSS9QpcDE:EPod5rzOjpc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=f6uSS9QpcDE:EPod5rzOjpc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=f6uSS9QpcDE:EPod5rzOjpc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=f6uSS9QpcDE:EPod5rzOjpc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=f6uSS9QpcDE:EPod5rzOjpc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=f6uSS9QpcDE:EPod5rzOjpc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=f6uSS9QpcDE:EPod5rzOjpc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/f6uSS9QpcDE" height="1" width="1"/&gt;</content><link rel="related" href="http://www.daws.org" title="Not for Adoption" /><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/4039534899124125721/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=4039534899124125721" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/4039534899124125721?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/4039534899124125721?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/f6uSS9QpcDE/not-for-adoption.html" title="Not for Adoption" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2010/03/not-for-adoption.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ABRXcyfCp7ImA9WxBbF0Q.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-8798925188206523729</id><published>2010-03-12T00:40:00.003-05:00</published><updated>2010-03-16T22:09:14.994-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-16T22:09:14.994-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="technology" /><category scheme="http://www.blogger.com/atom/ns#" term="nosql" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>First Impressions from NoSQL Live</title><content type="html">&lt;p&gt;Today I drove up to Boston for the day to attend &lt;a href="http://nosqlboston.eventbrite.com/"&gt;NoSQL Live&lt;/a&gt;.  My experience so far within the NoSQL community has been limited to what we've built in-house at Disney and ESPN over the past decade to solve our scaling issues, more recently has been ESPN's use of &lt;a href="http://www.ibm.com/software/webservers/appserv/extremescale/"&gt;Websphere eXtreme Scale&lt;/a&gt;, and the very latest has been my own experimentation with HBase which hasn't gotten much further than setting up a four node cluster.  I've read a little about Cassandra, memcached, Tokyo Cabinet and that's about it.  So before the sandman wipes away most of my first impressions of the technologies discussed today, I wanted to record my thoughts for posterity or, at the very least, tomorrow.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="http://incubator.apache.org/cassandra/"&gt;Cassandra&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;Cassandra seems to be the hottest NoSQL solution this month with press about both Twitter and Digg running implementations.  My impression, I'm wary of "eventual consistency".  I don't feel I understand the risk and ramifications well enough to design a system properly.  When &lt;a href="http://spyced.blogspot.com/"&gt;Jonathan Ellis&lt;/a&gt; of Rackspace Cloud mentioned that Digg needed to implement Zookeeper-based locking on top of Cassandra so that diggs get recorded correctly, I realized how poorly I understand eventual consistency and how risky it could be.  But my impression of Cassandra isn't all negative, it definitely seems to have less baggage than HBase by not being built on top of HDFS.  I'll get into what that means a little later.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="http://memcached.org/"&gt;Memcached&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;Unfortunately the speaker that 'represented' memcached gave off a vibe that really turned me off to the product.  I know that's incredibly shallow, but this is first impressions after all and not perfectly-evaluated impressions.  &lt;a href="http://twitter.com/FallenPegasus"&gt;Mark Atwood&lt;/a&gt; sat on the first panel of the day "Scaling with NoSQL" and his whole attitude seemed to say "memcached is all you'll ever need and these guys next to me are just overdesigning hacks".  His answers were short and his tone was quite condescending even when addressing audience questions.  Not a very good first impression of him.  But luckily today wasn't my first impression of memcached as I was pointed in its direction just last week by a Disney colleague.  My research before today has me intrigued about using it as a replacement for ehcache as a second-level cache provider to Hibernate which we use as an ORM in one system at ESPN right now.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Document Oriented Databases (&lt;a href="http://basho.com/"&gt;Riak&lt;/a&gt;, &lt;a href="http://couchdb.apache.org/"&gt;CouchDB&lt;/a&gt;, &lt;a href="http://www.mongodb.org/"&gt;MongoDB&lt;/a&gt;)&lt;/b&gt;&lt;br /&gt;Wow, this is a subgroup of NoSQL technology that I had heard of in passing but was really unaware of what problem they were trying to solve.  Riak had the best answers for scaling and operational-ease.  With homogeneous nodes and consistent hashing, Riak promises that adding and removing nodes are seemless.  CouchDB and MongoDB sounded like a 'me too' answer so I'm interested to find out what that really means for each, or better yet what it doesn't mean.  But the concepts of document-oriented databases really meshes well with ESPN's current fantasy user database.  Our fantasy user profiles are stored in a traditional RDBMS as serialized maps of maps, one row for each user.  Since its serialized to a BLOB column its completely opaque to reporting and analytics.  To keep that model but have vendor support for divining information and having transparency into it sounds exciting.  I really need to look into these.  Riak definitely won this round of first impressions.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://1978th.net/tokyocabinet/"&gt;Tokyo Cabinet&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;This was a technology I was referred to by &lt;a href="http://twitter.com/heckj"&gt;a colleague&lt;/a&gt; and read through their site last week.  I was far from impressed then since it seems much too low-level for my taste, similar to my impressions of &lt;a href="http://carbonado.sourceforge.net/"&gt;Carbonado&lt;/a&gt; which we use at ESPN.  The lightning talk by &lt;a href="http://www.linkedin.com/in/flinnmueller"&gt;Flinn Mueller&lt;/a&gt; got me a little more interested. He seems to be doing interesting things but from an analytics and reporting perspective.  He was vague on how loads the data from his primary store and what the scale of the data is, so my first impression: its a toy.  I'm sure that's an unfair characterization but I'm not trying to be fair tonight.  But honestly, Tokyo Cabinet makes no bones that it punts on horizontal scaling which is the deal breaker for me.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://hypertable.org/"&gt;Hypertable&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;I looked at Hypertable (as in read their website) about 18 months ago on the suggestion of a colleague when discussing HBase around the same time.  This conference didn't change my opinion, which is "It's HBase but written in C".  It doesn't seem to bring anything else to the table which to me is a blocker.  JVM implementations are available for all the operating systems I use and so I don't like the idea of needing to find the right binary to download for a given box.  When it comes to Java vs. C, I choose Java but I'm also extremely biased as I've been a Java developer nearly my entire career.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://jimbojw.com/fullstack/"&gt;Full-stack JavaScript&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;This was my favorite of the lightning talks, and possibly my favorite of the conference.  It felt a &lt;i&gt;little&lt;/i&gt; tangential to the NoSQL topic, mainly because &lt;a href="http://twitter.com/jimbojw"&gt;Jim Wilson&lt;/a&gt; covered more than just data storage.  The idea, what if you could use JavaScript on your server, in your client and use JSON for talking between the layers and as the storage format?  Crazy, right?  I say brilliant.  His few slides were mildly embarrassing that dissected each of the popular stacks of today by how many languages you need to learn (Java, XML, etc) as well and the various impedance mismatches between layers (ORM, Object marshaling to JSON or XML, etc).  "ORM is an antipattern" was an enlightening take on something I've accepted as necessary.  Full-stack JavaScript is something I'll be lusting after for a long time, especially since he made it sounds so attainable with node.js, rhino and MongoDB.  As soon as his slides are online &lt;a href="http://jimbojw.com/fullstack/"&gt;I'll be linking to them&lt;/a&gt; as well as passing them around the office.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://hadoop.apache.org/hbase/"&gt;HBase&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Well I saved HBase for last.  It's the one I've had the most experience with, though that experience can still be measured in hours.  As I hinted at earlier, this conference gave me the first impression that HDFS is a weight around the neck of HBase.  I was surprised to get that feeling from the room, since my impression has been purely positive so far.  It is also getting a lot of flack from the 'single point of failure' problem associated with the current HDFS architecture's Name Node.  Apparently performance is a dog since it was "only" designed to be highly distributed with no promise of when you'll get your data.  This burden seems to carry over to HBase.  But after talking to &lt;a href="http://twitter.com/ryanobjc"&gt;Ryan Rawson&lt;/a&gt; one-on-one at the end of the HBase lab, it's clear he is of the strong opinion that its getting a bad wrap.  He also makes very convincing arguments about the scale of what HBase is currently doing in real production environments vs. competitors like Cassandra.  It's very pursuasive and you can read more of the details in &lt;a href="http://old.nabble.com/Use-cases-of-HBase-to27837470.html"&gt;a very active thread I kicked off&lt;/a&gt; on the HBase user group earlier this week.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;HBase is still the front-runner of my personal candidates for a NoSQL option for ESPN as it has been for a long time.  Cassandra's design choice of eventual consistency is a little scary to me because I don't know yet how to design for it, not because it is inherently bad choice.  Documented-oriented databases just made a big blip on my radar.  Memcached is interesting if I want to stick with a traditional ORM-based architecture.  Tokyo Cabinet and Hypertable are all but off my radar.  And the lusty vixen of them all is a full-stack JavaScript architecture.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Disclaimer: Though I mention my employer ESPN in this post, these are my own personal opinions and don't represent the opinions of the company.  The final decision on this stuff is "above my pay-grade" as they say.&lt;/b&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-8798925188206523729?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fEvUCU0gS1kemMfbEoeloGMs2sE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fEvUCU0gS1kemMfbEoeloGMs2sE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fEvUCU0gS1kemMfbEoeloGMs2sE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fEvUCU0gS1kemMfbEoeloGMs2sE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=rNTWJHRSFSI:HJh81CoClJQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=rNTWJHRSFSI:HJh81CoClJQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=rNTWJHRSFSI:HJh81CoClJQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=rNTWJHRSFSI:HJh81CoClJQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=rNTWJHRSFSI:HJh81CoClJQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=rNTWJHRSFSI:HJh81CoClJQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=rNTWJHRSFSI:HJh81CoClJQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/rNTWJHRSFSI" height="1" width="1"/&gt;</content><link rel="related" href="http://nosqlboston.eventbrite.com/" title="First Impressions from NoSQL Live" /><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/8798925188206523729/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=8798925188206523729" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/8798925188206523729?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/8798925188206523729?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/rNTWJHRSFSI/first-impressions-from-nosql-live.html" title="First Impressions from NoSQL Live" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>4</thr:total><feedburner:origLink>http://www.jaxzin.com/2010/03/first-impressions-from-nosql-live.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QGQX0_eip7ImA9WxBUEUw.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-9078642457324756403</id><published>2010-02-24T13:10:00.013-05:00</published><updated>2010-02-25T10:22:00.342-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-25T10:22:00.342-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="brainteaser" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Java Puzzler</title><content type="html">I bought the book &lt;a href="http://amzn.com/032133678X"&gt;Java Puzzlers&lt;/a&gt; by Josh Bloch and Neal Gafter a few years ago and enjoyed it. If you aren't familiar with it, it covers rare, odd and usually counter-intuitive edge cases of Java in a brain-teaser style of presentation. For both a Java user and an analytical mind its a fascinating book.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well today I stumbled onto a puzzler of my own and thought I'd share. Can you tell me what the main method of this class will output?&lt;/div&gt;&lt;blockquote&gt;&lt;pre&gt;1 : public class Parser {&lt;br /&gt;2 :&lt;br /&gt;3 :  private static &amp;lt;T&gt; T parse(String s, Class&amp;lt;T&gt; type) {&lt;br /&gt;4 :    // Simple implementation only supports long primitive&lt;br /&gt;5 :    if(type == long.class) {&lt;br /&gt;6 :       return (T) Long.parseLong(s);&lt;br /&gt;7 :    }&lt;br /&gt;8 :    throw new UnsupportedOperationException(&lt;br /&gt;9 :                   "parse() only supports long right now!");&lt;br /&gt;10:  }&lt;br /&gt;11:&lt;br /&gt;12:  public static void main(String[] args) {&lt;br /&gt;13:    System.out.println(parse("1234", long.class).equals(1234));&lt;br /&gt;14:  }&lt;br /&gt;15: }&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div&gt;So what gets written to standard output? If you said 'true', then you'd be wrong. If you said 'false', then you'd also be wrong! The code above won't even compile! There are a few features of Java that are colliding here to give odd results, including generics, type erasure, primitive types and autoboxing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So what happens exactly? You'll get a compile error like this:&lt;/div&gt;&lt;blockquote&gt;&lt;pre&gt;Error:line (6) inconvertible types&lt;br /&gt;found   : long&lt;br /&gt;required: T&lt;/pre&gt;&lt;/blockquote&gt;&lt;div&gt;The error is on the return statement line of the parse() method. Long.parseLong() returns a primitive long, but since a parameter type can only represent an Object type, you can't cast a primitive to an parameter type. Also, it appear auto-boxing doesn't work in this case, so it fails with a compiler error.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But wait, doesn't the code explicitly use the Class object that represents the long primitive, long.class? But see 'long.class' is syntactic sugar for the constant field Long.TYPE which is of the parameterized type Class&amp;lt;Long&gt; since type variables only support using Objects.&lt;/long&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So realizing this, we can change the return statement to use a Long instead of a long:&lt;/div&gt;&lt;blockquote&gt;&lt;pre&gt;    return (T) Long.valueOf(s);&lt;/pre&gt;&lt;/blockquote&gt;&lt;div&gt;Now the code will compile, but something is still wrong because it prints out 'false'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Knowing that the return type of &lt;i&gt;parse("1234", long.class) &lt;/i&gt;is Long, take another look at the puzzle. Can you see the problem? This one is subtle. The numeric literal '1234' that is inside the call to equals() needs to be auto-boxed and since it is a literal int, it is boxed into a Integer. But an Integer object isn't considered equal to a Long object because they are different types, so equals() returns false.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So it a few interesting features combine for some strange behavior. Hope you enjoyed this puzzle!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-9078642457324756403?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SorESkGqRgSk7-nhWTO9cIDl9Zc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SorESkGqRgSk7-nhWTO9cIDl9Zc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SorESkGqRgSk7-nhWTO9cIDl9Zc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SorESkGqRgSk7-nhWTO9cIDl9Zc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=DnZnmq1Ndsk:KJhqgPWjkL8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=DnZnmq1Ndsk:KJhqgPWjkL8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=DnZnmq1Ndsk:KJhqgPWjkL8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=DnZnmq1Ndsk:KJhqgPWjkL8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=DnZnmq1Ndsk:KJhqgPWjkL8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=DnZnmq1Ndsk:KJhqgPWjkL8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=DnZnmq1Ndsk:KJhqgPWjkL8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/DnZnmq1Ndsk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/9078642457324756403/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=9078642457324756403" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/9078642457324756403?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/9078642457324756403?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/DnZnmq1Ndsk/java-puzzler.html" title="Java Puzzler" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.jaxzin.com/2010/02/java-puzzler.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MCRns4eyp7ImA9WxBXFEU.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-6353333133740275855</id><published>2010-01-25T23:29:00.006-05:00</published><updated>2010-01-26T00:57:47.533-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-26T00:57:47.533-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="family" /><category scheme="http://www.blogger.com/atom/ns#" term="paranormal" /><title>UFOs, Ghosts and Bigfoot</title><content type="html">So I hope you don't think I'm a complete loon, but I've always been interested in the paranormal, cryptozoology and lights in the sky.  I think it is driven by my need to try to answer all those unanswered questions in life. &lt;br /&gt;&lt;br /&gt;Lately I've been watching various 'reality' shows on these topics like MonsterQuest, Paranormal State and Ghosthunters.  Don't get me wrong, I'm not gullible enough to believe these shows are finding evidence of anything, its just some good ol' fashioned mind-numbing popcorn TV for me to fall asleep to.&lt;br /&gt;&lt;br /&gt;Watching them has reminded me of a few unexplained incidents I've had in my life and I wonder if you've experienced anything similar?  I've got three that all happened to me over a decade ago but were so unnerving that I remember them vividly.  So here are my campfire ghost stories, feel free to share yours!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Incident #1: The Mysterious Flash&lt;/span&gt;&lt;br /&gt;I don't remember the exact date or even the season of this first incident, but my best guess is it happened during the summer of 1993.  It was the summer before my sophomore year of high school.  I had a goal to read 50 books that summer.  I know what you're thinking "wow, was he really that cool?"  My motivation was a challenge from my freshman English teacher that I couldn't do it, and I ended up proving him wrong.  The reason I'm telling you all this is to set the scene that I was in my bedroom reading a book around 10 o'clock at night. &lt;br /&gt;&lt;br /&gt;My Dad is awesome and years earlier had installed overhead track lighting in my room attached to a touch-sensitive dimmer switch.  The track lights hung from the ceiling and I had most of them pointed outward to face the walls so I wouldn't be blinded.  However the one light that hung near the head of my bed I faced inward to act as a reading light.  For whatever reason, I was laying in bed with the lights dimmed as low as I could and still be able to read.  I can't explain the inner workings of my 15 year old self but I liked the lighting that way. &lt;br /&gt;&lt;br /&gt;As I'm laying there in bed with my back propped against the wall my entire room is flooded with brilliantly blinding light!  I stare at my book and realize the light isn't coming from above me it's from behind me as I can see my shadow and the shadow of the book I'm holding cast against the far wall of my room like someone is holding a spotlight a few feet behind my shoulder.  And before I can react it's gone!  The whole flash takes about half a second.  Then as I turn to see where the light came from I come to the realization that I'm laying on the wall, it couldn't have possibly come from behind me and cast the shadows I saw. Now being rational, my first thought is that I imagined the shadows and it was a simple power surge so I go downstairs and ask my parents if they saw anything, but they hadn't.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Incident #2: The 727 at 500'&lt;/span&gt;&lt;br /&gt;For this next incident I wasn't alone.  I was still in high school and my Mom and I were in the car together coming home from an after-school activity, probably band practice or musical rehearsal.  It was twilight and as we drove home I see a plane on the horizon.  As I watch it I realize it is not near the horizon because its far away, it's because it is close but flying low to the ground.  I pointed out the plane to my Mom and wondered out loud if something is wrong with it.  She was surprised and decided to pull over to watch it.  As the plane drew closer we both realized that it was a commercial airliner, not a small prop plane out of Danbury as I was expecting.  Now mind you, I grew up in the hills of New Milford where the closest airport that can land an airliner is 40 miles away.  It continued to approach us and at this point I realized it was traveling extremely slow for a jet of its size.  Finally as it passed directly overhead I realized it was the size of a 727, no more than 500 feet from the ground, and going maybe a 100 miles an hour which is very close to, if not less than, the stall speed for an jet like that.  But if that all wasn't strange enough, here's the part that haunts my mother and I to this day...it was dead silent. I mean so silent that the crickets stopped chirping.  The jet passed and disappeared past the treeline and we never heard a thing.  In that pre-internet age, my only recourse was to check the newspaper every day for at least a week. Nothing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Incident #3: Close Encounters of the Orange Kind &lt;/span&gt;&lt;br /&gt;My last weird event is probably the clearest of the three in my mind.  It was September of 1995 near the beginning of my senior year of high school.  My Dad and I were flying to Florida for the weekend so I could tour the Ringling School of Art and Design and see if it was where I wanted to spend the next four years of my life studying computer graphics.  In the end, I went to Trinity College in Hartford but that's another story. &lt;br /&gt;&lt;br /&gt;On this trip we flew down on a Friday night.  It was one of the first night-time flights I'd ever been on so I was pretty excited.  We were seated on the left side of the plane that faced the Atlantic Ocean for most of the trip.  Even without much to see but the blackness of the ocean I still sat watching out the window almost the entire trip.  Midway through the trip I got to see thunderhead clouds out on the horizon.  It was a lot of fun watching a lightning storm from 200 miles away.  But as I watching I realize that one of the clouds has begun to light up with a constant orange light.  The cloud wasn't lit in a diffuse way, it was very clear it was emanating from a point within the cloud.  If you've seen the movie Close Encounters of the Third Kind in the scene where the UFOs arrive you can only see points of lights within the clouds, it looked exactly like that but for only one light source.  I'm not saying I think this was a UFO, only that the special effects in this movie are a good approximation of what I saw.  So I immediately got my Dad to lean over and take a look to see if he had any idea what it was.  As we sat there and watched, it became extremely bright.  It was so bright that you could see the light cast through the windows onto the right wall similar to what happens when the setting sun is off the left wing.  We watched it brighten for about 30 seconds, stay at full brightness for a minute or two and then fade to nothing in about the same amount of time it took to arrive.  To this day I have no idea what I saw.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-6353333133740275855?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7es44HptoGrUENa2Rl0jecWIctM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7es44HptoGrUENa2Rl0jecWIctM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7es44HptoGrUENa2Rl0jecWIctM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7es44HptoGrUENa2Rl0jecWIctM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=iuoO-JkPlHc:TePEvFNTYIA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=iuoO-JkPlHc:TePEvFNTYIA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=iuoO-JkPlHc:TePEvFNTYIA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=iuoO-JkPlHc:TePEvFNTYIA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=iuoO-JkPlHc:TePEvFNTYIA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=iuoO-JkPlHc:TePEvFNTYIA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=iuoO-JkPlHc:TePEvFNTYIA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/iuoO-JkPlHc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/6353333133740275855/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=6353333133740275855" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/6353333133740275855?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/6353333133740275855?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/iuoO-JkPlHc/ufos-ghosts-and-bigfoot.html" title="UFOs, Ghosts and Bigfoot" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2010/01/ufos-ghosts-and-bigfoot.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMHQ3sycSp7ImA9WxNaEEQ.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-3212283377400274872</id><published>2009-11-24T15:22:00.001-05:00</published><updated>2009-11-24T15:27:12.599-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-24T15:27:12.599-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="technology" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome os" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>My thoughts on Google's Chrome OS</title><content type="html">Unless you've been living under a rock, you have heard that last week Google demonstrated their Chrome OS for the first time in public.  They also open-sourced what they have so far as the &lt;a href="http://code.google.com/p/chromium-os/"&gt;Chromium OS&lt;/a&gt; project.  You can watch an overview video here:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0QRO3gKj3qw&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/0QRO3gKj3qw&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;I followed the event, watched the YouTube videos and even played with a copy of Chromium OS via &lt;a href="http://gdgt.com/google/chrome-os/download/"&gt;gdgt&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So here are my thoughts on my limited experience so far.  It seems like a perfect fit for the netbook market.  "Living in the cloud" seems like a great idea for the ability to access your data anywhere.  A verified boot system will be a godsend to anyone who has ever had reinstall an OS because it just got 'crufty'. &lt;br /&gt;&lt;br /&gt;But I don't understand why they have, so far, omitted the concept of a desktop.  One of the coolest features of Chrome is its ability to &lt;a href="http://www.google.com/support/chrome/bin/answer.py?answer=95710"&gt;turn a web app into a 'desktop' app&lt;/a&gt;, which prompted me to to find &lt;a href="http://fluidapp.com/"&gt;Fluid for the Mac&lt;/a&gt;.  Why force new users of Chrome OS to live in a browser when they could have still kept the concepts of a desktop with 'desktop' applications?  There is also a nearly direct analogy in Chrome OS between its tabs and the Windows task bar or Mac Dock.  So why make it feel so different instead of trying to fit into the conventions every other GUI-based OS already established?&lt;br /&gt;&lt;br /&gt;I know it is fun to "rock the boat" and "shake the tree", but I'm just not finding the benefits to tying so closely to existing browser paradigms instead of reusing some of the desktop conventions for this new 'web' OS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-3212283377400274872?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/R4vHCEuSLraTMwr7LBATsSG22tw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R4vHCEuSLraTMwr7LBATsSG22tw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/R4vHCEuSLraTMwr7LBATsSG22tw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R4vHCEuSLraTMwr7LBATsSG22tw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=2FOJfO6nIcA:U2J_gCZo_f8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=2FOJfO6nIcA:U2J_gCZo_f8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=2FOJfO6nIcA:U2J_gCZo_f8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=2FOJfO6nIcA:U2J_gCZo_f8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=2FOJfO6nIcA:U2J_gCZo_f8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=2FOJfO6nIcA:U2J_gCZo_f8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=2FOJfO6nIcA:U2J_gCZo_f8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/2FOJfO6nIcA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/3212283377400274872/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=3212283377400274872" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/3212283377400274872?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/3212283377400274872?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/2FOJfO6nIcA/my-thoughts-on-googles-chrome-os.html" title="My thoughts on Google's Chrome OS" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2009/11/my-thoughts-on-googles-chrome-os.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UAQXk4eSp7ImA9WxNbFEw.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-2213156772317753704</id><published>2009-11-16T16:40:00.005-05:00</published><updated>2009-11-16T17:40:40.731-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-16T17:40:40.731-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="maven" /><title>Maven and Legacy Projects</title><content type="html">Recently I've been helping a colleague introduce a dependency on a legacy project that hasn't been "Maven-ized".  Often the "easy way" to add a legacy dependency is to throw the JAR into our Nexus repository and be done with it.  But this legacy project was a little trickier and is my new poster child for why taking the easy way can lead to headaches and frustration.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Your legacy project might have compile-time dependencies you need.&lt;/span&gt;&lt;br /&gt;Maybe your legacy project implements an external API, or maybe it uses a library and exposes that usage in its API.  "So what", you say?  "I'll find it at compile-time for my project and I'll add the dependency."  Well, now every project that wants to use your legacy project is going to go through the same discovery and embed the dependency in their POM.  The right way is to define this dependency in the pom.xml for your legacy project so all dependent projects retrieve it transitively.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Your legacy project might have run-time dependencies you need.&lt;/span&gt;&lt;br /&gt;Similar to the last example, your legacy project might use a library but not expose it's use directly.  You won't discover the missing dependency until you try and run your project.  Here's where the power of the 'runtime' scope of a transitive dependency becomes obvious.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Your legacy project might include library classes within its JAR.&lt;/span&gt;&lt;br /&gt;Now here's a real yuck factor when it comes to dealing with other people's code.  Our example legacy project bundled a small subset of its dependencies right in its JAR.  It wasn't until after we threw it into Nexus that we discovered this rather severe violation of Maven standards.  The best solution, get access to the project's source, mavenize the project properly and release a 'pure' artifact.  If you don't have access to the legacy project's source you'll need to strip the extra classes from the artifact and construct a pom that includes the right dependency.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;So here's a really quick summary of why not to half-ass adding legacy projects into your Maven infrastructure:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Any transitive dependencies will be missing.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;With legacy jars that embed the classes they depend on you risk class file collisions&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-2213156772317753704?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Pp-wJ7XdNGmwYs3AHGl1cQXGljI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pp-wJ7XdNGmwYs3AHGl1cQXGljI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Pp-wJ7XdNGmwYs3AHGl1cQXGljI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pp-wJ7XdNGmwYs3AHGl1cQXGljI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=4ui7Mve9wF8:ndd64UB-tjw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=4ui7Mve9wF8:ndd64UB-tjw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=4ui7Mve9wF8:ndd64UB-tjw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=4ui7Mve9wF8:ndd64UB-tjw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=4ui7Mve9wF8:ndd64UB-tjw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=4ui7Mve9wF8:ndd64UB-tjw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=4ui7Mve9wF8:ndd64UB-tjw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/4ui7Mve9wF8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/2213156772317753704/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=2213156772317753704" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2213156772317753704?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2213156772317753704?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/4ui7Mve9wF8/maven-and-legacy-projects.html" title="Maven and Legacy Projects" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.jaxzin.com/2009/11/maven-and-legacy-projects.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8FRn84cCp7ImA9WxNUGU0.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-2508984192393312859</id><published>2009-11-10T21:50:00.000-05:00</published><updated>2009-11-10T21:50:17.138-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-10T21:50:17.138-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="health" /><title>Medicine is so Young</title><content type="html">I think its undeniable that one of the hottest topic of this year is health care.  While I've been casually following the political discourse, its far from my inspiration for today's post.  My one year old son, Wally, had a reaction to penicillin this week and I question why current medicine is still so reactive rather than proactive.  Since allergies are something that can change and fluctuate, that led me to also wonder why we don't have more frequent testing too.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Standardized testing&lt;/span&gt;&lt;br /&gt;I'm looking forward to the day when there is a standard battery of tests for allergies and conditions.  It's beginning with the prenatal screenings available during both of my wife's pregnancies, but why, for instance, is there no standard allergy testing post-birth?  From the perspective of a patient, current medicine waits for a reaction to an allergen which seems so dangerous to me.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Continuous diagnostics&lt;/span&gt;&lt;br /&gt;When can I get my little implant that continuously monitors my blood-work and vitals?  I've been dealing with the medical 'miscellaneous bucket' that is &lt;a href="https://health.google.com/health/ref/Irritable+bowel+syndrome"&gt;IBS&lt;/a&gt; for 6 years now and don't feel like I'll ever get an answer about what is really afflicting me.  I see my doctor once a year, and she doesn't really seem to have an answer.  I know, I know, demand answers, fight for myself, blah blah, that's not my point.  It's currently not 'bad enough' to force me to demand anything yet.  I bring up my current state during my annual checkup, and that's about all I feel I'm empowered to do right now.  I strongly believe if there were a way to easily and continuously monitor medical data points (blood, hormone, etc) within my body and let me correlate that with the ebb and flow of symptoms there would be a much higher chance of being able to find the problem&lt;span style="font-weight: bold;"&gt;.&lt;br /&gt;&lt;br /&gt;Online records&lt;/span&gt;&lt;br /&gt;I've been 'using' Google Health since it was released last year.  But my doctor's office has no tie to my account so I'm forced to update it by hand.  Not to mention all my historical data is no where to be found.  For the providers that Google Health does currently support linking, I have a 50% success rate getting them to work.  I was able to link my CVS prescriptions but failed to link my Quest test results.  When I followed Quest's instructions, the receptionist at the testing facility looked at me like I had three heads when I asked to get my results online.  She had no idea what I was talking about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-2508984192393312859?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WeZfmirZ__CIeRpYpacWTw9zKWM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WeZfmirZ__CIeRpYpacWTw9zKWM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WeZfmirZ__CIeRpYpacWTw9zKWM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WeZfmirZ__CIeRpYpacWTw9zKWM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=KR8zDapRpqU:0eKAYZZYfmU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=KR8zDapRpqU:0eKAYZZYfmU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=KR8zDapRpqU:0eKAYZZYfmU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=KR8zDapRpqU:0eKAYZZYfmU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=KR8zDapRpqU:0eKAYZZYfmU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=KR8zDapRpqU:0eKAYZZYfmU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=KR8zDapRpqU:0eKAYZZYfmU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/KR8zDapRpqU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/2508984192393312859/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=2508984192393312859" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2508984192393312859?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2508984192393312859?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/KR8zDapRpqU/medicine-is-so-young.html" title="Medicine is so Young" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2009/11/medicine-is-so-young.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MCRn45eCp7ImA9WxNUE0g.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-4892899097891263671</id><published>2009-11-04T13:26:00.003-05:00</published><updated>2009-11-04T13:31:07.020-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-04T13:31:07.020-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="antipattern" /><category scheme="http://www.blogger.com/atom/ns#" term="rest" /><category scheme="http://www.blogger.com/atom/ns#" term="update" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>What REST is NOT, Updated</title><content type="html">In a surprising update to my post earlier this week about &lt;a href="http://www.jaxzin.com/2009/11/what-rest-is-not.html"&gt;what REST is NOT&lt;/a&gt;, I just spoke with &lt;a href="http://www.linkedin.com/in/rooly"&gt;Rooly Eliezerov&lt;/a&gt;, the President and co-founder of Gigya.  We had a nice conversation about the goals of Gigya, primarily that they want to aggregate these other social web services and their design philosophy is to mimic Facebook and Twitter's API.  I expressed that using GET to change a resource isn't a REST principle either company's API breaks.  He was surprised to hear it and said he'd follow-up with his team to validate that and get back to me.&lt;br /&gt;&lt;br /&gt;Whatever the outcome, I really appreciate that a company with their goals and reach is interested in what little ol' me has to say.  It speaks volumes to their passion and customer support.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-4892899097891263671?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pSei1lSyl6G6u4zvsUduqBVIHcs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pSei1lSyl6G6u4zvsUduqBVIHcs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pSei1lSyl6G6u4zvsUduqBVIHcs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pSei1lSyl6G6u4zvsUduqBVIHcs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=M493ISK0B34:Tm1f2cc-FO8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=M493ISK0B34:Tm1f2cc-FO8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=M493ISK0B34:Tm1f2cc-FO8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=M493ISK0B34:Tm1f2cc-FO8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=M493ISK0B34:Tm1f2cc-FO8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=M493ISK0B34:Tm1f2cc-FO8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=M493ISK0B34:Tm1f2cc-FO8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/M493ISK0B34" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/4892899097891263671/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=4892899097891263671" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/4892899097891263671?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/4892899097891263671?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/M493ISK0B34/what-rest-is-not-updated.html" title="What REST is NOT, Updated" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2009/11/what-rest-is-not-updated.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUASXg7fSp7ImA9WxNUEkQ.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-2974116993329609900</id><published>2009-11-03T18:59:00.009-05:00</published><updated>2009-11-03T19:57:28.605-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-03T19:57:28.605-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="digital copy" /><category scheme="http://www.blogger.com/atom/ns#" term="bluray" /><category scheme="http://www.blogger.com/atom/ns#" term="dvd" /><category scheme="http://www.blogger.com/atom/ns#" term="media" /><category scheme="http://www.blogger.com/atom/ns#" term="mpaa" /><title>Problems of the MPAA's Digital Copy system</title><content type="html">When I got 'Wanted' on DVD as a gift, it was the first movie on disc (DVD or Blu-ray) that included a Digital Copy. Since my home media setup is all iTunes/Apple-based I easily popped in the extra disc, entered the included key and added the "Wanted" to my media collection in less than 5 minutes.  It was beautiful and enlightening.  I'm on the side of the fence that copying a movie onto a private home media network is an ethical, though not currently legal, fair use of copyrighted works.&lt;br /&gt;&lt;br /&gt;Usually ripping a DVD for me is a 'set it and forget' operation using &lt;a href="http://handbrake.fr/"&gt;Handbrake&lt;/a&gt; that takes several elapsed hours but little interaction.  But with the latest copy-protection features of DVDs it can be a hit-or-miss prospect which has caused me to add a few corrupted movies to my collection.  And if I want to take the time to attempt to circumvent the copy-protection using Mac the Ripper or &lt;a href="http://ripitapp.com/"&gt;RipIt&lt;/a&gt;, it's again hit-or-miss and makes the process that much more labor-intensive, at a time in my life where I have little desire or time desire to dedicate to building my media collection.&lt;br /&gt;&lt;br /&gt;Seeing how quick, easy and reliable using the Digital Copy process was and how it resulted in a copy that can play on my mobile device (iPhone), HTPC (Mac mini) and set-top box (AppleTV) was exactly what I've wanted!  And now having a Blu-ray player but no way to import those movies into my media collection, I thought Blu-ray + Digital Copy was the killer combination.  But with my third purchase of a feature that included a Digital Copy, the honeymoon is over.&lt;br /&gt;&lt;br /&gt;Here's what I think is missing from the current Digital Copy system:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;DRM-free&lt;/li&gt;&lt;li&gt;HD&lt;/li&gt;&lt;li&gt;Quality consistency&lt;/li&gt;&lt;li&gt;Ownership transfer/lending&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;DRM-free&lt;/span&gt;&lt;br /&gt;At first, the DRM didn't bother me.  Then I started to worry about what happens when I have a catastrophic data failure of some kind?  Sure I back up my files including my ripped videos, and I've even started making a second off-site backup but will I have to jump through hoops to play them again?  How simple is the process of re-adding them to my collection if I get a new computer?&lt;br /&gt;&lt;br /&gt;Also, I found expiration dates for all three keys I currently have, what if I have to reauthorize them after the expiration date?  In fact my third purchase was made after the listed expiration date, but luckily I didn't have a problem activating the Digital Copy, which was a bit of a relief.  In general I'm worried about the ramifications of an expiration date on the activation key.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;High Definition&lt;/span&gt;&lt;br /&gt;Now if I buy a DVD with a Digital Copy, I'm not greedy and I don't expect an HD Digital Copy. But for the one Blu-ray I've purchased with a Digital Copy I'd expect at least a 720p HD copy as if I had purchased it in HD the iTunes Store.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quality consistency&lt;/span&gt;&lt;br /&gt;Another surprising thing for one of the movies I purchased, "The Nightmare Before Christmas", I noticed a drastic difference in the aspect ratio of the Digital Copy compared to the DVD video.  The DVD was clearly full-frame 16:9 but the Digital Copy was somewhere between 4:3 and 16:9.  My guess is its the original theatrical aspect ratio and the DVD version was cropped to 16:9.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ownership transfers and lending&lt;/span&gt;&lt;br /&gt;What happens when I want to lend, give or sell the DVD to a friend?  I think what Barnes&amp;amp;Noble is doing with the Nook is the most realistic option, allow 14-day lending of digital rights to a friend.  If they can make it work, why can Apple and Microsoft?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-2974116993329609900?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vmuSmn-tXS2qZfmJSVo5yvQqk6w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vmuSmn-tXS2qZfmJSVo5yvQqk6w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vmuSmn-tXS2qZfmJSVo5yvQqk6w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vmuSmn-tXS2qZfmJSVo5yvQqk6w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=v3oG9BeSeWc:-OZgnpVSmLM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=v3oG9BeSeWc:-OZgnpVSmLM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=v3oG9BeSeWc:-OZgnpVSmLM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=v3oG9BeSeWc:-OZgnpVSmLM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=v3oG9BeSeWc:-OZgnpVSmLM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=v3oG9BeSeWc:-OZgnpVSmLM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=v3oG9BeSeWc:-OZgnpVSmLM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/v3oG9BeSeWc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/2974116993329609900/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=2974116993329609900" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2974116993329609900?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2974116993329609900?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/v3oG9BeSeWc/digital-copy-sucks.html" title="Problems of the MPAA's Digital Copy system" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2009/11/digital-copy-sucks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkABSX4_fip7ImA9WxBaFEQ.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-2660004119130500877</id><published>2009-11-02T21:09:00.017-05:00</published><updated>2010-03-25T01:25:58.046-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-25T01:25:58.046-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="antipattern" /><category scheme="http://www.blogger.com/atom/ns#" term="rest" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>What REST is NOT</title><content type="html">&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;: &lt;a href="http://www.jaxzin.com/2009/11/what-rest-is-not-updated.html"&gt;I spoke with the president of Gigya&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Having only familiarized myself with REST a few months ago, I still struggle to explain to colleagues what REST is.  My best one sentence summary so far is that it's "using HTTP as it was designed".  Not a perfect or even complete summary, but I think it covers the highlights.&lt;br /&gt;&lt;br /&gt;This week I've been reviewing &lt;a href="http://wiki.gigya.com/"&gt;Gigya's REST APIs&lt;/a&gt;  for an upcoming project at work.  And I've found it to be a shining example of designing an API incorrectly and calling it RESTful.  It solidified a couple of REST anti-patterns for me and I wanted to capture them:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;REST is &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; RPC, though RPC can be done RESTfully.&lt;/li&gt;&lt;li&gt;GET is &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; for state changes.  If you're operation has side effects, don't use GET.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The response body is &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; the only way to send the client information. Don't duplicate information in the HTTP headers in the response body.&lt;/li&gt;&lt;li&gt;Authentication is &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; part of your resource.  Don't create a query parameter to do authentication, use the HTTP header that already exists for the purpose.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;font-size:130%;"&gt;REST is not RPC&lt;/span&gt;&lt;br /&gt; Many developers coming from a SOAP background think RPC calls can be ported to 'REST' and then call it a day.  They are missing a big mental shift in the way to think of web services when designing using REST principles.   Instead of thinking of services as functions that can be called, change your thinking to performing operations on objects, formally known as 'resources' in REST parlance.  The operations you can perform on your resource are the existing HTTP methods, GET, POST, PUT, DELETE, OPTIONS and HEAD.  So instead of exposing a 'setStatus' function via a web service, instead expose a 'status' resource that can be POSTed or PUT to change it, call GET to retrieve the current status, or DELETE it to clear the status.  REST is not functional RPC, its a paradigm shift to treating web services in an object-oriented way.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;GET is not for state changes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The most important REST principle that Gigya's APIs violate is using GET calls to affect the state of a resource.  Short of recording access, like last viewed by/on, GET calls should never affect the state of the resource it represents.  If you need to change a resource, there are three other HTTP methods for that purpose, namely POST, PUT and DELETE.  The use cases for DELETE are pretty self-apparent, but I've got to admit to being confused of when I should choose POST vs. PUT.  John Calcote clarified the answer nicely of &lt;a href="http://jcalcote.wordpress.com/2008/10/16/put-or-post-the-rest-of-the-story/"&gt;when to choose POST over PUT&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;The response body is not the only way to send the client information&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;   HTTP headers, for both requests and responses, can be an invaluable way to simplify your API.  They can contain rich information about the success (200 OK, 201 Created, 204 No Content) and failure (404 Not Found, 401 Not Authorized, 503 Service Unavailable) of a request.  Gigya for example includes the HTTP status code in their XML response body.  It seems like a waste of bandwidth to me, when the status code is already included in the response headers.  To their credit their documentation seems to imply the codes are more detailed than available in the HTTP spec (500-001, etc) but their examples conflict with that and only show the XML return simple HTTP codes with HTTP reason messages.  Even if they provide more detailed information, it should not duplicate what already exists in the request.  Trust that your API users can understand and use the headers.  Its much easier to only check a status code instead of parsing an XML response.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Authentication is not part of your resource&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;   This antipattern is directly related to my last point of using HTTP headers properly but its important enough to warrant its own bullet.  This violation is a version of "don't reinvent the wheel".  Gigya has for some strange reason taken OAuth and permuted its use rather than sticking to the spec.  They even have API users sign their requests using OAuth libraries but then fail to carry that through into the API usage.  The signature a part of the GET query string rather than use the already established HTTP header that the OAuth spec has defined for carrying that data point.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;REST is a very amorphous set of principles but that doesn't mean there are no concrete guidelines.  Patterns are emerging as well as anti-patterns and Gigya has examples of both.  I don't mean to pick on Gigya but they just happened to be freshest examples in my mind this week.  The big points I'd like you to take away from this are, don't reinvent the wheel, use the existing HTTP methods properly, don't forget that HTTP headers exist and design your APIs by thinking of them as objects rather than functions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-2660004119130500877?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5CwHwC7wZEUNHR0oHk5nWr-bc_E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5CwHwC7wZEUNHR0oHk5nWr-bc_E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5CwHwC7wZEUNHR0oHk5nWr-bc_E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5CwHwC7wZEUNHR0oHk5nWr-bc_E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=3Lhga8zhb-E:_ZOIJzFpNd4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=3Lhga8zhb-E:_ZOIJzFpNd4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=3Lhga8zhb-E:_ZOIJzFpNd4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=3Lhga8zhb-E:_ZOIJzFpNd4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=3Lhga8zhb-E:_ZOIJzFpNd4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=3Lhga8zhb-E:_ZOIJzFpNd4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=3Lhga8zhb-E:_ZOIJzFpNd4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/3Lhga8zhb-E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/2660004119130500877/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=2660004119130500877" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2660004119130500877?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2660004119130500877?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/3Lhga8zhb-E/what-rest-is-not.html" title="What REST is NOT" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.jaxzin.com/2009/11/what-rest-is-not.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcDRnkzeip7ImA9WxNUE0k.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-2744439947314873804</id><published>2009-09-22T17:24:00.002-04:00</published><updated>2009-11-04T10:04:37.782-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-04T10:04:37.782-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="parenthood" /><category scheme="http://www.blogger.com/atom/ns#" term="family" /><category scheme="http://www.blogger.com/atom/ns#" term="anecdote" /><title>Parenthood | Sweetness or Manipulation?</title><content type="html">So Sunday night (Sept 20), I realized my three year old daughter Penelope is either extremely manipulative or extremely sweet. We were doing bedtime, reading a book and bedtime was over. She was supposed to lay down and go to sleep. I went to get a drink before heading up for the night and as I walk past her room again I see her standing at the foot of her bed in the dark. She calls out "Daddy, daddy! Poopies are coming!". Now I've learned this is a common stall tactic with her.&lt;br /&gt;&lt;br /&gt;So I said, "No! Poopies are not coming. Go to sleep". But she insisted and so I threatened, that if she didn't really have to go to the bathroom I was going to take away her favorite bunny, which has become her security blanket.&lt;br /&gt;&lt;br /&gt;So she agrees and gets out of bed and goes to the bathroom. So she's sitting there and nothing's coming out. And I'm like "Penelope, I told you what would happen right?" So I give her some more time and then come back.&lt;br /&gt;&lt;br /&gt;I open the door and say "Time's up, any poopies?". She says "No.", and hangs her head in shame. She then follows it with one of the most heartwrenching statements yet, "It's okay Daddy, I not cry. I big girl. You can take bunny."&lt;br /&gt;&lt;br /&gt;So I think oh no, I'm a terrible father, I can't take her bunny... So I said, "Just because of that, you get to keep your bunny." She gives me a huge grin and says "Oh Daddy! Thank you Daddy! I love you Daddy!" And she gives me a big hug and I pick her up, and she's patting my back and says "Good Daddy! Good Daddy!" like I bought her a new car.&lt;br /&gt;&lt;br /&gt;Kids are awesome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-2744439947314873804?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WOYrWafbJ98DlTGbd_0dXKV_vGo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WOYrWafbJ98DlTGbd_0dXKV_vGo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WOYrWafbJ98DlTGbd_0dXKV_vGo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WOYrWafbJ98DlTGbd_0dXKV_vGo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=Mbu0U5Yl5No:VQEF8mV-j5s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=Mbu0U5Yl5No:VQEF8mV-j5s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=Mbu0U5Yl5No:VQEF8mV-j5s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=Mbu0U5Yl5No:VQEF8mV-j5s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=Mbu0U5Yl5No:VQEF8mV-j5s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=Mbu0U5Yl5No:VQEF8mV-j5s:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=Mbu0U5Yl5No:VQEF8mV-j5s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/Mbu0U5Yl5No" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/2744439947314873804/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=2744439947314873804" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2744439947314873804?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2744439947314873804?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/Mbu0U5Yl5No/parenthood-sweetness-or-manipulation.html" title="Parenthood | Sweetness or Manipulation?" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2009/09/parenthood-sweetness-or-manipulation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EDQnc5fip7ImA9WxNUEkg.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-5671573008790814480</id><published>2009-07-07T22:28:00.003-04:00</published><updated>2009-11-03T09:47:53.926-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-03T09:47:53.926-05:00</app:edited><title>1Password is an essential app</title><content type="html">Today I posted a Facebook status that I've come around and consider 1Password a must-have app for every Mac user.  A friend commented that he didn't get it, much for the same reasons I held out for a long time.  So here's how I explained my new love:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Yeah I didn't 'get' the benefit for a long time. But recently I've been frustrated with the countless number of passwords I've got and how every site has a different policy that forces me to rethink my password scheme. I started to feel like my scheme was becoming too simple just so I can meet the lowest common denominator. Also, I recently find myself forgetting the less frequently used password and needing to reset them. I needed a solution.&lt;br /&gt;&lt;br /&gt;The killer features for me:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Killer browser integration, replaces Firefox and Safari password managers&lt;/li&gt;&lt;li&gt;Password generator, now I don't need to fear that my online passwords are crackable.  Again #1 makes #2 awesomely simple.&lt;span class="text_exposed_hide"&gt;&lt;span class="text_exposed_link"&gt;&lt;a onclick="'CSS.addClass($("&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="text_exposed_show"&gt;Slick iPhone integration. I can take and update my passwords anywhere. Better Mobile Safari integration would be nice, but that's due to Apple's limitations.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Master password: I know, I know, single point of failure right? I'm now of the opinion its much more likely a hacker will get access to one of my passwords online and figure out my simple scheme rather than them gaining access to my computer and cracking my rather complex master password. For me its more peace of mind and the simplicity of not having to memorize all my different passwords.&lt;/li&gt;&lt;li&gt;Easy syncing via Dropbox.  I want autofill not just cross-browser but cross-computer too. &lt;a href="http://webworkerdaily.com/2008/09/29/1password-dropbox-sync/" onmousedown="'UntrustedLink.bootstrap($(this)," target="_blank" rel="nofollow"&gt;&lt;span&gt;http://webworkerdaily.com/&lt;/span&gt;&lt;wbr&gt;&lt;span class="word_break"&gt;&lt;/span&gt;&lt;span&gt;2008/09/29/1password-dropb&lt;/span&gt;&lt;wbr&gt;&lt;span class="word_break"&gt;&lt;/span&gt;ox-sync/&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;Oh and I remembered to search for coupon codes before buying it. I used "iSlayer" which gave me 20% off.&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-5671573008790814480?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CMs9IMpfleWyJe8VP_aZZiIO3Lk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CMs9IMpfleWyJe8VP_aZZiIO3Lk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CMs9IMpfleWyJe8VP_aZZiIO3Lk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CMs9IMpfleWyJe8VP_aZZiIO3Lk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=aZeD6tqezyg:WpEiwFktiuw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=aZeD6tqezyg:WpEiwFktiuw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=aZeD6tqezyg:WpEiwFktiuw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=aZeD6tqezyg:WpEiwFktiuw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=aZeD6tqezyg:WpEiwFktiuw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=aZeD6tqezyg:WpEiwFktiuw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=aZeD6tqezyg:WpEiwFktiuw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/aZeD6tqezyg" height="1" width="1"/&gt;</content><link rel="related" href="http://agilewebsolutions.com/products/b/1Password" title="1Password is an essential app" /><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/5671573008790814480/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=5671573008790814480" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/5671573008790814480?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/5671573008790814480?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/aZeD6tqezyg/1password-is-essential-app.html" title="1Password is an essential app" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2009/07/1password-is-essential-app.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIGR3c-eip7ImA9WxJTEk0.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-2399266610110297851</id><published>2009-04-19T23:48:00.006-04:00</published><updated>2009-04-20T00:08:46.952-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-20T00:08:46.952-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="oss" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="handlecheck" /><category scheme="http://www.blogger.com/atom/ns#" term="appengine" /><title>HandleCheck: My Google App Engine and Open Source Project</title><content type="html">So I signed up for a &lt;a href="http://appengine.google.com/"&gt;Google App Engine&lt;/a&gt; account a while ago, almost right after it's Python version was released last year.  Of course, life prevented me from taking the time to learn Python, and so the learning curve prevented me from building or deploying anything.&lt;br /&gt;&lt;br /&gt;Fast-forward to two weeks ago when Google released the &lt;a href="http://code.google.com/appengine/docs/java/gettingstarted/"&gt;Java API for the Google App Engine&lt;/a&gt; (GAE from here on out).  Being a full-time Java programmer for the past 10 years, now we're running on all cylinders!  I applied for a Java account on the day it was released and my Java GAE account was approved within 24 hours, but it took a few days for me to make some time to start writing some code.  After about 8 hours of development I had &lt;a href="http://1.latest.handlecheck.appspot.com/"&gt;my first working prototype&lt;/a&gt; of a web application running on the GAE. &lt;br /&gt;&lt;br /&gt;My first GAE webapp is a service that connects to a set of social web sites that provide user names and profile pages for their users to see if a username you are interested is still available across those sites.  My app is a called Handlecheck (handle in the sense of "username") and is live now at &lt;a href="http://handlecheck.jaxzin.com"&gt;http://handlecheck.jaxzin.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is also the first project I've open-sourced.  I did a little reading on how to &lt;a href="http://blogs.zdnet.com/Burnette/?p=130"&gt;pick from the various open source licenses&lt;/a&gt; and settled on the &lt;a href="http://www.gnu.org/copyleft/gpl.html"&gt;GPLv3&lt;/a&gt;.  I'm maintaining &lt;a href="http://code.google.com/p/handlecheck/"&gt;the source&lt;/a&gt; on Google Code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-2399266610110297851?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tLs_qLLgqvSJieII5RNDYcrvi6U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tLs_qLLgqvSJieII5RNDYcrvi6U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tLs_qLLgqvSJieII5RNDYcrvi6U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tLs_qLLgqvSJieII5RNDYcrvi6U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=r6v7CMtO2Nw:13_QvCvNJiM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=r6v7CMtO2Nw:13_QvCvNJiM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=r6v7CMtO2Nw:13_QvCvNJiM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=r6v7CMtO2Nw:13_QvCvNJiM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?i=r6v7CMtO2Nw:13_QvCvNJiM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=r6v7CMtO2Nw:13_QvCvNJiM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaxzin?a=r6v7CMtO2Nw:13_QvCvNJiM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaxzin?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/r6v7CMtO2Nw" height="1" width="1"/&gt;</content><link rel="related" href="http://handlecheck.jaxzin.com" title="HandleCheck: My Google App Engine and Open Source Project" /><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/2399266610110297851/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=2399266610110297851" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2399266610110297851?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2399266610110297851?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/r6v7CMtO2Nw/handlecheck-my-google-app-engine-and.html" title="HandleCheck: My Google App Engine and Open Source Project" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2009/04/handlecheck-my-google-app-engine-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkICQnc7cSp7ImA9WxRTFEg.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-24585692989457131</id><published>2008-09-03T11:07:00.001-04:00</published><updated>2008-09-03T11:09:23.909-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-03T11:09:23.909-04:00</app:edited><title>Back Online</title><content type="html">Finally http://www.jaxzin.com is back online after almost a week outage.  I'm still trying to get http://jaxzin.com back online, unfortunately the Google Apps hosting doesn't play nicely with Blogger.com.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-24585692989457131?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sfX6ZXBg6s-1c45SOMkL3BAGb5o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sfX6ZXBg6s-1c45SOMkL3BAGb5o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sfX6ZXBg6s-1c45SOMkL3BAGb5o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sfX6ZXBg6s-1c45SOMkL3BAGb5o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=6Rn2M5W4"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=NSTO8Okm"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=NSTO8Okm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=AzyHBkiY"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=AzyHBkiY" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=1nts2GXl"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=42" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=A1CPsFia"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/wzqX-EkUQc8" height="1" width="1"/&gt;</content><link rel="related" href="http://blogging.nitecruzr.net/2008/08/nitecruzr-dot-net-is-now-online.html" title="Back Online" /><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/24585692989457131/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=24585692989457131" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/24585692989457131?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/24585692989457131?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/wzqX-EkUQc8/back-online.html" title="Back Online" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2008/09/back-online.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQHQX4-fSp7ImA9WxdaF04.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-2804859374078612265</id><published>2008-08-26T01:43:00.002-04:00</published><updated>2008-08-26T01:58:50.055-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-26T01:58:50.055-04:00</app:edited><title>Jon &amp; Kate + Hate</title><content type="html">Tonight I watched the "Beach Trip" episode of Jon&amp;amp;Kate+8 and was inspired to find out exactly where they went since it looked so much like where my parents own a condo. It turned out to be close but no cigar. This googling session happened to also lead me to a video from Aunt Jodi.  After dismissing &lt;a href="http://truthbreedshatred.blogspot.com/"&gt;Aunt Jodi's sister's blog&lt;/a&gt; a couple weeks ago as jealous ramblings, I finally took the time to read it through which took me about an hour.  The latest entry which includes &lt;a href="http://truthbreedshatred.blogspot.com/2008_08_01_archive.html"&gt;this video of Jodi&lt;/a&gt; verifying the claims her sister has made 'in print', was what changed my mind.  I read the posts in chronological order this time which helped me to better understand her tone, rather than just reading the last entry as I did previously.  So for those that haven't taken the time to read it here's the summary.  Keep in mind this is just my recap of her posts (in case the Gosselins see this little post and get pissed): &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The production company offered to pay Jodi for opening her home to the camera crew via Kate starting with Season 2&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Kate, without discussing it with Jodi, said no and said "no one but us gets paid" and "no one will make money off our family"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The production company broached the issue again at the start of filming season 3&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Kate refused again&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The production company approached Jodi directly, and off-the-record shared the backstory with her&lt;br /&gt;&lt;/li&gt;&lt;li&gt;She didn't believe it and her husband Kevin, Kate's brother, asked Kate it this was true.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Kate verified it and laughed.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Kate then decided to replace Jodi's services and got TLC to pay for child-care (Jenny)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Jodi approached Kate and said it wasn't about the money and still wants to be a part of the kids' life.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Kate refused saying how could she expect her to do it for free (even though she was doing it for free for years).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Jodi is now involuntarily estranged from the eight children she helped raise.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Between the video from Aunt Jodi and &lt;a href="http://www.pittsburghlive.com/x/pittsburghtrib/s_334106.html"&gt;this 3 year old article in a Pittsburgh newspaper&lt;/a&gt; I'm beginning to believe Jodi's sister's account of what happened. Reading it through was really heartbreaking especially when she recounts her son's reaction to watching GumGate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-2804859374078612265?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VgX1p2LkSdUe2cWmm2A0rV7OMoc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VgX1p2LkSdUe2cWmm2A0rV7OMoc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VgX1p2LkSdUe2cWmm2A0rV7OMoc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VgX1p2LkSdUe2cWmm2A0rV7OMoc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=15Rz9zeY"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=tUwwsLX4"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=tUwwsLX4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=mRR0TGXy"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=mRR0TGXy" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=OmTZiuB4"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=42" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=exIrvK8y"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/EfxRSPSCT6g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/2804859374078612265/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=2804859374078612265" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2804859374078612265?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2804859374078612265?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/EfxRSPSCT6g/jon-kate-hate.html" title="Jon &amp; Kate + Hate" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2008/08/jon-kate-hate.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4MQ3w5fSp7ImA9WxdSFE8.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-8114951872428907428</id><published>2008-05-21T22:48:00.003-04:00</published><updated>2008-05-21T22:56:22.225-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-21T22:56:22.225-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="commercial" /><category scheme="http://www.blogger.com/atom/ns#" term="discovery_channel" /><category scheme="http://www.blogger.com/atom/ns#" term="song" /><category scheme="http://www.blogger.com/atom/ns#" term="feel_good" /><title>Boom-dee-ah-duh</title><content type="html">Something about this new commercial for the Discovery Channel got me.  I don't if its the catchy song, or seeing all their main personalities singing it, or having Dr. Stephen Hawking in it.  Whatever it is, I like it.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/V5BxymuiAxQ&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/V5BxymuiAxQ&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-8114951872428907428?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9Gb05qw_f5geTaLPbcc9gbe0izA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9Gb05qw_f5geTaLPbcc9gbe0izA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9Gb05qw_f5geTaLPbcc9gbe0izA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9Gb05qw_f5geTaLPbcc9gbe0izA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=jGprHKng"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=DWWFCSU1"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=DWWFCSU1" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=iRHlzPIj"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=iRHlzPIj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=FmijMt3b"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=42" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=j35h0v9O"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/nHKzCkbPy0I" height="1" width="1"/&gt;</content><link rel="related" href="http://youtube.com/watch?v=V5BxymuiAxQ" title="Boom-dee-ah-duh" /><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/8114951872428907428/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=8114951872428907428" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/8114951872428907428?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/8114951872428907428?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/nHKzCkbPy0I/boom-dee-ah-duh.html" title="Boom-dee-ah-duh" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2008/05/boom-dee-ah-duh.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcFRHcyeip7ImA9WxZQFU8.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-8735436020610791726</id><published>2008-02-20T12:16:00.004-05:00</published><updated>2008-02-20T12:20:15.992-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-20T12:20:15.992-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="geni.com" /><category scheme="http://www.blogger.com/atom/ns#" term="geneology" /><category scheme="http://www.blogger.com/atom/ns#" term="family" /><title>My family tree from Geni.com</title><content type="html">I saw Geni.com now allows you to embed your family tree in other sites so I decided to try it here.  Check out my family tree which we traced back 18 generations for one line!&lt;br /&gt;&lt;br /&gt;&lt;object type="application/x-shockwave-flash" data="http://www.geni.com/tree/embed?t=5242025927450034852&amp;public_token=5242025927450034852&amp;base_url=http://www.geni.com" width="600" height="800"&gt;&lt;param name="movie" value="http://www.geni.com/tree/embed?t=5242025927450034852&amp;public_token=5242025927450034852&amp;base_url=http://www.geni.com"&gt;&lt;/param&gt;&lt;/object&gt;&lt;div style="width:600px;text-align:center;"&gt;&lt;span style="font:10px arial,helvetica,clean,sans-serif;"&gt;&lt;a href="http://www.geni.com/share?t=5242025927450034852"&gt;View more of Brian's tree&lt;/a&gt;  |  &lt;a href="http://www.geni.com/"&gt;Get your own family tree at Geni.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/CIMP/JnB*PTEyMDM1Mjc3OTQwNjImcD*xMTU4OTEmZD*mbj1ibG9nZ2Vy.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-8735436020610791726?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rKIldV7-ujgzkmS-sapBmxxaz_Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rKIldV7-ujgzkmS-sapBmxxaz_Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rKIldV7-ujgzkmS-sapBmxxaz_Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rKIldV7-ujgzkmS-sapBmxxaz_Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=bkgMTkqf"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=QH5pa7qB"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=QH5pa7qB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=Ktzbvi8O"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=Ktzbvi8O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=8EONKeFY"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=42" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=rZ9hETZL"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/l5T4yrLhWNo" height="1" width="1"/&gt;</content><link rel="related" href="http://geni.com" title="My family tree from Geni.com" /><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/8735436020610791726/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=8735436020610791726" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/8735436020610791726?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/8735436020610791726?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/l5T4yrLhWNo/my-family-tree-from-genicom.html" title="My family tree from Geni.com" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.jaxzin.com/2008/02/my-family-tree-from-genicom.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcBQ3szcCp7ImA9WB9WEEw.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-4403431687123476077</id><published>2007-11-13T22:44:00.000-05:00</published><updated>2007-11-13T23:04:12.588-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-13T23:04:12.588-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="email" /><category scheme="http://www.blogger.com/atom/ns#" term="gmail" /><category scheme="http://www.blogger.com/atom/ns#" term="import" /><category scheme="http://www.blogger.com/atom/ns#" term="imap" /><title>Importing old emails into Gmail via IMAP</title><content type="html">So Gmail added IMAP support this month and the biggest benefit I got from the new addition was a simple way to import my pre-Gmail email.  When I first got my account several years ago I looked into importing all of my old email messages into my Gmail account but found it would be tedious and fraught with problems.  The biggest one being there seemed to be no way to import the emails and preserve their old header information such as who sent it, what address they sent it to, when they sent it and when I originally received it.  All the import tools I found were nothing more than glorified resenders that simply emailed my old emails to my new account.  But now with an IMAP link between Gmail and Apple Mail, my current email client, importing my old email is as easy as dragging and dropping them into my Gmail inbox.  Unfortunately Apple Mail 3.0 is still flaky and trying to move too many emails at once causes it to crash.  If I import them in about one-month batches it seems to handle it.  With seven years of email to import, I'm about three-quarters of the way through the import after three nights of importing a month, waiting, moving the next month, etc.  But it's going smoothly and all the original header information is preserved accurately as well as the attachments to the originals.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-4403431687123476077?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/avYmB5YOldRbNCMkJzFGP8pOpuM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/avYmB5YOldRbNCMkJzFGP8pOpuM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/avYmB5YOldRbNCMkJzFGP8pOpuM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/avYmB5YOldRbNCMkJzFGP8pOpuM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=S9t0JVoY"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=ouTY9dnL"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=ouTY9dnL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=Tpi5jytw"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=Tpi5jytw" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=zjo5cmgd"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=42" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=XVPir3cv"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/g7plw2qQdIQ" height="1" width="1"/&gt;</content><link rel="related" href="http://mail.google.com/support/bin/answer.py?answer=75725" title="Importing old emails into Gmail via IMAP" /><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/4403431687123476077/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=4403431687123476077" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/4403431687123476077?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/4403431687123476077?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/g7plw2qQdIQ/importing-old-emails-into-gmail-via.html" title="Importing old emails into Gmail via IMAP" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2007/11/importing-old-emails-into-gmail-via.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4NSHY_fCp7ImA9WB5aEk8.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-4034569195380231601</id><published>2007-09-07T23:49:00.000-04:00</published><updated>2007-09-07T23:59:59.844-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-07T23:59:59.844-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="protection" /><category scheme="http://www.blogger.com/atom/ns#" term="identity" /><category scheme="http://www.blogger.com/atom/ns#" term="theft" /><title>Identity Theft and You</title><content type="html">I recently was forwarded an email about Google's "scary" (for some) feature of reverse phone searching.  You can read more about the email at &lt;a href="http://www.snopes.com/computer/internet/google.asp"&gt;Snopes.com&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;Anyway, I was bothered enough by the false sense of security a FUD email like this provides for those who aren't as wise to today's Internet issues that I was forced to write the following response for my family to read as a counterpoint.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I receive many forwarded emails, but I award few with more than a passing glance.  This one is so misguided though, I felt it deserved a response at least to those I know and care about.&lt;br /&gt;&lt;br /&gt;Phone numbers and addresses aren't private information and shouldn't be or they betray the very nature of what they are, location devices.  Reverse searching for a person or address based on a phone number has been available for a very long time on many websites, the most well known, for me at least, being http://anywho.com.&lt;br /&gt;&lt;br /&gt;The advice the original email provided will lead many who read it into a false sense of security while making things harder only for legitimate people looking to contact them.  Removing yourself from Google's listing makes it not only harder for the "bad" people to find you but also your friends, family, and business associates.  Someone looking to steal your identity or find out information about you has many resources beyond Google in this era of the Information Age. &lt;br /&gt;&lt;br /&gt;If you are truly looking to protect yourself from identity theft there are more effective ways:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;   &lt;li&gt;&lt;span style="font-weight:bold;"&gt;Create a &lt;a href="http://www.google.com/alerts"&gt;Google Search Alert&lt;/a&gt; for your social security number and/or credit card numbers.&lt;/span&gt;  This will notify you via email if Google finds one of these numbers on the Internet.  That way, if one of these important numbers have been stolen and appears online, you'll be one of the first to know.&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;&lt;span style="font-weight:bold;"&gt;Check your credit report annually for free at &lt;a href="http://www.annualcreditreport.com"&gt;http://www.annualcreditreport.com&lt;/a&gt;.&lt;/span&gt;  Review it to make sure no one has stolen your identity&lt;/li&gt;&lt;br /&gt;         &lt;ul&gt;&lt;li&gt;NOTE: Beware of freecreditreport.com.  It is a well-advertised scam.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;   &lt;li&gt;&lt;span style="font-weight:bold;"&gt;Place a fraud alert or credit freeze on your credit report.&lt;/span&gt;  Its an extreme measure, but it then allows only you can get credit in your name using a private PIN.&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;&lt;span style="font-weight:bold;"&gt;NEVER use a debit card or personal checks.&lt;/span&gt;  They are linked directly to your rightfully earned money with no safeguard and provide you no recourse if someone fraudulently takes money from your bank account.  A credit card provides many protections a debit card does not.&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;&lt;span style="font-weight:bold;"&gt;Ask your credit card company if they provide single-use credit card numbers.&lt;/span&gt;  Many, such as Discover, provide an online utility to generate a new credit card number to use for each of your online purchases.  This will protect you because if that single-use number is stolen it is worthless.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Find out even more ways to protect yourself: &lt;a href="http://www.google.com/search?q=protect+identity+theft"&gt;http://www.google.com/search?q=protect+identity+theft&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now I, Brian Jackson, personally wrote every word of this email and I hope THIS is what you pass on to friends and family!&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-4034569195380231601?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Vuv0WXgG2_iyAE9TuB2MwfpGuiE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vuv0WXgG2_iyAE9TuB2MwfpGuiE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Vuv0WXgG2_iyAE9TuB2MwfpGuiE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vuv0WXgG2_iyAE9TuB2MwfpGuiE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=FHsaf16p"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=9Ta9b5n1"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=9Ta9b5n1" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=dBfCzDPn"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=dBfCzDPn" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=GHnrQbUK"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=42" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=A8WMCa85"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/N6v91O7rvSg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/4034569195380231601/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=4034569195380231601" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/4034569195380231601?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/4034569195380231601?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/N6v91O7rvSg/identity-theft-and-you.html" title="Identity Theft and You" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2007/09/identity-theft-and-you.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ADRn0_eip7ImA9WxNUEkg.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-2173646601908872268</id><published>2007-08-24T14:29:00.001-04:00</published><updated>2009-11-03T09:49:37.342-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-03T09:49:37.342-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="maven" /><category scheme="http://www.blogger.com/atom/ns#" term="quirk" /><title>Maven Quirks: Parents of Dependencies</title><content type="html">So try this in Maven.  Create a project A and don't install it.  Create two subprojects, B and C, that have A as their parent.  Make B depend on C.  Install C.  Try to build B.  You won't be able to as Maven claims it can't download A.  Huh?  Why did C build then?&lt;br /&gt;&lt;br /&gt;The cause is that Maven can resolve a project's parent on the local drive using a relative path.  But if a project has a dependency, it will only look up that dependency's parent through the repositories, even if that parent is available via a relative path.&lt;br /&gt;&lt;br /&gt;The solution, install A into your local repository.  If another developer gets B out of your SCM and tries to build they will fail with the same problem.  So I've now learned.  Deploy more snapshot builds of parent POMs to keep my fellow developers happy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-2173646601908872268?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e2gHC0jOAEpnPblKROHckknj1EI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e2gHC0jOAEpnPblKROHckknj1EI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e2gHC0jOAEpnPblKROHckknj1EI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e2gHC0jOAEpnPblKROHckknj1EI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=BclKZQ8K"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=rum0SlBS"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=rum0SlBS" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=ESptmiPd"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=ESptmiPd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=ep4lMghP"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=42" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=0u7Q3Em9"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/L2cNGOmVuyM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/2173646601908872268/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=2173646601908872268" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2173646601908872268?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/2173646601908872268?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/L2cNGOmVuyM/maven-parents.html" title="Maven Quirks: Parents of Dependencies" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2007/08/maven-parents.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MDQ3Y5eSp7ImA9WB5SE0s.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-6427555397581158272</id><published>2007-06-08T16:42:00.001-04:00</published><updated>2007-06-09T02:11:12.821-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-06-09T02:11:12.821-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="maven" /><title>Maven for Ant Users</title><content type="html">My coworker asked me to describe how Maven compares and differs to Ant.  I realized how hard it was for me to describe what a developer gets for moving their build process from Ant scripts to Maven.  I can't make the argument that you can do X with Maven but not with Ant because I don't really have a valid example.  However, I am inclined to make the argument that you can do X with both but with Maven it's easier.&lt;br /&gt;&lt;br /&gt;With Maven, you collect metadata about your project instead of writing scripts defining the steps your build will take.  For example, if you look at an Ant script you'll immediately see that it is organized as targets which many developers use to define and group the steps of their build process.  In a Maven POM file, you won't see similar build steps defined.  This can be confusing for a new Maven user coming from the world of Ant.  I know it was for me.  Instead, you'll see lots of metadata about the project such as dependencies, Maven plugins to use, locations for the source control repository and project website, the working directory structure, contributors and more, but nothing that defines what should happen when you want to build the project's jar, or generate a documentation site for the project.  These steps are defined by various Maven plugins.&lt;br /&gt;&lt;br /&gt;Maven plugins are the most tangible thing you get from using Maven over Ant.  What the plugins provide are nothing you can't do with Ant, but they encompass many of the  tasks Ant users have written and rewritten time and time again.  Goals like compiling your classes, running your unit tests, jaring your classes, generating javadoc, building a JAR of your source files, and on and on.  So if you want to build your project with Generics support, you'll define in your Maven POM file that the compiler plugin should target JDK 5.0, but you won't have to define what Maven needs to do to complete the goal.&lt;br /&gt;&lt;br /&gt;So when it comes time to build your project, you haven't spent anytime rewriting goals, instead you've only spent time describing how your project differs from other projects.  So when you call "mvn jar:jar" instead of "ant jar", you won't have written any of the boilerplate script to tell Ant how to build a jar and which steps it depends on (compile, test), you'll just have reused the jar goal that a Maven developer wrote.&lt;br /&gt;&lt;br /&gt;With Maven you get to focus on the high-level task of defining your project instead of the low-level task of defining your build.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-6427555397581158272?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/c7tbtT0694xDGQKlTNewpEP2PJw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c7tbtT0694xDGQKlTNewpEP2PJw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/c7tbtT0694xDGQKlTNewpEP2PJw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c7tbtT0694xDGQKlTNewpEP2PJw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=9SyX2CNP"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=0mJhLYLG"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=0mJhLYLG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=BkKnv6Qu"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=BkKnv6Qu" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=0oyEfO34"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=42" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=8vJh6n2w"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/jAQnuGUQXQ8" height="1" width="1"/&gt;</content><link rel="related" href="http://maven.apache.org" title="Maven for Ant Users" /><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/6427555397581158272/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=6427555397581158272" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/6427555397581158272?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/6427555397581158272?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/jAQnuGUQXQ8/maven-for-ant-users.html" title="Maven for Ant Users" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>4</thr:total><feedburner:origLink>http://www.jaxzin.com/2007/06/maven-for-ant-users.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMNSHk7fyp7ImA9WBFSF0k.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-5989458673829340236</id><published>2007-02-17T16:37:00.000-05:00</published><updated>2007-02-17T16:41:39.707-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-02-17T16:41:39.707-05:00</app:edited><title>Jen on The Weather Channel</title><content type="html">Jen, had a report on The Weather Channel!  It's the first time I got to see her on TV.  I took the time to grab it off my TiVo, decrypt the video, reencode it, trim out the leader and trailer and upload it to YouTube.  Take a look!&lt;br /&gt;&lt;br /&gt;&lt;a style="left: 0px ! important; top: 15px ! important;" class="abp-objtab visible ontop" href="http://www.youtube.com/v/OYdyj8AiZVc"&gt;&lt;/a&gt;&lt;a style="left: 0px ! important; top: 15px ! important;" class="abp-objtab visible ontop" href="http://www.youtube.com/v/OYdyj8AiZVc"&gt;&lt;/a&gt;&lt;object height="350" width="425"&gt; &lt;param name="movie" value="http://www.youtube.com/v/OYdyj8AiZVc"&gt;  &lt;embed src="http://www.youtube.com/v/OYdyj8AiZVc" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-5989458673829340236?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HpIvuZ6sfB_56uPIDRkAaMZzEl0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HpIvuZ6sfB_56uPIDRkAaMZzEl0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HpIvuZ6sfB_56uPIDRkAaMZzEl0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HpIvuZ6sfB_56uPIDRkAaMZzEl0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=P68wd43B"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=zBzDnq50"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=zBzDnq50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=fH3yoBSR"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=fH3yoBSR" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=AnQHXyGq"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=42" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=Ky7ZL6Vz"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/t829jfEEJqk" height="1" width="1"/&gt;</content><link rel="related" href="http://www.youtube.com/watch?v=OYdyj8AiZVc" title="Jen on The Weather Channel" /><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/5989458673829340236/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=5989458673829340236" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/5989458673829340236?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/5989458673829340236?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/t829jfEEJqk/jen-on-weather-channel.html" title="Jen on The Weather Channel" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2007/02/jen-on-weather-channel.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcCQHY_eip7ImA9WBBbFk8.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-3978974382831590649</id><published>2007-01-12T13:49:00.000-05:00</published><updated>2007-01-12T13:54:21.842-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-12T13:54:21.842-05:00</app:edited><title>Flocking Applet</title><content type="html">So I was brushing up on my CS fundamentals recently and was reminded of the topic of &lt;a href="http://en.wikipedia.org/wiki/Markov_chains"&gt;Markov chains&lt;/a&gt;.  In college, I created an applet that simulated &lt;a href="http://en.wikipedia.org/wiki/Flocking_%28behavior%29"&gt;flocking behavior&lt;/a&gt; in animals using a Markov chain and it turns out its still up on my college site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-3978974382831590649?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JxnC_n9rFc4MesXJGzkAWeMIY-k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JxnC_n9rFc4MesXJGzkAWeMIY-k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JxnC_n9rFc4MesXJGzkAWeMIY-k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JxnC_n9rFc4MesXJGzkAWeMIY-k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=dcmW9dUK"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=JAmYMsnL"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=JAmYMsnL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=5qybMbeP"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=5qybMbeP" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=MDed50o4"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=42" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=6aiMKKuV"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/Lz9JeAlHoAE" height="1" width="1"/&gt;</content><link rel="related" href="http://shakti.trincoll.edu/~bjackson/java/" title="Flocking Applet" /><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/3978974382831590649/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=3978974382831590649" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/3978974382831590649?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/3978974382831590649?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/Lz9JeAlHoAE/flocking-applet.html" title="Flocking Applet" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2007/01/flocking-applet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMGRXY-fip7ImA9WBBTEUg.&quot;"><id>tag:blogger.com,1999:blog-11698705.post-116015042484214328</id><published>2006-10-06T11:58:00.000-04:00</published><updated>2006-10-06T12:00:24.856-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-10-06T12:00:24.856-04:00</app:edited><title>CSS: max-width in IE 6</title><content type="html">I found this great example of how to implement the CSS2 properties of max-height, min height, max-width and min-width in Internet Explorer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11698705-116015042484214328?l=www.jaxzin.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QrsCWdCzQbhQsNfZpOPWhY-mryg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QrsCWdCzQbhQsNfZpOPWhY-mryg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QrsCWdCzQbhQsNfZpOPWhY-mryg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QrsCWdCzQbhQsNfZpOPWhY-mryg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=2OuyFwbY"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=V4f0UXNc"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=V4f0UXNc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=bncKPNsC"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?i=bncKPNsC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=ym3p2b0f"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=42" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jaxzin?a=pPAMNgS7"&gt;&lt;img src="http://feeds.feedburner.com/~f/jaxzin?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaxzin/~4/UbhdMNreCuU" height="1" width="1"/&gt;</content><link rel="related" href="http://www.svendtofte.com/code/max_width_in_ie/" title="CSS: max-width in IE 6" /><link rel="replies" type="application/atom+xml" href="http://www.jaxzin.com/feeds/116015042484214328/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=11698705&amp;postID=116015042484214328" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/116015042484214328?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11698705/posts/default/116015042484214328?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaxzin/~3/UbhdMNreCuU/css-max-width-in-ie-6.html" title="CSS: max-width in IE 6" /><author><name>Brian R. Jackson</name><uri>http://www.blogger.com/profile/18049607104293304749</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="01467006820248562826" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.jaxzin.com/2006/10/css-max-width-in-ie-6.html</feedburner:origLink></entry></feed>
