Category Archives: software

Software development and product related posts

Trying Out Woopra Analytics

I tried to sign up for Woopra last night and ran into some problems related to bad code on their site (lots of Java code in their JSPs and an improperly permissioned MySQL database).  It wouldn’t let me sign-in for a while and then I realized they didn’t really have a free account.  Doh!  But then last night I got an e-mail with an invitation code for one of the free accounts with a 250k page view limit.  My site doesn’t even come close to that so I figured let’s give it a go. They said the invitation code was to make-up for the problems signing up.  Pro-active customer support is the way to win my trust so I give Woopra thumbs up for that.

What does Woopra promise?  Real-time analytics is their biggest draw.  When I’ve used Google Analytics and CoreMetrics in the past both require you to wait until the next day for most analytics.  That is really annoying when you’re trying to see how a new promotion or feature is performing after you deploy it.

The client is built in Java so it’s cross-platform and on the surface it looks pretty slick.  As I started hitting my site from a few machines at home they showed up right away in the client.  I didn’t even have to hit refresh anywhere.  After I’ve had some time to look at traffic for a few days I’ll post some screenshots.  So far they have a lot of the same analytics that other packages such as Google and CoreMetrics like browser, OS, resolution, search referrals, etc.., however it reports it real time.  I have to say the real-time aspect is pretty damn cool.

I’m hoping someone posts some reports on how well it works and how useful the real time aspect is on a high traffic site.

I Suppose The Firebug Developers Should Be Flattered…

I was looking for some IE developer tools (because they generally suck) and came across this at the Microsoft site:

Wow, that doesn’t look like Firebug or anything does it??   And it won’t even work on IE7.  Sigh.  Trying to troubleshoot css/javascript issues on IE makes me hate web development so hopefully this will make ie8 at least somewhat bearable but that doesnt’ help trying to fix things on IE6 and IE7 which are still a majority of the traffic I server (luckily this ratio is dropping steadily however).

Annoying Java.Blogs Bug

Hopefully some of you are coming to this page from the daily Java.Blogs update e-mail that shows up in your inbox every night.  And maybe someone that maintains the site will see this and figure out why this bug happens.

