Skip to content

Laci

ChatGPT, we’re breaking up

I’ve witnessed the recent AI revolution with great awe and have been a ChatGPT Plus subscriber since the early days.

However, the service has been inaccessible for days recently, which shouldn’t ever be the case for a paying customer, and if it is, they should offer compensation.

Naturally, I wanted to contact customer support, but I discovered there was no customer support, only a help center. It’s a very frustrating experience, and I’m baffled that companies are allowed to operate this way.

Then, I wanted to unsubscribe, but to my shock, I couldn’t, as I was welcomed by their “ChatGPT is at capacity” page, disabling me from accessing my subscription page. Since unsubscription was impossible, I submitted a chargeback at my bank.

At this point, I felt trapped because I didn’t know about an alternative, similarly powerful language model. Luckily, there is: Claude‘s 3.5 Sonnet model is very capable, and I recommend it. I’m considering subscribing.

It’s unfortunate that ChatGPT forgot about its customers in the pursuit of showing off its latest tech. I won’t advocate them anymore and advise people to move to Claude.

Logitech is a mess

I wanted to adjust the speed of my Logitech G502 Hero mouse. Since Logitech doesn’t support Linux, I had to fire up my rarely used Windows laptop.

I searched for “Logitech configurator software”, which made me install Logi Options+. After installing it, I realized that it doesn’t support the G502.

Another search revealed that the Logitech G HUB software supports Logitech’s gaming gear, such as my G502, so I installed it. Then I realized that G HUB doesn’t save settings in the mouse’s onboard memory, which is a deal-breaker because even if I could run G HUB on Linux, I wouldn’t run a background app just for this purpose.

A third, longer search revealed a Logitech support article featuring their Logitech Gaming Software. I installed it, but a popup said that I should use the new and shiny G HUB instead, and it didn’t allow me to use Logitech Gaming Software.

Finally, I uninstalled G HUB, started up Logitech Gaming Software again, and this time, it worked. It saved the mouse speed to the onboard memory, just as I expected.

From a user standpoint, the above experience is inexcusable. Logitech should have one configurator that works on all OSes, and they shouldn’t rewrite or fork it whenever a manager comes up with a wonderful new idea, such as creating a new brand.

Sadly, I couldn’t find any good alternative to the G502. All manufacturers support Windows, some support Mac, but none support Linux.

To draw a stark contrast, the Agent configurator software of the Ultimate Hacking Keyboard supports Linux, Windows, and Mac. It does its job well and doesn’t have semi-working alternatives. As a bonus, we develop it the open on GitHub. I’m the development lead of Agent, we deeply care about it, and our customers love it.

LiPo battery finder

There are thousands of LiPo batteries, but I couldn’t find the ones that fit my project the best. Meet the LiPo battery finder, which allows you to filter batteries based on x, y, and z sizes.

My tool contains a scraper that extracts the pages and subpages of https://www.pdbattery.com/li-polymer-battery-cells-list.html and https://www.lipolbattery.com, creating an .mjs file as a result.

The .mjs file gets imported by the web application, allowing the scraped records to be searched interactively.

Easy KiCad PCB panelization with kicad-util

There are multiple panelizers available for KiCad, but only one is suitable for easily placing multiple oddly-shaped PCBs onto a panel: the kicad-util panelizer.

You simply place the PCBs next to each other and draw lines between them on the Eco1.User layer. Then run a kicad-util command, and voila! The lines are transformed into mouse-bites.

Unfortunately, kicad-util is not compatible with KiCad 6’s updated PCB format, so the drawn lines are no longer converted to mouse bites.

Luckily, a merge request contains the fix, but kicad-util’s creator is not available anymore. Although the contributor of the merge request created his fork, the .jar file has not been recompiled, so the fixed version is not easily accessible to most users.

Given the above, I recompiled the fixed kicad-util version with the mvn package command and made the .jar file available. I use it as:

java -jar ~/bin/kicadutil.jar pcb -f=myboard.kicad_pcb panel --inset=0 --hole=0.35 --pitch=0.7 --width=2.5 --fillet=1

Introducing the Ultimate Hacking Keyboard

I want to take this opportunity to reveal the trailer video for the Ultimate Hacking Keyboard, a high-end mechanical keyboard of which I’m the founder and lead developer. Our keyboard will be kickstarted soon, so please share it, follow us, and subscribe to our list to get notified when our campaign starts.

How to rule remote shell sessions with tmux and mosh

If you’re like most SSH users, when your connection breaks, it’s bad news. Not only do you have to reconnect, but your session gets destroyed, and you have to make all the moves to restore the previous state. This doesn’t have to be that way. I want to introduce two tools that solve these problems in the most elegant way possible.

tmux

tmux is a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached.

In the world of tmux there are windows and panes within windows. You can think of tmux windows as workspaces on the desktop that are aligned horizontally. It’s like having several virtual monitors next to each other, each running a different shell session. You can move across these windows as desired. With the use of panes, you can split individual windows horizontally and/or vertically as desired, with each pane housing a different session. This is useful for tailing various log files in different panes and monitoring them simultaneously.

