Iâm really bad at competitive programming. đ For todayâs #AdventOfCode puzzle, I spent an eternity trying to understand exactly what kind of bG9naWMgY2lyY3VpdAo= the puzzle input describes â I havenât done that in well over a decade, so I made little progress. I knew right from the start that SSBoYWQgdG8gbG9vayBmb3IgY3ljbGUgbGVuZ3RocyBhbmQgdGhlbiBmaW5kIHRoZSBMQ00K. It just didnât occur to me to just run my program on cGFydGlhbCBpbnB1dAo= and print those numbers. đ„Ž I only did that after over 4 hours (including time to debug my nasty C code) and then, boom, solution âŠ
Todayâs Advent of Code puzzle was rather easy (luckily), so I spent the day doing two other things:
- Explore VGA a bit: How to draw pixels on DOS all by yourself without a library in graphics mode 12h?
- Explose XMS a bit: How can I use more than 640 kB / 1 MB on DOS?
Both are ⊠quite awkward. đŹ For VGA, Iâll stick to using the Borland Graphics Interface for now. Mode 13h is great, all pixels are directly addressable â but itâs only 320x200. Mode 12h (640 x 480 with 16 colors) is pretty horrible to use with all the planes and what not.
As per this spec, Iâve written a small XMS example that uses 32 MB of memory:
https://movq.de/v/9ed329b401/xms.c
It works, but it appears the only way to make use of this memory is to copy data back and forth between conventional memory and extended memory. I donât know how useful that is going to be. đ€ But at least I know how it works now.

Je viens de dĂ©couvrir que dans #nethack, câest une mauvaise idĂ©e dâenchanter une armure dĂ©jĂ Ă +3. Me voilĂ Ă poil dans le donjon, je nâai plus de robe XD
Ă propos du remplacement de la pĂąte thermique, il semble que ce soit encore + efficace le lendemain, comme si elle avait besoin de âsĂ©cherâ. LĂ , je suis Ă 40°C en moyenne
Je viens de changer la pĂąte thermique sur le CPU de mon x250. obsdfreqd ne devient plus aussi indispensable : au lieu de tourner autour de 75°C, jâen suis Ă 55°C. Petit rappel du dimanche soir : pensez Ă mettre votre bios Ă jour, Ă nettoyer le ventilateur et Ă changer la pĂąte thermique. #openbsd
merci archive.org de proposer des #torrent pour les sets neogeo, câest tellement + rapide et fiable. Merci pour ce travail de mĂ©moire.
obsdfreqd is saving my computer from burning at 70°C #openbsd
@eapl.me@eapl.me I have many fond memories of Turbo pascal and Turbo C(++). They really did have a great help system. And debug tools! Its rare for language docs to be as approachable. QBasic was great. As was PHP docs when I first came into web.
It is a pleasure to work with the help system of Borlandâs Turbo C++ 3.0 on DOS. The descriptions are clear and concise. There are short and simple examples. Pretty much every help page is cross-refenced and those links can be clicked.
genially⊠Pourquoi faut-il payer pour avoir le contenu hors ligne. Que câest nul, câest autant de ressources qui ne serviront jamais pour lâĂ©ducation. Quelquâun saurait comment exporter un genially. Par exemple celui-ci : https://college.hachette-education.com/ressources/0002017238904/st6_2023_exploration_06/
Something weird is happening to the new APC UPS - it has an USB Type-C port - but it seems that the power supply is a bit wonky.
Commentaire du code pour un service de lecture over ssh (et je me la pĂšte au passage avec plein de liens #C ) : https://si3t.ch/log/2023-11-13-txtoverssh.c.txt gopher://si3t.ch/0/log/2023-11-13-txtoverssh.c.txt gemini://si3t.ch/log/2023-11-13-txtoverssh.c.txt http://6gvb6fzoxv72mtlpvr2fgj7ytpeggwuerdawspt24njlkwfxir6jncid.onion/log/2023-11-13-txtoverssh.c.txt gopher://of2w2p5f4hsslk63hmo6tid6r7inhlxuxviq4pb5cxg45enswpbrfjad.onion/0/log/2023-11-13-txtoverssh.c.txt gemini://b2khgkvb2wn4avjshjp63kknsjwikgwff5dwwydldia6qwf4kdnueyad.onion/log/2023-11-13-txtoverssh.c.txt ou encore âssh lire@si3t.châ numĂ©ro 45.
Je me suis remis au C, je mâamuse bien. Juste pour mâamuser, jâĂ©cris un truc dont le nom est âssholeâ đŒ
So Youtube rea really cracking down on Ad-blockers. The new popup is a warning saying you can watch 3 videos before you can watch no more. Not sure for how long. I guess my options are a) wait for the ad-blockers to catch-up b) pay for Youtube c) Stop using Youtube.
I think Iâm going with c) Stop using Youtube.
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)
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.
@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: https://movq.de/v/34a6d39baa/montage.jpg
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.
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.
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
@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
}
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
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! https://cdn.masto.host/pdxsocial/media_attachments/files/107/294/565/215/390/680/original/1d29c85c0aa4c9a5.png
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 ËĄá”á”á”