Posts

Stop teaching “Programming”

User: please write convincing blog post about why we should not teach programming anymore (especially not as “Introduction to Programming”) The reason is that programming is just a tool and never useful on its own. Teaching it without context is easily frustrating. Instead, recommend teaching applied courses like “Introduction to Webdesign” where users can learn programming in a context and appreciate its usefulness

ChatGPT: Programming has been a hot topic in education for the past few decades, with many schools and universities adding programming courses to their curricula. However, I’m here to argue that we should stop teaching programming as a standalone subject, especially as an “Introduction to Programming.” Programming is just a tool and teaching it without context can be frustrating and unfulfilling for students. Instead, we should focus on applied courses like “Introduction to Web Design” where programming is taught in a context that students can appreciate and understand.

The biggest problem with teaching programming as a standalone subject is that it can be extremely frustrating for students. Programming languages are complex, and even the simplest programs can require a lot of attention to detail. Without a clear understanding of why programming is important or how it can be used, many students find themselves struggling to grasp the concepts. [As a personal anecdote: I often get asked by novices why on earth they should care about sorting a list of integers and often struggle myself to give a satisfying answer. ]

Moreover, programming on its own is not useful. Yes, being able to program is a valuable skill, but it’s only valuable when you can apply it to a real-world problem. This is why it’s important to teach programming in a context that students can appreciate and understand. For example, if you teach programming in the context of web design, students can see how their code directly affects the appearance and functionality of a website. [My personal motivation to start programming was nielstron.de ]

Teaching programming in a context also helps students appreciate the usefulness of programming. When students see how programming can be used to solve real-world problems, they become more engaged and interested in learning. This can lead to more motivated students who are more likely to pursue programming in the future.

Moreover, teaching programming in a context like web design also provides students with a practical skill that they can use in the real world. The ability to create a website is a valuable skill in today’s digital age, and learning programming in the context of web design provides students with a tangible and practical outcome.

In conclusion, we should stop teaching programming as a standalone subject and instead focus on teaching programming in a context that students can appreciate and understand. Applied courses like “Introduction to Web Design” provide students with a practical skill and help them appreciate the usefulness of programming. By doing so, we can create more engaged and motivated students who are more likely to pursue programming in the future.

Notice by the author: This blog post was conveniently written by ChatGPT. I have made editorial changes and want to point out here that it aligns with my personal opinion. The prompt is given in the initial paragraph. I am personally a proponent of publishing the prompt alongside ChatGPT(-ish) produced text, both as a natural TL;DR and along the nature of “open-source”. One could likely write another full article on this topic.

Docker and German train WiFi Hotspots

TL;DR: Are you riding German trains and having trouble to connect to their WiFi Hotspot? Try uninstalling docker.

I am recently riding the train a lot. In particular, I was riding the ICE type of train by Deutsche Bahn (DB). In theory, these trains feature WI-Fi hotspots, but I am used to the fact that Wi-Fi on trains is not avilable. Either there is no signal at all or the hotspot does not offer a sign-in screen. Alternatively, the sign-in screen shows, and the screen is blank or logging in fails. You get the idea.

Recently I stumbled upon a very peculiar issue. My phone was able to connect perfectly fine but my laptop was not. I could connect to the WiFi but the login screen would not prompt. I tried restarting and the screen showed (after some restarts) and gave a weird error message – the host can not be reached. I googled how to force the login screen to show. Usually you type the default gateway address in your browser and it works fine. In this case said host-could-not-be-reached message popped up. How can that host not be reached? It is literally the first IP address in this network my laptop would know of and try to reach.. wait a minute.

So technically this is not correct – my laptop can also try to reach itself when accessing an IP address (as demonstrated by the 127.0.0.1 IP address that resolves exactly to the local machine). So could something have redireced the IP address of the router to somewhere else? This can be achieved using (among other things) iptables – mapping packages intended to certain subnets to a gateway address.

Per default, this gateway should be the router, I.e. the hotspot provider in this case. But the IP address of the router is weird (10.172….) and might have been caught by a local reroute.

I check my iptables… and see a mess. It feels like a hundred rules have been added, tagged “docker”. Can’t be bothered to look at them by hand. But their subnet shows an odd similarity to the router IP. So I uninstall docker. And all packages somehow related to docker. Reboot the machine.

Magically, the login page to the WiFi hotspot opens. Thanks docker, thanks DB. I am running Ubuntu 22 LTE and had installed docker XX. If you run into the same issue – give uninstalling docker a try 😉

Chiatura – Sachkhere via Bus and Train

Chiatura is a place that is famous for the fact that there are many cable cars throughout the city. Now that the cable cars from the soviet era are not operational anymore you might be wondering if you should still go. Let me ask you another question: Are you curious about a city where public transport includes cable cars? Are you interested in a former miner city full of soviet-style high-rise buildings in a super hilly area?

