Dietrich Schroff

Subscribe to Dietrich Schroff feed
Dietrich Schroff
Updated: 15 hours 41 min ago

Ingress: Level 16 reached...

Mon, 2017-07-24 17:00
After long time playing google/niantic's ingress (the predecessor of pokemon go - all the arenas are portals in ingress, most of them created by ingress players) i reached the last level:

And the usual welcome package:

I am wondering, wether i should continue playing or quit the game for now or ever.
Perhaps reading this discussion (What do lvl 16 players play for?) may help me.

(bash): The most useless commands (8)

Wed, 2017-07-19 14:57

After talking about

  1. rev
  2. yes
  3. sl
  4. cowsay
  5. cmatrix
  6. cal
 i found another funny command:
rigIts manpage tells the following:
       Rig  is a utility that will piece together a random first name, last name, street num‐
       ber and address, along with a geographically consistant (ie, they all match  the  same
       area) city, state, ZIP code, and area code.

       It is suitable for such applications as feeding the NY times registration page to fend
       off junk (snail) mail and telemarketers, or for registering  on  BBS's  to  which  you
       don't wish to reveal your real information.I am not sure if this tool is banned by the NSA ;-) but here we go:
schroff@zerberus:~$ rig
Carmelo Suarez
947 East Parson St
Alton, IL  62002
(708) xxx-xxxx
schroff@zerberus:~$ rig
Janna Stewart
970 Potter Rd
Auburn, NY  13021
(315) xxx-xxxx
schroff@zerberus:~$ rig
Bernadine Collins
27 Willow Rd
Seattle, WA  98109
(206) xxx-xxxx

OpenJDK 9: Jshell - Using Swing / doing GUI stuff

Sat, 2017-07-15 13:40
After the buitin commands of jshell and how to load and save scripts i tried to get swing components running.

I created a script
import javax.swing.*;       

JFrame frame = new JFrame("HelloWorldSwing");
JLabel label = new JLabel("Hello World");
But this does not work with Ubuntu:
# A fatal error has been detected by the Java Runtime Environment:
#  SIGSEGV (0xb) at pc=0x00007f61041bb009, pid=7440, tid=7442
# JRE version: OpenJDK Runtime Environment (9.0) (build 9-internal+0-2016-04-14-195246.buildd.src)
# Java VM: OpenJDK 64-Bit Server VM (9-internal+0-2016-04-14-195246.buildd.src, mixed mode, tiered, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# C  []  JNU_GetEnv+0x19
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport %p %s %c %P" (or dumping to /home/schroff/core.7440)
# An error report file with more information is saved as:
# /home/schroff/hs_err_pid7440.log
# If you would like to submit a bug report, please visit:
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
|  State engine terminated.
|  Restore definitions with: /reload restore
|  Resetting...
|  Welcome to JShell -- Version 9-internal
|  For an introduction type: /help intro
Hmmm. This does look good.

On a Windows 10 host it works without any problem:

I hope this bug will be fixed soon...
EDIT: After downloading a new version from it worked:

./java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+178)
Java HotSpot(TM) 64-Bit Server VM (build 9+178, mixed mode)

Bash: enabling Eclipse for Bash Programming | Plugin basheclipse (debugging) part 1

Fri, 2017-07-14 14:45
In my last posting i showed how to install the plugin shelled and its configuration options.

Now the next step is to install basheclipse, which enables eclipse in conjunction with shelled to debug bash scripts.

Step 1: Download basheclipse

Step 2: Do not copy the jar file to the plugins directory if you are using Eclipse Neon. Copy them to the dropins directory.

Step 3: Restart eclipse (and wait. I had to wait nearly 5 minutes with a cpu usage of 100%)

Step 4: Change the Shell interpreter in shelled (->window->preferences->shell script->interpreters):

Step  5: Create a new Shell Script Project:

 Step 6: Create a Shell Script File:

Step 7: Copy into your project directory
Step 8: Add at the beginning of your file with full qualified directory name:
 ~/devel/workspace/MyShellScriptProjekct/_DEBUG.shStep 9: Go to ->run->debug configurations and create a new configuration inside "bash script"
 You have to select your scriptfile here:
But after doing all this steps i was not able to set breakpoints.
I tried
  • java 1.5 with
    Eclipse Juno

    But this did not work.
  • java 1.9 with
    Eclipse Neon

    Did neither work (this posting)

But: Java 1.6 with Eclipse Luna works!

