aard

joined 2 years ago
[–] aard@kyu.de 0 points 13 hours ago (1 children)

Gibt es irgendwelche Evidenz, dass das nicht so ist?

Hatte ich doch geschrieben - ich habe diverse Tools die mich etwa 2-3 Wochen Arbeit gekoestet haetten, und ich so in knapp unter einer Woche gebaut habe. Mit Aufarbeiten des Codes damit er wartbar ist - fuer Wegwerftools ist das etwa ein Tag. Weitere Entwicklung danach mach ich manuell, da taugt das nicht fuer, unter anderem wegen fehlendem Codeverstaendnis fuer das was er generiert hat. Hauptarbeit ist auch das so zu lenken dass wartbarer Code rauskommt.

Ergebnis haengt auch sehr stark von der Sprache ab - ich hatte mit Abstand die besten Ergebnisse mit elisp (und mir da auch diverse Sachen gebastelt fuer die ich sonst keine Zeit gehabt haette). Das hilft da deutlich dass es durch den lisp-interpreter gute Fehlermeldungen gibt, und die eingebaute Dokumentation exzellent ist. Da die Welt wohl leider nicht auf Emacs umsteigen wird ist das allerdings fuer die meisten Leute wohl eher nicht relevant.

[–] aard@kyu.de 0 points 14 hours ago

So wie ich test driven development erlebt habe ging es darum die Tests vor der Implementation zu entwickeln - das hatte nichts mit unsolidem Konzept zu tun. Das war bei Programmierern eher ungeliebt weil das Gegenteil erforderlich war: Sie muessten sich darueber Gedanken machen wie der Code aussehen soll bevor sie den taetsaechlichen Code schreiben um dafuer sinnvolle Tests zu bauen. Das wurde oft als "das sollten doch Architekten machen" gesehen, "ich leg einfach los und das wird dann irgendwann".

[–] aard@kyu.de 0 points 14 hours ago (4 children)

Ich beschreibe hier lediglich meine eigenen Erfahrungen - ich halte nicht viel davon Dinge blind zu hassen ohne sich das naeher angeschaut zu haben. I spiele seit etwa drei Jahren mit LLMs, hauptsaechlich auf lokaler Hardware. Die letzten Monate kamen Claude credits dazu weil es fuer bestimmte Probleme tatsaechlich Sinn gemacht hat.

Mein Hauptproblem mit LLMs ist der massive Energieaufwand, vor allem fuer Training - da sollte reguliert werden dass das zwingend erneuerbare Energien sein muessen (und zwar dafuer neu gebaut, nicht bestehende), und entsprechende Strafzoelle auf Benutzung von LLMs ausserhalb von EU wo wir nicht regulieren koennen. Das naechste ist dass der aktuelle Hype zum einen eine unnoetige Investitionsblase ist, zum anderen dann ohne Nachzudenken ueberall LLMs eingebaut werden, ohne dass verstanden wird zu welchem Zweck, oder auch wie das Fehlerverhalten ist. Zu Fehlerverhalten bei Codegenerierung habe ich oben ja was geschrieben - ich hab bisher grob 100EUR an Claude Credits verbrannt einfach nur um zu beobachten wie das Ding versucht weiterzumachen wenn es steckenbleibt (tl;dr: in dem Fall ist es praktisch immer besser das von Hand zu machen - teilweise ist es klar billiger, und ansonsten wird ziemlich sicher der erzeugte Code scheisse sein, bzw, deutlich zu viel neu schreiben).

Ich gehe davon aus dass wir langfristig mit LLMs arbeiten werden - aber sicher >95% der aktuellen Einsatzzwecke ein Platzen der Investitionsblase nicht ueberleben werden, aus einer Kombination von "das war von Anfang an doof" und "nachdem die jetzt tatsaechliche Kosten bezahlt haben wollen ist das zu teuer". Ich gehe auch nicht davon aus dass bei Bezug auf Code wir eine Verbesserung ueber die 10k-20k LOC sehen werden - auch um das zu erreichen steigt die Koordinationsarbeit vom Menschen um die relevanten Informationen im Context Window zu halten, und ein Vorhalten von nennenswert groesseren Context Windows wuerde das zu sehr verteuern.

