Homemade search engine part (2/3)

Intro Welcome back! It’s been about a month since I promised a new blog post, and here it is. A lot has happened since last time. I’ve had to rewrite a large amount of code and restructure the control flow of the search engine/scanner. The biggest problem with the scanner was that the control flow was all over the place. For example, the only way to gracefully exit the application was to either scan the entire internet or queue a QueueItem with the command Stop....

November 22, 2024

Homemade Search Engine Part (1/3)

Disclaimer: This post is going to be long. Why? I have a small obsesion with collection of different types of data, statistics and everything in between. And since my last project, I wanted to challenge myself even further. And this time, I wanted to build something more usefull than a terminal video player. So with this, I decided to create a search engine. It’s not that big of a project, I told myself at the beginning....

October 24, 2024

Creating A Console Video Player With A Catch. Part 2

Intro After having implemented the terminal video player, it was apparent that is was rather slow. So the need for optimizations is in order. And oh boy did I cook on this one. And it’s actually the reason as to why this blog post took so long to make, I just kept finding ways to speed up my program. Optimizations A list of optimizations done: Use Spans as collections instead of arrays (if possible)....

September 14, 2024

Creating A Console Video Player With A Catch. Part 1

Intro I’ve always wanted to make a video player. I think it’s an interesting challenge, with many chances of creative optimizations. This will be a two parter. How I handle client/server logic and implimenting my own video file format. Benchmarking and optimization. The Idea The idea here being that I will create a video player, entirely working in the console (or terminal, depending on who you ask). It will consist of a backend and a frontend....

August 11, 2024

Where And When Should You Use Null (In My Opinion)

Into Null handling and null checks can be quite a hot topic for some developers. On one hand, it can be used as a default “no value yet” initializer for variables, and is easy to check if said variable holds a value or not. But on the other hand, it can lead to a bloated codebase, where you constantly need to check for null. This blog post is not meant as an attack on null....

August 1, 2024

Setting Up A New Blazor Interactive Server Side Render Project

Intro I like to make small projects from time to time, where I check out new technologies or updates from already existing tech. And this time, it’s Blazor Interactive SSR (Server Side Render). And this project is a small one. In essence, I want this project to be a video conversion website, where you can upload a video, and convert it to a different codec and container. In this blogpost, I will outline solutions to problems I discovered doing the development of this project....

July 27, 2024

Changes I Make When Deploying A New Server

When I deploy a Linux server, usually Ubuntu, I make sure to include some changes that differs from default. The default config is fine, but since the virtual hardware my server is running on is quite limiting, I need to do some fine tuning. So, first up, let’s benchmark the performance with the default config, then the fine tuned config. Setup /etc/sysctl.d/99-sysctl.conf Setting Default Fine tuned vm.swappiness 60 10 vm....

July 18, 2024

Changes I Usually Do When Installing Linux

Changes to /etc/default/grub The default Fedora Linux Grub config is fine, but it’s a bit bloated imo. So let’s change that. The default config (/etc/default/grub) looks something like this: GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="initcall_blacklist=simpledrm_platform_driver_init nvidia-drm.modeset=1 rd.driver.blacklist=nouveau modprobe.blacklist=nouveau rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau" GRUB_DISABLE_RECOVERY="true" GRUB_ENABLE_BLSCFG=true There is a few changes. For example, in the original file, the rd.driver.blacklist=nouveau exist two times. Same with modprobe.blacklist=nouveau. I use the Propriatary NVidia drivers, so I also added:...

July 16, 2024