Ansichten eines Informatikers

Himmel Herrgott Sakra!

Hadmut
7.12.2023 2:56

Himmel, Arsch und Wolkenbruch!

Zefix und Sack Zement!

Grrrrrr!

So ein verdammter Haufen Mist!

So eine verdammte … Sch … Sch … Schande!

Ich habe gerade meine Steuererklärung gemacht. Viel zu spät. Was heißt „gerade“. Tagelang war ich damit wieder beschäftigt, und vielleicht hat auch der ein oder andere Leser gemerkt, dass ich die letzten Tage etwas kurz angebunden war. Ich habe jetzt mehrere Tage bis nachts und drei, vier Uhr dran gesessen.

Dieses Mal kam aber wirklich alles zusammen. Nicht nur Kassenzettel auf griechisch. War insgesamt etwas komplexer.

Aber:

Die Bank hatte urplötzlich und ohne Vorwarnung aufgehört die Kontoauszüge in elektronisch leicht lesbarer Form als csv anzubieten. Nur noch PDF. Ich war aber mit anderen Sachen beschäftigt und habe mich zu spät um HBCI gekümmert. Als ich dann eine – auch nur wackelige – HBCI-Software gefunden habe, mit der man ein paar der Daten runterladen kann, war es schon zu spät, weil da auch nur relativ frische Daten runterzuladen sind. Eigentlich wollte ich ja mit der Steuererklärung schon auf Zypern anfangen, habe es aber wegen der verdammten Strafsache vorher nicht geschafft, die Belege in Deutschland abzuarbeiten und habe dort dann eben ein Skript geschrieben, was die PDF-Kontoauszüge per pdftotext zerlegt – manche Leser werden sich an dieses Posting erinnern) – und nicht etwa, wie manche damals auf das Posting antworten, per OCR, da kommt nämlich nichts zuverlässiges und nur Mist heraus, sondern aus den PDF-Dateien die Textbefehle rauspfriemelt, um dann per Logik und Regular Expressions die Kontodaten aus dem Ding herauszuholen. Was auch nicht eindeutig geht, weil die Honks von der Bank einfach alle Daten im Informationsfeld hintereinander schreiben ohne Trennzeichen, und man auf die Methode auch nicht automatisiert erkennen kann, ob am Zeilenende ein Leerzeichen steht oder nicht.

Dazu das ewige Elend, dass jeder seine Kassenzettel und Rechnungen anders aufbaut und man immer ewig sucht, bis man sowas wie ein Datum hat. Manche haben gar kein Datum, bzw. nur in den Lastschrift-/Kartenzahlungsdaten.

Manchmal sucht man ewig, bis man findet, ob irgendwo Umsatzsteuer drin war oder nicht. Amazon alleine ist ein riesiges Rätsel.

Warum sieht jede Rechnung anders aus? Warum sind das alles Ratespiele?

Warum gibt es kein einheitliches Rechnungsformat, damit das Datum immer und überall an derselben Stelle steht?

Oder warum haben wir keine elektronischen Rechnungen?

Warum sitze ich tagelang da, um alle Rechnungen und Zettel durchzusehen (ich kaufe viel Kleinkram, weshalb ich am Jahresende immer alle, ausnahmslos alle Zahlungsvorgänge durchgehe, damit mir keine absetzbare Ausgabe durchrutscht, und kommt mir nicht mit „Steuerberater“, denn für den müsste ich das ja auch erst zusammensuchen, der kann ja nicht hellsehen), wie vor 50 Jahren? Wesentlich geändert hat sich das nicht gegenüber der Art und Weise, wie man die Steuererklärung machte, als ich noch Kind war.

Klar, alle wollen sie „digital“ sein.

Das heißt, dass man denselben Mist als PDF per Mail bekommt, und genau dieselbe Suche betreibt. Nur eben nicht auf Papier, sondern auf Bildschirm. Wie ich so oft sage: In unserer Schrumpfhirngesellschaft bedeutet „digitalisieren“, dass man den analogen Krampf mit Computer nachahmt, also kein Stück vorankommt.

Früher hieß es mal, und angeblich war das Friedrich Merz, dass die Steuererklärung auf einen Bierdeckel passen muss.

Das ist Quatsch. Dummes Zeug.

Die Steuererklärung muss nicht auf einen Bierdeckel passen.

Aber ich muss eine Steuererklärung mit tausenden Vorgängen an einem Abend erledigen können.

