Yes! Twenty-five posts done in about a year. So, mission to do one post every two weeks on average, accomplished. In this post I want to summarize this journey, what I’ve learned and how I hope to continue.
25 Fortnights of Code
When starting this blog I was inspired by the #100DaysOfCode challenge which was popular on social media at the time. Though doing a small exercise each day didn’t appeal to me much. I’ve done many of these over the years learning how to code. I prefer to do larger projects that have a clear purpose and can be put to use later on, so the idea of doing this over the course of two weeks, and reporting that as a blogpost was born.
A Year in Numbers
Last year the blog was read by 382 people from 53 counties. As this is a purely personal blog, I did little SEO in the beginning and didn’t advertise posts broadly. As such the blog was seen by just a handful of people … up until September. At that time there was a sharp increase in the number of visitors. This mainly due to two posts: the Gwent Pro Rank Analysis and the Aqara Cube integration in Home Assistant. At that time I also started highlighting some posts on Twitter. While that gives a short burst in visits, most traffic comes through organic searches. It is nice to see people start reading some of my posts and when in doubt which type of post to do next, I might give the topic that was more popular in the past higher priority.
Doing projects that include data science tools has helped me become far more proficient with pandas, numpy, seaborn and SciKit-Learn. Doing these in Jupyter Notebook allows the code and explanation to be combined in one spot. Google Collab and Binder make it trivial to share these with the world in a way people can run, adjust and rerun them with ease. While more technical posts tend to receive fewer views, the more accessible ones (like the Gwent Pro Rank analysis) are quite popular. Taking this into consideration, I will try to split this content in two posts: a technical one featuring the code and a more general one featuring the graphs, results and interpretation.
Working on CodeForces problems I discovered my achilles heel… algorithms! While I’ve had advanced maths and statistics courses, algorithms like the knapsack problem and how to formulate this in code were never covered as I didn’t go through a classic computer science curriculum. So assignments requiring dynamic programming to solve them tend to get me stuck. While I can usually come up with a solution that gives good results based on a set of rules (aka a greedy algorithm) that might not give the optimal solution… This rarely matters for projects I work on, but being able to implement solutions that guarantee the optimal result is a skill I would like to have. So I have been working on this on and off for a while and have been able to solve increasingly difficult challenges, I hope to do a follow up on that post discussing solutions for issues with a difficulty well above 2000.
For me these are outlets to play with new tools and technology. For my day job I develop tools to explore biological and biomedical data through web interfaces. As this is in an academic context there are only few people working on these and it takes some time between starting a project and finishing it. Once the tech-stack is decided there is little room to change it and it will remain in place often for years. Trough this blog I get to experiment with small projects that use other packages.
Having developed this blog using Jekyll and Ruby (check some custom extension I’ve made in this post), DeckLock (see part 1, 2 and 3) with Pelican and Python and the new version of my resume with GatsbyJS exposed me to new tools, technologies and ways to work. On the short list for future projects are FastAPI, Graphene (GraphQL), Svelte and TinyDB … I just need to come up with something useful to develop.
DeckLock, a tool to store decks from a few collectable card games, I’ve been using continuously to archive Gwent decks at the end of each season and the few KeyForge decks I’ve purchased last year also were a breeze to add. Since, the last post a few improvements were made (which can be found on GitHub already) which will probably become a future post.
The most viewed post this year somewhat surprised me. It is the Aqara Cube integration in Home Assistant. Something I almost didn’t post at all! Though I realised having a post at hand with instructions how to do this would make it easier to re-do this in the future when switching to a new Raspberry Pi to run Home Assistant, it felt like it might be too specific for my needs and of little interest to others. I was wrong! It seems this actually filled a niche as it is the most accessed post as well as that is found through organic searches the most. With a lot more interest in Home Assistant than I anticipated you can expect a few more posts on integrating more Aqara sensors and doing your own plugins (if you don’t want to wait for the post, the code is already out there on GitHub for a plug-in I did which allows you to connect to over 300 local weather stations based on the Leuven template…)
Building things has been great, the mechanical keyboard I made has been my faithful companion while writing thousands of lines of code. As the previous item I posted, on editing STL files, spoils … there is a Bluetooth speaker coming up! However, there are no good local sources for the electronics for these projects. So I need to get most components from AliExpress which can take months to arrive. Any issue with a component and a post will immediately have a long delay (e.g. the LEDs for the keyboard never showed up and there are issues with the bluetooth receiver module for the speaker) … So while I enjoy these tremendously, this type of post is not something I can reliably push out.
2020 will be one for the history books due to the global COVID-19 pandemic, but being force to spend more time at home did allow me to work more on this blog and improve my skills. If you are reading this, I hope you’ve enjoyed reading previous posts and there will be more posts soon!
Subscribe via RSS