staging.inyokaproject.org

2022 Woche 47

27. November 2022

Heise bringt mal wieder eine Serie zum Umstieg auf Linux. Dieses mal für Unternehmen im Angesicht der Windows 11-Migration. Das geht völlig am Thema vorbei. Wir brauchen dringend eine andere Diskussion über den Linux-Umstieg und nicht immer die gleichen aufgewärmten Geschichten.

Bei Heise können interessierte Menschen aktuell eine Serie „Zweites Leben mit Linux“ lesen. Bisher sind zwei Teile erschienen:

  1. Zweites Leben mit Linux: Wie Unternehmen alte Windows-Rechner retten können​
  2. Zweites Leben mit Linux: Die besten Distributionen für Unternehmen

Inhaltlich sind die Beiträge ganz interessant und legen mal den Fokus auf die wirklich zentralen Distributionen. Das Lesen beider Artikel bringt daher schon einem Mehrwert. Für sich genommen und ohne das übergestülpte Thema. Denn hier gehen sie total an der Zielgruppe bzw. am Thema vorbei. Das bemängeln sogar viele Kommentatoren im von mir sonst so oft gescholtenen Kommentarbereich von Heise.

Die Grundannahme ist, dass der auslaufende Support für Windows 10 und anstehende Umstieg auf Windows 11 irgendwie mit Kosten für Firmen verbunden ist, die diese vermeiden müssen und können, wenn sie auf Linux umsteigen. Dahinter steht ein völlig veraltetes Bild von IT-Beschaffung und wieder mal das leidige Kostenargument.

Hardware wird über mehrere Jahre abgeschrieben. Die hier suggerierte völlig veraltete Hardware ist somit bereits komplett abgeschrieben. Angesichts der Leistungsanforderungen von Windows 11 ist die betroffene Hardware realistischerweise sogar weit darüber hinaus genutzt worden. Die meisten Firmen haben Beschaffungszyklen, bei denen Hardware turnusgemäß ausgewechselt wird – spätestens nach Ende von Gewährleistung und Support. Die Zeiten, bei denen ein neues Betriebssystem die Auswechslung des kompletten „Fuhrparks“ erforderte, sind doch spätestens seit Anfang der 2000-Jahre vorbei.

Die Kosten für Hardware und Lizenzen sind zudem sehr gering. Wir reden hier von dreistelligen Investitionsbeträgen pro Gerät, wenn keine besonderen Anforderungen beispielsweise im IT- oder Multimediabereich vorliegen. Eine Behörde oder Firma, die hierfür keine Mittel in der mehrjährigen Finanzplanung hat, dürfte andere Probleme haben.

Zumal Hardwarekosten nicht das Hauptproblem bei den meisten Firmen sind, sondern Lohnkosten. Alte Hardware macht Mitarbeiter unproduktiver, weil diese langsamer arbeiten müssen, als es möglich wäre. Alte Hardware verursacht also ganz direkt Kosten an anderer Stelle im Budget. Die meisten Firmen wissen das und stellen deshalb Hardware mit den passenden Leistungskennzahlen passend zu den Aufgaben der Mitarbeiter zur Verfügung.

Am meisten stört mich aber, dass wieder das Kostenargument für Linux in den Vordergrund geschoben wird. Das ist kontraproduktiv und schadet der Verbreitung von Linux und sollte langsam auch dem Letzten klar sein. Die Einführung von Linux kostet auf kurze Sicht sogar mehr Geld, als sie spart. Erstens, weil viele der in den Artikel dargestellten Distributionen kostenpflichtig sind, zweitens weil bei den kostenlosen Distributionen der FOSS-Gedanke eigentlich eine Partizipation der Firmen voraussetzen, die deshalb wiederum Entwicklerkapazitäten bereitstellen müssten. Dazu kommen dann weitere Kosten, weil zusätzliche IT-Kapazität auch ohne Beteiligung an Open Source-Projekten vonnöten wäre, wenn man die genutzten Systeme diversifiziert und die IT-Abteilung neben Windows plötzlich auch Linux auf dem Desktop unterstützen soll.

Bei all diesen Überlegungen ist man noch nicht mal in den Bereich der Anwendungen vorgedrungen und hat hier Chancen und Risiken abgewogen.