Und das könnte ich, wenn die Daten, die Rechnungen alle in einem einheitlichen, digital lesbaren Format vorlägen. Dann wären das ein paar Mausklicks und nicht ein paar Wochen Arbeit. Aber so weit denken unsere Digitallegastheniker nicht. Wenn ich alle Rechnungen und Belege vollautomatisch einlesen könnte, wäre die ganze Sache in wenigen Minuten erledigt. Aber versucht mal, das einem Politiker oder Finanzministerium klar zu machen. Unserer Bundesregierung. Kapieren die nicht.

Lieber fordert man, auf 2 Feiertage zu verzichten, damit wir mehr arbeiten und mehr Steuern zahlen, als uns von 2 Wochen Arbeit zu entlasten. Stellt Euch vor, es gäbe Software oder Dienstleister, bei denen alle Rechnungen auflaufen und die mit ein bisschen KI automatisiert sofort die fertige Steuererklärung erstellen.

Können wir aber nicht. Rechnungsstellung wie um 1900. Jeder schreibt irgendwas irgendwie auf einen Zettel.

Oder noch schlechter. Jedes verdammte Unternehmen, jede Bank, einfach jeder murkst sich eine Webseite zusammen, in der man sich auf unsägliche Weise durch oft hundsmiserable, umständliche Webseiten quälen muss, und mitunter ein Dutzend _Mausklicks für jeden einzelnen Beleg braucht, um dran zu kommen. De-Mail wäre eigentlich prima gewesen, wenn man das so gebaut hätte, dass man einen Rechtsanspruch hat, alle Rechnungen an so ein Konto zu bekommen. Dafür war man aber zu blöd.

Stellt Euch vor, Ihr müsst Euch um nichts kümmern, nichts sammeln, und habt am Jahresende alle Rechnungen in einheitlichem, automatisch lesbarem Format auf einem Haufen.

Das wäre zu einfach. Das gönnen Euch die Regierungssadisten nicht, weil die ja auch gar nicht wollen, dass Ihr Eure Ausgaben alle erfassen und absetzen könnt. soll ja einfach sein. Die Einnahmen dagegen werden automatisch direkt an das Finanzamt gemeldet, damit auf der Einnahmenseite kein Cent verloren geht.

Stellt Euch vor, jeder würde eine optimale Steuererklärung abgeben. Dann fehlen denen gleich wieder ein paar Milliarden. Das können die sich nicht leisten, die Steuererklärung „machbar“ zu machen.

Und dann habe ich selbst auch noch einen dummen Fehler gemacht.

Ich verwende eine eigene Buchhaltungssoftware. Die ist, das muss ich leider sagen, nicht allzu schön, weil ich die vor Jahren mal angefangen und nie die Zeit gefunden hatte, die mal so richtig fertig zu schreiben, und jedes Jahr immer nur zur Steuererklärung ein bisschen daran baue, meist um Änderungen bei Datenformaten einzubauen. Aber sie wird besser und ich habe sie in den letzten 2 Jahren auch deutlich besser gemacht und noch ein paar schicke Ideen. Die ist halt so, wie ich sie haben will.

Nun habe ich die in Ruby on Rails geschrieben. Angefangen mit Rails 2. Über Rails habe ich schon geflucht. Das hat mal ganz toll angefangen, war ein super Projekt, und verfilzte immer mehr, bis sie selbst nicht mehr durchblickten. Zuletzt hatte ich das in Rails 5, aber von Rails 6 die Finger gelassen, weil gar zu übel. Weil Rails 7 wieder halbwegs geht, und Rails 5 schon lange tot und nicht mehr gewartet wird, hatte ich neulich angefangen, das Zeug auf Rails 7 umzustellen. Was zunächst einfach erschien, aber die Tücke im Detail hat. Immer wieder stolpert man über Kleinigkeiten. Mal funktioniert ein link_to nicht mehr mit post, und muss durch button_to ersetzt werden. Sowas. So Kleinkram.

Weil dann aber eine wichtige Funktion nicht mehr funktionierte, die auf AJAX beruhte, um innerhalb der Webseite Änderungen an Buchung vorzunehmen ohne komplett neu zu laden, musste ich dann tiefer einsteigen. Das läuft jetzt per Turbo-Rails.

