5°C le matin, 27°C lâaprĂšs-midi. Ce ÎT mâĂ©puise! đ« #climatechange
Elle: ChĂ©ri, jâai un problĂšme, je ne sais plus oĂč jâai mis un fichier ni comment il sâappelle. Par contre, je sais que dedans jâai Ă©crit âcahier du soirâ. Comment je peux faire? Moi > TâinquiĂšte poulette, un petit script find+odt2txt+grep et câest la fĂȘte. Elle > Ooooh merci tu es si fort et si beau ! (non)
Câest la petite bombe qui occupe donc cette rentrĂ©e universitaire. [âŠ] đ https://yom.li/notes/20230929122139 đ https://affordance.framasoft.org/2023/09/retailleau-et-le-fonds-de-roulement-des-universites-dans-la-farine/
Factorial Numbers
â Read more
Je suis Ă la recherche dâun script (#javascript) qui change la couleur du texte selon la nature grammaticale des mots. Câest censĂ© faciliter la lecture. Ăa vous dit quelque chose?
Trop content: jâai rĂ©ussi Ă changer la lampe du clignotant arriĂšre de ma voiture tout seul. Fallait dĂ©monter le phare. Câest tout bĂȘte, mais jâen suis fier :). (je dĂ©teste les voitures, ça coĂ»te cher et câest tout le temps en panne/vidange/CT
Experts warn âgreen growthâ in high income countries is not happening, call for âpost-growthâ climate policies
The emission reductions in the 11 high-income countries that have âdecoupledâ CO2 emissions from Gross Domestic Product (GDP) fall far short of the reductions that are necessary to limit global warming to 1.5°C or even just to âwell below 2°Câ and comply with international fairness principles, as required by the Paris Agreement, according to a paper published in The Lancet Planetary Health j ⊠â Read more
In case you havenât heard yet âŠ
https://groups.google.com/g/vim_announce/c/tWahca9zkt4
Bram Moolenaar has died. đą
there is E-L-E-C-T-R-I-C-I-T-Y in the sky.
there is E-L-E-C-T-R-I-C-I-T-Y in the sky.
@saidsaidwords@saidsaidwords Impression Ă la demande ? Le problĂšme, câest que pour ĂȘtre pertinent [âŠ] đ https://yom.li/notes/20230704182946
@movq@www.uninformativ.de
Doesnât even compile on my system, which is apparently broken:
> cc -Wall -Wextra -o win win.c $(pkg-config --cflags --libs gtk4)
cc: error: unrecognized argument in option â-mfpmath=sse -msse -msse2 -pthread -I/usr/include/gtk-4.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/graphene-1.0 -I/usr/lib/x86_64-linux-gnu/graphene-1.0/include -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgtk-4 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -lgdk_pixbuf-2.0 -lcairo-gobject -lcairo -lgraphene-1.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0â
cc: note: valid arguments to â-mfpmath=â are: 387 387+sse 387,sse both sse sse+387 sse,387
A GTK 4 application showing an empty window uses about 160 MB of RAM:
$ wget https://movq.de/v/138ab3e622/win.c
$ cc -Wall -Wextra -o win win.c $(pkg-config --cflags --libs gtk4)
$ ./win
It also takes several seconds to start on my machine because it is compiling shaders and initializing DRI (itâs faster on the second run, unless you happen to lose ~/.cache/mesa_shader_cache/). This might be a hint as to why itâs using so much memory: Thereâs obviously much more going on behind the scenes these days, not just a little bit of internal housekeeping and then creating a window.
Enjoying a day off, sitting on the balcony in some nice 18°C. đ
Random photos: https://movq.de/v/863829c893
Hereâs a massive image (5928x24180, 12 MB JPG) showing many of the planes that flew by: 
I have used Linux for most my life, and it hat been my daily driver for nearly two decades now. I have been bugged recently how when I exit the terminal buffer has not been cleared leaving whatever contents available to the next user to view.
a quick man zsh I found the STARTUP/SHUTDOWN FILES, and then a quick search on resetting the termianl buffer led me to <esc>c or printf "\033c".
In five minutes something which has bothered me for who knows how long was resolved. Just needed some motivation to figure it out.
I donât really like the term âgatekeepingâ, especially when itâs used to describe the general concept of a barrier to entry. The term âgatekeepingâ implies to me a âgatekeeperââa person A who is trying to control if person B can interact with person C. It implies active discrimination, perhaps even bigotry, when in reality the barrier might be a passive issue such as scarcity or inherent complexity. âGatekeepingâ seems an intentionally- and needlessly-charged term.
Je sais pas si câest un bug, mais sur mon Linux le serveur intĂ©grĂ© PHP (php -S localhost:8080) a [âŠ] đ https://yom.li/notes/20230527220410
According to the RedMonk programming language rankings from Jan 2023, Go and Scala are tied at 14th place đ
1 JavaScript
2 Python
3 Java
4 PHP
5 C#
6 CSS
7 TypeScript
7 C++
9 Ruby
10 C
11 Swift
12 Shell
12 R
14 Go
14 Scala
16 Objective-C
17 Kotlin
18 PowerShell
19 Rust
19 Dart

The weather all of a sudden went from chilly and wet to warm and pleasant. Itâs before 8am and itâs already 15°C and sunny.
Câest pas que Quantumania soit mauvais, câest que câest un Ă©pisode de 2h de Rick & Morty en fait. [âŠ] đ https://yom.li/notes/20230428022038
Today is nearly 18 C. snow pack is melting fast.
TrĂšs intĂ©ressant : Scott a utilisĂ© ChatGPT comme un copilote GitHub : il lui a donnĂ© lâalgo en anglais, et câest ChatGPT qui lui a codĂ© le script. Comme il le dit : les seules erreurs [âŠ] đ https://yom.li/notes/20230318113016 đ https://www.youtube.com/watch?v=jPhJbKBuNnA
So I looked up how to do it. It did not work. I Git cloned https://github.com/dgoulet/torsocks and followed the build instructions. I tried using it and got Looking up check.torproject.org1676676356 PERROR torsocks[16470]: socks5 libc connect: Connection refused (in socks5_connect() at socks5.c:202)
On the topic of Programming Languages and Telemetry. Iâm kind of curious⊠Do any of these programming language and their toolchains collect telemetry on their usage and effectively âspyâ on your development?
- Python
- C
- C++
- Java
- C#
- Visual Basic
- Javascript
- SQL
- Assembly Language
- PHP
pass on my machine:
@abucci@anthony.buc.ci So.. The issue is that its showing the password by default? Would making an alias to always include the -c help? We can probably engage Jason with a PR to enable a more hardened approach when desired. Iâve spoken to him before and is generally a pretty open to ideas.
I found this app that was created by the gopass author that does copy by default and has a tui or GUI mode https://github.com/cortex/ripasso
Iâd start by dumping Donatello, the D.C. And get some youngsters on that D line that can keep up.
@abucci@anthony.buc.ci did you know about the chip inside USB-C cables?

https://connectorsupplier.com/usb-type-c-what-you-need-to-know/
some groups have created their own chips that have hidden keyloggers that can phone home over network connections.
I made a thing. Its a multi password type checker. Using the PHC string format we can identify a password hashing format from the prefix $name$ and then dispatch the hashing or checking to its specific format.
I have found the issue with this very subtle bug.. the cache was returning a slice that would be mutated. The mutation involved appending an item and then sorting. because the returned slice is just a pointer+length the sort would modify the same memory.
CACHE Returned slice
original: [A B C D] [A B C D]
add: [A B C D] E [A B C D E]
sort: [E A B C] D [A B C D E]
fix found here:
https://git.mills.io/yarnsocial/yarn/pulls/1072
Hoy estuve diseñando una versiĂłn solitaria de Saint Poker â ïžâ„ïžâŁïžâŠïž.
No funciona tan mal, se siente divertida y te hace pensar de una manera diferente al Holdâem. Posiblemente sea la versiĂłn sobre la que hare un tutorial de C# y Unity. La versiĂłn Ultimate Poker para casino no la siento tan entretenida.
Me gustarĂa probar la versiĂłn multijugador. Siento que serĂĄ completamente diferente.
@prologic@twtxt.net Itâs called âcgodâ and it isnât written in C or Go? I want my money backâŠ
I also like Gopher more than Gemini. The problem Gemini is trying to solve is better solved by just writing static HTML 4.01 pages.
I was just reminded of this interpreter for an APL/J-like language by Arthur Whitney, the absolute weirdest bit of C code Iâve actually gotten something out of, and thought Iâd share: https://code.jsoftware.com/wiki/Essays/Incunabulum
ÂżVives en CanadĂĄ đšđŠ? Suena demasiado frio para mĂ đ„¶ Mi hermano querĂa ir allĂĄ a trabajar, y tengo algunos amigos, pero con mi frĂo de 8° C ya me estoy congelando aquĂ al norte de MĂ©xico!
ÂĄMe da mucha curiosidad como pueden soportar los autos tanto frĂo! Me toco manejar en la nieve en Minnesota, aunque quizĂĄs no es tanto como lo que soporta el tuyoâŠ
Estoy practicando Ruby con el libro Head First (muy recomendado), y me doy cuenta que es bastante diferente a otros lenguajes que conozco y me gustan como Python, JS, C#. Le estoy apostando sobre Go, PHP y otros. Espero sea buena decisiĂłn
(cont.)
Just to give some context on some of the components around the code structure.. I wrote this up around an earlier version of aggregate code. This generic bit simplifies things by removing the need of the Crud functions for each aggregate.
Domain ObjectsA domain object can be used as an aggregate by adding the event.AggregateRoot struct and finish implementing event.Aggregate. The AggregateRoot implements logic for adding events after they are either Raised by a command or Appended by the eventstore Load or service ApplyFn methods. It also tracks the uncommitted events that are saved using the eventstore Save method.
type User struct {
Identity string ```json:"identity"`
CreatedAt time.Time
event.AggregateRoot
}
// StreamID for the aggregate when stored or loaded from ES.
func (a *User) StreamID() string {
return "user-" + a.Identity
}
// ApplyEvent to the aggregate state.
func (a *User) ApplyEvent(lis ...event.Event) {
for _, e := range lis {
switch e := e.(type) {
case *UserCreated:
a.Identity = e.Identity
a.CreatedAt = e.EventMeta().CreatedDate
/* ... */
}
}
}
Events
Events are applied to the aggregate. They are defined by adding the event.Meta and implementing the getter/setters for event.Event
type UserCreated struct {
eventMeta event.Meta
Identity string
}
func (c *UserCreated) EventMeta() (m event.Meta) {
if c != nil {
m = c.eventMeta
}
return m
}
func (c *UserCreated) SetEventMeta(m event.Meta) {
if c != nil {
c.eventMeta = m
}
}
Reading Events from EventStore
With a domain object that implements the event.Aggregate the event store client can load events and apply them using the Load(ctx, agg) method.
// GetUser populates an user from event store.
func (rw *User) GetUser(ctx context.Context, userID string) (*domain.User, error) {
user := &domain.User{Identity: userID}
err := rw.es.Load(ctx, user)
if err != nil {
if err != nil {
if errors.Is(err, eventstore.ErrStreamNotFound) {
return user, ErrNotFound
}
return user, err
}
return nil, err
}
return user, err
}
OnX Commands
An OnX command will validate the state of the domain object can have the command performed on it. If it can be applied it raises the event using event.Raise() Otherwise it returns an error.
// OnCreate raises an UserCreated event to create the user.
// Note: The handler will check that the user does not already exsist.
func (a *User) OnCreate(identity string) error {
event.Raise(a, &UserCreated{Identity: identity})
return nil
}
// OnScored will attempt to score a task.
// If the task is not in a Created state it will fail.
func (a *Task) OnScored(taskID string, score int64, attributes Attributes) error {
if a.State != TaskStateCreated {
return fmt.Errorf("task expected created, got %s", a.State)
}
event.Raise(a, &TaskScored{TaskID: taskID, Attributes: attributes, Score: score})
return nil
}
Crud Operations for OnX Commands
The following functions in the aggregate service can be used to perform creation and updating of aggregates. The Update function will ensure the aggregate exists, where the Create is intended for non-existent aggregates. These can probably be combined into one function.
// Create is used when the stream does not yet exist.
func (rw *User) Create(
ctx context.Context,
identity string,
fn func(*domain.User) error,
) (*domain.User, error) {
session, err := rw.GetUser(ctx, identity)
if err != nil && !errors.Is(err, ErrNotFound) {
return nil, err
}
if err = fn(session); err != nil {
return nil, err
}
_, err = rw.es.Save(ctx, session)
return session, err
}
// Update is used when the stream already exists.
func (rw *User) Update(
ctx context.Context,
identity string,
fn func(*domain.User) error,
) (*domain.User, error) {
session, err := rw.GetUser(ctx, identity)
if err != nil {
return nil, err
}
if err = fn(session); err != nil {
return nil, err
}
_, err = rw.es.Save(ctx, session)
return session, err
}
The problem I have with the vast majority of social movements, left or right, is that they often lead to projection instead of introspection. Instead of person A trying to decide how person B can treat person C better, person A should try to decide how person A can treat person C better.
lolol actually, Iâm now building a quickânâdirty repl in C to test some mechanics, ended up implementing a small VM, adding sound asap, letâs see where that leads me #crow #raven #lang #coding #sound #livecoding #nyx
lolol actually, Iâm now building a quickânâdirty repl in C to test some mechanics, ended up implementing a small VM, adding sound asap, letâs see where that leads me #crow #raven #lang #coding #sound #livecoding #nyx
will have to implement some curl scanning for follows and mentions. gona be a nice chance to brush up my C-string-fu LoL
will have to implement some curl scanning for follows and mentions. gona be a nice chance to brush up my C-string-fu LoL
JavaScript : web apps
wut?! đł seriously?! đ€Šââïž
Python : small tools
Okay đ
Go: micro services
Umm bad generalization đ€Ł â Example yarnd that powers most of Yarn.social đ
Java: enterprise software
Yes! Oh gawd yes! đ€Ł And Javaâą needs to die a swift death!
C: crimes
Hmmm? đ€ I feel this one is going to have some backslash and/or go the way of âHackerâ being misconstrued to mean entirely different/incorrect things as is whatâs happening in the media (for various definitions of âmediaâ).
Use C do crime! 
a simple Makefile for forwarding internet to your local machine:
SSH_HOST=https://xuu.me
PRIV_KEY=~/.ssh/id_ed25519
forward:
LOCAL_PORT=$(HOST_PORT); sh -c "$(shell http --form POST $(SSH_HOST) pub=@$(PRIV_KEY).pub | grep ^ssh | head -1 | awk '{ print "ssh -T -p " $$4 " " $$5 " -R " $$7 " -i $(PRIV_KEY)" }')"
i think i know what to do. itâll make more sense after you play my c̶o̶n̶d̶i̶t̶i̶o̶n̶i̶n̶g̶ ̶p̶r̶o̶g̶r̶a̶m̶ video game
âçâ, I think. Anything above 7-bit ASCII wouldâve done it, though.
Look for overcast in DĂŒsseldorf with a temperature of 22.7°C. No rain is expected at this time. Expect a gentle breeze from the WestSouthWest.
@prologic@twtxt.net @jlj@twt.nfld.uk @movq@www.uninformativ.de
/p/tmp > git clone https://www.uninformativ.de/git/lariza.git Mon May 24 23:48:18 2021
Cloning into 'lariza'...
/p/tmp > tree lariza/ 12.5s îł Mon May 24 23:48:32 2021
lariza/
âââ BUGS
âââ CHANGES
âââ LICENSE
âââ Makefile
âââ PATCHES
âââ README
âââ browser.c
âââ man1
â  âââ lariza.1
â  âââ lariza.usage.1
âââ user-scripts
â  âââ hints.js
âââ we_adblock.c
2 directories, 11 files
you all understand the {c}{o}{n}{s}{e}{q}{u}{e}{n}{c}{e} of being ËĄá”á”á”
Iâm posting this from ~ an old 3G iPhone and have logged it into my tilde club shell a/c.