February 2012
4 posts
3 tags
MOG vs Pandora: thoughts.
I have a both Pandora One subscription and a Mog Primo subscription.
Both services do a very good job and both I believe are fairly priced.
Pandora One: $36.00 USD/year : Music Discovery @ 192kbps
Mog Primo: $9.99 USD/month : infinite and select-able 320kbps and mobile download.
I have no guilt spending this money. The opportunity cost saving, pleasure, and work effort...
3 tags
Fixing Spring's Default View Resolver
Most Spring MVC applications use org.springframework.web.servlet.view.UrlBasedViewResolver
This view resolver allows you to redirect with the prefix “redirect:” thus you can do something like:
@RequestMapping(value={"/doc/api", "/doc/api/"})
public String apiDoc(ModelMap model) {
//some logic
m.put("hiddenStuff", "blah blah");
if (success) { return "myview"; }
...
3 tags
The problem is Marketing and We can Solve it!
We need more customers. We need more sales.
We are tired of the fly-by-night loyalty programs. We are tired of social trickery discount solutions. Tired of the Amway-Ponzi referral schemes. Tired of the Groupon phone calls. Tired of being taken advantage of. Tired of making our customers mad.
We know what the problem is. Its marketing. Its not a new problem. Its an old problem. Its...
January 2012
5 posts
Making QR Codes even dorkier with ANSI/ASCII
At my current startup we generate QR codes as an option to connect to a mobile campaign.
I have mixed feelings about QR codes:
For now only marketing people and dorks like myself know what they are.
You need a special app to scan the code.
They look like ugly noise and for some reason look disingenuous.
“Hey what happened to that crossword puzzle!”
“It won’t...
IQ, EQ, MQ ... another triangle.
From Twitter “IQ =Intellectual Quotient, EQ=Emotional Quotient, MQ=Moral Quotient; thus Mind/Body/Soul” Dipak Jain, Instead #WEF #Davos
Some what analogous to my Think, Do, Share triangle.
1 tag
Get Maven to use the latest version for a... →
I finally figured out how to get maven to use the latest version of a dependency while keeping the builds reproducible. What PITA.
http://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the-latest-version-of-a-dependency/8795380#8795380
2 tags
HttpServletRequest getRequestURL() is dumb
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().
For the most part getRequestURI() 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...
December 2011
2 posts
9 reasons you must install Sublime Text 2. Code...
Sublime Text is freakin awesome on Linux!
1p1e1:
Hello, fellow code monkeys.
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.
Look down. Back up. Where are you?
You are on a desk with the editor your editor could look...
3 tags
Added Twilio to my Maven respository
Added some Maven support to twilio: https://github.com/twilio/twilio-java However its still not in the central repository so I have added it my repositry.
Hopefully they’ll take my changes and create an Nexus account: https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide
November 2011
4 posts
2 tags
Is there a Coffeescript for Java? →
Is there a Coffeescript for Java? In other words X gets compiled to readable Java.
If only I had more copious free time I might consider doing this as a side project. Maybe someone as already done this?
3 tags
Replacement for unix 'cut' that works with CSV
A while ago I was working with a very large CSV file that had many columns but I only needed two columns of.
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).
So here is a drop in replacement written in Python that works just like ‘cut’ but for almost all...
2 tags
Typesafe now supporting Play 2.0 Framework
The Play 2.0 framework is looking better and better everyday:
http://groups.google.com/group/play-framework/browse_thread/thread/6d5783e28efb6931#
I had blogged a while ago about “Does Java Have an answer to Node.js”. 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).
It also looks like Play 2.0 will...
3 tags
Stop Internet Censorship →
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 http://evocatus.com are in danger.
Here are instructions on how to react:
http://americancensorship.org/
If you don’t know the senate and house have a glorious approval rating of: 11.3%
...
October 2011
3 posts
3 tags
A Java Client for Amazon Commerce API →
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.
https://github.com/agentgt/JavaAmazonProductAdvertisingClient
A relevant stackoverflow post: http://stackoverflow.com/questions/2963168/amazon-products-api-library-for-java
4 tags
Added Spring Social LinkedIn into my Maven Repo
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.
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:
3 tags
JATL 0.2.0 Released →
New Features:
whitespace/indenting support
OSGI bundle
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.
For example you can now make it so that <span> tags are always inlined (no newline or indenting).
Attribute white spacing is not yet...
September 2011
5 posts
6 tags
Does Java have an answer to Node.js?
Java needs to do a couple of things easily to compete with Node.js which I believe will be the next killer web framework:
Event Driven Network IO - Netty
Threadless Concurrency - Akka
More expressive language - Scala
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...
4 tags
Trello from FogCreek using Nodejs
FogCreek just launched Trello.
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).
Anyway its not hard to figure out (firebug) that they are using a Nodejs stack:
Nodejs for Webserver
Express for MVC
JQuery
Backbone
SocketIO
JQueryUI
Now the only...
9 tags
Using Java for Web 3.0 (AjaxPush/Comet and...
After playing with node.js for a few weekends I decided to see how Java accomplishes the new asynchronous low-latency nature of Web 3.0. In other words what does it take in Java to build the new “Hello World” of Web 3.0: an online chat server.
Traditionally it was a pain to do this because long open connections are not handled in the Servlet spec. So you had to rely on special...
Geoffrey Moore talks about the important balance of managers to leaders. Its a great reminder that as much as I loathe management/managers they are critical for success. To much leadership and innovation can be bad and so can too much management.
2 tags
Indie Video Games are awesome!
I have noticed a huge trend of Indie Games being developed right now. I thinks this in part because:
The technology has gotten easy enough for more people to develop
The Xbox Live Games Marketplace and iPhone App store
The success of simple games like Angry Birds
What I like about indie games is that they are usually simple (I don’t have time to get sucked into a MMRPG) and the focus...
August 2011
11 posts
3 tags
Node.js Frameworks
I’m looking at some web MVC frameworks (or stacks) for Node.js .
Almost all the node.js mvc libraries out there provide routing and templating.
Thus what I’m looking for in order of preference is:
Actively developed
Coffeescript friendly
Validation
Data binding
Some sort of transaction management.
I have never seen such an explosion of libraries in such short order like node.js...
2 tags
Node.js is the future. Bye bye Ruby/PHP/Python
I am going to make a prediction that XXX on Rails (where XXX is Ruby, PHP, Groovy, Java) MVC frameworks are going to see a rapid decline in the coming years. Node.js will be the replacement.
The reason? Every web application developer knows Javascript. In fact in my mind your not a Web App developer unless you know Javascript.
Javascript is the Lingua Franca of the web world it is easily...
5 tags
JQuery Mobile Problems
Some what inspired by Linkedin’s new touch app, I’m looking into rewriting Evocatus’ mobile site/app from JQuery Mobile to a custom HTML5 solution.
The problems we have with JQuery Mobile are:
It’s slow
It’s a rather big download
Scrolling is weird, flakey and sometimes just does not work
The buttons and widgets are kind of ugly and feel cookie cutter like
The...
3 tags
Kerry on the news at Startup Riot Seattle!
Kerry on the news presenting Evocatus at Startup Riot Seattle. We registered Startup Riot in our event system for taste testing of chocolate. See the results.
2 tags
Natty Lite's sordid facts →
While making my Cosby Sweater mix on Evocatus I found some funny facts on Natty Lite here.
2 tags
Dont support IE 6,7,8 no problem: Chrome Frame
In my many years of enterprise web application development I have seen many organizations require support for Internet Explorer. Not just any Internet Explorer but generally Version 8 and below. These browsers do not support Html5 and make your site look like web vomit.
Well google has now fixed that problem with Google Chrome Frame which allows you to install an Internet Explorer plugin that...
Evocatus on Wicked Local →
Awesome article on Mass Innovations and Evocatus.
Ignacio Laguarda, the journalist who wrote the article, really did a nice job of making my thoughts coherent.
Evocatus in the news →
evocatusexperience:
On August, 10th, Evocatus participated in Mass Innovation’s Foodie Night as one of the four presenters. The response was overwhelming. In case you weren’t present at the event, the presentation is now online at SlideShare.
Jaclyn Reiss, a correspondent for Boston.com, also wrote a piece about the event featuring Evocatus: “The web is a clutter of information. If you want...
1 tag
My name is Evocatus.com but you can also call me...
Evocatus now has a shortened URL domain name that all the cool kids have (I actually hate that phrase). So you should start seeing our twitter posts have URLs like evoc.me/qJvIx4 .
bit.ly now offers white label domain name for URL shortening. It used be you had to pay big $$$ but now its free and we like free :)
Speaking of names and Evocatus your probably wondering what the name...
3 tags
Cloud 9 and Cloud bees: Development as a Service
I have to say Cloud 9 is kind of cool. Its a online IDE targeted mainly for scripting languages. It will be interesting to see what happens to that company and what there exit plan is (or not).
Whether Cloud 9 succeeds or not, programming in the cloud seems like a very possible future. As a on-and-off freelance software developer the idea is appealing in terms of context shifting and knowledge...
July 2011
8 posts
Created jhtmldiff on Google Code →
Ported HTMLDiff algorithm that was written originally in Ruby and then C#
http://stackoverflow.com/questions/2956536/is-there-any-rendered-html-diff-engine-for-net/2958993#2958993
More to Come
3 tags
Conditionally set an attribute on an element with...
I had this problem described on Stackoverflow
A solution is to use lots of tagx libraries which I have put on gist:
https://gist.github.com/1106650
2 tags
1 tag
Parsing and Converting common formats in Java
If you are creating a Web Application in Java you need to know how to correctly and efficiently convert all kinds of string represented data. Below are some of the best Java libraries for parsing and converting various formats in the web world.
Creating URIs: UriBuilder is perhaps the most elegant way to create URI’s safely (that includes URL since URI is a superset). Encoding and Decoding...
3 tags
Javadoc errors with Maven and AspectJ
Make sure you name your AspectJ declarity files with an “.aj” suffix and not “.java”.
If you don’t you will get Javadoc errors and other weird oddities while everything else will seem to work.
Maven errors:
visual.ly my new favorite site
The site http://visual.ly is my new favorite site. I highly recommend you check it out if you like staring at those cool info-graphics normally in magazines. I often buy magazines when they have cool looking charts particularly in airports.
2 tags
Auto Completion not working on AspectJ after...
I recently updated many plugins in my heavily loaded Eclipse 3.6. I have been holding off on doing this. Every time I seem to do an update of any sort I get shafted worse than what the IRS does to me. I Then contemplate throwing my laptop out the window followed by doing a line of coke.
Updating AspectJ came close to that but my I knew it would it happen so I was ready for the disappointment.
...
2 tags
Did not know about java.lang.Appendable
Don’t you hate when you find or learn something that could have saved you some time or perhaps enabled a better design.
Well java.lang.Appendable is an interface that I somehow completely missed. There are many times I have wanted to accept StringBuilder/StringBuffer/Writer as an argument and I always end up using a Writer as the generic object.
For JATL I ended up using a java.io.Writer...
June 2011
2 posts
What ever happened to Bile Blog
Bile Blog was one of my favorite tongue n’ cheek Java blogs (or in bile lingo tongue in asshole).
Apparently the author of Bile Blog has pulled an Eddie Murphy as do all comedians. What I mean by that is he has tamed down and his not writing glorious untamed vociferous vitriol and seems to be more family oriented.
Maybe Java has gotten better enough that BileBlog has nothing to write...
JSP EL 2.1 versus EL 2.2
I just ran into lovely feature of JSP EL 2.2 that you can call methods on an object that are not getter/setters props.
The irony is that I didn’t even think it was a feature because almost every other template language allows you to call methods (Velocity, Jelly, Scalate, and probably FreeMarker).
I found this out because I develop on Tomcat 7 but we use Tomcat 6 in production. This...
May 2011
5 posts
4 tags
Google's Guava Iterators library is very useful
If you have not used Google’s Java Collection library (now known as Guava) I highly recommend it. Particularly its Iterators util class.
Iterators.partition is extremely useful. Unfortuanatly they don’t have an Iterators.flatten (easy to write but I was hoping they would have it).
Hopefully they’ll add it soon.
http://code.google.com/p/guava-libraries/issues/detail?id=627
...
4 tags
Made ehcache-spring-annotations support AspectJ
The project ehcache-spring-annotations did not support AspectJ. I think I have fixed that and posted my changes to github:
https://github.com/agentgt/ehcache-spring-annotations
I’ll probably have to make my own version of the jar and put in my own personal maven repo
http://mvn-adamgent.googlecode.com/svn/maven/
UPDATE 11/8/2011
Please read:
...
3 tags
Added zxing to my own Maven Repo
So ZXing does not have their jars in the maven repo. Well I fixed that by making my own.
The Python @ decorator pattern for Java using...
How to make AspectJ + Java @ Annotations like Python Decorators
There are many times where you want to write a block of code and have some boilerplate code happen before and after. Or you may want to register that block of code as some sort of listener/handler. I found this to be perhaps one of the most common patterns in web application development other than maybe the iterator pattern.
An...
2 tags
Scala AppFuse?
I wanted to use Scala for http://evocatus.com but I couldn’t pick a framework that was easy enough to understand and mature enough. I also couldn’t get AspectJ to work nicely with Scala. So we ended up going with Spring Roo. This was in part because I like AspectJ and Spring.
That being said I still don’t like Java and prefer something like F# or Scala. I hate JSP(X) even more....