Not too much has changed since my last update. I continue to work on several small projects rather than a single substantial one, but I think I’ve made enough progress to discuss what I’ve been doing…
I finally decided to attend the Zurihac1 conference. It’s been on my radar for some time, particularly as I have a friend in Zurich so even if the conference turned out not so great, I could still catch up with my him.
Why my concern about the attending the conference? Well Zurihac is focused on Haskell and prior to the conference I didn’t know any Haskell. No problem, just learn Haskell then. Right?
In fairness I had been meaning to look at Haskell in any case and this conference seemed a good way to motivate myself to do so. Also to Zurihac’s credit, the organisers seem aware that while there is a lot of interest in Haskell, not quite as many people proficient in it, so they offered a beginners track.
The textbook for the beginners track was Programming in Haskell by Graham Hutton, which I’d highly recommend. To be clear, I wouldn’t recommend it to absolute programming beginners, but if you already have some knowledge of another programming language and are curious about Haskell, it’s a great introduction.
I greatly appreciate about Hutton’s approach. Unlike other textbooks and online resources I’ve looked at on Haskell and Functional Programming, he avoids getting into sophisticated topics like Functors and Monads until the book’s later chapters2. It’s a great book anyone with an interest in Functional Programming more broadly, even if you’re not sure about Haskell. Programming in Haskell describes concepts applicable across functional languages.
While I felt learning Haskell was benefiting my coding in general, I was starting to miss doing some more practical exercises so I decided to take another look at my personal finance Python project.
Returning to this project got me thinking about the Python Automation Cookbook a book I was working through earlier in the year.
To go on a brief diversion, this is another book I’d recommend as it approaches Python in a slightly different way than other books I’ve read. I find Python is generally either use it as a way to teach the fundamentals of coding or used as a way to get into quite specialised subjects like using Python in Data Science. Python Automation Cookbook however shows you how to use Python as a scripting language for basic tasks. This is a refreshing approach, particularly as you can start to see how you could use Python in day to day life. Like for reviewing your personal finances…
Getting back to my project, I think you can see the influence of this book when you compare the current structure with my previous attempt. For instance, this time I have used a Requirements file, which makes running the project much easier and I have tried to make the programme more modular, rather than just writing one long script.
It’s also worth noting that given personal finances are personal I haven’t included any real data in the public repository. This has some advantages and disadvantages.
The big difference between how the programme is presented publicly versus how it looks when using my own real data is the amount of processing (wrangling?) the programme has to do to merge statements from different institutions. The programme I use on my real data has to make many small adjustments to layout and format of the files.
In contrast the public version looks much tidier and is more readable. All this is to say, if you use Python to explore you own financial statements you’ll most likely have to write a lot of ugly custom code to get those statements into a suitable format.
The new edition of Think Python is out and I’m looking forward to reviewing it again after a couple of years. But this time I want to do things a little differently. For awhile now I’ve been curious to learn more about the so-called array languages3. So in order to make Think Python’s exercises more interesting I’m trying to complete them in Python and the q language. I’ve just looked at a couple of chapters so far, but I have found this approach quite effective. Despite being one of the few successful propitiatory4 languages, there is quite a lot of free documentation for learning q. However, I’ve not found any beginner’s exercises so translating Think Python’s exercise into q is not a bad option.
What I've been up to 2 by William Samuel McDonald is licensed under CC BY 4.0
Despite the name, the conference actually takes place in the town of Rapperswil about half an hour outside Zurich by train. ↩
Now if you want to know how a Monad is like Burrito. ↩
Strictly speaking you do require a licence to run q on your machine, however the owern KX systems do offer a free annual licence for personal use. ↩