Anstelle immer wieder diese leidige Diskussion aufzuwärmen, bei der ein Linux-Umstieg immer nur über das Kostenargument propagiert wird, brauchen wir hier endlich mal eine ehrliche Kampagne. „Public money, public code“ ist eine solche Kampagne für den öffentlichen Dienst und hat inzwischen Einzug in viele politische Sonntagsreden und sogar Koalitionsverträge gefunden. Für die Privatwirtschaft gibt es das bisher nicht. Es muss aber Vorteile abseits von Kostenargumenten geben und diese müssen wirkliche Mehrwerte bieten. Wenn es diese nicht gibt, dann hat Windows zu recht seinen Platz in den deutschen Büros.

Kurzum: Nette Artikel, aber völlig am Thema vorbei. Hoffentlich brauchte man einfach einen Aufhänger für eine Serie und hat da ein bisschen daneben gegriffen und das entspricht nicht dem Firmenbild von Heise. Ansonsten können sie dort ihre Business-IT-Kompetenz endgültig einpacken. Genau so wie die Firmen, die wegen der Investitionskosten für Windows 11 auf Linux umsteigen müssen.

26. November 2022

Ich habe in einem Tibble mehrere Adressen (z.B. von Kunden, Kooperationspartnern etc.) und möchte diese auf einer OpenStreetMap plotten. Dies kann mit dem {OpenStreetMap}-Paket und ggplot() umgesetzt werden.

Skurrile Adressen

Erzeugen wir uns zunächst ein paar skurrile Testadressen.

library(tidyverse)
# Erzeuge Tibble mit skurrilen Adressen
Orte <- tribble(
  ~Strasse, ~PLZ, ~Ort,
  "Beamtenlaufbahn", 24103, "Kiel",
  "Bremsweg", 19057, "Schwerin",
  "Zäher Wille", 68305, "Mannheim",
  "Ameisenstraße", 04249, "Leipzig",
  "Am Schmerzenmösle", 78464, "Allmannsdorf",
  "Unter Fettenhennen", 50667, "Köln",
  "Im Himmel", 58285, "Gevelsberg",
  "Unterer Fauler Pelz", 69117, "Heidelberg",
  "Seidenes Strümpfchen", 34117, "Kassel",
  "Im Sack", 27321, "Thedinghausen",
  "Rutschbahn", 20146, "Hamburg",
  "Zornige Ameise", 45134, "Essen",
  "Mafiastraße", 47249, "Duisburg"
)

Hilfsfunktion

Jetzt benötigen wir eine kleine Hilfsfunktion, mit welcher wir die Adressen in Längen- und Breitenangaben (longitude, latitude) umwandeln können. Hier hat Dimitry Kisler eine funktionierende Variante vorgestellt. Die Funktion heisst nominatim_osm() und nutzt die API von http://nominatim.openstreetmap.org/.

## geocoding function using OSM Nominatim API
## details: http://wiki.openstreetmap.org/wiki/Nominatim
## made by: D.Kisler 

nominatim_osm <- function(address = NULL)
{
  if(suppressWarnings(is.null(address)))
    return(data.frame())
  tryCatch(
    d <- jsonlite::fromJSON( 
      gsub('\\@addr\\@', gsub('\\s+', '\\%20', address), 
           'http://nominatim.openstreetmap.org/search/@addr@?format=json&addressdetails=0&limit=1')
    ), error = function(c) return(data.frame())
  )
  if(length(d) == 0) return(data.frame())
  return(data.frame(lon = as.numeric(d$lon), lat = as.numeric(d$lat)))
}

Die Funktion nimmt die vollständige Adresse als Charakter entgegen. Also binden wir die Adressdaten zu jeweils einem Adress-String zusammen.

### ziehe die Adressen
Adressen <- Orte %>%
  unite("Adresse", Strasse:Ort, sep=" ") |> 
  pull(Adresse)

