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…
Rapid Application Development without Regret
\n \n\n It was past midnight, the sprint board looked like a graveyard, and a client demo sat on the calendar with a red circle. I hit Rails scaffold, pointed it at the schema, and watched screens appear like popcorn. The room exhaled. A week later the real work began,…
Security Prompts and User Trust: The Applet Tax
Security Prompts and User Trust are colliding in the browser. Every Java applet ships with a tiny toll booth. I call it the applet tax. You pay in clicks, in doubt, and in drop off. Why do security prompts feel scarier than the applet itself? A user hits your page…
Tagging Plans that Don’t Rot
Description: Tagging Plans that Don’t Rot: Omniture from a practitioner’s perspective with timeless lessons. Dialogue style intro “Why did our conversion rate drop after the redesign?” “Because half the new templates shipped without s.t calls and the rest are double firing event1.” “But the spreadsheet says we mapped everything to…
Sizing and Eviction: Keeping Caches Healthy
Caches get sick. They cough up outages, drop hit ratios, and eat more heap than they should. Last night in the war room someone asked me, “Is EHCache broken or did we break it?” I sipped coffee and said, “Neither. The cache is just the mirror. It reflects what we…
Retries, DLQs, and Idempotency
Retries, DLQs, and Idempotency: a night in the trenches My pager went off at 2 AM. Our nightly reports were stuck. The CRM team could not see yesterday’s sales. The queue depth graph looked like a hockey stick and the dead letter queue was blinking like a Christmas tree. This…
JavaFX for Desktop Apps: Beyond Swing
Swing still runs a lot of serious desktop software, and it is not going away tomorrow.But after a week living in JavaFX 1.3 land, I am convinced these scenes and bindings deserve a seat on our desktops. Why JavaFX for desktop apps right now Oracle now owns Sun and the…