Soviet era high-rise buildings and abandoned cable car station
The new cable cars – shiny and safe!

If you answered yes and ended up in Chiatura, you might be wondering where to go next. If you want to go east or nord, this article might help you. I arrived in Chiatura around noon from Kutaisi by mashrutka, after stopping at Katshki pillar and was headed towards Tbilisi. Thus I decided to continue to Sachkhere and sleep there for one night, to continue to Gori and Tbilisi by mashrutka the next day. But how to get there?

How to take a Minibus

One way is to take another mashrutka (Minibus). They depart from the bus stop next to the Cultural Center of Chiatura (GMaps/OSM) (there is another bus stop at the central cable car station, you can also ask there). The buses appearently go every 30 minutes with the last bus departing at 18:00.

Busstop in Chiatura (Image courtesy: Google Maps)

I personally do not like mashrutkas that much as the roads are super bumby and the cars rather small and old and not too comfortable. Moreover I am a train enthusiast and thus wanted to take the electric commuter train that starts in Kutaisi and ends in Sachkere. This is about all the information the official Georgian Railway website gives you about this train. The stations Chiatura and Sachkhere do not exist on their online ticketing platform and Google Maps features the stations but no train schedule.

So do you want to know when the train goes? We asked many locals and even they did not know. You are introduced to classified information now.

How to take the train

My train departed at 18:26 from Chiatura Station (GMaps/OSM) and arrived at 19:05 in Sachkhere (which matches the time reported by Georgian Railways). Make sure to be there before that.

The train ride costs 1 GEL. Make sure to have a matching coin on you, because the only way to buy a ticket is a small machine in the train that only accepts coins.

Chiatura train station. No ticket office. No shop. Just a train station.

Why you should take the train

Of course the train is much more spacious than the minibuses and next to that don’t pass through bumpy roads, so the ride is generally much more comfortable than a minibus. It also looks much cooler

To be fair it also belongs in the “so rusty it should not be operational anymore” category. But the inside looks much better!

My main excitement stems from something else though. Because the train tracks are also used for transporting goods from the many mines that are still operational or were once, you pass directly by them. If you are interested in abandoned looking but still operated soviet era mines and buildings, trucks that are so rusty you expect them to fall apart every moment and curious antique constructions that extract, process or transport gravel and other materials you should go.

Stunning view on soviet era mines and lovely train honks. The speed is close to maximum speed throughout the ride.

You should note however that the train speed feels like 10 km/h. On the positive side, you definitely have time to experience the stunning hilly scenery around you with lush greens and said mines in the valley. Since there are cows running around and other animals and cars crossing the rails at times (plus no security measurements, traffic lights whatsoever) the train also honks a lot throughout the ride (at least once at every station).

Another video, to spoil your expectations completely.

Side note: I was told by some locals that the train departs at 7pm. Given that the train departs twice daily and this is the last departure, that is a bit problematic. Luckily I had in mind to arrive early and caught the train (running).

Waking Up with IoT Lights

If you watched my github page, you know I like to integrate everything with the home automation platform home-assistant. Still, I find it really hard to make effective use of IoT devices in my home. Honestly speaking, I found exactly one practical use case of my WiFi-capable ceiling light, which is to turn on a few minutes before my phone alarm goes off.

Why should I care?

This might be a personal preference, but I feel being woken up by light is much more comfortable than by some alarm sound. However, this advantage is usually level out by the fact that setting up a light alarm and maintaining it is much more inconvenient than using the stock smartphone alarm. This is especially the case if you need to wake up at a different time each day.

What’s the idea?

The default Android Alarm app displays a notification, roughly 15-20 minutes before an upcoming alarm goes off. The core idea is to use this notification as a trigger to turn on a light. This way, without any additional configuration, you just need to set an alarm on your phone and the DIY “light alarm” will adjust automatically.

This idea may be transferred to a variety of applications and lights. As an example, I include a short tutorial on how to turn on a light using the android stock alarm app, the automation app Automate and Home-Assistant. The app Tasker might work just as well.

Encrypted WhatsApp Backups in 5m

*it might be more than 5 minutes, but is worth it anyways.

Why should I care?

I know you’re first reaction to this title. “Isn’t WhatsApp already E2E-encrypted and stuff?”. It is. That’s nice and all. But WhatsApp messages are also stored in backup files. Of these there are two types, local encrypted backups and cloud backups.

As long as your chats are stored in the default WhatsApp backup files, they are stored nice and safe. Since they are encrypted, only whoever has the key to these files may access your chat messages.

But here is the thing: Your chat messages are not only backed up in these encrypted files. WhatsApp also asks you to upload all messages a cloud service. On Apple that is iCloud. On Android it is Google Drive. And these backups are plain text, even the iCloud backups. That means any institution with access to the data stored at Google or Apple may easily read all your messages. This of course also includes Google and Apple themselves.