MSSQL via Docker on Linux Kernel 6.7

The short answer is “Nope” (as of March 2024). I tried to get a project running on Arch with Kernel 6.7 and was getting errors like:

2024-02-29 17:05:31 Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login failed for user 'sa'..
2024-02-29 17:05:31 Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2749.
2024-02-29 17:05:31 Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..

I couldn’t connect to it from database management tools or from my web project. After hours of googling, I finally found a hint that it was due to an incompatibility with Linux Kernel 6.7, which I happened to be on.

I downgraded to kernel 6.6 by running
sudo pacman -S linux-lts
and then rebooting. On the way back up, kernel 6.6 was the default. I didn’t do anything special to make that happen.

After rebooting I could start and connect to my MSSQL docker container without issue.

Bad Bluetooth Audio on Ubuntu

Every now and again I’d connect my Soundcore Q30 bluetooth headphones to my ubuntu laptop and they would sound like garbage. I finally decided to look up what the deal was and found this.

The solution that worked is to edit /etc/bluetooth/main.conf

sudo nano /etc/bluetooth/main.conf

In that file, copy and paste this right under the [General] heading

# Automatically connect both A2DP and HFP/HSP profiles for incoming
# connections. Some headsets that support both profiles will only connect the
# other one automatically so the default setting of true is usually a good
# idea.
AutoConnect=true

Then search in that file for MultiProfile and change it from off to multiple

MultiProfile = multiple

Then restart the bluetooth service by running

sudo systemctl restart bluetooth 

I reconnected my headphones and they sound great!

Manjaro + Barrier/Snap Fontconfig Issue

I was unable to start barrier after an update. The GUI would crash immediately. I tried running it in a terminal ( by running the command barrier directly) and got the error:

▶ barrier               
Fontconfig warning: FcPattern object weight does not accept value [0 205)
[1]    8790 segmentation fault (core dumped)  barrier

Some googling led me to this fix:

