{"id":22,"date":"2013-12-08T10:45:00","date_gmt":"2013-12-08T16:45:00","guid":{"rendered":""},"modified":"2017-02-02T23:41:52","modified_gmt":"2017-02-03T05:41:52","slug":"projected-bill-organizerplanner","status":"publish","type":"post","link":"https:\/\/trash80.org\/blog\/?p=22","title":{"rendered":"Projected Bill Organizer\/planner"},"content":{"rendered":"<p>I have always had a hard time remembering just about everything, including, when to pay my bills.&nbsp; First, my wife and I tried using a calendar.&nbsp; As bills came in, their due date was posted on the calendar.&nbsp; But, then we&#8217;d forget to send the bill off days ahead so the bill arrived on time.&nbsp; So, we decided to put it on the calendar 7 days ahead (or, whatever the average time bills took to go through our postal system).&nbsp; This failed also. We&#8217;d forget to write something down.<\/p>\n<p>Next, we bought a little desktop organizer.&nbsp; The bills would be set in their due dates, and as we were paid, we&#8217;d pay all the bills due before the next pay period.&nbsp; This actually worked quite well.&nbsp; This system became the foundation upon the eventual spreadsheet software I wrote.&nbsp; But, this system had some flaws.&nbsp; Our house is small and cluttered.&nbsp; We had nowhere to put this bulky organizer.&nbsp;<\/p>\n<p>Then, I setup a spreadsheet system in Excel, but being the Linux user I am, this required a virtual machine to run Windows.&nbsp; I then imported my spreadsheet to Google Docs Spreadsheet.&nbsp; Which worked fine, but I needed a little bit more control than the complicated spreadsheet formulas could give.&nbsp; My formulas where getting so long and out of control, I had to decipher them a month later.<\/p>\n<p>I looked into different languages that worked with Google Docs. Well, that sounds easy, until you realize, Google changed the API about every 3-4 months for different languages, such as Python and Java.&nbsp; So, I settled on Javascript.&nbsp; I&#8217;ve been writing Javascript professionally for some time, but I knew Javascript had one big flaw that would haunt me, especially Googles restricted version.<\/p>\n<p>Javascript does a very poor job with time.&nbsp; Time seems like an easy concept, until you start digging into it.&nbsp; I didn&#8217;t need to become a physicist, I just wanted to manipulate time in my algorithms for forecasting due dates.&nbsp; Sounds easy, until midnight on a day that time changes, and Google&#8217;s servers are in some unknown location (the &#8220;cloud&#8221;).<\/p>\n<p>After a week of pounding my head against the wall because of this very important shortcoming of Javascript (still, to this day, professionally I face the Javascript time issue.&nbsp; Many libraries exist to help with this failure, but they cannot be used on Google Docs), I decided to find alternative avenues.<\/p>\n<p>I started searching for Open Source Software that would meet my needs.&nbsp; While the choices are abundant, none of them really did what I want.&nbsp; Most financial software track paid expenses to help decided future forecasts, but were more complex than I needed.&nbsp; I don&#8217;t need to track every dollar I spend, I just want a reminder so that I can pay my bills on time.&nbsp; If such a software exists, I couldn&#8217;t find it.<\/p>\n<p>I had been writing some software in Python for some time.&nbsp; I love the powerful, yet simple Pythonic way of developing.&nbsp; Though, I do miss my curly brackets.&nbsp; So, I set out to find a Python friendly spreadsheet.&nbsp; I found pySpread, but that software had errors everywhere.&nbsp; It failed miserably.&nbsp; It&#8217;s a fine piece of code to show the power of Python, but just didn&#8217;t work for me too well.<\/p>\n<p>Next, I looked at Open Office&#8217;s spreadsheet.&nbsp; To write external methods for it was even more complicated than inline methods.&nbsp; I also find Open Office to be poor software.&nbsp; I have used it since Star Office and over the years grew less and less interested in it.&nbsp; While I&#8217;m not a fan of Microsoft, I do have to say they have taken a lot of time to understand their customer needs and applied that to their Office product.&nbsp; I prefer to use MS Office over any Open Source option.<\/p>\n<p>Finally, I found Gnumeric.&nbsp; A simple spread sheet that interfaced with full Python.&nbsp; I could write my methods, build a small interface for Gnumeric and was good to go.&nbsp; I translated my Javascript methods over (which were translated from my Excel spreadsheet formulas).&nbsp; Within a few hours, I had my planner going.&nbsp; Over the next couple of months, I refined my methods and interfaces.&nbsp; I have used this for over a year with great success.<\/p>\n<p>The spreadsheet knows when bills are due and shows the amount due under the best payday.&nbsp; I just go into my banks bill pay area and setup the bills on that columns payday.&nbsp; As I setup the bills, I marked them with some highlight color, such as orange.&nbsp; When I noticed the bank paid the bill, I would then mark the bill green.&nbsp; When all bills in that payday column were paid, I marked that entire column green.&nbsp;<\/p>\n<p>As stated above, this has successfully worked for over a year.&nbsp; Not one late payment.&nbsp; But now, I have the bug.&nbsp; How can I make this better?&nbsp; Well, now, that&#8217;s the next article.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have always had a hard time remembering just about everything, including, when to pay my bills.&nbsp; First, my wife and I tried using a calendar.&nbsp; As bills came in, their due date was posted on the calendar.&nbsp; But, then we&#8217;d forget to send the bill off days ahead so the bill arrived on time.&nbsp; &hellip; <a href=\"https:\/\/trash80.org\/blog\/?p=22\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Projected Bill Organizer\/planner<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-22","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/trash80.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/22","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trash80.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trash80.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trash80.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trash80.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=22"}],"version-history":[{"count":1,"href":"https:\/\/trash80.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/22\/revisions"}],"predecessor-version":[{"id":41,"href":"https:\/\/trash80.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/22\/revisions\/41"}],"wp:attachment":[{"href":"https:\/\/trash80.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trash80.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trash80.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}