aard

joined 2 years ago
[–] aard@kyu.de 2 points 18 hours ago

Ist zu lange her als dass ich noch wuesste was der Grund fuer die Bedingung ist. Grund fuer die Schleife ist klar - in dem Fall ist =break= relativ elegant um fuer alle Fehlerfaelle als Fallback das bind an die Standardadresse zu bekommen.

[–] aard@kyu.de 3 points 18 hours ago

Das Debugging was da jetzt nicht tut hat laenger als 5 Minuten gedauert - nachdem aber klar war (und via strace bestaetigt) wie das bind ablaeuft war obiges zusammenwerfen wirklich nur 5 Minuten, da ist nix kompliziertes dran.

[–] aard@kyu.de 5 points 21 hours ago (5 children)

Gerade wenn man auch ein bisschen C kann, und mit den ueblichen Bibliotheksfunktionen halbwegs vertraut ist kann das sehr nuetzlich sein.

Vor etwa 15 Jahren wollten wir mit ein paar Freunden StarCraft spielen - das damals ziemlich gut via Wine lief. Problem: Wir waren alle in unterschiedlichen Laendern. Ein VPN fuer alle war schnell zusammengeworfen - aber dummerweise ist Starcraft nur fuer lokales Spielen ausgelegt, und bindet sich einfach nur an das erste Interface.

Dank LD_PRELOAD war das Problem 5 Minuten spaeter geloest:

// Use with SC_BIND_ADDR=addr LD_PRELOAD="/path/to/so" wine starcraft.exe

#define _GNU_SOURCE

#include <stdlib.h>
#include <netdb.h>
#include <dlfcn.h>
#include <string.h>
#include <unistd.h>

static inline int __write1(const char *s){
  write(1, s, strlen(s));
  return 0;
}

int (*libc_bind)(int fd, const struct sockaddr* add, socklen_t len);

void _init(void){
  libc_bind = dlsym(RTLD_NEXT, "bind");
}

int bind(int fd, const struct sockaddr* addr, socklen_t len) {
  struct addrinfo *bindres;
  struct addrinfo hints;

  char *sc_addr;

  int i;
  for (i=1; i==1; i++){
    if (addr->sa_family!=AF_INET)
      break;
    if ((sc_addr=getenv("SC_BIND_ADDR"))!=NULL){
      memset(&hints, 0, sizeof hints);
      hints.ai_flags = AI_PASSIVE;
      hints.ai_socktype = SOCK_STREAM;

      __write1("SC_BIND_ADDR is set.\nTrying to use ");
      __write1(sc_addr); __write1("\n");

      getaddrinfo(sc_addr, 0, &hints, &bindres);

      if (bindres->ai_family==AF_INET) {
        __write1("Overwriting bind\n");
        return libc_bind(fd, bindres->ai_addr, bindres->ai_addrlen);
      } else
        break;
    }
  }

  __write1("Using default bind address\n");
  return libc_bind(fd, addr, len);
}
[–] aard@kyu.de 1 points 22 hours ago

Ich selber halte das begleitende Trinken fuer nuetzlich um an Alkohol heranzufuehren und zu zeigen dass es eben kein Saufgelage sein muss. Solange wir als Gesellschaft Alkohol nicht komplett verbieten - und das ist eben unrealistisch - halte ich das fuer durchaus sinnvoll.

Statt das abzuschaffen wuerde ich eher Altersgrenzen ueberarbeiten - Alkohol ab 18 frei verkaeuflich, begleitendes Trinken ab 16. Ich hatte damals vor 16 ab und an ein Radler bekommen - Wein oder so noch nicht, und das muss auch wirklich nicht sein.

[–] aard@kyu.de 4 points 2 days ago

Du brauchst weiterhin die Oberstufe fuer Uni und was Berufsschulaehnliches fuer die die dann ne Ausbildung machen. Das Problem ist dass in Deutschland zu viele durch die Oberstufe gehen die das eigentlich gar nicht brauchen weil es inzwischen heisst dass man ohne Abi nix wird, und viele Firmen eben auch bei Ausbildungen entsprechend einstellen. Und wenn du dann halt die ganzen Leute in der Oberstufe hast die keine Vorbereitung auf Uni brauchen hast du dann halt die Diskussion wie man alle irgendwie durchzieht, mit dem Ergebnis aus dem Artikel.

