My AI Learning Journey – Part 1 – Setting Sail

So far I’ve mostly used AI systems in search and a little bit for AI-assisted coding in a very basic form. But the world keeps screaming AI and I have seen a number of interesting use cases recently that might be useful to me that have sparked further interest. As the questions and potential use cases kept piling up, I decided to gather them and to make a learning journey out of the exercise. Reflecting and documenting is part of this process, so I decided that a good way to do this is to start ‘a little series’ on this blog. This way, I can remember what I did and learnt later, and at the same time I might give you some ideas and practical tips should you be interested in the topic. That being said, here’s the list of topics I would like to address over the next few weeks:

Basic Questions

How do LLMs work on the inside? I’m looking for a short and high level technical primer, as I would like to understand the basics, being well aware that the maths behind it is not really my cup of tea. But that’s OK, we live in a highly specialized world, and it’s important to understand the basic principles to be able to build on them. I think I do have a good understanding of the basic concepts of the layers between the silicon far down below and high level programming languages like Python and modern server systems. From that point of view, AI and LLMs are yet another layer on top. This learning journey should help me to understand how that latest layer on top works, what its limitations and future potentials are, and how I can benefit from it.

Running LLMs Locally

Having stuff run in the cloud outside my control creates two problems for me: First, I have no idea how much hardware and energy is really required to run LLMs. And secondly, I really don’t want my personal data flowing out to all sorts of data centers belonging to all sorts of big tech companies. But it’s possible to run LLMs locally and I want to find out what is required for this and how large or small these local LLMs are compared to what runs in the cloud today that drives ChatGPT, Perplexity and many other systems. Open source technologies like Ollama and Open WebUI are two software projects among many that might help me here. Fortunately, I do have a bit of CPU and GPU power at home and I will put that to good use for this learning journey.

Renting GPU Power

A middle ground between LLMs on premise on the one hand and ‘paying per token’ for LLMs running in big data centers are virtual machines or docker containers one can rent with GPUs attached, on which LLMs can be run (somewhat) privately as well. So would that work for me and what is the cost involved?

LLMs in Open Source Software

I’ve noticed that my self-hosted office suite based on Nextcloud and OnlyOffice can also tie in AI and LLMs for things such as search, translation, help with grammar, letter writing, etc. etc. The obvious questions are: Can I run that with the hardware that I have at home, would it be useful for me, and how does this compare to what is available in proprietary and centralized systems?

AI Assisted Coding

As mentioned at the top of this post, I’m very much interested in AI-Assisted coding, which is different from Vibe Coding. I’ll explain later. Anyway, I have done some fairly basic stuff with this in the past but I’ve noticed that it has now become possible to interact with AI systems in a way that code is generated and changed on the fly based on a conversation with an AI system in the code editor itself. That sounds exciting and I want to try different options if the software that runs on my end remains open source without telemetry. Let’s see if that is possible.

Trying Out Different Systems

I have few illusions that whatever I can run with relatively inexpensive hardware at home is no match for the LLMs and systems of big corp. And for some things like AI assisted programming, using remote LLMs might even work for me, as most of my code ends up as open source on a public git repository anyway. No privacy and secrecy involved here. To see what is possible and useful to me, I’d like to experiment with different systems to solve practical problems I have on my to-do list.

Getting to Grips with 3GPP Specs

Once upon a time, one could read 3GPP specs, understand them and at the same time get an idea of how networks out there really work. That probably ended after 3GPP Release 8. Some would say it was even earlier. The last 10 iterations of the specs of the last two decades have added a lot of stuff that is interesting at best and confusing at worst, but not used anywhere in real networks. These days, you don’t see the forest for the trees anymore in those documents. So could an LLM help me to reduce the pain and let me understand more quickly how some mechanisms that are actually used in real networks are specified across different 3GPP specification documents? So far I haven’t seen anything, but perhaps I haven’t looked hard enough? Let’s see.

Let’s Go!

So long story short, this is not going to be a single weekend project. But it doesn’t have to be, because there are so many interesting questions and possibilities around those topics in my head, so this promises to be an interesting ride.