On entries where the name of the blog is a domain name (i.e. the anchor tag terminator for the link to the blog entry does not terminate at the end of the link but rather it continues to consume the domain name of the blog as well which means the only way to get to the link is to copy paste it into my browser window.  Annoying!

Basically you get something like this:

<a href=”″><wbr>action?id=123456<br></a&gt;

when you really should get the </a> tag after the ID number and not the domain name.  Like I said, though, it’s fine if the blog’s name is not a domain name.  Can one of you guys fix this??  🙂

Also, when looking at the source for this problem I came across the <wbr> tag.  I spend a lot of time on the front end these days I can honestly say I’ve never seen that tag before but lo and behold it is real:  I guess I learned something new today.

Sending obscure HTML in an e-mail is probably not the best idea anyways.

When Voice Recognition Goes Bad — Horribly Bad

I was grocery shopping the other day and wanted to find out what a hothouse tomato is so I spoke the words “hothouse tomatoes” into the Google Mobile App for the iPhone and it returned “penthouse letters”. Not exactly what I was expecting.

Normally this app is amazing in how well it figures out what I said but I can’t figure out how it got this one so wrong. Strange indeed.

Ternary operators in JSP

Every now and then I come across things I haven’t used before but should have been using.  The ternary operator in JSP is one of them.

It makes it so much easier to write out some text based on a conditional without having to put it in a request attribute explicitly or do an if/then conditional with a possible set operation using the JSTL core library.


${booleanTest ? 'output if true' : 'output if false'}

This came in really handy for adding an additional css class to a div based on a condition in the JSP in this particular case.

Hudson As A Service On Vista

I thought I’d setup a new continuous integration server at home tonight and had heard good things about Hudson lately so I gave it a try.  I downloaded the war and ran it as directed and got it configured pretty quickly to pull my source from my hosted subversion repository.  The build ran fine, my unit tests ran fine, it published my javadoc into the workspace and all was good in the world.  Then I tried to install it as a service on my system which just happens to run Vista (please, no comments regarding Vista).  Crap!  (well, I had worse thoughts but this is a relatively family friendly blog)

According to the docs it should work.  I am running as a user with administrator privileges and so forth.  Apparently creating a service in Vista requires you start the process as administrator (i.e. root).  That requires you to open up explorer, right click on the install batch service and click “run as administrator”.

You’re not done yet.  Then you have to go in and change the user you want the service to run as in the service configuration in the services control panel module.  It will then grant the user run as a service privileges and it will actually allow you to now start it as a service.

I also recommend changing the port it runs on by default since most of you probably run your JBoss or Tomcat instances on 8080 when you’re developing.

Overall I think Hudson is great so far but this is just a little gotcha you should be aware of when running it as a service on Vista.

Google App Engine Is Available

Google announced their App Engine initiative today.  It’s a web application building environment that provides the runtime, the application framework, the database and the storage space.  The first version supports Python and comes with enough storage, CPU and data transfer for most initial applications.

I signed up and got my beta account tonight.  They’re giving out 10,000 accounts during the beta.  I got going on the tutorial and got to the next to last section where they talk about static files and mapping them with the application description and boom! it breaks.  I mean, I take exactly what the tutorial shows about mapping in external stylesheets and it won’t load the application descriptor any longer.  I traced into some of the code in their appserver Python code and there seems to be a problem with how they’re mapping the file paths with regular expressions.  I’m not a Python guru so I’ll let them figure it out (plus I’m tired) but it’s not like I’m on an exotic system (Thinkpad running XP with Python 2.5.2) and I already saw a few others in the user group talking about this same issue.

I was able to get around it by mapping the css files directly using a static_files descriptor vs. a static_dir descriptor so I can keep going at least.

Overall the environment seems pretty cool to begin with.  Creating tables in the BigTable store via Python seems pretty damn easy.  Scaling should be pretty easy as well unless you do stupid things.  Also, being able to tie in directly to the Google user accounts makes things very very easy as well.

I think a lot of folks will gravitate towards this to try it out but I do wonder how many will really build apps on this system since its same advantages are also its biggest disadvantage.  You’re tied to the Google platform now.  Sure, you got going fast but now how do you scale your app/company when you need more control?  Yes, the app will scale but we all know that once you get to a certain size you end up with more than just a web application.  Then again, you could probably host some of your application on your own servers and then just connect to the Google servers/data store via REST or other web service APIs.

Amazon’s offering, while not as integrated, seems to offer more ultimate flexibility that you can grow with and then not being tied into using them for everything down the road.  You can build whatever environment you want on their EC2 platform, use S3 however you want and also build on SimpleDB or just deploy MySQL on EC2 instances for your database access.

Each platform will appeal to people for different reasons.  I think I would gravitate towards Google just for its ease of use (so far) and ability to get an application launched quickly but if my app got popular I’d really have to start figuring out how much it will cost to scale on Google once they get out of beta and see if I can live with the constraints it puts on me.  I’ll know more when they start to disclose more concrete details about their future plans for App Engine.

An Odd Side Effect of the Google Calendar Sync module

I installed the Google calendar sync tool when it came out recently and I have it working pretty good. The one side effect is that I had to login in to my work e-mail address Google account and then give my normal Google account permission to change/manage that Google calendar and then put the work calendar into my normal account’s Calendar view. It works pretty slick now but it definitely could be documented better. Non-geeks are not going to do well figuring this out.

The strange side effect that I noticed however is that each time it runs it adds like 60 calendar entries into my deleted items folder. They are all set with a start time of 12/31/1979 and a meeting time of 4:00pm to 4:30pm. So after running this for a while I have 17000+ items in my deleted folder. It’s a good thing I noticed this. I’m guessing that each entry corresponds to an entry in my calendar and that it’s used as some sort of temporary calendar object used during the sync but it’s really just a wild guess.

This is probably something that needs to be fixed. 🙂

Update: They have fixed this!

Spring Annotations, Spring MVC and an interesting bug in 2.5.1

I’ve been doing some work in Spring MVC (Spring v2.5.1) and using annotations to see how simple I can keep my XML configuration (pretty small so far) and while coming across a few interesting gotchas that I’ll be describing in another entry I come across this most maddening problem. If you have a Spring MVC controller defined and it even has an inner class in it, the Spring loader will not find it. It basically ignores it. I had been using inner classes for form beans and validators on some of my controllers and it would just not work. By pulling them out into their own classes, however, everything worked.  That was pretty annoying to say the least.

Here’s the bug:

And it is fixed in 2.5.2. So if you’re using annotations in Spring, just go ahead and upgrade. It will save you lots of pain.

The other thing, mind your base packages on annotation scans. I’ll be posting that experience in the next day or so. I’m still slapping my head over that on.

My NetBeans 6 Wishlist

I’ve been using NetBeans 6 for a while now. For the most part I like it. I give it a thumbs up overall and at this point I generally prefer it over Eclipse for general web development.

Here, however, is my wishlist:

1. Give me an easier way to find the implementations of a particular interface in my code.  IDEA makes it easy by having a little icon I click on to see a quick list of what implementations the project is aware of for that interface.  The only way I’ve found so far is to hit alt-shift-f12, then select the interface to see the list of implementations.  Pretty much every developer I know codes to interfaces nowadays so this should seem a pretty reasonable request.

2. TestNG integration.  I’ve got a work-around right now but it sure ain’t pretty if I need to debug a test.

3. Better bracket matching in the JSP editor.  I generally write jspx and tagx files so maybe this is just with the JSP XML editor but the jsp:root end tag never lines up with the start tag.  It’s always indented one column.  It’s just strange.

4. Better completion in the JSP editor.  I wasn’t sure I was going to add this but it seems the editor could be better at completing closing tags for me.  I don’t like it to auto-create the closing tag when I start a tag bug when I start to close the tag it should be a little smarter about this.

5. Cut down on the weird errors and warnings.  In one of my entity classes I have a warning that the project does not contain a persistence unit.  What does that mean?  I’m pretty sure it is getting confused and thinks I am running an EJB3 application (I’m not).  This is most likely due to the fact that I am using EJB3 annotations for defining my data model.

6. A better debugging interface.   The debugging interface is just a royal PITA.  It’s completely clunky to navigate local variables and inspect my way through an object graph.

7. Make it easier to debug a web application.  It just seems non-intuitive with the different logging screens that pop-up or are used when you launch your web app in Tomcat (I haven’t tried Glassfish).  It also seems like it launches my application twice.  I’ve seen Spring start itself twice where as it doesn’t do that when I run outside of NetBeans.  IDEA has this streamlined much more.

Overall I am actually pretty happy with NetBeans but these are just things that cause my some slight pain on a day-to-day basis.