Ich wuerde darauf tippen dass generell das Generieren von Code mit Ende der Blase deutlich weniger werden wird - das duerfte sich dann nur noch bei Modellen lohnen die man lokal laufen lassen kann. Bei Reverse Engineering und aehnlichen Analysen wuerde ich erwarten dass das weiterhin viel genutzt wird - da sind heute schon lokale Modelle recht nuetzlich.

[–] aard@kyu.de 1 points 19 hours ago (16 children)

Ich sehe vor allem bei kleinen, klar abgegrenzten Projekten einen Vorteil - Dinge die man in 10-20k Code machen kann. Danach bekommt das LLM auch massiv Probleme, und macht zu viel Duplizierung von Code - ab der Schwelle etwas ist es fast immer schneller ein Problem selber zu beheben.

Auch um da hinzukommen braucht es recht viel Anleitung - das ist praktisch wie wenn man einen Berufsanfaenger anleitet der alle Patternbooks auswendig gelernt hat, aber nicht so richtig versteht wie man das in eine funktionierende Anwendung zusammensetzt. Wirklich gute Erbebnisse bekommt man auch nur wenn man von Anfang an so arbeitet dass die KI ihren Code testen kann (wer schon laenger dabei ist wird sich an "test driven development" erinnern - die Methodik ist ideal mit KI). Aber auch da gibt es Ausreden ("ich hab den Test nicht kaputtgemacht, der hat noch nie funktioniert"), und oft genug Probleme die sich mit Erfahrung schneller (und eventuell billiger) loesen lassen als mit KI. Man sieht da recht schoen dass der erzeugte Code am Anfang oft nicht compiliert - ohne dass die KI selber Compilieren kann scheitert das schon daran. Und bei Problemen werden so lange Variationen durchprobiert bis das tut - was sehr schoen zeigt dass eben keinerlei Codeverstaendnis vorhanden ist.

Gerade bei existierenden Projekten fuehrt das dann dazu dass die vorgeschlagenen Aenderungen deutlich groesser sind als noetig - was fuer die Nachvollziehbarkeit spaeter ein Problem ist.

Wir machen als Firma viel um CI und Testautomatisierung - und haben da immer wieder Bedarf an spezialisierten und relativ kleinen Tools. Fuer den Spezialfall ist das ideal - das ist so Groessenordnung 20 EUR API-Credits und ein Tag Anleitung, gefolgt von 3-4 Tagen Code saubermachen gegenueber 2-3 Wochen komplett selber machen.

Ich koennte mir denken dass man in einer reinen Microservicesumgebung (sofern man die einzelnen Services bei 10-20k LOC halten kann) damit die Entwicklung deutlich beschleunigen kann - das trifft aber eben nur auf einen Bruchteil der Software da draussen zu.

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

I missed that she had that with her - that makes things even worse. Either he's a weapons grade moron, or he planned that trip to kill her.

[–] aard@kyu.de 9 points 2 days ago (1 children)

Helicopter rescue is a few thousand euros - and unless you have an insurance for that you have to pay that by yourself.

No idea if that was the case here - but it'd not be the first time that somebody refused rescue because of the cost.

Don't go into the alps without experience - and make sure you have proper insurance. If you're a member of the Alpenverein (as I am) you'd be covered - but probably also gained enough experience to not get stuck in such an entirely avoidable situation anyway.

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

This is a quite important discussion - the last years have seen an increase of cases where people needed to be rescued from situations they should not have gotten themselves in.

That includes school groups where teachers didn't bother to prepare, and people without experience following influencers route suggestions. I guess next step would be checking liability for those as well.

Properly equipped with a bivy bag that situation might have been survivable.

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

LastPass war wohl auch nur wegen dem Unterhaltungswert dabei? Wer da vor 10 Jahren den Hinweis dass man das nicht benutzt nicht bekommen hat dem ist auch nicht mehr zu helfen.