sudo rm /var/cache/fontconfig/*
rm ~/.cache/fontconfig/*
fc-cache -r

After those three commands, I was able to launch barrier without issue.

KDE with Progressive Web Apps (PWAs)

After installing progressive web apps on KDE, the icons don’t appear correctly in the task bar, like this:

That second app is Google Messages. This gets confusing, especially if you have applications grouped (which is the default option in Manjaro KDE). The fix is pretty simple and the solution is completely from here. I’m documenting it here, just in case.

First, you need xdotool. This can be installed in Manjaro like this

sudo pacman -S xdotool

Next you need to browse to ~/.local/share/applications/

It’s pretty easy to tell which desktop file is which, thanks to them having the appropriate icon.

Last step is to edit the Exec= line of the desktop file by appending this text:

; xdotool search --sync --classname <value> set_window --class <value>

Make sure to replace <value> with the value in the StartupWMClass line. It should look like this when you are done:

Save the file, kill the app, and restart it. It may take a second or two, but it should do the trick.

EDIT

If you are using brave, the path has changed from /usr/lib/brave/brave to /usr/lib/brave-browser/brave

Edit 2

I switched from && xdotool to ; xdotool

They both should work, but a semicolon should guarantee it runs.

Framework Laptop + Ubuntu 21.04 + Multi-touch

I got my framework laptop today. I had intended to put Manjaro/KDE on it, but ended up with stock Ubuntu 21.04 (a story for another time). The trackpad is big and pretty nice, so setting up 3 finger swipe was an initial priority.

I didn’t have to do anything special to get the trackpad working. There were reports on reddit of it not working out of the box on certain distros. It’s a bit odd about how far you have to click to the right and to the left to get the respective clicks, but nothing too terrible.

For 3 finger swipes i went with Comfortable Swipe. The instructions are each to followo, but after giving permissions I had to do a full reboot. They claimed a log out would be sufficient, but was not for me. In any case, it works great.

— UPDATE —

For Manjaro/KDE I went with fusuma. The steps to install were roughly:

sudo pacman -S libinput
sudo pacman -S ruby
sudo gem install fusuma --no-user-install
sudo pacman -S xdotool

I ran this from the home directory to set it up to run on login (requires logout):

printf "$(which fusuma) & disown \n" >> .profile  #.zprofile if using zsh

Right now my config has some things that don’t exist, but it got me the thing I wanted (moving workspaces with 3 fingers and moving windows with 4 fingers). I had to set a few of the shortcuts in System Settings > Shortcuts > KWIN

~/.config/fusuma/config.yml

swipe:
  3:
    left:
      command: "xdotool key ctrl+alt+Right" # History forward
    right:
      command: "xdotool key ctrl+alt+Left" # History back
    up:
      command: "xdotool key ctrl+alt+Up" # Activity
    down:
      command: "xdotool key ctrl+alt+Down" # Activity
  4:
    left:
      command: "xdotool key ctrl+alt+Down" # Switch to next workspace
    right:
      command: "xdotool key ctrl+alt+Up" # Switch to previous workspace
    up:
      command: "xdotool key ctrl+alt+shift+Up" # Switch to next workspace
    down:
      command: "xdotool key ctrl+alt+shift+Down" # Switch to previous workspace
pinch:
  in:
    command: "xdotool keydown ctrl click 4 keyup ctrl" # Zoom in
  out:
    command: "xdotool keydown ctrl click 5 keyup ctrl" # Zoom out

XPS 13 9300 – Switching to Linux

First thing is to go into bios (Hit F2 early in the boot). In “System Configuration” change SATA Operation to AHCI.

Nothing special about the install. Throw Ubuntu on a thumb drive, throw it in, install it.

After install:

sudo sh -c 'cat > /etc/apt/sources.list.d/focal-dell.list << EOF
deb http://dell.archive.canonical.com/updates/ focal-dell public
# deb-src http://dell.archive.canonical.com/updates/ focal-dell public

deb http://dell.archive.canonical.com/updates/ focal-oem public
# deb-src http://dell.archive.canonical.com/updates/ focal-oem public

deb http://dell.archive.canonical.com/updates/ focal-somerville public
# deb-src http://dell.archive.canonical.com/updates/ focal-somerville public

deb http://dell.archive.canonical.com/updates/ focal-somerville-melisa public
# deb-src http://dell.archive.canonical.com/updates focal-somerville-melisa public
EOF'
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F9FDA6BED73CDC22
sudo apt update -qq

sudo apt install oem-somerville-melisa-meta libfprint-2-tod1-goodix oem-somerville-meta tlp-config -y

sudo add-apt-repository ppa:boltgolt/howdy -y
sudo apt update -qq
sudo apt install howdy -y

MS Teams on Ubuntu 20.04

I ran into a problem where Teams was stuck loading. On the few times I could get it to load, it would display an error page telling me to “Try Again” and to try “signing out”, neither of the links would do anything.

I was able to fix it by running:

pkill teams && rm -rf ~/.config/Microsoft/Microsoft\ Teams/Application\ Cache/Cache/* 

Teams is kind of a disappointment on Linux. I have to use it, so hopefully that helps someone ( or me again in the future).

Git Auth: HTTPS vs SSH

I hold the opinion that you can read into how a developer connects to their git repositories as a litmus test for other aspects of how they do things.

To “steel man” the usage of HTTPS. The obvious reason is that it’s easier to get started. People are familiar with username/password authentication and it translates directly here. The other big reason is port blocking on corporate networks. Port availability may not be within your control, and that could cause a headache.

I am going to assume a few things.
1. You are a developer
2. You aren’t oppressed with overly zealous corporate network security policies
3. You aren’t afraid of the command line

If those things are true, you may agree with me. Just because SSH is a tiny bit more effort to set up, it has many more advantages to authenticating with HTTPS. The biggest – the show stopper – reason is that those credentials unlock your entire account. If they are compromised in any way, you are completely left with your pants down. The number of times you communicate over the internet while developing, whether it be to fetch, pull, push, or anything else, you are risking exposure of those credentials. A compromised SSH key only provides access to the repositories. It can be revoked and a new one created. Do you have a credit card attached to your github account? Why would you risk the keys to your kingdom multiple times a day?

Once you have your SSH keys set up, it’s far easier to use and manage. There’s nothing to remember (unless you put a password on your key – even better security!). Once you are comfortable creating and managing keys, the applications for its use extend far beyond git repos. It immediately lends itself to server management and devops tasks.

The real reason Github recommends HTTPS over SSH is that it’s easier to support the lowest common denominator user. That’s not where I want to place myself, do you?

So what can you assume when you encounter a developer that uses HTTPS authentication?

ProsCons
– They read documentation. Github does
recommend HTTPS in its setup guide.
– They are probably on Windows
– They don’t use the terminal very often
– They don’t do much server administration

While none of this speaks directly to the intelligence or capabilities of the developer, it does say things about experience and how deep they are down the tech rabbit hole. It also telegraphs the kind of experience you will have developing with them.

As a developer, I recommend switching to SSH authentication for your git repositories. You’ll learn a few things worth knowing, you’ll be more secure, and you’ll ascend beyond the mass market instruction set on network communication setup.

Cura with Creality CR-6 SE

A repeat of what is here: https://community.ultimaker.com/topic/33852-creality-cr6-se/

If The Creality CR-6 SE doesn’t show up in Cura you can add CR-10 with the following changes:

Plate Format

235-235-250

G-code start

M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration
M203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate
M204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration
M205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk
M220 S100 ;Reset Feedrate
M221 S100 ;Reset Flowrate

G28 ;Home

G92 E0 ;Reset Extruder
G1 Z2.0 F3000 ;Move Z Axis up
G1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position
G1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line
G1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little
G1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line
G92 E0 ;Reset Extruder
G1 Z2.0 F3000 ;Move Z Axis up

G-code end

G91 ;Relative positionning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X5 Y5 F3000 ;Wipe out
G1 Z10 ;Raise Z more
G90 ;Absolute positionning
 
G1 X0 Y0 ;Present print
M106 S0 ;Turn-off fan
M104 S0 ;Turn-off hotend
M140 S0 ;Turn-off bed
 
M84 X Y E ;Disable all steppers but Z

Manjaro Network Connection Woes (Kernel v5)

After I updated my desktop to Linux kernel version 5 when I logging in my network would disconnect/reconnect every 15 seconds or so. I wasn’t able to get on the internet. My ethernet cable was plugged directly into my motherboard and I don’t have wifi capabilities.

The Solution

I added this conf:

/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf

With this content:

[connection]
wifi.powersave=0

After a reboot all was well.