{"id":761,"date":"2023-05-10T11:18:29","date_gmt":"2023-05-10T08:18:29","guid":{"rendered":"https:\/\/andrewwippler.com\/?p=761"},"modified":"2023-05-10T11:18:29","modified_gmt":"2023-05-10T08:18:29","slug":"personal-tech-debt","status":"publish","type":"post","link":"https:\/\/andrewwippler.com\/2023\/05\/10\/personal-tech-debt\/","title":{"rendered":"Personal Tech Debt"},"content":{"rendered":"\n

This past week I have been able to traverse down the rabbit hole of personal tech debt. After a week’s work, I think I was able to get to the bottom and give everything an updated timestamp! All kidding aside, here were some of the projects I was able to revisit:<\/p>\n\n\n\n

Kubernetes Cluster<\/h2>\n\n\n\n

My k8s cluster hosts websites, internal applications, and personal projects. While many choose to host their services on cloud services, I find it easier (and cheaper) to run it in a controlled home cluster. This week I was able to troubleshoot why some services were sluggish and crashing. After deploying prometheus and grafana a month ago, I was able to determine that my cluster was maxed out. I added another node to the cluster and performance improved. On a side note, I do not understand why people want to purchase barebone Intel NUCs when one can get everything included in a Dell Optiplex 5050 micro form factor.<\/p>\n\n\n\n

Website redesign<\/h2>\n\n\n\n

My theme from 2015 was based on bootstrap 4 and had a few Admin UI bugs. The errors were only visible to me, so I have been putting it off for quite a while. This took me a morning to clean up with TailwindCSS. There are still a few UI features missing on the frontend due to a problem with my build and deployment process. I hope this new tech debt does not stay on the list for very long.<\/p>\n\n\n\n

Personal Finances<\/h2>\n\n\n\n

I have been using GnuCash since 2014, and I have found that it is a perfect program for dual-entry accounting. However, it requires that I use a computer and the program to add or remove purchases. The reporting features are also lacking functionality; however, the program has been working flawlessly. It has been on my list to revisit how I do finances to see if a web-based solution would be better. Considering I now have multiple currencies, I need a program that could do both USD and Euro. GnuCash already has this feature and I found the new Alpha Vantage API to be quite buggy.<\/p>\n\n\n\n

Considering I have been a longtime user of GnuCash, my file had some corrupted entries. GnuCash did not have any friendly warnings that would hint at the solution. I could not save the file in SQLite or in MySQL to use the Python library piecash. <\/p>\n\n\n\n

I looked at Firefly-iii and considered migrating to that – it had multi-currency support as well. The rules feature meant I could create a webhook that updates transactions from USD to Euro against the public trading exchange rate for that day. At first, this program looked promising. <\/p>\n\n\n\n

I was able to export my files to simple CSVs and attempt to import and map them to appropriate fields. However, account splits did not export very well. I had to spend 4 hours manually importing my splits into Firefly-iii. Then I tried importing new CSVs from my bank into Firefly-iii and I found that I would have to spend several minutes creating rules in Firefly-iii. At this point, I realized that these rules were already programmed into GnuCash. If Firefly-iii existed in 2014, I think I would have begun my personal finance with it, but the work required now to migrate to this solution is, in my opinion, not worth it for me.

In GnuCash, I can import CSV, QFX, and QIF. I can map the transactions quickly and easily. Since 2014, GnuCash has been training on my data to give me a personalized experience, which has kept me on this program. It has served my financial banking needs, but now I realized I had to figure out the corruption problem.<\/p>\n\n\n\n

GnuCash Corruption problem<\/h2>\n\n\n\n

Tech dept often snowballs into bigger problems. I was facing the largest snowball in existence. How am I supposed to find this transaction_id that the GnuCash error was telling me? I cannot save the file as SQLite to use the piecash python library to find it. It seemed hopeless.<\/p>\n\n\n\n

Then I realized I am a forgetful nerd.<\/p>\n\n\n\n

In my attempt to create a clean, XML export to CSV of GnuCash, I came across a PHP GnuCash XML library<\/a>. I then created a script which outputted all of the information I needed for exporting GnuCash XML to CSV<\/a>. The odd transactions, which had errors, were searchable in the CSV my script created. I was able to find and fix my GnuCash transactions. Then, I was able to successfully save my GnuCash file in SQLite. <\/p>\n\n\n\n

I still laugh at the GnuCash error: Transaction description cannot be null. My faulty transactions had the string “null” in them. Once I removed the string, saving worked.<\/p>\n\n\n\n

New tech debt<\/h2>\n\n\n\n

The processing of my personal tech debt is down to two items: 1.) Fixing the CSS bugs in my new website theme. 2.) Creating scripts to extend GnuCash functionality through the SQL backend. I think I can work on some of these next month \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"

This past week I have been able to traverse down the rabbit hole of personal tech debt. After a week’s work, I think I was able to get to the bottom and give everything an updated timestamp! All kidding aside, here were some of the projects I was able to revisit: Kubernetes Cluster My k8s […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[11],"tags":[173,172,51,83,29,171],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/andrewwippler.com\/wp-json\/wp\/v2\/posts\/761"}],"collection":[{"href":"https:\/\/andrewwippler.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/andrewwippler.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/andrewwippler.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/andrewwippler.com\/wp-json\/wp\/v2\/comments?post=761"}],"version-history":[{"count":1,"href":"https:\/\/andrewwippler.com\/wp-json\/wp\/v2\/posts\/761\/revisions"}],"predecessor-version":[{"id":762,"href":"https:\/\/andrewwippler.com\/wp-json\/wp\/v2\/posts\/761\/revisions\/762"}],"wp:attachment":[{"href":"https:\/\/andrewwippler.com\/wp-json\/wp\/v2\/media?parent=761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/andrewwippler.com\/wp-json\/wp\/v2\/categories?post=761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/andrewwippler.com\/wp-json\/wp\/v2\/tags?post=761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}