<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>
Co-founder and CTO of Evocatus and
SnapHop
.

Programmer and wannabe taste connoisseur.


I like: 

CigarsBeerWineScotch ChocolateHorror Movies
Connect:




</description><title>Adam Gent</title><generator>Tumblr (3.0; @agentgt)</generator><link>http://adamgent.com/</link><item><title>Spring Social Eventbrite plugin</title><description>&lt;a href="https://github.com/agentgt/spring-social-eventbrite"&gt;Spring Social Eventbrite plugin&lt;/a&gt;: &lt;p&gt;I started on a Spring Social Plugin for Eventbrite. Right now it only supports search (event_search) but in the coming days I will be adding more support.&lt;/p&gt;
&lt;p&gt;Its on &lt;a href="https://github.com/agentgt/spring-social-eventbrite"&gt;github&lt;/a&gt;.&lt;/p&gt;</description><link>http://adamgent.com/post/23571375661</link><guid>http://adamgent.com/post/23571375661</guid><pubDate>Tue, 22 May 2012 19:09:16 -0400</pubDate><category>spring</category><category>social</category><category>eventbrite</category><category>SnapHop</category><category>java</category><category>github</category></item><item><title>The Lead Engineer should be the Release Engineer</title><description>&lt;p&gt;While it may not be true in small companies/startups the majority of organizations make the &lt;strong&gt;least experienced developer&lt;/strong&gt; manage the build and releases. In other words the least experienced person is generally given the &amp;#8220;&lt;a href="http://en.wikipedia.org/wiki/Release_engineering"&gt;release engineer&lt;/a&gt;&amp;#8221; job.&lt;/p&gt;
&lt;p&gt;I have seen this at many companies and its a horrible practice because a release engineer needs to have the following:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Accountability&lt;/li&gt;
&lt;li&gt;Vast architecture and dependency knowledge&lt;/li&gt;
&lt;li&gt;How to put all the pieces together.&lt;/li&gt;
&lt;li&gt;Vast tool/lib knowledge/experience both old and cutting edge&lt;/li&gt;
&lt;li&gt;Maintains organization flow&lt;/li&gt;
&lt;li&gt;Knows releases are critically important&lt;/li&gt;
&lt;li&gt;Can make critical last second decisions on their own&lt;/li&gt;
&lt;li&gt;Liaison to the rest of the organization (QA, Sales, Marketing)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;The above sounds like a description of a senior role?&lt;/strong&gt;&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;One could argue that all engineer&amp;#8217;s should maintain/know about the build (which I do agree with) but in large organizations that either does not happen or is not possible.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m actually incredibly annoyed to find &amp;#8220;&lt;strong&gt;lead architects&amp;#8221; &lt;/strong&gt; that have no idea how the build works. That&amp;#8217;s right. Have no idea how one of the most critical pieces of custom software their organization uses works. &lt;strong&gt;If you asked them to cut a release they probably could not.&lt;/strong&gt; Why is this so wrong? BUILD IS ARCHITECTURE! How you build is very correlated to how you do business (SAAS, iPhone App, etc). For SAAS/Websites your build is deploying so even more knowledge is needed.&lt;/p&gt;
&lt;p&gt;&lt;img height="499" src="http://29.media.tumblr.com/tumblr_loslzo2vo11qk3561o1_400.png" width="400"/&gt;&lt;/p&gt;
&lt;p&gt;However what I am most annoyed with is the &lt;strong&gt;accountability&lt;/strong&gt;. As a contractor I have seen it a dozen times where a junior engineer (release engineer) get trashed by a manager for screwing up the release. Often bugs are even blamed on the release engineer (and not the lead/principal or project manager). Not only does the release engineer usually get the blame he/she is usually an &lt;a href="http://en.wikipedia.org/wiki/Fucking_New_Guy"&gt;FNG&lt;/a&gt;. So he/she is already dealing with loads of social bias.&lt;/p&gt;
&lt;p&gt;On top of accountability Release engineers get pulled from all sides of the organziations:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&amp;#8220;Hey can you cut me a build with the special new stuff&amp;#8221; &amp;#8212; Desperate Sales Engineer.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As a junior employee its rather hard to say no to senior people or make correct big picture decisions. That just takes experience and relationship clout.&lt;/p&gt;
&lt;p&gt;One could argue that its a &amp;#8220;Good Thing&amp;#8221; to throw the &lt;a href="http://en.wikipedia.org/wiki/Fucking_New_Guy"&gt;FNG&amp;#8217;s&lt;/a&gt; into the deep end as a sort of intense training but in my experience this has been bad. It can be detrimental to the moral of a junior engineer even an excellent junior engineer. &lt;/p&gt;
&lt;p&gt;If your a lead engineer please consider taking over the build and letting junior developers learn to develop. By taking over the build you will be watching checkins making it easier to provide on demand mentoring.&lt;/p&gt;
&lt;p&gt;Otherwise I don&amp;#8217;t have very strong feelings about the subject. &lt;/p&gt;</description><link>http://adamgent.com/post/22258164806</link><guid>http://adamgent.com/post/22258164806</guid><pubDate>Wed, 02 May 2012 11:43:00 -0400</pubDate><category>engineer</category></item><item><title>Copy rows from one table to another (SELECT to INSERT)</title><description>&lt;p&gt;I always seem to need to copy a few rows from our production postgresql database which is remote to my local development database. I could use something like pgdump but I really just want to turn my SELECT statements into INSERT statements.&lt;/p&gt;
&lt;p&gt;A stackoverflow post shows how to turn SELECT-&amp;gt;INSERT for Postgresql but its still rather manual: &lt;a href="http://stackoverflow.com/questions/1820650/sql-script-to-create-insert-script/10392124#10392124"&gt;http://stackoverflow.com/questions/1820650/sql-script-to-create-insert-script/10392124#10392124&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So I have written a python script that will take a SELECT statement into INSERT statements. The script assumes that your selecting on all the columns in the table which is easy to do with pgAdmin III: right click on a table and select &amp;#8216;Scripts-&amp;gt;SELECT&amp;#8217;.
&lt;script src="https://gist.github.com/2568047.js?file=select2insert.py" type="text/javascript"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;Sometimes Tumblr messes up the Gist embed: &lt;a href="https://gist.github.com/2568047"&gt;https://gist.github.com/2568047&lt;/a&gt;&lt;/p&gt;</description><link>http://adamgent.com/post/22191856415</link><guid>http://adamgent.com/post/22191856415</guid><pubDate>Tue, 01 May 2012 09:58:00 -0400</pubDate><category>postgresql</category><category>sql</category><category>python</category></item><item><title>i18n with Mustache Partials</title><description>&lt;a href="http://stackoverflow.com/a/10004113/318174"&gt;i18n with Mustache Partials&lt;/a&gt;: &lt;p&gt;I’m thinking of replacing our current i18n with &lt;a href="http://mustache.github.com/"&gt;Mustache&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Looked to see what others have done and found a post on Stackover flow.&lt;/p&gt;
&lt;p&gt;My &lt;a href="http://stackoverflow.com/a/10004113/318174"&gt;answer&lt;/a&gt; covers the solution of using Mustache partials.&lt;/p&gt;</description><link>http://adamgent.com/post/20447247632</link><guid>http://adamgent.com/post/20447247632</guid><pubDate>Tue, 03 Apr 2012 22:48:44 -0400</pubDate></item><item><title>A better Mustache Spring View</title><description>&lt;a href="https://github.com/agentgt/mustache-spring-view"&gt;A better Mustache Spring View&lt;/a&gt;: &lt;p&gt;I forked a &lt;a href="https://github.com/sps/mustache-spring-view"&gt;github repository&lt;/a&gt; that has a Mustache View Resolver. It had no support for partials.&lt;/p&gt;
&lt;p&gt;I fixed that: &lt;a href="https://github.com/agentgt/mustache-spring-view"&gt;&lt;a href="https://github.com/agentgt/mustache-spring-view"&gt;https://github.com/agentgt/mustache-spring-view&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I need this for some &lt;a href="http://stackoverflow.com/questions/9773758/single-page-web-app-in-java-framework-or-examples"&gt;Spring MVC Single Page Application&lt;/a&gt; work I’m doing. I plan on making another github project to show how it works.&lt;/p&gt;</description><link>http://adamgent.com/post/20015162668</link><guid>http://adamgent.com/post/20015162668</guid><pubDate>Tue, 27 Mar 2012 13:58:01 -0400</pubDate><category>java</category><category>springframework</category><category>mustache</category></item><item><title>JATL 0.2.1 released</title><description>&lt;p&gt;&lt;a href="http://code.google.com/p/jatl/"&gt;JATL&lt;/a&gt; 0.2.1 has been released.&lt;/p&gt;
&lt;p&gt;A rather strange issue with how XML treats white space was fixed: &lt;a href="http://code.google.com/p/jatl/issues/detail?id=10"&gt;&lt;a href="http://code.google.com/p/jatl/issues/detail?id=10"&gt;http://code.google.com/p/jatl/issues/detail?id=10&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It turns out that XML &lt;a href="http://www.w3.org/TR/REC-xml/#AVNormalize"&gt;normalizes white spaces in attribute values&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;That is:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;CR&lt;/strong&gt; &lt;code&gt;#xD&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Newline&lt;/strong&gt; &lt;code&gt;#xA&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tab&lt;/strong&gt; &lt;code&gt;#x9&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Will be replaced with &lt;strong&gt;Space&lt;/strong&gt; &lt;code&gt;#x20&lt;/code&gt; when parsed by a compliant XML parser. The only way to avoid this is to explicitly escape these characters. JATL now handles this correctly such that if you put a newline, tab, or carriage return character in your attribute its escaped properly. I feel slightly stupid about missing this as I even remember learning about this a long time ago.&lt;/p&gt;
&lt;p&gt;The future release of JATL (0.3.0) will make it possible plugin your own custom escape strategy for both attributes and elements. &lt;/p&gt;
&lt;p&gt;The important thing to take from this is that there are different forms of XML escaping:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Element escaping (this is what most people know about)&lt;/li&gt;
&lt;li&gt;Attribute escaping (this is what I missed)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Attribute escaping is rather tricky as you have to know when to escape the single (&lt;code&gt;'&lt;/code&gt;) or double quote (&lt;code&gt;"&lt;/code&gt;). That is if you use the double quote to surround your attribute you will have to escape it. Vice versa for the other issue. I added a &lt;a href="http://code.google.com/p/jatl/source/browse/src/main/java/com/googlecode/jatl/MarkupUtils.java"&gt;Util class&lt;/a&gt; to handle this and will make it more usable in the future.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Thank you David Portabella for finding this issue.&lt;/em&gt;&lt;/p&gt;</description><link>http://adamgent.com/post/18846221046</link><guid>http://adamgent.com/post/18846221046</guid><pubDate>Tue, 06 Mar 2012 08:54:00 -0500</pubDate><category>java</category><category>jatl</category><category>xml</category><category>html5</category></item><item><title>MOG vs Pandora: thoughts.</title><description>&lt;p&gt;I have a both &lt;strong&gt;&lt;a href="http://www.pandora.com/"&gt;Pandora&lt;/a&gt; One&lt;/strong&gt; subscription and a &lt;strong&gt;&lt;a href="https://mog.com"&gt;Mog&lt;/a&gt; Primo&lt;/strong&gt; subscription. &lt;/p&gt;
&lt;p&gt;Both services do a very good job and both I believe are fairly priced.&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Pandora One&lt;/strong&gt;: &lt;strong&gt;$36.00&lt;/strong&gt; USD/year&amp;#160;: &lt;em&gt;Music Discovery @ 192kbps&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mog Primo&lt;/strong&gt;: &lt;strong&gt;$9.99&lt;/strong&gt; USD/month&amp;#160;: &lt;em&gt;infinite and select-able 320kbps and mobile download.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I have no guilt spending this money. The opportunity cost saving, pleasure, and work effort stimulation these services provide is well worth the money. Still your probably asking why I have two separate service accounts or&amp;#8230;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hey what about?&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://spotify.com"&gt;Spotify&lt;/a&gt;: because its service requires a native player which is not very well supported on Linux Ubuntu I did not like it. Also Spotify is marketing material kind of sucks. They somehow turned me off from the beginning&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rdio.com"&gt;Rdio&lt;/a&gt;: I truly believe Rdio is no better in sound quality then Pandora One. Rdio sounds more &amp;#8220;punchy&amp;#8221; but I think they just boost/amp the signal. Basically Mog w/o the quality. They have an amazing UI. There marketing material is fantastic. There sound quality is OK (certainly better than free Pandora). Their social / follow feature are the best.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;This is not to say any of these technologies suck. They are utterly impressive to what we used to have and are much more cost effective than iTunes. However the expectations are much higher. Consequently some more critique:&lt;/p&gt;
&lt;p&gt;Pandora is like the USA. Its the oldest &amp;#8220;&lt;em&gt;free&lt;/em&gt;&amp;#8221; streaming music service that most people know. Its everywhere. It was amazing music to the masses when it was released&amp;#8230;. &lt;/p&gt;
&lt;p&gt;However Pandora&amp;#8217;s sound quality sucketh asseth compared to Mog and Spotify. Particularly Mog which is freakin outstanding. I offer you a simple comparison.&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Tune into Pandora to one of your favorite stations&lt;/li&gt;
&lt;li&gt;Take note of what song is playing&lt;/li&gt;
&lt;li&gt;Pause the song&lt;/li&gt;
&lt;li&gt;Sign up for Mog if you haven&amp;#8217;t&lt;/li&gt;
&lt;li&gt;Play the song in Mog. Take note how you can select your song.&lt;/li&gt;
&lt;li&gt;Notice the amazing difference (which is considerably noticeable even with a Pandora One @192kbps account!)&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;So Pandora must suck right? NO NO NO. Pandora&amp;#8217;s automated Music Genome or whatever they call it works for 90% of the population (personal anecdotal qualitative analysis) and is still the best &lt;em&gt;Music Discovery&lt;/em&gt;. Mog &amp;#8220;&lt;em&gt;Artist Radio&lt;/em&gt;&amp;#8221; comes no where close. If you have no idea what you like or are not a super music lover I seriously recommend using Pandora or Rdio first. Pandora helped me find what I liked and saved me from screwing with playlists and whatnot. Really. The people who &lt;strong&gt;bitch&lt;/strong&gt; that Pandora plays the same stuff over and over are just too lazy to make another station. That being said Rdio is also has fantastic music discovery.&lt;/p&gt;
&lt;p&gt;Mog is kick ass because of its music quality is CD quality, albums selection, semi-descent music discovery, mobile music download (good for airplanes). Annoying audiophiles will claim its still not good enough but it really is pretty much 16 bit 44khz which is what most music is still recorded at. Any better and you really really need a good sound system to notice. What I like best about Mog is it seems its trying to optimize for audiophiles and they seem to be getting better much quicker than spotify&amp;#8230;. I hope they do.&lt;/p&gt;</description><link>http://adamgent.com/post/18099295629</link><guid>http://adamgent.com/post/18099295629</guid><pubDate>Wed, 22 Feb 2012 19:28:00 -0500</pubDate><category>music</category><category>pandora</category><category>mog</category></item><item><title>Photo</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lz25sab95e1qbwvp8o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://adamgent.com/post/18096816870</link><guid>http://adamgent.com/post/18096816870</guid><pubDate>Wed, 22 Feb 2012 18:48:48 -0500</pubDate></item><item><title>Fixing Spring's Default View Resolver</title><description>&lt;p&gt;Most Spring MVC applications use &lt;code&gt;org.springframework.web.servlet.view.UrlBasedViewResolver&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This view resolver allows you to redirect with the prefix &amp;#8220;&lt;code&gt;redirect:&lt;/code&gt;&amp;#8221; thus you can do something like:&lt;/p&gt;
&lt;div&gt;
&lt;pre class="code"&gt;	@RequestMapping(value={"/doc/api", "/doc/api/"})
	public String apiDoc(ModelMap model) {
		//some logic
		m.put("hiddenStuff", "blah blah");
		if (success) { return "myview"; }
                else { return "redirect:/doc/api/index.html"; }
	}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;This will redirect to &lt;code&gt;http://host/doc/api/index.html?hiddenStuff=blah%20blah&lt;/code&gt; . This is probably not what you expected and also seems rather dangerous that its attaching model attributes as parameters.&lt;/p&gt;
&lt;p&gt;Below is a fix and some enhancements for this annoying problem:&lt;/p&gt;
&lt;script src="https://gist.github.com/1845479.js?file=CustomViewResolver.java"&gt;&lt;/script&gt;&lt;p&gt;This view resolver allows you to redirect with out attaching the model attributes with &lt;code&gt;redirect-no-model:&lt;/code&gt;.  I have also added a way to do a permanent redirect (301) with &lt;code&gt;redirect-permanently:&lt;/code&gt; instead of 307.  You would use this if you refactored a public URL for SEO purposes.&lt;/p&gt;</description><link>http://adamgent.com/post/17712888036</link><guid>http://adamgent.com/post/17712888036</guid><pubDate>Thu, 16 Feb 2012 10:33:00 -0500</pubDate><category>springframework</category><category>spring</category><category>java</category></item><item><title>The problem is Marketing and We can Solve it!</title><description>&lt;div class="my"&gt;
&lt;p&gt;&lt;strong&gt;We need more customers. &lt;/strong&gt;&lt;br/&gt;&lt;strong&gt; We need more sales.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We are tired of the fly-by-night loyalty programs.&lt;br/&gt; We are tired of social trickery discount solutions.  &lt;br/&gt; Tired of the Amway-Ponzi referral schemes. &lt;br/&gt; Tired of the Groupon phone calls. &lt;br/&gt; Tired of being taken advantage of. &lt;br/&gt; Tired of making our customers mad.&lt;/p&gt;
&lt;p&gt;We know what the problem is. Its marketing.&lt;br/&gt;Its not a new problem. Its an old problem.&lt;br/&gt; Its time to do it the reliable way.&lt;br/&gt;The way our parents, grandparents and ancestors did it: &lt;br/&gt; By getting our name out there!&lt;br/&gt; By reminding customers how much we offer!&lt;/p&gt;
&lt;p&gt;We know we need marketing. We know we need to sell.&lt;br/&gt;We need better tools. We need better guides and continuous education.&lt;br/&gt; Because marketing is ever-changing. What works today may not work tomorrow.&lt;/p&gt;
&lt;p&gt;We know something big is coming.&lt;br/&gt; Its the mobile revolution. Every person in the world will have a mobile device.&lt;/p&gt;
&lt;p&gt;Its time for us to put back on the gloves and get back in the fight.&lt;br/&gt; Its time to do what we do best: &lt;br/&gt; Pick the right people and the right resources to drive business.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Its time for better marketing. &lt;br/&gt;Its time for &lt;a class="snaphop" href="http://snaphop.com"&gt;SnapHop&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;</description><link>http://adamgent.com/post/17267707739</link><guid>http://adamgent.com/post/17267707739</guid><pubDate>Wed, 08 Feb 2012 11:39:30 -0500</pubDate><category>snaphop</category><category>mobile</category><category>marketing</category></item><item><title>Making QR Codes even dorkier with ANSI/ASCII</title><description>&lt;p&gt;At my current &lt;a href="http://snaphop.com"&gt;startup&lt;/a&gt; we generate QR codes as an option to connect to a mobile campaign. &lt;/p&gt;
&lt;p&gt;I have mixed feelings about QR codes:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;For now only marketing people and dorks like myself know what they are.&lt;/li&gt;
&lt;li&gt;You need a special app to scan the code.&lt;/li&gt;
&lt;li&gt;They look like ugly noise and for some reason look disingenuous.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;#8220;Hey what happened to that crossword puzzle!&amp;#8221;&lt;/em&gt; &lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;#8220;It won&amp;#8217;t scan!&amp;#8221;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;#8220;Why does the scanner keep crashing!&amp;#8221;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Luckily at SnapHop (and unlike paperlinks, sharesquare and countless others) we offer more than just QR codes to do mobile marketing (we also do &lt;a href="http://snaphop.com/blog/1554/inbound-sms-text-message-campaigns/"&gt;TXT&lt;/a&gt;, &lt;a href="mailto:a@hop.mx"&gt;Email&lt;/a&gt;, 4SQ and &lt;a href="http://snaphop.com/blog/1592/building-mobile-community-with-snaphop-shout-outs/"&gt;social&lt;/a&gt;). &lt;/p&gt;
&lt;p&gt;So in my sick dork fested mind I was like &amp;#8220;How can I make QR even dorkier&amp;#8221;?&lt;/p&gt;
&lt;p&gt;Behold an &lt;a href="http://en.wikipedia.org/wiki/ASCII_art"&gt;ASCII&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/ANSI_art"&gt;ANSI&lt;/a&gt; art QR generator:&lt;/p&gt;
&lt;pre class="qr"&gt; 
 
 
    ██████████████  ██  ██  ██  ██  ██  ██████████████
    ██          ██    ████████  ██  ██  ██          ██
    ██  ██████  ██  ██████    ██  ██    ██  ██████  ██
    ██  ██████  ██  ██████  ████        ██  ██████  ██
    ██  ██████  ██  ██    ████████████  ██  ██████  ██
    ██          ██      ████    ██  ██  ██          ██
    ██████████████  ██  ██  ██  ██  ██  ██████████████
                        ██  ██  ██                    
    ████████    ██  ██  ██████  ████████    ██████  ██
    ██    ██      ██    ██  ██      ████  ██      ██  
    ████    ██  ██    ████████████    ██    ██        
      ██      ██      ████    ████  ██    ██  ████    
    ██████████████    ████  ██████████  ██████  ██████
                  ████    ████████████████████      ██
      ████████  ██    ██  ██    ██    ████      ████  
    ██  ██  ████    ██    ██    ████          ██    ██
        ██    ████      ██    ██    ██████████████████
                    ████            ██      ██      ██
    ██████████████      ██      ██  ██  ██  ██████████
    ██          ██      ██  ██    ████      ██        
    ██  ██████  ██        ██        ██████████      ██
    ██  ██████  ██  ████  ██  ██  ████████  ██  ██████
    ██  ██████  ██  ████  ██████  ████  ████████████  
    ██          ██  ██    ████████          ██  ██    
    ██████████████  ██  ██  ██████    ██  ████████████


&lt;/pre&gt;
&lt;p&gt;Above is a QR code rendered in pure ASCII text using the &lt;a href="http://www.fileformat.info/info/unicode/char/2588/index.htm"&gt;FULL BLOCK UTF-8 character&lt;/a&gt;. Depending on your font settings you *should* be able to scan the code (Chrome on Linux works for me). You can see it and download it in its pure form &lt;a href="http://app.snaphop.com/experiment/qrtext?contents=http://snaphop.com/go"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also have fun with the ANSI coloring on your terminal using CURL:&lt;/p&gt;
&lt;script src="https://gist.github.com/1700331.js?file=qr_examples.sh" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;You can run all of those examples by opening your terminal and type:&lt;br/&gt;&lt;code&gt;curl &lt;a href="https://raw.github.com/gist/1700331/9ab4cc68b9ca022fa45f11aedb8df7780b5fe575/qr_examples.sh"&gt;https://raw.github.com/gist/1700331/9ab4cc68b9ca022fa45f11aedb8df7780b5fe575/qr_examples.sh&lt;/a&gt; | sh &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;While there are certainly others that have done this I do not know of any that generate ANSI colors.&lt;/p&gt;
&lt;p&gt;Here is a red one&lt;/p&gt;
&lt;pre class="qrRed"&gt; 
 
    ██████████████  ██  ██  ██  ██  ██  ██████████████    
    ██          ██    ████████  ██  ██  ██          ██    
    ██  ██████  ██  ██████    ██  ██    ██  ██████  ██    
    ██  ██████  ██  ██████  ████        ██  ██████  ██    
    ██  ██████  ██  ██    ████████████  ██  ██████  ██    
    ██          ██      ████    ██  ██  ██          ██    
    ██████████████  ██  ██  ██  ██  ██  ██████████████    
                        ██  ██  ██                        
    ████████    ██  ██  ██████  ████████    ██████  ██    
    ██    ██      ██    ██  ██      ████  ██      ██      
    ████    ██  ██    ████████████    ██    ██            
      ██      ██      ████    ████  ██    ██  ████        
    ██████████████    ████  ██████████  ██████  ██████    
                  ████    ████████████████████      ██    
      ████████  ██    ██  ██    ██    ████      ████      
    ██  ██  ████    ██    ██    ████          ██    ██    
        ██    ████      ██    ██    ██████████████████    
                    ████            ██      ██      ██    
    ██████████████      ██      ██  ██  ██  ██████████    
    ██          ██      ██  ██    ████      ██            
    ██  ██████  ██        ██        ██████████      ██    
    ██  ██████  ██  ████  ██  ██  ████████  ██  ██████    
    ██  ██████  ██  ████  ██████  ████  ████████████      
    ██          ██  ██    ████████          ██  ██        
    ██████████████  ██  ██  ██████    ██  ████████████    


&lt;/pre&gt;
&lt;p&gt;Some may argue that this really serves no practical purposes and I would mostly agree but I am continuously shocked at the sheer number of text only print and UI interfaces still out there. For example most &lt;a href="http://en.wikipedia.org/wiki/Point_of_sale"&gt;POS (Point-Of-Sales)&lt;/a&gt; can really only print ASCII text. Now before you get excited about making some sort of coupon QR POS you should know that that most POS can only print 40 characters wide. However I am sure there are other uses like LED billboards that this maybe useful for.&lt;/p&gt;
&lt;p&gt;At some point I will release the horrid looking Java code I wrote to generate this.&lt;/p&gt;</description><link>http://adamgent.com/post/16714341387</link><guid>http://adamgent.com/post/16714341387</guid><pubDate>Sun, 29 Jan 2012 15:29:00 -0500</pubDate></item><item><title>IQ, EQ, MQ ... another triangle.</title><description>&lt;p&gt;From Twitter &amp;#8220;IQ =Intellectual Quotient, EQ=Emotional Quotient, MQ=Moral Quotient; thus Mind/Body/Soul&amp;#8221; Dipak Jain, Instead #WEF #Davos&lt;/p&gt;
&lt;p&gt;Some what analogous to my &lt;a href="http://adamgent.com/post/16183143598/my-mantra-for-business-doing-is-producing"&gt;Think, Do, Share triangle&lt;/a&gt;.&lt;/p&gt;</description><link>http://adamgent.com/post/16494765799</link><guid>http://adamgent.com/post/16494765799</guid><pubDate>Wed, 25 Jan 2012 20:15:00 -0500</pubDate></item><item><title>My mantra for business.
DOing: Is producing something that is...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_ly45fc2qwu1qk3561o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;My mantra for business.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DO&lt;/strong&gt;ing: Is producing something that is generally tangible and not ephemeral. Engineering.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;THINK&lt;/strong&gt;ing: Is planning, brainstorming, writing on whiteboards, meetings, etc. Management.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SHARE&lt;/strong&gt;ing: Is external approval and communication. Sales and Marketing.&lt;/p&gt;
&lt;p&gt;Of course these three very generic concepts overlap so think of this as an analog continuous triangle. Also you can’t really be 100% on a specific vertex. The trick is to balance all three. Its OK if you or your job is more naturally inclined to a specific vertices but I believe you should endeavor to always move towards the center. &lt;strong&gt;Particularly if you are a startup!&lt;/strong&gt; For example to make &lt;strong&gt;THINK&lt;/strong&gt;ing more of a &lt;strong&gt;DO&lt;/strong&gt;ing and &lt;strong&gt;SHARE&lt;/strong&gt;ing process consider iteratively blogging about your brainstorm and prototypes. To make &lt;strong&gt;SHARE&lt;/strong&gt;ing more like &lt;strong&gt;THINK&lt;/strong&gt;ing and &lt;strong&gt;DO&lt;/strong&gt;ing consider backing your communication with something you have built. To make &lt;strong&gt;DO&lt;/strong&gt;ing more like the other two just do not go off on your own and build things with out discussing or thinking.  &lt;/p&gt;</description><link>http://adamgent.com/post/16183143598</link><guid>http://adamgent.com/post/16183143598</guid><pubDate>Fri, 20 Jan 2012 15:11:00 -0500</pubDate></item><item><title>Get Maven to use the latest version for a dependency</title><description>&lt;a href="http://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the-latest-version-of-a-dependency/8795380#8795380"&gt;Get Maven to use the latest version for a dependency&lt;/a&gt;: &lt;p&gt;I finally figured out how to get maven to use the latest version of a dependency while keeping the builds reproducible. What PITA. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the-latest-version-of-a-dependency/8795380#8795380"&gt;http://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the-latest-version-of-a-dependency/8795380#8795380&lt;/a&gt;&lt;/p&gt;</description><link>http://adamgent.com/post/15581591125</link><guid>http://adamgent.com/post/15581591125</guid><pubDate>Mon, 09 Jan 2012 16:29:52 -0500</pubDate><category>maven</category></item><item><title>HttpServletRequest getRequestURL() is dumb</title><description>&lt;p&gt;Every time I have to wrap a Servlet Request for a filter I&amp;#8217;m always reminded of the strangeness of getRequestURL() and its brother getRequestURI().&lt;/p&gt;
&lt;p&gt;For the most part &lt;strong&gt;&lt;a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html#getRequestURI()"&gt;getRequestURI()&lt;/a&gt;&lt;/strong&gt; makes sense if you know what it does. I say &amp;#8220;know&amp;#8221; because its javadoc is rather questionable.  It returns only the path and not the query parameters, host, port, and scheme. Ideally it should be called getRequestPath() but I can see why that name might be confused with the context path which is a completely different thing.&lt;/p&gt;
&lt;p&gt;Now we get to &lt;strong&gt;&lt;a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html#getRequestURL()"&gt;getRequestURL()&lt;/a&gt;&lt;/strong&gt; which returns a StringBuffer? According to the Javadoc I can edit this StringBuffer and add query parameters. However this is extremely misleading as this will do absolutely nothing to the request. In fact &lt;strong&gt;getRequestURL()&lt;/strong&gt; returns a new StringBuffer everytime. Why the hell not just return a String? Some say its for performance (which its not but I&amp;#8217;ll leave that as an exercise for later) and some say for convenience but I say its annoying. &lt;/p&gt;
&lt;p&gt;Also one would think &lt;strong&gt;getRequestURL() &lt;/strong&gt;would return the query parameters but it does not which also bothers me slightly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html#getPathInfo()"&gt;getPathInfo()&lt;/a&gt;&lt;/strong&gt; is even more confusing. &lt;a href="http://stackoverflow.com/questions/4278083/how-to-get-request-uri-without-context-path"&gt;I try to avoid using&lt;/a&gt; it and instead use &lt;a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html#getContextPath()"&gt;getContextPath()&lt;/a&gt; and getRequestURI().&lt;/p&gt;
&lt;p&gt;The reason these things are annoying is that every time I go write a servlet filter I forget what does what and end up writing some log statements to see the output of each (since I don&amp;#8217;t trust the javadoc). &lt;/p&gt;</description><link>http://adamgent.com/post/15240780320</link><guid>http://adamgent.com/post/15240780320</guid><pubDate>Tue, 03 Jan 2012 09:40:00 -0500</pubDate><category>java</category><category>servlet</category></item><item><title>9 reasons you must install Sublime Text 2. Code like a man, man.</title><description>&lt;p&gt;Sublime Text is freakin awesome on Linux!&lt;/p&gt;
&lt;p&gt;&lt;a class="tumblr_blog" href="http://1p1e1.tumblr.com/post/14262857223/9-reasons-you-must-install-sublime-text-2-code-like-a"&gt;1p1e1&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;

&lt;p class="p1"&gt;Hello, fellow code monkeys.&lt;/p&gt;
&lt;p class="p1"&gt;Look at your editor. Now back at mine. Now back at yours. Now back to mine. Sadly your editor is not like mine. But if you stopped using noob-scented editor, and switched to Sublime Text 2, your editor could look like mine.&lt;/p&gt;
&lt;p class="p1"&gt;Look down. Back up. Where are you?&lt;/p&gt;
&lt;p class="p1"&gt;You are on a desk with the editor your editor could look like. &lt;/p&gt;
&lt;p class="p1"&gt;What’s in your hand? Back at me. I have it! It’s a package control with several handy plugins that you would love. Look again. The plugins are now diamonds. Anything is possible when your editor looks like Sublime Text 2 and not Eclipse.&lt;/p&gt;
&lt;p class="p1"&gt;I’m on a horse.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://1p1e1.tumblr.com/post/14262857223/9-reasons-you-must-install-sublime-text-2-code-like-a"&gt;Read More&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://adamgent.com/post/14353953144</link><guid>http://adamgent.com/post/14353953144</guid><pubDate>Sat, 17 Dec 2011 09:39:11 -0500</pubDate></item><item><title>Added Twilio to my Maven respository</title><description>&lt;p&gt;Added some Maven support to &lt;a href="https://github.com/twilio/twilio-java"&gt;twilio: &lt;a href="https://github.com/twilio/twilio-java"&gt;https://github.com/twilio/twilio-java&lt;/a&gt;&lt;/a&gt; However its still not in the central repository so I have added it my repositry.&lt;/p&gt;
&lt;script src="https://gist.github.com/1455479.js?file=gistfile1.xml"&gt;&lt;/script&gt;&lt;p&gt;Hopefully they&amp;#8217;ll take my &lt;a href="https://github.com/agentgt/twilio-java"&gt;changes&lt;/a&gt; and create an Nexus account:   &lt;a href="https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide"&gt; &lt;a href="https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide"&gt;https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide&lt;/a&gt; &lt;/a&gt;&lt;/p&gt;</description><link>http://adamgent.com/post/14018368315</link><guid>http://adamgent.com/post/14018368315</guid><pubDate>Sat, 10 Dec 2011 11:37:35 -0500</pubDate><category>twilio</category><category>java</category><category>maven</category></item><item><title>Is there a Coffeescript for Java?</title><description>&lt;a href="http://stackoverflow.com/questions/8246132/is-there-a-coffeescript-for-java-in-other-words-x-gets-compiled-to-java"&gt;Is there a Coffeescript for Java?&lt;/a&gt;: &lt;p&gt;Is there a Coffeescript for Java? In other words X gets compiled to readable Java.&lt;/p&gt;
&lt;p&gt;If only I had more copious free time I might consider doing this as a side project. &lt;a href="http://stackoverflow.com/questions/8246132/is-there-a-coffeescript-for-java-in-other-words-x-gets-compiled-to-java"&gt;Maybe someone as already done this&lt;/a&gt;?&lt;/p&gt;</description><link>http://adamgent.com/post/13208851869</link><guid>http://adamgent.com/post/13208851869</guid><pubDate>Wed, 23 Nov 2011 12:06:20 -0500</pubDate><category>java</category><category>coffeescript</category></item><item><title>Replacement for unix 'cut' that works with CSV</title><description>&lt;div&gt;
&lt;p&gt;A while ago I was working with a very large CSV file that had many columns but I only needed two columns of.&lt;/p&gt;
&lt;p&gt;I normally would use the Unix command &amp;#8216;cut&amp;#8217; to get the columns I want but this does not work well for CSV files that are escaped (that is the separator is escaped).&lt;/p&gt;
&lt;p&gt;So here is a drop in replacement written in Python that works just like &amp;#8216;cut&amp;#8217; but for almost all CSV files:&lt;/p&gt;
&lt;/div&gt;
&lt;script src="https://gist.github.com/1383185.js?file=cvscut.py"&gt;&lt;/script&gt;</description><link>http://adamgent.com/post/13114773033</link><guid>http://adamgent.com/post/13114773033</guid><pubDate>Mon, 21 Nov 2011 11:52:42 -0500</pubDate><category>python</category><category>csv</category><category>unix</category></item><item><title>Typesafe now supporting Play 2.0 Framework</title><description>&lt;p&gt;The Play 2.0 framework is looking better and better everyday:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://groups.google.com/group/play-framework/browse_thread/thread/6d5783e28efb6931#"&gt;&lt;a href="http://groups.google.com/group/play-framework/browse_thread/thread/6d5783e28efb6931#"&gt;http://groups.google.com/group/play-framework/browse_thread/thread/6d5783e28efb6931#&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I had blogged a while ago about &amp;#8220;&lt;a href="http://adamgent.com/post/10440924094/does-java-have-an-answer-to-node-js" title="Does Java Have an answer to Node.js"&gt;Does Java Have an answer to Node.js&lt;/a&gt;&amp;#8221;. It looks like the best answer is Play 2.0. Play 2.0 uses all the technologies I mentioned in the previous post (netty, akka, scala). &lt;/p&gt;
&lt;p&gt;It also looks like Play 2.0 will be THE web framework for Scala. Yeah you could use:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Scalatra - Which just gives you routing&lt;/li&gt;
&lt;li&gt;Lift - IMHO this framework is kind of dorky and reminds of Tapestry&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;But then again Play is using a more modern network libraries (Scalatra and Lift still rely mainly on 1 thread per request via servlet container) and is &lt;a href="http://typesafe.com/company/team"&gt;going to be supported by the people who came up with the language&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I wonder if Spring Source will come out with a Scala Spring Web Framework. They already have Groovy (Grails) and Java (Roo) .&lt;/p&gt;</description><link>http://adamgent.com/post/12979539477</link><guid>http://adamgent.com/post/12979539477</guid><pubDate>Fri, 18 Nov 2011 16:17:11 -0500</pubDate><category>scala</category><category>play</category></item></channel></rss>