# Anschauen
Adressen
 [1] "Beamtenlaufbahn 24103 Kiel"          
 [2] "Bremsweg 19057 Schwerin"             
 [3] "Zäher Wille 68305 Mannheim"          
 [4] "Ameisenstraße 4249 Leipzig"          
 [5] "Am Schmerzenmösle 78464 Allmannsdorf"
 [6] "Unter Fettenhennen 50667 Köln"       
 [7] "Im Himmel 58285 Gevelsberg"          
 [8] "Unterer Fauler Pelz 69117 Heidelberg"
 [9] "Seidenes Strümpfchen 34117 Kassel"   
[10] "Im Sack 27321 Thedinghausen"         
[11] "Rutschbahn 20146 Hamburg"            
[12] "Zornige Ameise 45134 Essen"          
[13] "Mafiastraße 47249 Duisburg"          

Hole die Längen- und Breitenangaben der Adressen

Per lapply() können wir die Adressen auf unsere Funktion loslassen.

### Hole die Koordinaten von allen Adressen
Koordinaten <- suppressWarnings(lapply(Adressen, function(address) {
  #calling the nominatim OSM API
  api_output <- nominatim_osm(address)
  # if address has a typo or is not found, return NA
  if(nrow(api_output) == 0) { 
    api_output <- data.frame(lon=NA, lat=NA)
  }
  #return data.frame
  return(data.frame(Adresse = address, api_output))
}) %>%
  #stack the list output into data.frame
  bind_rows() %>% data.frame())

# schaue an
Koordinaten
                                Adresse       lon      lat
1            Beamtenlaufbahn 24103 Kiel 10.131968 54.32531
2               Bremsweg 19057 Schwerin 11.349682 53.64714
3            Zäher Wille 68305 Mannheim  8.493369 49.51984
4            Ameisenstraße 4249 Leipzig 12.320721 51.29433
5  Am Schmerzenmösle 78464 Allmannsdorf  9.197833 47.68228
6         Unter Fettenhennen 50667 Köln  6.956249 50.94143
7            Im Himmel 58285 Gevelsberg  7.334334 51.32348
8  Unterer Fauler Pelz 69117 Heidelberg  8.709759 49.41028
9     Seidenes Strümpfchen 34117 Kassel  9.498792 51.31495
10          Im Sack 27321 Thedinghausen  9.025481 52.95809
11             Rutschbahn 20146 Hamburg  9.983085 53.57055
12           Zornige Ameise 45134 Essen  7.056024 51.43018
13           Mafiastraße 47249 Duisburg  6.767938 51.37159

Erstelle den Kartenausschnitt

Jetzt erstellen wir uns einen Kartenausschnitt, der jeweils die kleinsten und größten Ausprägungen von lat und lon einschließt (plus etwas margin vom 0.05). Dies kann ein bisschen dauern…

# aktiviere OpenStreetMap
library(OpenStreetMap)
# get the map (this might take some time)
mymap <-openmap(c(min(Koordinaten$lat, na.rm=TRUE)-0.05, 
                  min(Koordinaten$lon, na.rm=TRUE)-0.05), 
                c(max(Koordinaten$lat, na.rm=TRUE)+0.05, 
                  max(Koordinaten$lon, na.rm=TRUE)+0.05), 
                #zoom=10,
                # other 'type' options are "osm", "bing", "stamen-toner",
                # "stamen-watercolor" "apple-iphoto", "skobbler";
                type = "osm", mergeTiles = TRUE)

Die Daten müssen auf das selbe Koordinatensystem transformiert werden. Auch dies kann ein bisschen dauern…

# project openstreetmap to alternate coordinate system (might also take some time)
mymap_coord <- openproj(mymap)

Plotte die Karte mit ggplot

Jetzt können wir ein ggplot()-Objekt der Karte erzeugen….

# create a ggplot2-Object of the map
mymap_plt <- OpenStreetMap::autoplot.OpenStreetMap(mymap_coord)

…und die Adresspunkte dort einfügen.

# add the city points
mymap_plt + 
  geom_point(data=Koordinaten, aes(x=lon, y=lat), 
             size=1, shape=13, color="red") +
  xlab("") + ylab("") + 
  ggtitle("Wohnorte der Kunden")

Kartentypen

Die Funktion openmap() kann verschiedene types erstellen. Die Hilfeseite zeigt alle Möglichkeiten an. Hier mal zum Vergleich der type apple-iphoto“…

