I did a little app… It’s not a big deal. It’s a simple CAGR calculator (that’s a compounded annual growth rate calculator for all of you non-financial types out there). It’s very simple. It’s not the next Excel. Anyone could do it. But it fits well within my job. I work as a financial consultant of sorts, and I get about twenty calls a week from twenty managers who a) can’t remember what CAGR means, b) lost the formula, c) were smart enough to look the formula in Google but are not exactly sure how to elevate a power in Excel, or d) are simply too lazy to do it themselves. So I usually go to great lengths explaining what the ^ symbol is for, and why the one gets subtracted at the end of the formula.
I tried macros, but people keep messing it up. Sometimes the base value is 0, as when you start a business, so dividing by zero gives them a mathematical error. Sometimes they mix the dates, so the equation is all wrong. Sometimes they don’t know how to able macros in their system… Everything could go wrong.
So I made this little GUI thing in Java and gave it life. If you feed a zero, it will adjust the formula to give you a nice value, just like we agreed with our accountants and auditors. If you mix the dates, it knows in advance and changes them for you. It sends messages if the quantities are exaggerated so you can double check the input. Basically, it thinks beyond the managers. It looks nice in shades of blues, is fast and small.
The only upside was deployment. I did some icons calling the jar file. But it gets boring, and I thought: geez, it would be so nice to just deploy one .exe file and get it done with. Thus I recalled an article on GNU gcj compiler. Since I have it installed I gave it a try.
It failed miserably when confronted with code I wasn’t even aware of… How can this be I said? What went wrong? It took one look in Vim to realize Netbeans’ Matisse had added more code than I thought possible, a strange and obscure mix of private variables and complicated trees of JButtons, JLabels, and other things that bind them together.
It’s so easy to just drag and drop. But because of saving me from typing 30 lines, I ended up with 100 or more lines of unreadable code. Sure, my events were just fine. And my variables were well declared and typed, in neat order and understandable names. But Matisse’s code was next to incomprehensible.
Matisse’s fault? Hardly. We forget that generating UI is boring so we fall back on graphical solutions. But these are based on algorithms that carry a big overhead. I never learned to use a GUI builder in Python, thus I make my own graphic windows hand coding, and the code is always compact and neat. I won’t lie, it doesn’t execute faster, but I can certainly read it and maintain it. I couldn’t make a change in Netbeans code… I would probably just rip the business logic and redesign from scratch.
I know that IDE’s are necessary to speed developing time and efficiency. But lately I rather fire Vim in console mode with :syntax on than code using an IDE, which I loved when younger.
Could it be I am getting old?