<?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>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 : &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 : &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….&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 “punchy” 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 “&lt;em&gt;free&lt;/em&gt;” streaming music service that most people know. Its everywhere. It was amazing music to the masses when it was released…. &lt;/p&gt;
&lt;p&gt;However Pandora’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’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’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 “&lt;em&gt;Artist Radio&lt;/em&gt;” 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…. 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 “&lt;code&gt;redirect:&lt;/code&gt;” 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;“Hey what happened to that crossword puzzle!”&lt;/em&gt; &lt;/li&gt;
&lt;li&gt;&lt;em&gt;“It won’t scan!”&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;“Why does the scanner keep crashing!”&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 “How can I make QR even dorkier”?&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 “IQ =Intellectual Quotient, EQ=Emotional Quotient, MQ=Moral Quotient; thus Mind/Body/Soul” 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://26.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’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 “know” 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’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’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’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 ‘cut’ 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 ‘cut’ 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 “&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;”. 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><item><title>Stop Internet Censorship</title><description>&lt;a href="http://americancensorship.org/"&gt;Stop Internet Censorship&lt;/a&gt;: &lt;p&gt;On a rather serious note the government has decided to start censoring the Internet. Sites that let you post for free like our very own &lt;a href="http://evocatus.com"&gt;http://evocatus.com&lt;/a&gt; &lt;strong&gt;are in danger&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;Here are instructions on how to react: &lt;/p&gt;
&lt;p&gt;&lt;a href="http://americancensorship.org/"&gt;&lt;a href="http://americancensorship.org/"&gt;http://americancensorship.org/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you don’t know the senate and house have a glorious approval rating of: 11.3%&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.realclearpolitics.com/epolls/other/congressional_job_approval-903.html"&gt;&lt;a href="http://www.realclearpolitics.com/epolls/other/congressional_job_approval-903.html"&gt;http://www.realclearpolitics.com/epolls/other/congressional_job_approval-903.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you really want these people deciding what can and cannot be on the Internet. &lt;/strong&gt;&lt;/p&gt;</description><link>http://adamgent.com/post/12890754230</link><guid>http://adamgent.com/post/12890754230</guid><pubDate>Wed, 16 Nov 2011 15:14:00 -0500</pubDate><category>government</category><category>usa</category><category>censorship</category></item><item><title>A Java Client for Amazon Commerce API</title><description>&lt;a href="https://github.com/agentgt/JavaAmazonProductAdvertisingClient"&gt;A Java Client for Amazon Commerce API&lt;/a&gt;: &lt;p&gt;I had some old Amazon Product Advertising API Client (now known as its Commerce API) code lying around that I have been meaning to Github. This client uses JAXB and REST (Commons HTTP Client) instead of JAXWS.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/agentgt/JavaAmazonProductAdvertisingClient"&gt;&lt;a href="https://github.com/agentgt/JavaAmazonProductAdvertisingClient"&gt;https://github.com/agentgt/JavaAmazonProductAdvertisingClient&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A relevant stackoverflow post: &lt;a href="http://stackoverflow.com/questions/2963168/amazon-products-api-library-for-java"&gt;&lt;a href="http://stackoverflow.com/questions/2963168/amazon-products-api-library-for-java"&gt;http://stackoverflow.com/questions/2963168/amazon-products-api-library-for-java&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://adamgent.com/post/12122370938</link><guid>http://adamgent.com/post/12122370938</guid><pubDate>Sun, 30 Oct 2011 13:40:17 -0400</pubDate><category>amazon</category><category>java</category><category>REST</category></item><item><title>Added Spring Social LinkedIn into my Maven Repo</title><description>&lt;p&gt;Spring Social has a SNAPSHOT version of spring-social-linkedin but has not released it as 1.0.0.RELEASE and unfortunately the milestone release is too far behind.&lt;/p&gt;
&lt;p&gt;If you are using the maven release plugin it will not let you release with SNAPSHOT dependencies. I tried using the Maven Version plugin to get around this but I could not figure it out so I used my good ole custom maven repository:&lt;/p&gt;