What Does TOTP Protect From?

This post is a follow-up on the previous post about how I can use open source software for Time-based One Time Passwords (TOTP), also referred to as OTP in many cases. As shown in the previous post, TOTPs are generated from a common secret that is stored on the client and the server. And that is it’s weak point! If credentials are stolen on the server side, the common secret goes with it. If the attacker is then able to decrypt the hopefully ‘salted‘ password, the common TOTP secret is readily available and the game is lost. So what is TOTP good for then?

Continue reading What Does TOTP Protect From?

TOTP Authentication – Open Source and Between Devices

These days I am using a number of services on a regular basis that require a 2nd factor authentication in addition to a password. Two of them send me a 6 digit time-based one time password (TOTP) over SMS each time I want to log-in. The other two send the 6 digit code by email. While that works quite well in general, there are two problems with this: First, SMS is sometimes a bit laggy and said not to be secure enough. And second, using email as a second factor for authentication makes me dependent on a particular provider if I don’t own the domain name. Not ideal. So when I recently had a closer look at the TOTP mechanism, I noticed that it is a standardized procedure and there are open source authenticator apps available that work with pretty much all services that offer TOTP passwords with an authenticator.

This is a game changer for me, as I was shying away from TOTP apps so far, as I didn’t want to install a multitude of authentication apps. Also, a proprietary app that syncs key material with a hyperscaler was obviously out of the question as well. Having an open source implementation that is totally local and under my control, however, changes the story. And even better, I already had an app installed on my Android device that could do the job for all websites I’m using: KeePassDX.

Continue reading TOTP Authentication – Open Source and Between Devices

Ubuntu 24.04 – Wayland Remote Desktop Sharing Over Slow Lines

This is a follow up to my longer previous post where I had a detailed look at how well remote screen sharing works in Ubuntu 24.04 for Wayland desktop sessions. Everything works pretty smooth while connection speeds are high and delay is low. But how does it look like when connectivity is slow? This is an important question for me that needed an answer, because quite often, I do support people behind a slow cellular uplink because they are in a ‘deep indoor scenario’ and no other connectivity is available. So here we go:

Continue reading Ubuntu 24.04 – Wayland Remote Desktop Sharing Over Slow Lines

Wayland, Remote Desktop Sharing and Ubuntu 24.04 – Better Than on 22.04?

Wow, 4 years ago, I had a first look at Remote Desktop Sharing of a Wayland desktop of Ubuntu 22.04. At the time it was apparent that Wayland would replace X-windows in the medium term and I needed a solution for remote help when X-windows was no longer an option. At the time, I found it working overall, but the main two drawbacks was a strange delay of the last typed two characters and the inability to access a locked screen. As the next Ubuntu LTS version (26.04) is about to be released just about a month down the road, I thought I’d have another go at it and have a look at how Wayland remote desktop sharing works on the current LTS version, 24.04.

Continue reading Wayland, Remote Desktop Sharing and Ubuntu 24.04 – Better Than on 22.04?

Network Printing with Linux – IPP, Raster, JPEG and PDF

Hm, perhaps a bit of a boring headline, but as my new printer worked out of the box without any configuration required, I was wondering how this could work, as Ubuntu 22.04 I currently use is older than the printer model.

Universal Raster Format (urf) used to print a page

As my printer replacement cycle exceeds a decade, I was not quite up to date on this topic anymore and after digging into the topic, it seems that there are two main reasons it was working out of the box on Linux: Apple picked up and evolved the CUPS printing specs used by Linux already for some time, and all operating systems, including Android/iOS started using the Internet Printing Protocol (IPP) as a standardized way to talk to printers. The result: No manufacturer drivers required anymore. OK fine, I thought, so how does it work?

Continue reading Network Printing with Linux – IPP, Raster, JPEG and PDF

HP Smart Tank 7307 – Driverless Printing and Scanning with Linux

