2024-08-16 Weekly Update - math proofs, LeetCode, DuckDB, and networking

Like most bloggers, I have a long backlog of unfinished posts. I aspire to write concise well-scoped ideas that I can quickly get out the door. But I tend to reverted to my natural discursive writing style and completionist tendencies which makes things hard to finish.

To work on that I’m trying a “weekly update” format. I’m drawing direct inspiration from Simon Willison’s “weeknotes” as well as John D. Cook’s short-form technical blogging.

This is my first attempt at this format and it’s been a success in that I actually got something published! I hope you enjoy it. If you need a soundtrack while you read, may I suggest Four Tet’s latest album Three +

I’m on Sabbatical

My biggest update is that I’ve left my former job and I’m about 6 weeks into a self-proclaimed sabbatical. While I’m looking for my next role I’ve been focusing my energy on “sharpening my tools” by studying math and programming fundamentals (phrasing taken from this tweet), networking with interesting folks, and just generally resetting and refocusing. Here are some examples of what’s been interesting me.

Mathematical Induction Proofs

For nearly 2 years now I’ve made a concerted effort to study math again. I spent 2023 working through Sheldon Axler’s modestly titled “Linear Algebra Done Right (4th Edition)”. The text is an algebraic approach to linear algebra that largely eschews the use of the determinant. I only got a few chapters in but the material was eye-opening. But, as I worked through the book I noticed I was getting too bogged down in the mechanics of completing the proofs and I was losing momentum.

So this year I took a step “back” and have been working through John Hammack’s “The Book of Proof (3rd Edition)”. This book focuses on teaching the mechanics of proofs using a range of examples from different areas of math. This book is exactly what I needed as an undergrad math major. I’ve been I’ve gotten a lot more comfortable with the tools needed to work on the math I’m interested in learning (I even submitted a small typo!).

Currently, I’m working through the chapter on mathematical induction. Most the problems so far have been about elementary number theory or series. I got stuck this week on a problem that implies the divergence of the Harmonic Series. But, I think I’ve just about unwound my confusion. The rest of the chapter has problems on the Fibonacci sequence, Pascal’s triangle, and graph theory.

CS Fundamentals with LeetCode

In keeping with my interest in learning fundamentals, I’ve also been working through basic CS problems on LeetCode, e.g. linked lists. Because I don’t have a CS degree there are a lot of fundamental CS problems I’ve only read about. While I conceptually understand them I’ve never worked through them in practice. I used to shrug these off as being academic problems, and maybe they are, but I’ve had a surprising amount of fun solving them. I feel like I’m solving chess puzzles (something I enjoy) but I also feel like I’m closing some important gaps in my knowledge.

This week I’ve been working on Binary Search Trees and Binary Search. Coincidentally, this involves a lot of recursion which complements the math proofs I’m working on.

Building a Bookmark Tool with DuckDB

I’ve also been feeling the itch to do something more applied so I started working on a small bookmarking tool to keep track of interesting links. I decided to do this in DuckDB which is a tool I’ve wanted to dig into more. It’s also giving me a chance to check out MotherDuck, their hosted service.

Right now the “app” is just a series of SQL queries while I prototype out the different operations I want to perform, mostly CRUD operations and trivial analytics. I have some more queries I want to add, specifically around tag manipulations. Shortly, I want to turn this into a python CLI app with the Typer library.

One thing I’ve been pleasantly surprised by is the number of convenience functions in DuckDB and how pythonic some of the syntax is. There are functions for testing list membership, you can index and slice lists just like in Python, you can declare checks at the column schema level, and there are even list comprehensions!

Networking

I finally shared on LinkedIn that I’m between jobs and looking to use this time to network and as a result I’ve had tons of interesting meetings. Just this week alone I’ve talked to:

It’s been a blast! I’m meeting a ton of smart people and it’s helping me better understand what I want to be working on.

If you want to chat about anything related to tech, please reach out.

This work by Alex C. Viana is licensed under CC BY-NC-SA 4