Categories
Computers

Tableau’s 3834D197 error: Pivot Tables in Google Sheets

Today’s story is a little note to self, something to remind me when I next hit the same issue.

At $DAYJOB I was just working on some Google Sheets-backed dashboards using Tableau, when the team hit the following error message:

A tableau error dialog, saying: Unable to complete action Bad Connection: Tableau could not connect to the data source. Error Code: 3834D197 Errors occurred while loading the data source. With a Go to Support link in the bottom left, and a "Copy Error Message" on the bottom right.
Tableau error message for the code 3834D197

It says:

Unable to complete action
Bad Connection: Tableau could not connect to the data source.
Error Code: 3834D197
Errors occurred while loading the data source.

While debugging this, there were actually two aspects to take into account, that complicated things: one is the source of the error, and the other is Tableau’s behaviour when encountering the error. Both are good to keep in mind for future development.

Categories
Admin Thinking

How to Think Differently When Internet Searches Are Metered

A few months ago I’ve tried to up to Kagi, a subscription-based search engine, that I heard a lot of good stuff of. Since I was in a country where their payment system didn’t work yet, I couldn’t actually complete the signup. They’ve generously given a Starter plan me for free while their system was being sorted out (nice, thank you!), however that plan comes with a “300 search per month” limit — which I’ve quickly seen to really matter.

It was around a time when I had a new laptop, and been trying to get things right installing ArchLinux, where both the processes and the hardware changed a lot since I’ve last had done it in… 2011-ish. So that involved many queries to the Internet. So much so, that my 300 searches were done on the 3rd day or so.

So 3 days into a month I already used up my quota, and couldn’t just upgrade to unlimited (yet), since it was a gift from the Kagi. So what could I do different in the future for a better experience?

Categories
Computers Thinking

Installing Arch Linux as an incremental game

Once in a decade or so the time comes to install (or reinstall) my personal computer. This time the occasion is getting a new laptop, something more modern, something more capable. The time passed and the changes in technology since the last time I had to do this means that the installation is likely familiar, but still different – sometimes subtly, sometimes in unrecognisable ways.

Setting up my laptop is now in its 3rd day, and the experience made me think of incremental games. Incrementals1 are where you make some progress in gathering some resource, then have to reset your progress that gives you some small buff or gain. You then start again – but better. The cycle repeats and you might have the same experiences countless times, but after a while the game can be much faster or even unrecognisable due to the accumulated effects.

While I was installing Arch Linux this time I went through the following cycle:

  • Partitioned my disk and installed the system, but then couldn’t boot into it
  • Redo the partitioning, system, and bootloader install, now I can boot into it, but don’t have any network access
  • Redo the system config, now I have network access, but have to figure out what desktop environment am I going to run, and what do I need for that. A hot mess ensues after trying out all main desktop environments for kicks
  • Reinstall the system, cleaner, with my desktop environment of choice, now the high resolution environment makes everything either: tiny, gigantic, and/or blurred.
  • Sorted out most of the sizes of things, have network, have Bluetooth, but the sound and the media buttons don’t work
  • Sorted out sound, now the power management locks me out while watching a video….

… and so on. I know I have a few more rounds (few more “crunches”) to do get there, and the multilingual typing input setup will be a doozie with bopomofo, but I’m getting better and feeling better every round – that’s how a good incremental game goes. A power up there, a know-how of a semi-obscure, quality of life config here2.

Of course I could have gotten an Ubuntu or Fedora image, installed everything in way less time than writing about the experience, and could already be using it — but that’s a whole different game3.

The games we choose to play show our values. On an optimistic day I feel I value increased knowledge; on more realistic days it certainly seems like procrastination. Now let’s keep this in mind when I finally have high enough level of Linux buffs that they change the game mechanics and I get to do something with my computer.

  1. Keep away from Universal Paperclips and give a very wide berth to Antimatter Dimensions ↩︎
  2. Such as enabling tapping on the touch pad for a click, without needing to actually press…. ↩︎
  3. A game that might be won, while I’m not sure whether the one I’ve chosen has a win condition. ↩︎

Categories
Computers

The curious case of binfmt for x86 emulation for ARM Docker

Seemingly identical configurations, different results. When two methods for setting up x86 emulation on ARM showed the exact same system configuration but behaved completely differently in Docker, I began questioning my system administration knowledge and my sanity – and briefly contemplated a new career as a blacksmith.

This is a debugging tale for those working with containers, and a reminder that things aren’t always what they seem in Linux, all with a big pinch reminder to Read the Fine Manual, Always!

Categories
Computers Machine Learning Thinking

Software Engineering when AI seems Everywhere

It’s pretty much impossible to miss the big push to use AI/LLM (Large Language Model) coding assistants for software engineers. Individual engineers, small and large companies seem to be going “all in” on this1. I’m generally wary of things that are this popular, as those often turn out more cargo cult than genuinely positive. So what’s a prudent thing to do as a software engineer? I believe the way ahead is a boring piece of advice, taht applies almost everywhere: instead of going easy, do more of the difficult stuff.

I genuinely think that putting the AI/LLM genie back into the bottle is unlikely (the same way as some people want the Internet, or smartphones, or cryptocurrencies put back into the bottle, which also not really gonna happen). That doesn’t mean that uncritical acceptance of the coding assistant tools should be the norm, au contraire, just like any tool, one needs to discover when they are fit for for the job, and when they are not. I have used GitHub CoPilot for a while, now digging into Cursor as it starts to conquer the workplace, and ChatGPT & Claude for individual coding questions. I don’t think it’s controversial to say that all these tools have their “strengths and weaknesses”, and that currently the more complex, more “production” the problem is, the further away it is from a proof-of-concept, the less likely these tools are of any help. They are help, they can be a large force multiplier, but they are big multiplier when one goes in with the least amount of input (knowledge, awailable time, reqirements for the result…)