## andere Kartenvariante
# get the map (this might take some time)
mymap2 <-openmap(c(min(Koordinaten$lat, na.rm=TRUE)-0.05, 
                  min(Koordinaten$lon, na.rm=TRUE)-0.05), 
                c(max(Koordinaten$lat, na.rm=TRUE)+0.05, 
                  max(Koordinaten$lon, na.rm=TRUE)+0.05), 
                #zoom=10,
                # other 'type' options are "osm", "bing", "stamen-toner",
                # "stamen-watercolor" "apple-iphoto", "skobbler";
                type = "apple-iphoto", mergeTiles = TRUE)
mymap_coord2 <- openproj(mymap2)
mymap_plt2 <- OpenStreetMap::autoplot.OpenStreetMap(mymap_coord2)
mymap_plt2 + 
  geom_point(data=Koordinaten, aes(x=lon, y=lat), 
             size=1, shape=13, color="red") +
  xlab("") + ylab("") + 
  ggtitle("Wohnorte der Kunden")

… und stamen-watercolor“…

## andere Kartenvariante
# get the map (this might take some time)
mymap3 <-openmap(c(min(Koordinaten$lat, na.rm=TRUE)-0.05, 
                  min(Koordinaten$lon, na.rm=TRUE)-0.05), 
                c(max(Koordinaten$lat, na.rm=TRUE)+0.05, 
                  max(Koordinaten$lon, na.rm=TRUE)+0.05), 
                #zoom=10,
                # other 'type' options are "osm", "bing", "stamen-toner",
                # "stamen-watercolor" "apple-iphoto", "skobbler";
                type = "stamen-watercolor", mergeTiles = TRUE)
mymap_coord3 <- openproj(mymap3)
mymap_plt3 <- OpenStreetMap::autoplot.OpenStreetMap(mymap_coord3)
mymap_plt3 + 
  geom_point(data=Koordinaten, aes(x=lon, y=lat), 
             size=1, shape=13, color="red") +
  xlab("") + ylab("") + 
  ggtitle("Wohnorte der Kunden")

Weblinks

Mozilla hat Firefox Translations 1.2.0 veröffentlicht. Dabei handelt es sich um eine Übersetzungsfunktion für Websites, welche im Gegensatz zu Übersetzern wie Google Translate vollständig ohne Online-Komponente auskommt. Ein Highlight der neuen Version ist die Möglichkeit der freien Text-Übersetzung.

Was ist Firefox Translations?

Im Rahmen des von der Europäischen Union geförderten Bergamot-Projekts hatte Mozilla gemeinsam mit der University of Edinburgh (Schottland), der University of Tartu (Estland), der University of Sheffield (England) sowie der Charles University (Tschechien) zusammengearbeitet, um eine vollständig clientseitige Funktion zur maschinellen Übersetzung von Websites für den Browser zu entwickeln. Das bedeutet, dass die Übersetzung vollständig im Browser geschieht und keine zu übersetzenden Inhalte an einen Datenriesen wie Google oder Microsoft übermittelt werden müssen.

Download Firefox Translations

Die Neuerungen von Firefox Translations 1.2.0

Kompatibilität mit neuen Firefox-Versionen

Das Wichtigste zuerst: Firefox Translations 1.2.0 hat notwendige Anpassungen der Kompatibilität erhalten, einerseits um seit Firefox 107 auftretende Darstellungsprobleme zu beheben, andererseits damit Firefox Translations in Firefox 109 und höher überhaupt noch bedient werden kann.

Firefox Translations unterstützt jetzt freie Text-Übersetzungen

Bislang konnte Firefox Translations nur vollständige Websites übersetzen. Nach dem Update auf Firefox Translations 1.2.0 erscheint eine zusätzliche Schaltfläche in der Symbolleiste, über welche der Nutzer die Möglichkeit hat, beliebige Texte aus einer beliebigen in eine andere beliebige von Firefox Translations unterstützte Sprache zu übersetzen.

Firefox Translations 1.2.0

Änderbare Ziel-Sprache für Website-Übersetzung

