I am a Backend developer focusing on .NET, employed @ Routty.
I use this domain (and subdomains) for my personal projects.
Hope I can link some cool stuff later.
Link to some cool stuff below.
If you really want, you can contact me via LinkedIn.
While browsing Reddit, I stumbled upon a community called
GoodreadsLunatics
, a place where people post pictures of
the most forward-thinking individuals from LinkedIn. You know
the type and probably have some people like that on your feed.
You know where people can also share their forward opinions?
That’s right,
Goodreads! A mostly okay platform where people can rate
the books they read, write optional reviews, and engage in some
social aspects, like any other social media.
A game where you get a funny review, and you need to guess which book it is! Lame? Maybe. But what I was really interested in was Blazor, the new web framework from Microsoft that allows me to stay within my Microsoft technology cave.
Goodreads has an API, surprisingly, but it’s pretty limited in functionality and did not provide the large datasets I was looking for. So, scraping it was! I found a list of the 100 most-reviewed books and scraped 30 one-star reviews, then 30 two-star reviews, and so on up to five stars. Is the scraper technologically advanced? No. There were some minor hurdles due to loading times and anti-scraper measures, but nothing too difficult. In no time, I had all the information from the 100 most-reviewed books, along with some handpicked books I personally had read. The reviews followed as well. That’s 111 books times 30 reviews for each rating (5), resulting in a nice catalog of reviews. I started with a SQL Server database.
With almost 16,000 reviews, I still had to filter out the funny ones. Reviews in other languages or long-winded sincere reviews were not needed. So, to follow the AI Hype, I wrote an AI review program in C# using Semantic Kernel, which was surprisingly straightforward. First, I hooked it up to a local LLM, which did the job just fine, but its idea of "funny" was not really what I was looking for. I switched out my local LLM with OpenAI's ChatGPT. Still using Semantic Kernel, I was scared of an outrageous credit card bill, but to my surprise, after some testing and rating all the 16K reviews, my bill was less than 5 EUR—a surprise, to say the least.
Blazor is like the middle child of Microsoft. It doesn’t get enough attention, but I hope it survives, unlike all the other UI frameworks from Microsoft. I’m a backend developer at heart, but we plow through it. With frameworks like Bootstrap or MudBlazor, it becomes bearable, and we have a functioning interface with some simple logic to show, load, and get some feedback from the user. I’ll keep this section short because I haven’t found anything new here. I still like Blazor, I guess?
I let AI do the grunt work by rating each review. Then I built a simple admin panel to manually approve each review. The classification was not really good enough to just pump into the game and be done with it. I built in a mechanism to ask the user if the review was funny and planned on integrating an ELO-like system where subsequent negative feedback lowers your score more than just one and vice versa—just like chess. But let’s wait until I get some real user interaction.
I know some Azure services are free, but I wanted to use Docker with Docker Compose. I have a NAS at home, which worked fine, but unfortunately, my internet speed isn’t too great and was very slow to load the covers of the books. So, I rented a Hetzner server for 3.50 a month, and after some intro to Linux and refreshing my command-line skills, I got it up and running, migrated the data, and set up a Cloudflare tunnel to get it working.
This project took a long time, not because it was hard or too much work but because I was busy with other projects, some freelancing, and life in general. I’m glad I picked it up, and it is in a state where it is functional. Of course, you can build and build and build, but I am just going to launch it and see how it goes. Thanks for reading, and I’ll set you loose on the app right now. => Link to GoodreadsLunatics