\n A quick story from last night \n\n\n\n I was staring at a JSP that looked like a thrift store shelf. Mix of scriptlets, stray includes, and a generous sprinkle of out.println calls. A simple product list with paging and currency formatting had grown messy. The next feature request was…
Enhanced for loop in Java 5
I keep running into moments where the enhanced for loop in Java 5 turns a messy block into something I can read in one sip of coffee. J2SE 5.0 brought shiny stuff like generics and annotations, yet the quiet hero for day to day code is the foreach style loop….
New in Java 5: Generics
Generics just landed in Java 5 and they already changed the way my code reads in the editor. Before this release we lived with raw types. Collections gave back Object, so every read needed a cast and every cast was a tiny gamble. The code worked until it did not…
Migrating Struts to JSF: A Field Note
Why move from Struts to JSF at all Struts has been the workhorse for years. Action classes, forwards, Tiles, and a pile of taglibs got many of us to production. It still ships on every team server I visit. JSF is arriving with vendor love and a component story that…
Apache Ant for Legacy Pipelines
A quick story from the build room Yesterday a teammate spent an hour chasing a missing jar only to realize the classpath was set on his laptop but not on the build server. We moved the rule into Apache Ant and the next run just worked. No more tribal lore….
NetBeans vs Eclipse: Pragmatism over Plugins
“Pick the tool that gets you to working code by lunch, not the one that promises everything by next quarter.” NetBeans vs Eclipse is the coffee talk this season. I keep seeing the same pattern in teams I visit and projects I help clean up. One group swears by a…
About RAD and code generation, is it the future?
\n Code generation is beautiful, but it can be painful. \n\n\n\n Problem framing \n\n\n\n We keep coming back to the same itch. We want to ship faster. We want fewer bugs in the boring parts, more time in the fun parts, and fewer late nights cleaning up plumbing. That is…
Messaging with JMS: Async without Fear
Messaging 101 with JMS: Async without Fear. I have been bouncing between web apps stuffed with AJAX and talks about services all week, and a theme keeps coming up in teams I visit: async is scary. People picture threads, stuck sockets, and mystery bugs at 2 AM. It does not…
Polishing Desktop UIs: Look and Feel that Respects Users
Polishing Desktop UIs is not about eye candy. It is about respect. The more your app respects the user, the more the user respects your app. A small story about a big button Last week I watched a support rep try to save a customer from a crash. Two apps…
FreeMarker in Email and PDFs
\n I spent last night chasing a weird email bug. A JSP based template was adding a rogue space in the invoice total. Outlook showed 12 345.67 while Gmail showed 12345.67. I finally moved the email to FreeMarker, gave the numbers a proper format, and the ghost space vanished. Same…