Während die Original-Sprache einer Website, sollte diese nicht automatisch richtig erkannt worden sein, bereits über die Übersetzungsleiste geändert werden konnte, war die Zielsprache einer Übersetzung bisher immer fest die bevorzugte in den Firefox-Einstellungen hinterlegte Content-Sprache. Jetzt kann auch die Ziel-Sprache über ein Auswahlfeld verändert werden, falls man mal eine Website in eine andere Sprache übersetzen möchte.

Original-Version der Website anzeigen

Eine neue Schaltfläche erlaubt nach der Übersetzung die Anzeige des originalen Inhalts, wobei diese Schaltfläche de facto nur die Website neu lädt. Hier wäre für ein zukünftiges Update eine Lösung wie in TranslateLocally wünschenswert, was die Orignal-Version anzeigen kann, ohne die Website neu zu laden.

Sonstige Neuerungen von Firefox Translations 1.2.0

Man sieht jetzt auch nach einer Übersetzung, aus welcher Sprache in welche Sprache eine Website übersetzt worden ist.

Eine neue Option, welche sich hinter der Einstellungs-Schaltfläche in der Übersetzungsleiste befindet, kann aktiviert werden, damit die Übersetzungsleiste nicht mehr automatisch auf jeder Website erscheint, welche nicht der bevorzugten Content-Sprache entspricht. Auch wenn diese Option aktiviert ist, kann immer noch jederzeit die Übersetzungsleiste über das entsprechende Symbol in der Adresseleiste aktiviert werden.

Bisher hat sich nach einem Update der Erweiterung automatisch ein Tab mit einer Auflistung der Neuerungen des Updates geöffnet. Diese Funktion ist nun in den Einstellungen der Erweiterung ein- und ausschaltbar und standardmäßig deaktiviert.

Dazu kamen noch weitere Korrekturen und Verbesserungen unter der Haube.

Der Beitrag Firefox Translations 1.2.0 bringt freie Text-Übersetzung erschien zuerst auf soeren-hentzschel.at.

25. November 2022

TranslateLocally ist wie Firefox Translations aus dem Bergamot-Projekt der Europäischen Union hervorgegangen. Mit dem neuesten Update können auch Formular-Eingabe in die Original-Sprache der Website übersetzt werden.

Bergamot, Firefox Translations, TranslateLocally?

Im Rahmen des von der Europäischen Union geförderten Bergamot-Projekts hatte Mozilla gemeinsam mit der University of Edinburgh (Schottland), der University of Tartu (Estland), der University of Sheffield (England) sowie der Charles University (Tschechien) zusammengearbeitet, um eine vollständig clientseitige Funktion zur maschinellen Übersetzung von Websites für den Browser zu entwickeln. Das bedeutet, dass die Übersetzung vollständig im Browser geschieht und keine zu übersetzenden Inhalte an einen Datenriesen wie Google oder Microsoft übermittelt werden müssen.

Neben dem daraus entstandenen Firefox Translations gibt es mit TranslateLocally noch eine weitere Firefox-Erweiterung, welche einige Gemeinsamkeiten mit Firefox Translations aufweist, aber auch ein paar Unterschiede. Anfang des Monats hatte ich TranslateLocally in einem eigenen Artikel ausführlich vorgestellt, inklusive Vergleich mit Firefox Translations.

Download TranslateLocally für Firefox

TranslateLocally kann jetzt Formular-Eingaben übersetzen

Ein Unterschied war, dass bislang nur Firefox Translations Formular-Eingaben in Echtzeit aus der eigenen Sprache in die Original-Sprache der Website übersetzen konnte. Hier zieht TranslateLocally nun nach. Dazu muss mit der rechten Maustaste in ein Eingabefeld geklickt und anschließend „Type to translate…“ ausgewählt werden. Dann öffnet sich ein Eingabefeld, dessen Inhalt automatisch im ausgewählten Textfeld in die Original-Sprache der Website übersetzt wird. Die Übersetzung wiederum wird automatisch zurück übersetzt und in einem zweiten Bereich neben dem Feld angezeigt, in welchem die Eingabe erfolgte. Auf diese Weise kann der Benutzer eine einfache Selbstkontrolle der Übersetzung vornehmen.

