KC 85/4 Labyrinth

Hatte gestern die Gelegenheit einen Kleincomputer aus der ehemaligen DDR, den KC 85/4, auszuprobieren. Das Gerät wurde 1988 hergestellt, verwendet eine UB 880 D CPU, einen Zilog Z80 Nachbau mit 1.77 MHz und hat 64 KiB RAM. Im Gegensatz z.B. zu den Atari und Commodore 8-Bit-Rechnern bootet er aber nicht direkt in einen BASIC-Dialekt, sondern ins KC-CAOS 4.2, welches den Aufruf diverser Programme ermöglicht und listet auch direkt einige der im ROM verfügbaren Programme auf:

* KC-CAOS 4.2 *

[

PiDP-8/I install on Raspbian Buster

The following is a modified installation recipe for the PiDP-8/I flavour of SIMH on Raspbian Buster, based on the instructions from Obsolence Guaranteed. [Read more →]

VoCore2 Ultimate as SMS gateway

This article describes a setup of OpenWRT on the VoCore2 Ultimate to send SMS via a HTTP API using smstools and a GSM modem (a Huawei E3531, in this case). This method uses docker to build a custom OpenWRT image, which can be then be installed via the firmware update mechanism in the preinstalled OpenWRT on the ROM of the VoCore2. [Read more →]

IMSAI 8080 & Altair 8800 hex dumps to octal

If you play around with entering programs via the toggle switches on the Altair 8800 or IMSAI 8080 or one of their clones, recreations, replicas or simulators, you may want to enter a hex dump of an assembler program via your front panel. While most experienced programmers prefer the hex notation, it is a bit error prone to convert the hex digits in your head into the binary notation of a nibble (4 bits). This is why many example programs in the original manuals and also the front panels of these systems feature the unusual octal notation. It is very simple to convert octal into binary and if you are used to UNIX permissions, you will already know these by heart. [Read more →]

MySQL / MariaDB replace broken HTML entities

After an upgrade of Friendica, a PHP application using MySQL or MariaDB as a backend I found that while the columns containing the raw textual content had been changed successfully from utf8 to utf8mb4 character sets, some other colums that contained pre-rendered HTML were broken, as they now contained 2 byte sequences turned into HTML entities. [Read more →]

Replacing indicator-multiload with system-monitor in Ubuntu 18.04

Recently the 18.04.1 point release of Ubuntu came out and I finally started upgrading my desktops & laptops to it from my 16.04 LTS installations. As usual, the upgrade went smoothly, but as can be expected with the switch from Unity to Gnome, the UI has changed dramatically.

Unfortunately, while the indicator-multiload still is getting displayed, changing its settings doesn’t seem to work any more and it is so small that it becomes unreadable. I did find a replacement in the form of the system-monitor widget for the Gnome shell. To install it you need to install the following prerequisites:

  1. chrome-gnome-shell is the user space component to install Gnome shell extensions
  2. gir1.2-gtop-2.0, gir1.2-networkmanager-1.0 and gir1.2-clutter-1.0 are libraries required for this particular widget
  3. The Firefox extension GNOME Shell integration allows you to install the widget from the comfort of your browser. There is a similar extension for Chrome(ium).

To install all the components and uninstall indicator-multiload in a terminal session, use:

sudo apt install chrome-gnome-shell gir1.2-gtop-2.0 gir1.2-networkmanager-1.0 gir1.2-clutter-1.0
sudo apt purge indicator-multiload

Finally you can navigate in your browser to the GNOME Shell Extensions page and enable the widget (or disable it again, if you don’t like it after all).

Some other nitpicks I had with the upgrade to Ubuntu 18.04, while we are on the topic:

  • The window controls (minimize/maximize/close) are back to the right side. It took me a long time to adjust to the MacOS-style left hand window controls back in 2008 and now we move back to the right. I will suffer for a while, but hope to be happier long-term, if most of the GUIs I encounter follow the same standard. Of course in my day job as of 2016 I am now using a MacOS device… 😕
  • The boot-up time significantly increased: On one of my last HDD equipped desktops from under 30s to about 2 minutes and on my fastest SSD laptop from 5s to about 30s. 😥

Outgoing IPs & Ports for WordPress

I recently locked down all outgoing connections from my DMZ to the internet and now have to open things explicitly in my packet filter. For wordpress I did not find any documentation on that, so here are my findings to be able to update plugins and themes (I don’t care about the RSS feed on the dashboard):

IP Port(s) Description 80 (HTTP) & 443 (HTTPS) downloads.wordpress.org 80 (HTTP) & 443 (HTTPS) api.wordpress.org 80 (HTTP) & 443 (HTTPS) api.akismet.com 80 (HTTP) & 443 (HTTPS) api.akismet.com

How to make your Unix prompts more useful

Thanks Sandra!

A customized prompt can serve as a gentle reminder of what system you’re working on — especially helpful if you often find yourself logged into 3-4 systems at a time, window hopping to get several things done at the same time. or if you log in with different accounts. A customized prompt can help if you like to be reminded where you are sitting in the file system or prefer *not* to be reminded where you are in the file system (a full path can take up quite a bit of screen space when you’re seven levels deep into /home/username/apps/docs/…).

All you need to do to define your PS1 variable and save it in your .bashrc or .bash_profile file. As it turns out, however, you have a lot of flexibility on what you put into that prompt.

[…] Set your prompt to the current time. […]

$ PS1="\A> "
PS1="\t> "

NOTE: The > at the end of these prompts and the blank that follows are optional, but my preference. I like these characters separating my prompts from my commands.

Have trouble remembering what system you’re logged into?

$ PS1='\h> '

[…] If you can’t remember where you are, the w setting will show your path relative to your home directory. The ~, of course, is your home itself.

PS1='\w '

When you need some cheering up:

$ PS1=':-) '

When you have amnesia or just want to be reminded what account you’re logged into:

PS1="\u> "

You can expand this to show both the username and system name like this:

PS1=”\u@\h ”

$ PS1="\u@\h> "

Any of the following can be use din your prompt, though I suspect that few of us will hear the bell even if we use that character string in our prompts.

\a     an ASCII bell character (07)
\d     the date  in  "Weekday  Month  Date"  format (e.g.,
       "Tue May 26")
\e     an ASCII escape character (033)
\h     the hostname up to the first `.'
\H     the hostname
\j     the  number of jobs currently managed by the shell
\l     the basename of the shell's terminal  device name
\n     newline
\r     carriage return
\s     the  name  of  the shell, the basename of $0 (the
       portion following the final slash)
\t     the current time in 24-hour HH:MM:SS format
\T     the current time in 12-hour HH:MM:SS format
\@     the current time in 12-hour am/pm format
\u     the username of the current user
\v     the version of bash (e.g., 2.00)
\V     the release of bash,  version  +  patch level (e.g.,
\w     the current working directory
\W     the  basename  of the current working directory
\!     the history number of this command
\#     the command number of this command
\$     if the effective UID is 0, a #, otherwise a $
\nnn   the  character  corresponding  to  the octal number nnn
\\     a backslash
\[     begin a sequence of non-printing characters, which could
       be used to embed a terminal control
       sequence into the prompt
\]     end a sequence of non-printing characters

Missing locales on remote system

Since this is now the third time I ran into this issue and it always mislead me in a completely wrong direction, I’ll finally document it.

So, you are SSH-ing into a remote system (typically Debian or a derivative), then you you install a package or do something else that triggers some access to the locales (UNIX style localization for shell commands etc.) and you see messages similar like this:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_TIME = "de_CH.UTF-8",
LC_NAME = "de_CH.UTF-8",
LC_PAPER = "de_CH.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory

You might assume that you did not install all the required locales. In the example above I saw these settings of de_CH.UTF-8 on an english only system. So you could generate/install the missing languages i.e. with “dpkg-reconfigure locales“. But note the mentions of “(unset)” above. Even with all the required locales you still will see these messages.

So, what is the cause of this mess? Nothing is wrong with your server. The actual culprit is a misconfiguration on the host you are running the SSH session from. It has these settings and newer SSH clients provide the comfort functions of exposing your local locale settings to the remote system.

In an ideal scenario this allows you to talk to your server in your native language. Unfortunately some newer linux distributions like Ubuntu starting from 12.04 (it has also been reported on MacOS X) don’t set all of these variables leading to these warnings on system that want these to be set.

TL;DR: The quick solution is to comment the setting in your /etc/ssh/ssh_config file that causes the exposure of these environment variables to your server:

# SendEnv LANG LC_*

sed command catenation

Sometimes one sed command is not enough… (via Tobias)

Does anyone knows a way to do this more compact? My sed foo is very limited…

*sed "1,3d" %p | sed '/^$/d' | sed '$d' | base64 -d | gpg --decrypt |

%p is a filename in case you wonder.

The 1st * and the last | are needed elsewhere as well. I don’t really like the three seds

It should at least be possible to catenate the sed commands. Does one of these two syntaxes work with your sed version?

sed '1,3d;/^$/d;$d' %p | base64 -d | gpg --decrypt |

sed -e ‘1,3d’ -e’/^$/d’ -e ‘$d’ %p | base64 -d | gpg –decrypt |

The best sed documentation IMO is the one from Grymoire. Here are the two methods mentioned above: The poorly documented ; and Multiple commands with -e command