Read the next posting how to debug a bash scripts in eclipse...

EDIT: After changing from OpenJDK to Oracle's JDK it even works with Eclipse Neon.

OpenJDK 9: Jshell - how to load scripts and how to save/persist finished snippets

Fri, 2017-07-14 13:07
In my last posting i showed the builtin jshell commands and how to start working with the java shell.

What about loading and saving scripts?

I created a file myshell.txt with this content:
class MyClass {
 private int a;
 public MyClass(){a=0;}
 int getA() {return a;};
 void setA(int var) {a=var; return;}
MyClass ZZ;
ZZ = new MyClass();
The help shows the following:
-> /help /open

|  /open

|  Open a file and read its contents as snippets and commands.

|  /open
|      Read the specified file as jshell input.
so i tried this one:
-> /open myjshell.txthmmm. No feedback inside jshell. But no news is good news:
-> /list

   1 : class MyClass {
        private int a;
        public MyClass(){a=0;}
        int getA() {return a;};
        void setA(int var) {a=var; return;}
   2 : MyClass ZZ;
   3 : ZZ = new MyClass();
   4 : ZZ.setA(200);
 Saving your work is quite easy:
-> /help /save

|  /save

|  Save the specified snippets and/or commands to the specified file.

|  /save
|      Save the source of current active snippets to the file.

|  /save all
|      Save the source of all snippets to the file.
|      Includes source including overwritten, failed, and start-up code.

|  /save history
|      Save the sequential history of all commands and snippets entered since jshell was launched.

|  /save start
|      Save the default start-up definitions to the file.
And also no news is good news:
-> /save myjshell2.txtand like expected:
$ cat myjshell2.txt
class MyClass {
 private int a;
 public MyClass(){a=0;}
 int getA() {return a;};
 void setA(int var) {a=var; return;}
MyClass ZZ;
ZZ = new MyClass();
But what about this /save start ?
-> /save start myjshell3.txtand the content of this file is:
$ cat myjshell3.txt

import java.util.*;
import java.math.*;
import java.util.concurrent.*;
import java.util.prefs.*;
import java.util.regex.*;
void printf(String format, Object... args) { System.out.printf(format, args); }
 To load a scipt on startup just type
jshell myjshell.txt

OpenJDK 9: JShell - an interactive java interpreter shell | builtin commands

Wed, 2017-07-12 14:33
One of the new features of java 9 is jshell (JEP 222).

On my ubuntu system the installation was quite easy:
# apt-get install openjdk-9-jdk-headlessand you can find
$ ls /usr/lib/jvm/java-9-openjdk-amd64/bin/
idlj       jcmd    jmap        jstatd       schemagen
jar        jdb     jmod        keytool      serialver
jarsigner  jdeps   jps         orbd         servertool
java       jhsdb   jrunscript  pack200      tnameserv
javac      jimage  jsadebugd   policytool   unpack200
javadoc    jinfo   jshell      rmic         wsgen
javah      jjs     jstack      rmid         wsimport
javap      jlink   jstat       rmiregistry  xjc
 (in the third column, sixth row: jshell)

After a startup jshell comes up with this prompt:

$ /usr/lib/jvm/java-9-openjdk-amd64/bin/jshell
|  Welcome to JShell -- Version 9-internal
|  For an introduction type: /help intro

 The most important command is
/exitto leave the jshell (Strg-C works also, but i think /exit should be used).

There is no syntax highlighting but this does not matter.

The following builtin commands are allowed:
-> /help
|  Type a Java language expression, statement, or declaration.
|  Or type one of the following commands:

|     /list [all|start|]                       -- list the source you have typed
|     /edit                                    -- edit a source entry referenced by name or id
|     /drop                                    -- delete a source entry referenced by name or id
|     /save [all|history|start]                      -- Save snippet source to a file.
|     /open                                          -- open a file as source input
|     /vars                                                -- list the declared variables and their values
|     /methods                                             -- list the declared methods and their signatures
|     /classes                                             -- list the declared classes
|     /imports                                             -- list the imported items
|     /exit                                                -- exit jshell
|     /reset                                               -- reset jshell
|     /reload [restore] [quiet]                            -- reset and replay relevant history -- current or previous (restore)
|     /classpath                                     -- add a path to the classpath
|     /history                                             -- history of what you have typed
|     /help [|]                          -- get information about jshell
|     /set editor|start|feedback|newmode|prompt|format ... -- set jshell configuration information
|     /? [|]                             -- get information about jshell
|     /!                                                   -- re-run last snippet
|     /                                                -- re-run snippet by id
|     /-                                                -- re-run n-th previous snippet

|  For more information type '/help' followed by the name of command or a subject.
|  For example '/help /list' or '/help intro'.  Subjects:

|     intro     -- an introduction to the jshell tool
|     shortcuts -- a description of shortcuts
With /list the source code, which you provided, is shown:
-> /list 5

   5 : class MyClass {
       private int a;
       public MyClass(){a=0;}
       int getA() {return a;};
       void setA(int var) {a=var; return;}

Everytime you create an Object, you will see the following:
-> ZZ = new MyClass();
|  Variable ZZ has been assigned the value MyClass@28d25987

-> ZZ.getA();
|  Expression value is: 0
|    assigned to temporary variable $8 of type int

-> ZZ.setA(200);

-> ZZ.getA();
|  Expression value is: 200
|    assigned to temporary variable $10 of type int With /vars the variables are shown:
-> /vars
|    MyClass ZZ = MyClass@28d25987
|    int $8 = 0
|    int $10 = 200
Listing the classes (ok it is getting boring):
-> /classes
|    class MyClass
 and last but not least /methods:
-> /methods
|    printf (String,Object...)void
|    getA ()int

Bash: enabling Eclipse for Bash Programming | Plugin Shelled (shell editor)

Mon, 2017-07-10 14:14
After writing several posts about useless shell commands i tried to enable Eclipse for working with the bourne again shell.

First step is to get a plugin for syntax highlighting. The plugin shelled is very easy to find. Just download the zip

and in Eclipse go to "help --> install new software".
There you have to add the archive:
And all other clicks are straight forward:

After the installation of the plugin you have to restart your Eclipse IDE and then the editor understands bash commands:

The configuration can be done via -> window -> preferences

If you want to setup your own coloring scheme, you can customize it within -> Shell Script -> Editor -> Syntax coloring

(bash): The most useless commands (7)

Sat, 2017-07-01 03:14

After talking about
  1. rev
  2. sl
  3. cowsay
  4. cmatrix
here another pretty useless command:
calToday with every smartphone having its own calendar app or every e-mail program with integrated time planning function this command is no more needed. The manpage says:
     cal, ncal — displays a calendar and the date of EasterAnd here we go:
$ cal 2000
       Januar               Februar                 März        
So Mo Di Mi Do Fr Sa  So Mo Di Mi Do Fr Sa  So Mo Di Mi Do Fr Sa
                   1         1  2  3  4  5            1  2  3  4
 2  3  4  5  6  7  8   6  7  8  9 10 11 12   5  6  7  8  9 10 11
 9 10 11 12 13 14 15  13 14 15 16 17 18 19  12 13 14 15 16 17 18
16 17 18 19 20 21 22  20 21 22 23 24 25 26  19 20 21 22 23 24 25
23 24 25 26 27 28 29  27 28 29              26 27 28 29 30 31  
30 31                                                          
       April                  Mai                   Juni        
So Mo Di Mi Do Fr Sa  So Mo Di Mi Do Fr Sa  So Mo Di Mi Do Fr Sa
                   1      1  2  3  4  5  6               1  2  3
 2  3  4  5  6  7  8   7  8  9 10 11 12 13   4  5  6  7  8  9 10
 9 10 11 12 13 14 15  14 15 16 17 18 19 20  11 12 13 14 15 16 17
16 17 18 19 20 21 22  21 22 23 24 25 26 27  18 19 20 21 22 23 24
23 24 25 26 27 28 29  28 29 30 31           25 26 27 28 29 30  
        Juli                 August              September      
So Mo Di Mi Do Fr Sa  So Mo Di Mi Do Fr Sa  So Mo Di Mi Do Fr Sa
                   1         1  2  3  4  5                  1  2
 2  3  4  5  6  7  8   6  7  8  9 10 11 12   3  4  5  6  7  8  9
 9 10 11 12 13 14 15  13 14 15 16 17 18 19  10 11 12 13 14 15 16
16 17 18 19 20 21 22  20 21 22 23 24 25 26  17 18 19 20 21 22 23
23 24 25 26 27 28 29  27 28 29 30 31        24 25 26 27 28 29 30
30 31                                                          
      Oktober               November              Dezember      
So Mo Di Mi Do Fr Sa  So Mo Di Mi Do Fr Sa  So Mo Di Mi Do Fr Sa
 1  2  3  4  5  6  7            1  2  3  4                  1  2
 8  9 10 11 12 13 14   5  6  7  8  9 10 11   3  4  5  6  7  8  9
15 16 17 18 19 20 21  12 13 14 15 16 17 18  10 11 12 13 14 15 16
22 23 24 25 26 27 28  19 20 21 22 23 24 25  17 18 19 20 21 22 23
29 30 31              26 27 28 29 30        24 25 26 27 28 29 30
 Or "the date of Easter":
$ ncal -e 2018
 1 April 2018

(bash): The most useless commands (6)

Sat, 2017-06-24 08:35
After talking about
  1. rev
  2. sl
  3. cowsay
 i found another funny command:
cmatrixThe manpage says:
       CMatrix - simulates the display from "The Matrix"and it is true:

(bash): The most useless commands (5)

Wed, 2017-06-21 15:17
In a comment Albert Godfrind pointed out, that the commands i was talking about like
  1. rev
  2. sl
  3. cowsay
are not really bash commands (in a way that they will be installed within the installation of the bash shell). They are commands, which can be used from on every shell. So my headline is a little bit missleading - thanks for this notice.

Just for clarification here a list with all bash builtin commands:
  • alias
  • bind
  • builtin
  • caller
  • command
  • declare
  • echo
  • enable
  • help
  • let
  • local
  • logout
  • mapfile
  • printf
  • read
  • readarray
  • source
  • type
  • typeset
  • ulimit
  • unalias
and the bourne shell builtins:

  • break
  • cd
  • continue
  • eval
  • exec
  • export
  • getopts
  • hash
  • pwd
  • readonly
  • return
  • shift
  • test
  • times
  • trap
  • umask
  • unset
Still missing:

Bash: The most useless command (4)

Sun, 2017-06-18 14:04
The blog statistics show, that there are many people reading the posts about useless commands. And there is the next candidate:
cowsayNow you are thinking, what is cowsay?
       Cowsay  generates  an  ASCII picture of a cow saying something provided by the user.  If run with no arguments, it accepts standard input, word-wraps
       the message given at about 40 columns, and prints the cow saying the given message on standard output.

Okay. Here we go:
$ echo what a cool command | cowsay
< what a cool command >
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
One thing to add here: moo 

Bash: The most useless command (3)

Wed, 2017-06-14 12:48
The blog statistics show, that there are many people reading the posts about useless commands. And there is the next candidate, suggested by an anonymous comment:
slThis is my most hated program on a shell. Why?
sl − display animations aimed to correct users who accidentally enter sl instead of ls.and this program is not interruptable by ctrl-c.
It shows a train running from the left to the right
and blocks your shell for at least 2-3 seconds (depends on the width of your shell window):
$ time sl
real 0m3.347s

Ubuntu: mouse jumps to trash icon / move to lower left corner / bottom left

Sat, 2017-06-10 14:02
There are many questions about jumping mouse cursors on ubuntu.
And there are often answers like
  • clean your touchpad
  • your touchpad is broken
  • send your laptop back
But there are so many people suffering this, so it is not reasonable that all these touchpads do not work well.

One thing to solve this is to install
gpointing-device-settingsbut this does not really help.
Next thing:
add-apt-repository ppa:atareao/atareao
apt-get update
apt-get install touchpad-indicator
/opt/  But this is not really the solution. But you can disable your touchpad while typing, so that the window focus does not jump to the trash icon and your typing is interrupted.

After searching i found the following discussion on a mailing list:

And the follwing did the job:
apt-get install xserver-xorg-core apt-get install xserver-xorg-input-libinput
apt-get remove --purge xserver-xorg-input-synaptics and then a logoff and login into the x window system...

Bash: The most useless command (2)

Fri, 2017-06-09 14:58
The last posting about useless commands for bash discussed the command
rev. One nice comment pointed out, that the rev command can be used for searching inside logfiles (Thanks to

Like it was said there, the command
yeslooks even more useless:
       yes - output a string repeatedly until killed
       yes [STRING]...
Ok - it can be used for scripts to answer call backs. But which kind of script needs always the same answer? (and commands like "apt-get" support this via the option "-y".

Any other suggestions about useless bash commands?

Bash: The most useless command

Sun, 2017-06-04 14:08
After many years working with the bourne again shell i still learn some commands, which i never used.
I am completely convinced that i discovered the most useless command:
revThe manpage says:
rev - reverse lines characterwise Is there anything, where i can use this command?

Ok. I can check if a word is a palindrome (like 123321 or otto):

# Shell script to test if a string is a palindrome
# This simply uses the 'rev' command found in util-linux-ng package
# and checks if the reverse of the string is same as the original
 echo "Enter a String : "
read string
if [ "$(echo $string | rev)" = "$string" ]
 echo "\"$string\" IS a Palindrome"
 echo "\"$string\" IS NOT a Palindrome"
fiThis script i found in this article.

Have anyone used the rev command for something reasonable?
Please write a comment!

Ubuntu: Eclipse does not find openjdk (JRE)

Sat, 2017-06-03 14:06
On my Ubunut linux i decided to do some Java programming.
So first step is to install java:
apt-get install openjdk-9-jdk openjdk-9-demo openjdk-9-doc openjdk-9-jre-headless openjdk-9-source This just works like expected. But after that i installed eclipse.
Download via was easy and the installation ran without any error.
But Eclipse was not able to find the JRE for compiling, autocorrection, etc.

For all developers, which are not used to linux:
The JRE is in Ubuntu located here:
/usr/lib/jvm/java-9-openjdk-amd64/jreAnd it is added like on any other platform via the preferences window:
 After that Eclipse runs fine and you can start building your java applications...

Ubuntu: visudo problem / NOPASSWD option does not work for commands

Sat, 2017-06-03 13:56
It is always the same:
After installing a new Linux commands like
/sbin/rebootonly work with entering your password everytime (or precisely: after every reboot).
This can be changed with visudo:
export EDITOR=vi; visudo Inside the /etc/sudoers.conf you will see:
# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALLAnd this is the problem:
First idea is to double the line
root    ALL=(ALL:ALL) ALL
schroff    ALL=(ALL) NOPASSWD: /usr/sbin/s2diskand do the desired changes.

BUT: This will not work!

You have to add your line at the end of the file and after you exit vi (or whatever editor you have configured) it will work...

UEFI and Linux: Installation of Ubuntu on a new laptop / How to add grob on UEFI

Sat, 2017-06-03 09:28
On my new laptop i decided to install in addition to windows 10 a linux distribution.
First idea was to install debian linux but the debian installer does not provide any functionality to resize the partitions. And without this, the windows partition will be erased after the installtion.
I knew, that the ubuntu installer had this functionality, so i created a usb stick and tried installing ubuntu.

The installation went through like a charm, but the next reboot does not show up the grub boot menu. The laptop started without any call back.


I found a solution here.

You have to enter the BIOS/UEFI and set a password:
After that you are allowed to select a new trusted uefi file:
 Then walk to grubx64.efi via HDD0 -> EFI -> ubuntu:

After that you have to reboot once and enter the BIOS/UEFI again.
New you can change the boot order and move the grub to the first entry:
Now every reboot enters the grub menu and you are able to choose ubuntu or windows...

review at amazon: Apache SOLR for newbies

Thu, 2017-05-25 14:39
Last weekend this book fell into my hands:

Paul Lawson wrote a splendid introduction into Apache SOLR. At the beginning he describes the motivation behind the project SOLR:
 "Outside the firewall  [searching] is used to make money, and inside to save money."
Within 130 pages this books covers everything from installation, adminstration GUI, examples to start (importing documents, first searches, etc.) and the quick overview to the fundamental configuration files.
If you are interested in Apache SOLR and you do not know where to start: this book is the answer.
But one thing is missing: The book only covers searching XML documents. On page 42 (!) it is pointed out, that you have to configure SOLR cell. I think this was a good decision, because deep dives should be done after an introduction.

if you are interested, take a look at my review at (as all my reviews written in german ;-)

Touchpad tuning on linux: touchpad-indicator...

Fri, 2017-04-14 10:21
I encoutered some problems with my touchpad on ubuntu:
While typing some text, the touchpad signalled the mouse some strange moves. Sometimes it marked parts of the text and the next key erased the highlighted text...

First idea was to edit the xorg.conf or something else, but i found a less difficult was via touchpad-indicator.

It can be installed via
apt-get install touchpad-indicatorAlittle problem is, that you can not run it via cli with just calling touchpad-indicator, because ubuntu installs this program into /opt:

Here you can choose "disable touchpad on typing" and you are done...