Turbo-Rails ist … eigentlich gar nicht mal so schlecht, aber schlecht dokumentiert. Dieser neumodische Mist, dass man zwanzigmal gesagt bekommt, dass es „cool“ ist, weil heute alles „cool“ ist, und ein Tutorial
, bei dem man nicht durchblickt, was man macht, weil man einfach Codestücke copypasten soll. Sowas wie ein Reference Manual, eine Methodenbeschreibung, wie das früher üblich war, gibt es nicht.

Auf den ersten Blick erschien das einfach.

In Turbo-Rails gibt es – vermeintlich – genau das, was ich brauche: Eine Funktion um in einem HTML-Text ein bestimmtes Stück per AJAX zu ersetzen, ohne die ganze Seite neu zu laden. Wäre ganz einfach.

Aber, ach.

Die Heinis haben dafür einfach ein neu erfundenes HTML-Tag verwendet, <turbo-frame> , ohne aber daran zu denken, dass man in einem HTML-Text nicht einfach willkürlich neu erfundene Tags einbauen kann. Das funktioniert zwar manchmal – aber nicht immer. Ich hatte das nämlich so gebaut, dass in einer Tabelle mit Buchungen einzelne Zeilen aktualisiert, und dazu eben ersetzt werden. Der Controller liefert dazu nur eine einzelne Table-Row <tr>, gegen die die alte einfach ersetzt wird. Und das Dumme ist nun, und bereits das hat mich einige Zeit gekostet, dass das zwar im Allgemeinen, aber nicht in einer <table>-Umgebung funktioniert, weil innerhalb von Tables die Browser ganz streng sind und alles, was nicht in eine Table-Umgebung gehört, aus der table raus verschieben. Ich habe also erst einmal gesucht, warum die Änderung zwar grundsätzlich funktioniert, die neue Zeile aber oberhalb der Tabelle und nicht an Stelle der alten Zeile erscheint. Eben aus dem Grunde, weil Browser innerhalb von Tables keine Phantasie-Tags dulden und das dann vor der Tabelle anzeigen.

Hat mich Zeit gekostet, das herauszufinden. Das Problem haben viele, eine Lösung wird nicht erwähnt. Scheiß-Konstruktion.

Eine Lösung gibt es aber schon. Man muss Turbo-Streams statt Turbo-Frames verwenden, weil Turbo-Streams jedes beliebige HTML-Element austauschen können, das man über die id ansprechen kann. Nur: Turbo-Streams ist nicht nur komplizierter und man sucht eine Weile, bis man rausfinden kann, was der Controller dazu wie liefern kann und muss, es ist auch gar nicht so einfach herauszufinden, was das überhaupt ist und worin es sich unterscheidet. Glücklicherweise fragen sehr viele Leute, was der Unterschied sei, weshalb einem Google die Antwort liefert, die man in der Doku nicht oder nicht klar findet.

Wenn das dann erst einmal richtig gebaut ist und läuft, und man die Informationen hat, die man in der fehlenden Doku/im Tutorial nicht findet, dann läuft das wunderbar, genau so wie ich das haben will (und mit der alten Version schon hatte) und sogar recht übersichtlich und leistungsfähig. Es ist nicht schlecht, es ist nur schlecht dokumentiert. Turbo-Frames mit dem Phantasietag ist schlecht, das sollte man eigentlich nicht verwenden, sondern gleich zu Turbo-Streams. Kann auch mehr, nämlich mit einem AJAX-Aufruf gleich mehrere Objekte ändern. Auch die Rails-Doku deutet das nur an, dass man damit tolle Sachen machen kann, sagt aber nicht wie und was.

Und bis das dann alles wieder sauber lief, war es dann eben fünf Uhr morgens. Kostet alles Zeit, bis man sich da durchgefressen hat.

Die Paketboten wunderten sich, warum ich dann, wenn sie um 12 klingeln, aussehe, als käme ich gerade aus dem Bett. Ratet mal, warum.

Ich finde es aber einfach unglaublich ärgerlich, dass wir eine Regierung haben, die ständig von Digitalisierung schwätzt, Flugtaxis und so, aber nicht mal im Ansatz auf die Idee kommt, solche Prozesse wie das Erstellen der Steuererklärung zu automatisieren.

Das Schlimme ist, dass sie nicht mal merken, wie wenig Ahnung sie haben. Sie denken, wenn man alles macht wie vorher, Rechnungen im Papierformat, nur Computer drin vorkommen und man die Rechnung als PDF wie auf Papier bekommt, das „Digitalisierung“ sei. Wenn man die Rechnung per E-Mail bekommt, sie aber genauso lesen muss.

