I haven't posted an update in a few months, it's been a busy time on my side. Late 2022 our sweet cat Minou died, which was a challenging time for us. About eight weeks ago we got a kitten, Charlie, which has been a welcome addition to our little homestead. She is a rambunctious thing, constantly needing play and attention (and trying to eat my socks). I work from home, she is my copilot during the day.
We purcahsed a home here in Winston-Salem. We had casually been looking for some time, but I wanted to wait until the housing market had declined somewhat before buying. The house we got into had sat on the market for several months, so we were able to pick it up for a comfortable price. The first time I owned I learned the lesson that you can do (nearly) anything you want to your house, except change the location. This time we are in a quiet area of WS near a large public park and the greenway. We haven't yet finished unpacking, and there's a hundred little projects, but so far I am smitten on this place.
Regarding NLI, I've added some helper functions to allow for a bit easier content creation and updating. But there's still obvious things I need to do to improve it, as well as just get caught up in content. I keep a list of things that I've learned and been working on, and I am a ways behind in making updates. I'll try to update more often than once a quarter.
ChatGPT has revolutionized how I work and study. Initially I thought it was cute, writing responses as sonnets. But I quickly realized the practical benefit of being able to get instantaneous response to any practical question. It has helped to expand my working knowledge of Python, pandas, and Git, but even these pale against the increase of my workflow efficiencies. Prior to ChatGPT, everytime I had some question I would need to spend 20 minutes researching it, and then try to return to whatever I had been doing at the time. Now there is no interuption, I simply ask a question and get a response, and I can continue with what I had been working on.
Our company uses a legacy ERP that is no longer readily possible to update and modernize. We still use it for day to day operations, enter data for purchasing, sales, and accounting, but the state of it (tables and UI) won't be changing. This is both a challenge and an opportunity. Given that we have a locked state for reporting, in late 2022, I ported all the sales data to a separate database. I haven't yet built a way to automate updating between the two, but weekly manual updates don't take me long. This separate database I have complete control over, and able easily add additional attribution, and use it for other functionality.
I have scripted sales reports generated using SQL/pandas early, and openpyxl late to mod into user-facing reports. This has been a fun and interesting exercise, to have a practical project to learn from. Upper management has seen the benefit, and dev of it is part of my weekly time, which is fantastic. I've built a local dev environment that I deploy to prod using GitHub. Fairly manual push and pull, may eventually pivot to using some devops concepts. I'm enjoying the continuous integration of building practical scripted reporting. I started with very Python-centric code smells like over use of for-loops and recreating dataframe objects instead of inline modifying them. I've now refactored to use pandas logic. This took some doing, studying at night from Effective Pandas by Matt Harrison. But now that I understand the better ways of pandas and refactoring to be function-based, my code is easier to understand, terser, and dramatically faster to execute.
As part of the dev work with the pandas project, I have finally started using Jupyter notebooks for practical work. I kept bumping into Jupyter notebooks for sometime, both from RealPython and Effective Pandas. I hadn't invested the time to learn Jypyter notebooks because I hadn't yet seen a good need for them. But once I started trying to refactor my pandas logic to be more pandas based, suddenly the value of Jupyter became clear. Now when I need to experiment with code, Jupyter makes a lot of sense. The best aspect is that I can setup an experimental dev environment that is close to prod instead of having to rebuild testing in the REPL, which is slow and tedious, or test inline inside the practical code base, which is somewhat dangerous and impractical. All told, feels like a few good months of practical projects and new efficiencies.