[–] aard@kyu.de 5 points 1 week ago (1 children)

Ging mir hier mehr um die Handhabung - das kam alles zu mir, noch im Zug, auf Initiative des Zugbegleiters.

Aehnliche Situation in Deutschland - lange Schlange vor dem Beschwerdeschalter, wo ich ich dann erst noch die Leute fragen durfte ob sie jetzt den Arsch offen haben den Schalter wegen "Feierabend" zumachen zu wollen waehrend der halbe Zug noch auf Hilfe wartet. Gefolgt von einer Diskussion ob ich wirklich ein Taxi bezahlt haben muss, ich koennte die geplante 30 Minuten Direktverbindung doch mit mehrmals Umsteigen innerhalb der naechsten 6+ Stunden auch noch hinbekommen (die haetten mich wild in der Gegend rumfahren lassen, bis dann die ersten Zuege zu meinem Zielort am naechsten Morgen wieder fahren).

[–] aard@kyu.de 25 points 1 week ago (4 children)

Mir ist das einmal in Finnland passiert dass wir so viel Verspaetung hatten dass an dem Tag keine Anschluesse mehr gehen. Der Zugbegleiter ist dann durch den Zug und hat in jedem Wagen nach betroffenen gefragt, die in Gruppen eingeteilt, und dann Bezahlkarten fuers Taxi zur Einmalnutzung ausgeheben.

Ich hatte Glueck - ich war der letzte, alle Taxen voll: Alleine gefahren, und daher da aehnliche Entfernung direkt zur Haustuer statt zum Bahnhof.

Wie das gehandhabt wurde war Welten von allen aehnlichen Problemen mit der DB entfernt.

[–] aard@kyu.de 1 points 1 week ago

Mail schreiben war tatsaechlich eine der ersten Sachen die ich bei der Emacsintegration gemacht habe, noch lange bevor die ganze aktuelle Automatisierungssache aufkam.

Gerade bei Deppen die zu bloed zum lesen sind ist das grossartig um eine Antwort zu schreiben die das Problem herablassend nochmal erklaert, gerade so dass es offensichtlich ist dass man die andere Seite fuer einen Idioten haelt, aber nicht genug dass man dafuer Probleme bekommt. ChatGPT ist richtig gut darin passiv-agressive Texte zu schreiben, und genau an den gewuenschten Level anzupassen, ohne dass mein Blutdruck hochgeht weil ich die Person muehsam von Hand beleidigen muss.

Und laenger als was ich schreiben wuerde wirds auch nicht wenn system prompt und prompt stimmen.

[–] aard@kyu.de 34 points 1 week ago (2 children)

Und vor paar Jahren wurd ich noch beschimpft als ich davor gewarnt habe dass die Daten von den Dingern langfristig bei den Ueberwachungsbehoerden landen.

Und dann wundern sich die Leute wenn wir keine Geduld mehr mit 90% der Bevoelkerung haben die jeden derartigen Scheiss nutzen, inclusive sehr vielen Leuten die es eigentlich besser wissen muessten.

 
 

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.

 

I'm currently in the process of taking over as maintainer for the emacs-keybindings addon for Firefox.

I've just published the first update in years, with changes including:

  • tested on Windows and Linux now
  • some functionality is now configurable: debug logging, custom new tab page, experimental features, modifier-less high level bindings
  • all keybindings are listed in the options settings page
  • M- keybindings are now also reachable via ESC
  • M-< and M-> was added for scrolling to top/bottom
  • introducing prefix key, currently only used for opening/closing of windows (C-u C-x C-f or C-u C-k)
  • search is introduced as experimental feature - currently it just highlights all matches
  • the extension now registers as browser action in preparation for additional features

Unfortunately a lot of things that used to work with the old XUL plugins few years back just don't work with the new APIs - and Firefox developers have been sitting on relevant bugs for 8 years or more without anything happening now - so this is probably close to the best we can have for now. In combination with setting editing keybindings either via Gnome settings or AHK it makes browsing almost bearable again.

view more: next ›