Switching between embedded and external databases without drama sounds like a wish. Tonight it was a need. I was helping a team push a small Java app to a staging box while we still had late night coffee and a buzz from new toys like Tomcat 7 and Maven 3….
Year: 2010
What to Do When Coverage Drops
The build light turned red at 1 in the morning. Hudson blinked like a small lighthouse in a foggy kitchen while I reheated pizza and hit refresh. Our latest merge went in clean, tests passed on my machine, life was fine. Then the email landed. Code coverage dropped by four…
Scaling Search with Sharding and Caching
Search is eating more of our apps every week. Index sizes grow, queries pile up, and the moment you add faceting, snippets, and sorting by freshness, your single Lucene box starts to sweat. Solr makes a lot of this smoother, and Lucene 3 is a beast in the best sense,…
Filters and Listeners: Cross-Cutting the Right Way
Filters and Listeners: Cross Cutting the Right Way. Servlets from a practitioner view with lessons you can reuse. The Problem We Keep Repeating Every Java web app I see starts clean and ends with controllers doing everything. Authentication checks. Log noise. Timing. A bit of compression. Some cookie dance. It…
Exporting to PDF and XLS: Tuning for Speed
\n \n\n\n\nI was on pager duty and a user hit Export to Excel right before a big meeting. The spinner felt like a staring contest. Tomcat was fine, CPU was bored, yet the report took ages. I cracked open the logs, watched JasperReports fill pages like a careful scribe, and…
JSP in Moderation: Keeping Views Thin
Are your JSPs carrying more weight than they should? Do you feel that every small tweak needs a hunt across five files and a guess about what the controller is secretly doing? Are you copy pasting error handling and formatting logic in every view, hoping it will not bite you…
State and Session: Performance Considerations in JSF
JSF is great at hiding plumbing, but it does not hide the bill. The first time you watch a heap chart on a busy JSF app, you can almost hear the memory pressure. Tabs pile up, user flows bounce between forms, and your poor session grows like a backpack filled…
Macros and Includes: Building Reusable Blocks
FreeMarker macros and includes sound like small features, but they rescue your templates from copy paste chaos. If you are shipping landing pages, transactional email, and a bunch of JSP views, you know the pain. Same button in five places, slightly different markup, one broken change ruins a campaign. With…
The business of software: Trial Length Balancing Urgency and Value
We build software because we love it, but rent and payroll do not accept passion as a payment method. These are the scars and small wins from selling code in the wild, not theories from a whiteboard. If you want to treat software as a business, start with the only…
The business of software: Revenue Is the Only Signal That Never Lies
Writing software is the easy part; turning it into a business that pays the bills is where the bruises come from. After some scars and some small wins, here are the lessons from the trenches of software as a business, shared while the iPad craze is fresh, Google Instant just…