[–] aard@kyu.de 18 points 2 days ago (4 children)

Kurzversion ist dass nach Entwertung von Haupt- und Realschulabschluessen jetzt als naechstes dann halt das Abitur nutzlos wird.

Es ist absoluter Bloedsinn dass so viele ueberhaupt Abitur machen - aber zum einen wird jetzt bei vielen Betrieben fuer eine Ausbildung die frueher fuer Haupt- oder Realschueler war ein Abitur gefordert, zum anderen wird immer noch zu frueh nach Schulzweig gefiltert, und spaetere Wechsel massiv durch Lehrer sabotiert.

Fuer viele Berufe waere ein Haut- oder Realschulabschluss mit Ausbilding das richtige, wenn denn an der Schule kompetent ausgebildet wuerde, und man spaet genug aufteilen wuerde damit die Kinder schon ne Ahnung haben was sie spaeter brauchen werden. Und die Moeglichkeit spaeter einfach Abi oder vergleichbare Qualifikationen nachzuholen, unter Anrechnung von anwendbarer Erfahrung.

Vermutlich waere eine Gesamtschule aktuell das beste Konzept, wo in bestimmten Klassen abgegangen werden kann fuer Spezialisierung. Das aktuelle dreigleisige Schulsystem in Deutschland duerfte inzwischen unrettbar sein.

[–] aard@kyu.de 9 points 2 days ago

Ich hatte vor paar Jahren am Rande ein bisschen mit dem Computerzeug in Autos zu tun, und daher direkt gesehen was da praktisch alle fuer Ranzsoftware basteln.

Ich war daher als wir letztes Jahr nen elektrischen Mercedes gekauft haben sehr positiv ueberrascht dass das Ding zum einen gut bedienbar, zum anderen auch extrem stabil ist.

[–] aard@kyu.de 10 points 2 days ago

Nebendran war gerade der Artikel zu Cum-Cum-Betrug. Nur zur Erinnerung - derartigen Betrug zu Verhindern, aufzuklaeren, und Gelder zurueckfordern wuerde nicht nur das Nischengebiet "Totalverweigerer" oder "Sozialbetrueger" komplett irrelevant machen - es wuerde das Buergergeld einmal komplett finanzieren.

Dementsprechend kann man sagen - wer solchen Bloedsinn ueber Buergergeld von sich gibt (und u.a. Merz gehoert anscheinend auch dazu) ist entweder absolut inkompetent und hat keine Ahnung von was er redet, oder ein asoziales Arschloch das ueber Leichen geht, und bei dem ich ein Zusammentreffen mit Luigi nicht mehr moralisch verwerflich finden koennte.

[–] aard@kyu.de 3 points 6 days ago

Einer der grossen Vorteile bei den E-Autos ist dass der Strom an der Autobahn halt nicht sauteuer ist - der Vorteil bei den Langstreckendiesel ist halt dass man erst daheim tankt, und Pausen ohne Tankstop macht.

Das war vor dem E-Auto mit dem Benziner immer etwas aergerlich, da kamen wir nicht ohne Tankstop komplett durch Detuschland durch, und hatten dann halt die Wahl von der Autobahn runterzufahren, und da was zu suchen, oder sauteuer an der Autobahn zu tanken.

Das ist jetzt mit dem E-Auto deutlich entspannter, und zumindest bisher machen wir noch laengere Pausen als wir zum laden braeuchten.

[–] aard@kyu.de 14 points 6 days ago

wenn ich auf der Autobahn ewig auf eine freie Ladesäule warten muss und sich meine 7 Stunden fahrt auf 10+ Stunden verlängert

Ich hatte in meinem anderen Kommentar den Bloedsinn erwaehnt den man von Deutschen immer zu E-Mobilitaet hoert. Obiges ist exakt das was ich meine.

Die Schnelladeinfrastruktur in Deutschland ist schon ziemlich gut ausgebaut, und dicht genug dass man halt ein oder zwei Stationen weiterfaehrt wenn da was komplett belegt ist. Das Problem in Deutschland ist eher die langsame Ladeinfrastruktur am Zielort - da gibts viel zu wenig, viel zu teure Tarife, und teilweise Blockiergebuehren, auch wenn man das Auto ueber Nacht stehen lassen will.