You simply have to run the tmux command to create a new tmux session. Once a session exists upon reconnecting over ssh you have to invoke tmux attach to reconnect to your already existing session.

If you’re like me you may want to use tmux by default upon ssh’ing to servers. To make this happen, you have to include export LC_TMUX_SESSION_NAME=yourusername into your ~/.bashrc and wrap scp on the client side and invoke tmux automatically on the server side. On a related note, you can also take a look at my tmux.conf which I believe defines more intuitive shortcuts than the default configuration.

There are a number of alternatives to tmux that I’d like to list, starting with the most powerful and moving towards the least powerful. GNU Screen is yet another terminal multiplexer, but its feature set, usability, and configurability are rather limited compared to tmux. dtach is like a minimalistic tmux featuring one pane inside one window, and it only provides a minimal set of options. Finally, with the use of the nohup command, you can make your (typically long-running) script immune to hangups, and hence, it can survive SSH disconnects.

mosh

Remote terminal application that allows roaming, supports intermittent connectivity, and provides intelligent local echo and line editing of user keystrokes.

mosh is the other puzzle piece leading to the remote shell nirvana. After apt-getting mosh on the client and mosh-server on the server instead of invoking ssh yourserver.com invoke mosh yourserver.com. From now on you don’t have to worry about reconnecting to ssh or waiting for the server to echo back your characters.

Ethernet cable labelling

Ever felt you have too many cables in your home and don’t know which leads where? Welcome to my world! Here’s my solution.

It all starts with a sticky tape.

ethernet-cable-labelling-1

Now comes the pen.

ethernet-cable-labelling-2

Let’s cut the tape with scissors.

ethernet-cable-labelling-3

At this point, you should remove the protective foil from the back of the tape to expose the glue and shape a loop.

ethernet-cable-labelling-4

As the final step, pull the cable through the loop and push the tape against the cable to make it stick.

ethernet-cable-labelling-5

Well done! Pat yourself on the back.

Coder Keymaps closed

I started Coder Keymaps a while back to create my ideal keymap. The original idea is to map Hungarian characters via the Windows key more sensibly than the standard Hungarian keymap. To do this, take the standard US layout, hold a Windows (Super) key, and press an alphanumeric key to produce a relevant Hungarian accented character. This way, Super + a becomes á, for example.

I extended the project substantially about two years ago to minimize hand travel distance. When writing code, one’s right hand must often move between the alphanumeric and navigation blocks. To alleviate this problem, I mapped the entire navigation block to the alphanumeric block via the Windows key. This way, Super + {I, J, K, L} becomes {up, left, down, right}.

I’ve used the above keymap with great pleasure, improving my efficiency for almost two years. Unfortunately, the X11 keyboard drivers must have changed in the last two Ubuntu releases because my xmodmap keymaps stopped working. I knew from the onset that xmodmap was outdated, and XKB was the future, but it wasn’t urgent to port Coder Keymaps to XKB, so I didn’t do that.

Due to the pressing need to use my beloved mapping, I’ve made some efforts and chatted with Sergey Udaltsov, who is very knowledgeable about XKB.

Long story short, it seems that it’s impossible to create such an exotic keymap on Linux. Not that it’s not possible at all to create it with XKB, but various GUI toolkits, such as GTK+, interpret the mappings in strange ways, and they wouldn’t be consistent across toolkits. I’m sure this can be solved by modifying the X11 keyboard driver or the toolkits, but as you may suppose, it’d be heroic work. Not only that, but this is an OS-specific problem, and I want a general solution.

I finally decided to attack the problem differently by creating keyboard hardware with limitless remapping potential. It’s a two-year-old idea of mine. The prototype is in development, and it’s very innovative in many ways. I’ve gathered a small but knowledgeable team that is progressing rapidly. I wanted to have a working prototype by the end of this year, but I’m not sure we get there in time because prototyping is expensive, and the delivery of rare electronic components takes time to arrive in Hungary. But no matter how long it will take, we’ll never give up.

As a result of the above, I don’t want to devote more time to Coder Keymaps. The project has been closed.

Matias keyboards

There’s an interesting company named Matias. They create various products, but some of their keyboards are especially interesting because of the special layouts they’re using.

Their Optimizer layout used in the Matias Optimizer Keyboard hits home for me. The idea is good, but they’re not the first to invent such a layout, and probably neither am I. I saw a similar X11 layout that uses the IJKL keys and the Windows key as a shifting key to produce handy cursor navigation. I saw this X11 layout after I came up with the Ultimate layout which is similar to these layouts. The core idea of the Optimizer layout is very good, but its implementation is suboptimal because the Optimize key is accessible with the pinky, our weakest digit.

On the other hand, the Half-QWERTY layout that is used in Matias Half-QWERTY One-Handed Keyboard and Matias Half Keyboard is new to me, and I haven’t heard about it yet. It may be their own invention, although it doesn’t take a genius to come up with the idea. I think the Half-QWERTY layout works well because it’s easy for the human mind to mirror the keys of one half of the keyboard. The $600 price tag, however, is unjustified, even for such a niche product.