&lt;script src="https://gist.github.com/1306570.js?file=gistfile1.xml"&gt;&lt;/script&gt;</description><link>http://adamgent.com/post/11791641340</link><guid>http://adamgent.com/post/11791641340</guid><pubDate>Sat, 22 Oct 2011 18:33:14 -0400</pubDate><category>maven</category><category>java</category><category>spring</category><category>springframework</category></item><item><title>JATL 0.2.0 Released</title><description>&lt;a href="http://code.google.com/p/jatl/"&gt;JATL 0.2.0 Released&lt;/a&gt;: &lt;p&gt;New Features:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt; whitespace/indenting support&lt;/li&gt;
&lt;li&gt;OSGI bundle&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I made indenting/whitespace/pretty-print support rather powerful at the cost of some complexity. I don’t know of any other library that allows you to apply different indenting based on the tag.&lt;/p&gt;
&lt;p&gt;For example you can now make it so that &lt;span&gt; tags are always inlined (no newline or indenting).&lt;/p&gt;
&lt;p&gt;Attribute white spacing is not yet available but it will come at some point.&lt;/p&gt;</description><link>http://adamgent.com/post/11617111054</link><guid>http://adamgent.com/post/11617111054</guid><pubDate>Tue, 18 Oct 2011 13:36:15 -0400</pubDate><category>jatl</category><category>java</category><category>release</category></item><item><title>Does Java have an answer to Node.js?</title><description>&lt;p&gt;Java needs to do a couple of things easily to compete with Node.js which I believe will be the next killer web framework:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Event Driven Network IO - &lt;a href="http://www.jboss.org/netty"&gt;&lt;strong&gt;Netty&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Thread&lt;strong&gt;less&lt;/strong&gt; Concurrency - &lt;a href="http://akka.io/"&gt;&lt;strong&gt;Akka&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;More expressive language - &lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Unlike Node.js most Java frameworks are not written from the ground up to be asynchronous. Most asynchronous behavior in Java is accomplished through threads. For example all compliant Servlet Containers create &lt;strong&gt;1 thread per request&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Threading like this does not scale but it particularly does not scale for the future of long running concurrent connections like HttpPush and Websocket. I believe long running concurrent connections are the future of web development.&lt;/p&gt;
&lt;p&gt;So how do we get rid of the &lt;strong&gt;1-thread-per-request&lt;/strong&gt;? Event Driven Network IO! There are two libraries that do Event network IO: Grizzly and &lt;strong&gt;Netty&lt;/strong&gt;. Purportedly &lt;strong&gt;Netty&lt;/strong&gt; is better but Grizzly is more backward compatible with existing technologies. Some of the containers including Tomcat 7.0, Jetty, and Glassfish or any Servlet 3.0 support Websockets/HttpPush but it is extremely unclear what the threading policy is not to mention its only for these special types of requests. Remember Node.js is asynchronous for all requests and Java should be able to do likewise.&lt;/p&gt;
&lt;p&gt;Making the network IO event driven only fixes part of the problem. We need to make the rest of the platform asynchronous but with out using lots of threads. &lt;strong&gt;Akka&lt;/strong&gt; is the only library that I know that does this well.&lt;/p&gt;
&lt;p&gt;So what is missing? Well we cannot use any libraries that use Servlet API or ThreadLocals. That eliminates many frameworks. For example Spring uses ThreadLocal to manage transactions among other things. &lt;a href="http://stackoverflow.com/questions/7439955/servlet-api-implementation-using-netty"&gt;Jersey also relies on ThreadLocals&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There is a microframework called &lt;a href="http://deftserver.appspot.com/"&gt;Deft&lt;/a&gt; that looks very impressive and the Play framework is also working on this problem. However I would like something that builds on top of &lt;a href="http://jersey.java.net/"&gt;Jersey&lt;/a&gt; like &lt;a href="http://atmosphere.java.net/"&gt;Atmosphere&lt;/a&gt; does and perhaps reuses parts of the Servlet API. Basically Java is missing what &lt;a href="http://expressjs.com/"&gt;Express&lt;/a&gt; is to &lt;a href="http://nodejs.org/"&gt;Nodejs&lt;/a&gt;. &lt;strong&gt;Unfortunately there are just not many asynchronous Web Framework (URL routing, binding) options for Java right now&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If I had time I would look into making a Servlet API adapter to Netty along with extending Jersey. That would be a fun little project.&lt;/p&gt;</description><link>http://adamgent.com/post/10440924094</link><guid>http://adamgent.com/post/10440924094</guid><pubDate>Tue, 20 Sep 2011 09:10:52 -0400</pubDate><category>jersey</category><category>nodejs</category><category>java</category><category>scala</category><category>akka</category><category>netty</category></item><item><title>Trello from FogCreek using Nodejs</title><description>&lt;p&gt;FogCreek just launched &lt;a href="https://trello.com/"&gt;Trello&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now if you try to Google what technology they are using you will see a Stackoverflow post that has been deleted. I am sure its because of some community violation (like it should be on Meta Wiki).&lt;/p&gt;
&lt;p&gt;Anyway its not hard to figure out (firebug) that they are using a &lt;strong&gt;Nodejs stack&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Nodejs for Webserver&lt;/li&gt;
&lt;li&gt;Express for MVC&lt;/li&gt;
&lt;li&gt;JQuery&lt;/li&gt;
&lt;li&gt;Backbone&lt;/li&gt;
&lt;li&gt;SocketIO&lt;/li&gt;
&lt;li&gt;JQueryUI&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Now the only question is what data storage they are using. I’m going to guess that they are probably using &lt;a href="http://www.mongodb.org/"&gt;MongoDB&lt;/a&gt; for regular structured fields and maybe &lt;a href="http://redis.io/"&gt;Redis&lt;/a&gt; for some of the communication and MOM.&lt;/p&gt;</description><link>http://adamgent.com/post/10225284147</link><guid>http://adamgent.com/post/10225284147</guid><pubDate>Wed, 14 Sep 2011 21:47:00 -0400</pubDate><category>nodejs</category><category>trello</category><category>redis</category><category>mongodb</category></item></channel></rss>