Es gibt Firmen, die mühsam Software schreiben oder per KI lernen lassen, Rechnungen zu verstehen. Das ist aber Bockmist. Es ist völliger Murks, wenn man versucht, Computern das Lesen von Menschenrechnungen beizubringen. Wir müssen das in maschinenlesbaren Formaten schreiben.

Und wie ich früher schon schrieb (das Thema regt mich nämlich jedes Jahr aufs Neue auf), gibt es solche Formate schon. Sogar mehrere, was ein Problem ist, weil man sich mal wieder nicht entscheiden kann.

Würde man das mal durchsetzen, dass in Deutschland – oder besser der EU – nur verkauft werden darf, wozu auf Kundenwunsch eine maschinenlesbare präzise Rechnung elektronisch übermittelt wird, wäre damit so vieles einfacher – auch wenn man darin wieder zusätzliche Bürokratie sehen könnte.

Ich bin da vielleicht auch etwas vorbelastet. Ich war ja nach der Uni damals beim Karlsruher Internet-Provider Xlink, der dann von EU-weit agierenden neuen Konzern KPNQwest gefressen und – obwohl gesund – in die EU-weite Insolvenz gerissen wurde.

Eine wesentliche Ursache für diese Insolvenz waren Rechnungen. Nicht, dass KPNQwest damals nicht genug Geld gehabt hätte, aber man hat sich seine Bonität verspielt. Die arroganten Niederländer, die den Konzern leiteten, dachten nämlich, sie können alles. Sie haben in jedem Land einen Internet-Provider aufgekauft, um daraus einen großen EU-Konzern zu schmieden, und meinten, das man bestimmte Funktionen nur einmal brauche. Also hat man alle Buchhaltungsabteilungen gefeuert und verfügt, dass das alles zentral in Den Haag erledigt werde. Und bis man richtig gemerkt und kapiert hatte, dass Niederländer völlig außerstande sind, italienische Rechnungen zu verstehen und zu begleichen, war es zu spät.

Und ich sitze nun da und habe zypriotische Rechnungen und Kassenzettel. Was, beachtlicherweise, in vielen Fällen kaum ein oder gar kein Problem ist, am schlimmsten sind da ausgerechnet LIDL und IKEA, beide nicht zypriotisch, weil die – politisch korrekt – alles in Landessprache machen wollen. Bei denen bekommt man auch nur Elektrogeräte mit britischem Stecker, während man woanders auch oft Geräte mit Euro-Stecker bekommt. Internationale Konzerne sind da gnadenlos auf die Austauschbarkeit von Länder-Einstellungen geeicht. Meist hilft es, die Android-App mit dem Übersetzer einfach draufzuhalten. Ausgerechnet die Kassenzettel von LIDL sind schwer zu lesen und per OCR zu erfassen, weil ausgerechnet die dieses blaue Öko-Kassenzettelpapier verwenden. Komischerweise hatten sie das hier in Deutschland mal groß angekündigt, meine LIDL-Kassenzettel von 2023 sind aber wieder alle weiß. War wohl nicht so beliebt. Auf Zypern haben sie noch das blaue, da werden wohl die Bestände verheizt.

Am schlimmsten sind die, die so pseudo-digital arbeiten, wo man sich dann tiefenverarscht vorkommt. Ich hatte mal bei Decathlon was eingekauft und aus Neugier mal gewählt, dass ich den Kassenzettel nicht auf Papier, sondern digital bekomme. Dann bekommt man den als Graphik, kein copy, kein paste, zu gar nichts nutze. Da merkt man genau, dass die überhaupt nicht nachgedacht haben, sondern einfach irgendwie zeitgeistig sein wollen, weil Jugendliche alles auf dem Handy haben wollen. Nutzen gleich Null, aber es ist „cool“. Cool ist heute so wichtig.

Warum muss das alles so umständlich sein?

Warum schwätzt die Politik von Flugtaxis und davon, dass wir „digital“ ganz vorne an die Spitze wollen, schafft es aber nicht einmal, so alltägliche Vorgänge zu „digitalisieren“?

Warum muss man sich jedes Jahr, und eigentlich sogar jedes Quartal, jeden Monat, jeden Tag mit dem ganze Mist rumschlagen?

Hält man das absichtlich umständlich, damit man in jedem Unternehmen Arbeitsplätze für Rechnungen-Leser braucht?