3+ Stunden extra bekommst du auch hoechstens hin wenn du mit einem reinen Stadtauto mit winzigem Akku Langstrecke fahren willst. In vielen Faellen werden die eh gemachten Pausen zum laden ausreichen, und nur wenn du es darauf anlegst da ohne Pause durchzuheizen wirst du 30-60 Minuten laenger brauchen.

[–] aard@kyu.de 13 points 6 days ago (2 children)

Du hast in der EU grob zwei Teile: Der eine hat kapiert dass Verbrenner tot sind, und wir mit einem "weiter so" einfach nur massive Probleme fuer die Zukunft schaffen, und der andere hat das entweder noch nicht kapiert, oder hofft dank massiver Propaganda gegen Elektroautos dass es eine neue Wundertechnik gibt.

Deutschland ist letzteres - es ist erschreckend wieviel Bloedsinn ich mir da von Deutschen, gerade auch welchen die eigentlich relativ aufgeschlossen und generell im Umweltschutzlager sind zu E-Autos anhoeren muss, wenn wir mal ueber das Thema sprechen.

Finnland ist ersteres, gab vor paar Jahren auch etwas Stimmungmache gegen E-Autos, aber im Gegensatz zu Deutschland ist das nicht haengengeblieben. Wir haben keine Foerderungen fuer privat genutzte Autos, und nur wenig fuer Firmenwagen - und ich kann seit letztem Sommer (wo auch wir auf elektrisch umgestellt haben) zusehen wie hier im Viertel die Umstellung stattfindet. Vor einem Jahr waren wegen der mangelnden Foerderung noch viele Hybride dabei, jetzt ist der Trend klar zu vollelektrisch.

Was ich damit sagen will: Wir sind langsam an einem Punkt wo du mit Anreizen nicht mehr viel erreichen kannst. Wer umstellen will hat das schon getan, bzw, plant gerade das zu tun. Klar wuerden die Foerderungen noch mitnehmen, aber du hast jetzt keine kritische Masse mehr die du damit ueberzeugen koenntest. Damit bleibt halt um den Rest umzustellen ein Verbot. Und das haette fuer 2025 sein sollen, hat man aber verschlafen.

 
 

This uses the tool support from gptel to let any LLM with tool support

  • search my bbdb for contact info
  • perform a bbdb search for all contacts with an anniversary field
  • use gnus to compose an email

plus a few helper functions to make it useful (like giving it the ability to query the current date).

The tool definition it used in the above screenshot are:

(defun gptel-tool--get-date ()
  "Return the current date"
  (format-time-string "%Y-%m-%d"))

(defun gptel-tool--compose-email (to-address subject text)
  "Open an email compose buffer '*new message*' to to-address with subject subject."
  (gnus-setup-message 'message (message-mail to-address subject))
  (insert (concat "\n" text)))

(defun gptel-tool--bbdb-search (name)
  "Search bbdb for NAME"
  (bbdb-search (bbdb-records) :name name))

(defun gptel-tool--bbdb-search-anniversary (anniversary-type)
  "Search bbdb for anniversary with ANNIVERSARY-TYPE"
  (let ((bbdb-default-xfield 'anniversary))
    (bbdb-search (bbdb-records) :xfield anniversary-type)))

And they get registered with the following code:

      (gptel-make-tool
       :function #'gptel-tool--get-date
       :name  "gptel-tool--get-date"
       :description "Use to get the current date in %Y-%m-%d format. After calling this tool, stop. Then continue fulfilling user's request."
       :category "emacs")

      (gptel-make-tool
       :function #'gptel-tool--compose-email
       :name  "gptel-tool--compose-email"
       :description "Open an email compose buffer and set subject, to-address and body. After calling this tool, stop. Then continue fulfilling user's request."
       :args (list '(:name "to-address"
                           :type string
                           :description "The address to send to")
                   '(:name "subject"
                           :type string
                           :description "The mail subject")
                   '(:name "body"
                           :type string
                           :description "The body text of the email"))
       :category "emacs")

      (gptel-make-tool
       :function #'gptel-tool--bbdb-search
       :name  "gptel-tool--bbdb-search"
       :description "Return a bbdb entry for name, or nil if not found. After calling this tool, stop. Then continue fulfilling user's request."
       :args (list '(:name "name"
                           :type string
                           :description "The name to search for"))
       :category "emacs")

      (gptel-make-tool
       :function #'gptel-tool--bbdb-search-anniversary
       :name  "gptel-tool--bbdb-search-anniversary"
       :description "Return or a specific anniversary type. After calling this tool, stop. Then continue fulfilling user's request."
       :args (list '(:name "anniversary-type"
                           :type string
                           :description "The anniversary to search for, for example 'birthday' for birthdays"))
       :category "emacs")
 
 