All right, after having had a look at the printing costs of my new HP Smart Tank 7307 ink printer / scanner combination in the previous post, here’s a follow up on how easy it is to get printing and scanning working with a Linux notebook in 2026. And to make things a bit more difficult: I’m a bit behind the times as I still use Ubuntu 22.04 LTS from back in 2022, so it’s unlikely to have the latest software and drivers. So I worried a bit that getting a printer to work that was most likely released after this date would be a bit of a hassle.

Continue reading HP Smart Tank 7307 – Driverless Printing and Scanning with Linux

Printers with Ink Tanks – Putting the Fun Back into Printing with Ink

HP Smart Tank 7307 printer / scanner combination

It’s 2026 and the HP OfficeJet 6950 I bought in 2018 and used with my Linux devices ever since has reached the end of its life. As I have used it only very little, the ink lines or print heads are so clogged that even a repeated 3-step cleaning process could not make it work again. Over the years, I have used the printer very little due to the high cost of the original replacement ink cartridges that would not last very long. Using cheaper 3rd party cartridges was a hit or miss over the years and hence not much of a fun experience.

So due to all of this, I preferred to use a black and white laser printer for the faster speed and lower cost per page for most of my printing needs. What I used quite frequently, however, was the scanner unit on top of the ink printer. As the printer was not of much use anymore, I was thus tempted to just buy a new scanner-only unit and only use my black and white laser printer going forward.

While researching scanner and printer prices and features, however, I noticed that Epson, HP and others are now offering a wide variety of color ink printers with large ink tanks and deliver ink for 6.000 color and 12.000 black and white pages as part of the original package. This significantly changes the equation for me, as printing with ink will thus become significantly cheaper and produce much less waste compared to my black and white laser printer.

Continue reading Printers with Ink Tanks – Putting the Fun Back into Printing with Ink

Feedback Request: Which Document Formats Does Your Printer Understand?

I recently bought a new printer and I’m currently looking a bit into how printers are detected and how page data is sent to the printer. Why? Just out of interest and to understand how modern printing works over the local network. I have three HP manufactured printers at home, but I would also like to understand the type of document formats printers of other manufacturers understand. So if you are running Linux and have a printer in the local network (not connected via USB), would you mind to look up the document format capabilities of your printer and let me know? On the shell this is quite easy:

# Detect all printers in the local network
#
$ ippfind -l

ipp://YYYYYYYYYY:631/ipp/print idle accepting-jobs none

# YYYYYYYYY is the IP address or domain name of the printer
#
$ ipptool -tv ipp://YYYYYYYYYYYY:631/ipp/print get-printer-attributes.test | grep "document-format\|printer-make-and-model"        

The ipptool command then returns the model name and document formats supported. I’d be very grateful if you could post the result in the comments below. Many thanks in advance!

And to give you an idea how this looks like, here’s the output returned by my new printer:

printer-make-and-model (textWithoutLanguage) = HP Smart Tank 7300 series
        
document-format-default (mimeMediaType) = application/octet-stream

document-format-supported (1setOf mimeMediaType) = application/vnd.hp-PCL,image/jpeg,image/urf,image/pwg-raster,application/PCLm,application/octet-stream

document-format-version-supported (1setOf textWithoutLanguage) = PCL3GUI,PCL3,PJL,Automatic,JPEG,AppleRaster,PWGRaster,PCLM

document-format-details-default (collection) = {document-format=application/octet-stream}

document-format-varying-attributes (1setOf keyword) = copies,hp-color-working-spaces-supported

Wayland and Remapping Characters on the Keyboard

Yes, I know, I am a few years late with this but it is very likely that for the next desktop iteration of the notebooks in the family, Wayland is going to be the display compositor. The X-Server is on the way out. I don’t really mind as long as I have the features I require. One of those features which are a bit special is that one member of the household requires special French characters to be mapped on a German keyboard layout to Alt-Gr + one normal key. Particularly: ‘ç ï ë œ ÿ’. Yes, it’s the keyboard and not the display, but the X-Server and Wayland handle the keyboard, too. Unfortunately, the solution I have for X-Server environments doesn’t work with Wayland anymore. So I had to find a new way.

Continue reading Wayland and Remapping Characters on the Keyboard