TranslateLocally 0.8

Aber auch darüber hinaus bietet die neue Version von TranslateLocally Verbesserungen. So merkt sich die Erweiterung nun die bevorzugte Sprache, es gibt eine Dark Mode-Unterstützung, die webNavigation-Berechtigung wird nicht länger benötigt und es gab diverse Korrekturen und Verbesserungen unter der Haube.

Der Beitrag TranslateLocally 0.8 bringt Formular-Übersetzungen erschien zuerst auf soeren-hentzschel.at.

24. November 2022

Mozilla hat Version 2.11 seiner VPN-Clients für das Mozilla VPN veröffentlicht. Dieser Artikel beschreibt die Neuerungen vom Mozilla VPN 2.11.

Mit dem Mozilla VPN bietet Mozilla in Zusammenarbeit mit Mullvad sein eigenes Virtual Private Network an und verspricht neben einer sehr einfachen Bedienung eine durch das moderne und schlanke WireGuard-Protokoll schnelle Performance, Sicherheit sowie Privatsphäre: Weder werden Nutzungsdaten geloggt noch mit einer externen Analysefirma zusammengearbeitet, um Nutzungsprofile zu erstellen.

Jetzt Mozilla VPN nutzen

Die Neuerungen vom Mozilla VPN 2.11

Ist die Option aktiviert, beim Start des Gerätes automatisch eine Verbindung zum Mozilla VPN herzustellen, startet die App jetzt minimiert.

Dazu kommen wie immer diverse Fehlerbehebungen und Verbesserungen unter der Haube. Außerdem nennt Mozilla Performance-Verbesserungen.

Tipp: Mozilla VPN aktuell mit 20 Prozent Rabatt

Ein Tipp für alle Interessierten: Mit dem Rabatt-Code VPN20 bekommt man das Mozilla VPN derzeit mit 20 Prozent Rabatt für das erste Jahr.

Der Beitrag Mozilla VPN 2.11 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

23. November 2022

Mit Common Voice stellt Mozilla den weltweit größten öffentlichen Datensatz menschlicher Stimmen bereit – kostenlos und für jeden nutzbar. Mozilla hat Version 11.0 seines Datensatzes veröffentlicht. Außerdem lassen sich jetzt optional auch nur die Unterschiede zur vorherigen Version herunterladen.

Der Markt für Spracherkennung wird von den ganz großen Namen kommerzieller Anbieter dominiert: Amazon, Apple, Google, Microsoft. Darum hat Mozilla im Jahr 2017 das Projekt Common Voice gestartet. Mit Common Voice bietet Mozilla eine kostenlose Alternative an, zu der jeder beitragen kann und die jedem zur Verfügung steht. Damit möchte Mozilla Innovation und Wettbewerb in der Sprachtechnologie auf Basis von Maschinenlernen fördern.

Im vergangenen Jahr hat Mozilla Common Voice Investitionen von Nvidia, der Bill & Melinda Gates Foundation, der Deutschen Gesellschaft für Internationale Zusammenarbeit (GIZ) und dem britischen Außenministerium in Gesamthöhe von knapp fünf Millionen Dollar erhalten.

Mit dem vor kurzem veröffentlichten Common Voice Corpus 11.0 wächst der deutschsprachige Datensatz von 1.212 auf 1.234 Stunden an. Insgesamt deckt Mozilla Common Voice mit der neuen Version jetzt 100 Sprachen mit insgesamt 24.211 aufgenommenen Stunden ab, was Mozilla Common Voice zum vielfältigsten mehrsprachigen Sprachkorpus der Welt macht.

Außerdem ist es ab sofort möglich, anstelle vollständiger Datensätze für eine Sprache auch nur die Unterschiede zur vorherigen Version herunterzuladen. Wer also bereits den Common Voice Corpus 10.0 besitzt, muss mit dem sogenannten Delta Segment der Version 11.0 anstelle der ganzen 29,45 GB für Deutsch nur 424,4 MB herunterladen.

Zum Download der Mozilla Common Voice Datensätze

Der Beitrag Mozilla veröffentlicht Common Voice Corpus 11.0 und Delta-Downloads erschien zuerst auf soeren-hentzschel.at.