Screenshots of the UI changes on the Mac - in my opinion it is now just wasting a lot of screen estate for zero benefit.

On non-Macs they're adding an extra usability issue by hiding the top menu bar. I've gove back to 2.7.4 for now - fortunately I had my configuration in git.

Up to 2.7.4:

2.8.4:

 
 

Vor ein paar Tagen gabs hier ein Post zu Deutschlandwochen im Lidl in Italien, wo einer aus Schweden und ich mich ueber das Layout gewundert haben.

Jetzt sind auch hier Deutschlandwochen - und anscheinend wurde generell das Packungslayout geaendert - frueher war das alles "Alpenfest", jetzt "taste of deutschland".

Einige Produkte haben sich auch geaendert - z.b. waren die Apfel/Kirsch/Pflaumenkuchen frueher grosse runde Kuchen, jetzt sinds mehrere Teile.

Und Maultaschen sind wieder nicht dabei.

 

This is OpenDalle with img2img to make an existing picture into a futuristic city.

I took this picture at work a while ago, and it reminded me of cities with brutalist architecture we see in movies now and then, so I tried to get it made into one:

Other interesting attempts:

Forcing it to stay closer to the source made things look more like a highschool cardboard model:

 

I've finally found a bag which nicely fits almost everything I want to carry every day, and alos makes everything easily accessible - it is about the same size as what I used to carry, but now I no longer need to dump everything out to find what I neede, even with some lose parts still in there.

Contents:

Center:

  • 4 empty 64 microSD with SD adapter
  • one rpi 2040 with USB-A interface
  • headphones
  • bag of female jumper cables, with male-male adapters
  • a collection of the most used NFC keyfobs

Left side:

  • USB-C cable with attached USB-A adapter (USB3, missing on picture)
  • two USB-C to headphone adapters
  • satechi USB-C power meter
  • headphone splitter
  • USB-C to SATA adapter
  • USB-C smartcart reader
  • VGA to HDMI
  • USB Ninja (USB-C)
  • proxmark3 with battery/bt
  • collection of NFC magic cards

Right side:

  • USB-C hub with charging port
  • miniDP to HDMI
  • small USB-C dock
  • USB-C to whatever adapters (mini, micro, B, HDMI, ..)
  • Chameleon ultra
  • MPP pen
  • Ninja USB remote
  • USB-C to serial, connected via jumper cables

 

I recently had to add a Mac to my zoo of hardware I'm trying to do productive work on - which prompted me to clean up and document my environment variable importer, which had grown to platform specific functions with lots of code duplication.

On both Windows and MacOS I have properly configured shells with all relevant variables - so it makes sense to query them, instead of duplicating the logic how they create that configuration into Emacs.

On Linux that'd have worked too, but I also have the relevant variables in the systemd user session, and querying that is a tiny bit faster than launching a shell.

 

I was thinking about that when I was dropping my 6 year old off at some hobbies earlier - it's pretty much expected to have learned how to ride a bicycle before starting school, and it massively expands the area you can go to by yourself. When she went to school by bicycle she can easily make a detour via a shop to spend some pocket money before coming home, while by foot that'd be rather time consuming.

Quite a lot of friends from outside of Europe either can't ride a bicycle, or were learning it as adult after moving here, though.

edit: the high number of replies mentioning "swimming" made me realize that I had that filed as a basic skill pretty much everybody has - probably due to swimming lessons being a mandatory part of school education here.

 

My kids broke the flap on one of our sockets, so I had to look into getting them replaced.

Initially I tried to make them clip on to avoid having to remove the complete socket for future replacements, but that ended up either weakening the hinges too much, or making it impossible to attach it with the spring in the right position.

The gasket and O-ring are donated from the original flap:

The original flap and the first test prints to check if I got the dimensions right:

The whole thing is over on printables

view more: next ›