It was a good project.
It was a project that taught me a lot.
I had hoped it would bring me financial security.
Instead it bit the dirt.
Alright, that is a bit harsh. It is true that BudgIt was a project that I continuously worked on throughout my apprenticeship. In all honesty, it was something that I have been very proud of, but over the years, when I learned something new, or wanted to learn something new, I would build it into BudgIt. In the end, it was too big, too bloated, and has too many errors that were caused by inexperience and just not knowing what APIs and possibilities were open to the programmer. I was able to learn swing — actually I have BudgIt to thank for my entire knowledge of OOP and Java — I learned SQL, relational database theory, I learned about JDBCs, and well, everything not IBM Notes related was learned by working on BudgIt, including working with eclipse and repositories. I worked on it partially at work, during vacation, weekends, private time….
With a particular sadness, I now officially declare BudgIt dead.
Why you may ask?
1. All SQL code was written out in a single class. In the end, that single class was a monstrosity including thousands of lines of code that was not maintainable. I did not use any sort of design pattern to abstract the SQL data from the classes.
2. In an attempt to keep the SQL database information secure, I built in too much junk to maintain passwords and encrypt stuff… can you say bloated?
3. Too many dependencies. Change one thing, the rest falls apart.
4. Really bad GUI design. — I mean terrible. When I see what front ends are being used in modern software, this front end reminded me of pictures of Notes applications I saw from the 90s. It is not that Swing cannot be used to make great front ends, I am terrible at making front ends!
5. This above all, it is dead because I get a stomach ache when I see this thing and think about fixing it and the complete redo that it needs to work.
Fear not! For even I will not keep track of my budget using excel for long **pukes a little at the thought**, but I have started a new project that will incorporate a few of the features of BudgIt, reuse some code, and be a cleaner OPEN SOURCE implementation! That is right, OPEN SOURCE! Dont believe me? Take a look at the GitHub repository! I like to keep my code local as much as possible because there is an inward irrational fear of someone critiquing my code too much, so I like to post it when I think that it is worthy of peer review, but in this case I will commit when I want to continue working on it with a different computer. The concept of this new project will be almost the same as BudgIt, but with a few differences.
1. I am new to JPA, but from what I read about it, it is an awesome way to store objects into a database and recall them later. I will be using JPA instead of manually written SQL. My only open question at the moment is whether or not I have to build a custom server/client model to get it all to work.
2. Each user can have their own database, why the heck should I use one database for all potential users on a system. Besides, most users have their own computer nowadays anyway. I know that windows users have their own protected library/user directory, linux has the same, and since Mac is based on linux, there should not be too big a difference.
3. I want the classes built in such a way that I can change a class without destroying others. (Kill all beginner errors)
4. This is an open point for me, but I think I am going to ask for help designing the front end. I have no problems coding it, but I lack what some might call … artistic talent
5. I have learned a few things maintaining my budget with excel and figured out what I want to see at start up, and what I do not need to see and can call up extra. I want to build this into the program.
I might rename this to MoneySucks, but I might also keep the name BudgIt because it is a pretty cool name. I would just have to dub it version 3.