IRC Logs for #zfx


2021-11-23

05:23:49 Magister joined the channel
08:07:54 xq: moin
08:17:14 IceMichael: moin
08:25:25 Schrompf joined the channel
08:26:17 xq: moin Schrompf, IceMichael
08:26:25 Schrompf: hi
08:30:38 IceMichael: na ihr zwei
08:31:13 IceMichael: Kind hatte gestern zum ersten mal Koliken, haben wir aber nicht kapiert. Nach viel Gequengel und schließlich 15min Gekreische, das klar gesagt hat "ich hab Schmerzen", erstmal schön in die Notaufnahme
08:31:21 IceMichael: jetzt hab ich tierisch ein Rad ab, äh, bin gerädert ohne Ende
08:31:26 IceMichael: und bei euch so?
08:51:56 Schrompf: Jaja, man denkt immer sonstwas für Katastrophen, wenn die Kleinen brüllen, weil sie halt nicht differenzieren können und alles neu ist. Und dann stellt sich meist heraus, dass es von allein weggeht. Weißt Du halt vorher nicht
09:17:42 IceMichael: Schrompf: ja :( rennt man dann jedes mal in die Notaufnahme oder wie lange wartet man oder...?
09:31:58 Schrompf: Das weißt Du vorher nicht :-) Ne, normalerweise rückt die Notaufnahme-Grenze mit jedem Fall weiter raus. Gebrüll wegen Furz-Der-Quere erkennt man und streichelt man weg
09:32:01 Schrompf: irgendwann
09:33:09 Schrompf: wir waren zweimal wegen Verstopfung in der Notaufnahme, weil sie anfing zu kotzen, was wohl ein Symptom von tagelangem Nicht-Kacken sein soll. Das war aber schon später, noch zu Windelzeiten, aber nicht mehr im ersten Jahr, wo das noch "läuft", ohne dass die Kinder es merken
09:34:11 Schrompf: und wir waren einmal wegen Fieber >40 und einsetzenden Krämpfen, aber am Ende hat der Notarzt auch nix anderes gemacht als Ibu und Paracet im schnellen Wechsel reinzuhauen, bis das Fieber runterging
09:34:31 Schrompf: aber Mucki hat einen Stoffbären im Krankenwagen geschenkt bekommen :-)
09:35:32 Schrompf: ok, und einmal waren wir in der Notaufnahme nach dem Sturz vom Kindergarten-Klettergerüst, als plötzlich einsetzende Müdigkeit die "Hirnverletzung"-Synapsen der ausgebildeten Internistin im Haus getriggert hat
10:01:52 IceMichael: Schrompf: oh wow, danke für die Zusammenfassung, das ist echt gut zu wissen
10:02:08 IceMichael: und klingt nach einem "typischen" Werdegang :D
10:02:17 IceMichael: wobei Kotzen wegen Verstopfung auch nicht nett klingt...
10:02:34 IceMichael: wir haben gestern so ein Kümmelzäpfchen reingehauen, das hat die Windel zwar nicht gefüllt, aber irgendwie kam er dann zur Ruhe
10:03:37 IceMichael: ist natürlich auch geil, wenn man völlig aufgelöst ist, er zwar ruhig ist, aber man dann Angst hat, dass er aufwacht und wieder kreischt. Hat er nach 40min sogar gemacht, da standen mir echt die Haare zu Berge, weil wir da einfach komplett hilflos waren... Bauch war ja leer und Zäpfchen hatte gewirkt, aber... zum Glück war das einfach Hunger und dann schlief er und es kamen keine Kreischer mehr, puh
10:03:53 IceMichael: das war echt Krimi vom Feinsten, blanke Nerven garantiert :)
10:04:19 Schrompf: Ja, geht einem nahe, und gleichzeitig hast du keine anhaltspunkte, um zu helfen
10:24:34 xq: GRAH
10:24:47 xq: C++Builder + Windows 10 ist einfach nur widerlich
10:24:51 xq: und zwei beides für sich
10:25:06 xq: Dependency Walker ist quasi unbenutzbar auf Windows 10
10:25:39 IceMichael: mein Beileid, xq
10:25:58 xq: Dependency Walker braucht nämlich ca. 10 Minuten von "Laden" bis "wieder responsive"
10:26:01 Schrompf: bein Meileid, xq
10:26:09 IceMichael: hm, ihr seid doch nur wenige Coder und du vermutlich einer der Hauptcoder, ihr könntet ja wechseln. Oder zu viel technical debt?
10:26:16 xq: warum? rekursive dll dependencies
10:26:20 Schrompf: alles voll mit BCL?
10:26:25 xq: IceMichael: zu viel technical debt
10:26:32 xq: und nen sturen chef
10:26:43 IceMichael: ist dein Chef selbst ein Tech oder ein Sesselfurzer-Manager?
10:26:48 Schrompf: so, TechDebt fort
10:27:04 IceMichael: Schrompf: find ich gut, schreib ich in unsere best practices
10:28:01 Schrompf: ist aber nicht nachhaltig, kannst ja alles wieder herstellen. Aber das Gute bei git ist, dass das Scheißding so mühsam komplex unbedienbar ist, das die Leute sich aufm Weg dahin wahrscheinlich verzetteln
10:28:36 xq: IceMichael: er entwickelt halt seit > 20 Jahren mit C++Builder
10:28:49 xq: ich hätte gerne Qt5 im Einsatz
10:29:02 xq: aber das requirement "an kunden gehen nur single-file executables" macht das alles unnötig schwer
10:29:19 IceMichael: xq: ah, ein Zurückgebliebener, der außerhalb dieses Jobs nichts mehr finden würde? Der klassische "ich bin 50+ und keiner nimmt mich mehr, weil ich zu alt bin" (aber eigentlich hat er sich nur nicht mehr fortgebildet)?
10:29:31 xq: nein
10:29:39 xq: einer der fähigsten elektro-ingenineure, die ich kenne
10:29:41 Schrompf: überzeugungstäter?
10:29:45 xq:
10:29:54 IceMichael: wie kannst du so schnell diesen Pfeil produzieren?
10:30:02 xq: AltGr+Shift+U
10:30:11 xq: Hallø
10:30:15 IceMichael: ok, nix für mac
10:30:22 xq: 10×20
10:30:29 xq: linux-keymappings sind geil
10:30:37 xq: 4 layer an bindings
10:30:42 IceMichael: okay, dann ist er als E-Ingenieur eine Korephäe, nur eben als Coder nicht
10:31:07 xq: jo
10:31:51 Schrompf: er mag ja eine Konifäre sein, aber das entbindet einen doch nicht vom Weiterentwickeln.
10:32:01 xq: Schrompf: was ist die alternative?
10:32:07 xq: Qt selbst bauen?
10:32:15 Schrompf: C++ würd ich beibehalten, wenn ich mit Elektronik interagieren muss... oder sowas neumodisches wie Go oder Zig nehmen
10:32:19 Schrompf: klar
10:32:36 Schrompf: pull clang, make qt, be happy
10:32:41 xq: lol
10:33:00 Schrompf: oder unter windows halt wget wo-auch-immer-gerade-visual-studio-woh.net
10:33:06 xq: aber ja, vllt. sollte ich nochmal ein, zwei tage in statisches Qt investieren
10:33:32 Schrompf: ist schon kompliziert, aber auf dauer spart es allen zeit
10:33:42 xq: ja, denk ich auch
10:33:47 Schrompf: er hat ja dich als coder. und wenn er selber was anfassen will, kommt er da mit google auch schnell rein
10:34:25 xq: naja, er schreibt ja selbst firmenkritische software damit
10:34:37 xq: also BCB werden wir nicht los
10:35:16 IceMichael: hast du dieser Konnichiwa denn schon mal all die Vorteile von Qt und Nachteile von BCBCB aufgelistet? wieso hängt er so an dem Dings?
10:35:34 IceMichael: oder ist das echt nur die single-exe?
10:35:56 xq: single-exe ist massiv notwendig leider
10:36:03 IceMichael: ich mein, klar, refactoring ist Extraaufwand, aber wenn ihr danach dann schneller seid... außerdem würd ich ihm klarstellen, dass dein Risiko an einem Herzinfarkt zu erleiden, mit jedem weiteren BC-Tag steigt
10:36:08 xq: (btw, seit ich jammere läuft mein Dependency Walker)
10:36:26 xq: Ich würde ja am liebsten auf static dotnet umsteigen
10:36:31 xq: scheiß auf C++
10:37:52 xq: single executable ist halt notwendig, weil menschen dumm sind
10:39:13 IceMichael: dotnet ist nett, wie der Name schon sagt, ja. Hm und UI dann im Browser? Und Backend auch in C#?
10:41:06 xq: UI in Windows Forms
10:41:24 xq: Du musst folgendes erlauben:
10:41:40 xq: Du ziehst das Symbol vom Desktop auf einen USB-Stick
10:41:45 xq: und von dort auf einen anderen Computer
10:41:48 xq: und dann muss das immer noch gehen
10:42:13 xq: Dependency Walker ist *JETZT* fertig
10:45:30 IceMichael: Glückwunsch!
10:45:38 IceMichael: ja, ich hab die Idee von all-in-one exes verstanden :)
10:45:50 xq: ja, das ist vielen leuten nicht immer direkt klar
10:45:59 IceMichael: ich find das auch ne relativ heftige Anforderung
10:46:01 xq: vorallem viele enwickler glauben nicht an die dummheit des "User"
10:46:22 IceMichael: hm ja, das ist fatal
10:46:29 xq: IceMichael: ist am ende billiger als tausenden handwerkern erklären, warum sie jetzt auf montage 500km von zuhause weg stehen ohne internet und wie sie jetzt die anlage konfiguriert bekommen
10:46:53 IceMichael: ich überleg gerade, ob man mit dotnet auch so was wie In-Exe-Browser haben kann. Gut, ihr müsst das nicht für mac oder linux ausliefern können, aber cross-platform ist halt immer nice...
10:47:03 IceMichael: aber klar, WIndows Forms oder WPF oder wie die heißen sind optisch eigentlich am besten
10:47:09 xq: ach, noch eine anforderung: es muss einen wysiwig-editor geben
10:47:20 IceMichael: hm, da kenn ich jetzt euer Produkt nicht
10:47:23 xq: cross-platform ist scheißegal
10:47:34 xq: optik: scheißegal
10:47:51 xq: wysiwig für die devs
10:48:10 xq: IceMichael: wir haben so 50 kleine tools, die wir an diverse kunden shippen
10:50:14 IceMichael: aber Qt hat doch auch den Designer, reicht das nicht?
10:50:22 IceMichael: man kann halt nicht doppelklicken und in die Methode abspringen, aber...
10:50:45 IceMichael: mist, genau das wollen die vermutlich?
10:50:55 IceMichael: wie damals bei Visual Basic
10:51:03 IceMichael: und Delphi
10:52:12 xq: naja, damit können sie leben
10:52:20 xq: aber wie gesagt: erst mal qt selber bauen
11:00:07 xq: hm
11:00:10 xq: github actions *thinking*
11:00:20 xq: vllt. bekomm ich ja qt via actions gebaut
11:00:28 xq: dann kann ich da einfach nen tarball runterladen und gut
11:08:22 IceMichael: könnte sein, ja
11:08:34 IceMichael: github kann vspkg auch ganz okay, glaub ich, weiß nicht, ob qt da drin ist
11:08:43 xq: wahrscheinlich nicht statisch
11:12:09 xq: hm
11:12:14 xq: statischer build wäre natürlich generell nice
11:12:20 xq: dann kann ich nämlich Kristall auch statisch shippen :O
12:00:03 xq: oh
12:00:06 xq: "er baut was"
14:03:13 IceMichael: uuund uuuuuuund
14:03:20 IceMichael: baut immer noch oder Update, xq?
14:37:48 xq: EGL.h not found
14:37:51 xq: :(
14:41:34 xq: ich war zwischendurch auch mal weg
14:41:38 xq: therapie-sitzung
14:57:41 IceMichael: was für eine Therapie denn?
14:57:46 IceMichael: damn @ EGL.h
15:02:17 xq: wegen spritzenphobie
15:03:43 xq: EGL ist nen lösbares problem
15:23:51 xq: Schrompf: holy crap
15:24:06 xq: ich hab nen geiles implementation detail im zig compiler gefunden
15:24:23 xq: https://github.com/ziglang/zig/blob/master/src/type.zig#L16-L22
15:26:41 xq: Nutzt den Fakt aus, dass valide Pointer halt mal nicht kleiner 4096 sein können
15:59:10 IceMichael: xq: stark, dass du wegen der Spritzen was machst, Respekt
15:59:21 xq: was soll ich sonst machen? Sterben?
15:59:28 xq: kann aj den rest meines lebens nicht vor spritzen wegrennen
16:00:14 IceMichael: gibt sicher Leute, die das so machen und einfach vor den Problem wegrennen. Sich dem zu stellen erfordert eben Mut
16:00:27 IceMichael: ok, verstehe den Cite nicht :D tja
16:00:40 xq: welchen Cite?
16:01:34 IceMichael: Zig compiler
16:01:51 xq: Du weißt, warum nullpointer segfaulten?
16:22:28 IceMichael: vermutlich nicht, xq
16:22:43 xq: die page 0 im virtuellen speicher ist nicht gemapped
16:22:52 xq: wenn du dann darauf zugreifst, knallt es
16:23:00 xq: (interrupt page fault)
16:23:08 IceMichael: okay
16:23:21 xq: pages sind auf allen mir bekannten systemen mind. 4096 byte groß
16:23:40 xq: ergo sind alle adressen 0x000 … 0xFFF *garantiert* ungültig
16:24:15 xq: soweit klar?
16:24:34 IceMichael: hmmmmmmm, ne
16:24:52 IceMichael: ach so
16:25:04 xq: page 0 ist 4096 byte. 0x1000 sind auch 4096. damit ist alles kleinere in page 0
16:25:08 IceMichael: der Pagespeicher liegt immer bei Page-Zahl * 4096, damit das Finden der Pagevalues basierend auf der Nr superschnell geht?
16:25:19 xq: genau
16:25:29 IceMichael: ok, dann ist's klar
16:25:49 xq: ergo sind die ersten 4096 adressen ungültig :D
16:27:01 xq: was hier gemacht wird: du speicherst werte, wo du für einige werte nur "existenz" brauchst
16:27:07 xq: aber für andere zusätzliche daten
16:28:19 IceMichael: ok, ist etwas abstrakt, aber ja, versteh ich grob
16:28:38 IceMichael: in Fall 1 werden die nicht "dereferenziert", das macht man eben für < 4096
16:29:20 IceMichael: wie das exploitet wird ist mir jetzt nur noch nicht ganz klar..
16:29:32 xq: okay, beispiel
16:29:41 IceMichael: und muss los, ABER ich les das wie immer garantiert später
16:29:45 xq: (falscher link oben, gibt nen besseren)
16:29:45 IceMichael: bouncer klappt ja (lasse laptop aber eh an)
16:30:05 xq: ich erklär mal
16:30:28 xq: du speicherst eine Referenz auf Datentyp T
16:30:46 xq: T kann jetzt void, int, float, oder aber eine Struktur oder ein Pointer sein
16:31:02 xq: für eine Struktur müssen wir jetzt aber alle felder hinterlegen
16:31:11 xq: das braucht also auch wieder speicher
16:31:28 xq: jetzt können wir also unsere Typreferenz auf eine basisklasse "Type" machen und alle Typen davon ablegen
16:31:36 xq: das ist aber scheiße, weil viele heap allocations
16:31:55 xq: also speichern wir jetzt lieber eine tagged union ab
16:32:08 xq: das ist geil, weil continuous memory, wenn wir ein array von typen haben
16:32:31 xq: problem ist jetzt: scheiße, jeder datenwert ist jetzt aber 64 byte groß, weil wir ja komplexe datentypen wie strukturen haben
16:33:00 xq: dementsprechend ist jetzt die frage, wie man das löst
16:33:39 xq: und die antwort hierauf ist: du schaust dir die daten, die du speicherst, genauer an, und entscheidest dich dann für ein optimales pattern für deinen use case
16:33:54 xq: in Zig gibt es viele Datentypen, die frei von Konfiguration sind
16:34:01 xq: ergo brauchen wir für die nur ein enum
16:34:10 xq: aber wir haben auch strukturen, enums, pointer, ...
16:34:35 xq: hier wird jetzt der fakt ausgenutzt, dass wir weniger als 4096 einzigartige "zero-conf-typen" haben
16:34:47 xq: und wir speichern jetzt statt einem pointer auf den typ den typ einfach direkt im pointer
16:35:08 xq: und komplexere typen klatschen wir in eine Memory Arena und speichern dann den pointer darauf
16:35:27 xq: damit braucht *jeder* Datentyp mind. die Größe eines Pointers
16:35:47 xq: aber sehr viele Typereferenzen brauchen schlicht niemals mehr speicher als das
16:35:58 xq: und nur strukturen und komplexe typen sind dann halt ein pointer auf die tatsächlichen inhalte
16:36:15 xq: aber sowas wie u8, bool, void, f32, … kann ohne zusätzliche daten gespeichert werden
16:36:25 xq: ergo: programm goes zoooooooom weil extrem kleiner RAM-Footprint
16:38:25 Magister joined the channel
16:42:26 Essex20 joined the channel
16:42:38 Essex20: Hello
16:43:03 Essex20: Schrompf ist indirekt dran schuld, dass ich mich grad eingeloggt hab :D
16:43:20 Essex20: https://www.gog.com/forum/general/whats_your_favorite_zombie_game/post15
16:50:09 Schrompf: oh wow, danke
18:40:33 Essex20: Keine Ursache :-)
19:09:41 IceMichael: xq: okay, danke fuer die ausfuehrliche Erklaerung. Zig hat also Reflections, wenn Zeiger auf Typen gehen, eh? Aber ja, Typzeiger hab ich dann kapiert :)
19:10:15 IceMichael: du meintest, du haettest nen besseren Link?
19:11:56 IceMichael: eigentlich einfach die Funktion drunter wohl, oder? da sieht man ja die ganzen Typen
19:16:51 IceMichael: anyways, hab das Hauptkonzept kapiert, denk ich, danke fuer die Er/Sieklaerung
19:27:24 xq: > Zig hat also Reflections, wenn Zeiger auf Typen gehen, eh? Aber ja, Typzeiger hab ich dann kapiert :)
19:27:29 xq: nein, das ist nur quellcode aus dem compiler ;)
19:27:35 xq: für den ist ein datentyp halt auch nur ne struct D
19:51:49 xq: IceMichael: ich muss mir mal den Vortrag von Andrew zu Data Oriented Design angucken
19:52:02 xq: wenn man das hart durchzieht, ist das wohl echt nen krasser booster
20:12:52 IceMichael: koennte sein
20:18:31 xq: also effektiver data point vom zig compiler:
20:18:38 xq: 22% performance boost
20:32:00 xq: mir fällt grade auf, dass ich ja richtig gechillt ne vektorgrafik rendern kann :3
20:53:31 IceMichael: wie gechillt, wieso?
20:54:54 xq: naja, Dunstblick verwendet ja TVG als Vektorformat :)
20:55:03 xq: und ich hab praktischerweise ne Zig-Library dafür rumfahren *rofl*
20:55:36 xq: das heißt jetzt nur, dass ich bald besseren code für nen "TvgWriter" habe
20:55:43 xq: weil ich jetzt nen Wetter-Graph bauen will
20:55:53 xq: und ich werde wohl oder übel Resourcen-Updates implementieren müssen