Ălisabeth Borne lance un nouveau (rantan)plan vĂ©lo !
Le temps passe vite mais pas assez pour tout oublier. Câest ainsi quâon se souvient dâil y a un peu plus dâun an, une certaine Elisabeth Borne lançait avec brio un premier plan vĂ©lo qui permettait enfin Ă chaque Français dâentrer â en pĂ©dalant â dans le XXIĂšme siĂšcle. Pour parfaire les rĂ©sultats dĂ©jĂ flamboyants [âŠ] â Read more
Réforme des retraites ou rafistolage de circonstances ?
Mais puisquâon vous dit que Macron, câest Le Grand RĂ©formateur ! Puisquâon vous dit quâil nâa pas arrĂȘtĂ© de rĂ©former, dâaffĂ»ter avec habiletĂ© la France pour la prochaine dĂ©cennie ! Les petits dĂ©rapages budgĂ©taires nây changeront rien : les rĂ©formes sont sur des rails, elles passeront. Quoi quâil en coĂ»te. Câest sans doute dans cet esprit que lâactuel [âŠ] â Read more
Ăconomisez, Ă©conomisez, Ă©conomisez, il en restera bien quelque chose !
Le gouvernement est un petit malin et comme dâhabitude, il a tout prĂ©vu : alors mĂȘme que les tempĂ©ratures extĂ©rieures ne sont pas encore problĂ©matiques, il sent bien que les prochaines semaines pourraient poser quelques soucis. Câest pour cela quâil a dĂ©pĂȘchĂ© la plus affĂ»tĂ©e de ses membres pour lancer une belle campagne de propag dâinformation [âŠ] â Read more
Le plan se dĂ©roule comme prĂ©vu, câest-Ă -dire mal pour le peuple
Comme le disait rĂ©guliĂšrement Hannibal Smith, il nây a rien de tel quâun plan qui se dĂ©roule sans accrocs et celui qui consiste Ă transformer Ă grands coups de pieds au derriĂšre la riche sociĂ©tĂ© occidentale en sociĂ©tĂ© pauvre et dĂ©sorganisĂ©e semble porter ses fruits : ça se transforme de plus en plus. Dans cette « grande [âŠ] â Read more
Lâabsolue nĂ©cessitĂ© de la peur
Alors que lâautomne nâest mĂȘme pas encore entamĂ©, tout le monde semble vouloir parler dĂ©jĂ dâhiver. Ă commencer bien sĂ»r par nos Ă©lites qui nous rappellent, par leur incroyable talent prĂ©visionniste, que gouverner câest prĂ©voir, vous allez voir ce que vous allez voir. Dâailleurs, on a vu : ayant su prĂ©voir â avec un brio inĂ©galĂ© [âŠ] â Read more
Une presse française lùche et paresseuse
Ah, finalement, quâil est doux dâĂȘtre journaliste en France dans un journal de rĂ©vĂ©rence ! Jadis, câĂ©tait un travail fatigant, voire stressant et parfois mĂȘme risqué : il fallait aller chercher lâinformation directement sur le terrain et la corroborer le carnet de notes Ă la main. Certains Ă©vĂ©nements pouvaient impliquer de mettre sa vie en danger ; et [âŠ] â Read more
Câest la rentrĂ©e, alors faites confiance au gouvernement !
VoilĂ , câest dit ! Cet hiver sera rude : on va se cailler les miches mais finalement, cela permettra Ă tous de prendre de bonnes rĂ©solutions sur le chemin de la SobriĂ©tĂ© ĂnergĂ©tique, de goĂ»ter au plaisir des douches froides, des repas crus et des longs trajets en vĂ©lo sous la pluie, la neige et les missiles [âŠ] â Read more
Linux, Alternative OS, & Retro Computing News - Aug 27, 2022
Linuxâs birthday, Windows 95âs birthday, NetBSD, Zelda 3 in C++, & new Dell Linux laptop â Read more
PEP 697: C API for Extending Opaque Types
Add limited C API for extending types whose struct is opaque, by allowing code to only deal with data specific to a particular (sub)class. â Read more
(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
}
Just testing my new fancy twtwt client written in C
Scratch? Python? C? Kernighan on Languages for Kids Coding - Computerphile â Read more
âwe looked at how damaging the journey of overshooting the 2°C temperature target would be,
[âŠ]
The results suggest that a temporary overshoot would cause waves of irreversible extinctions and lasting damage to tens of thousands of speciesâ
https://theconversation.com/climate-crisis-even-temporarily-overshooting-2-c-would-cause-permanent-damage-to-earths-species-185929?utm_source=twitter&utm_medium=bylinetwitterbutton
âwe looked at how damaging the journey of overshooting the 2°C temperature target would ⊠â Read more
Went on a hike this evening and brought my camera along. The 26°C felt much nicer than yesterdayâs 33°C. I perfectly met a mate who also wanted to go for a quick walk, just like we planned it. The first half hour we went together and then I parted for the longer route to the local mountain. The sunset was absolutely brilliant, but the aftermath turned out to be very boring.

Photo 9 shows the entrance to a wasp nest next to the bench in the previous take. The greenery blocks most the view, though. Several individuals took off and returned. But it wasnât too crowded. Nothing like at a typical honey bee hive at this point in time
What I found quite strange, there was quite a lot of smell of dead meat and butyric acid in the air. Hello hot summer. Both in the forest as well as in the village. I think I noticed those nasty odors at six or seven different places. Never experienced that before. Not to thaaat extent.
Pour une poignée de semaines
Ah sapristi, câĂ©tait trop beau pour durer ! Mais câĂ©tait prĂ©visible, cela arrive tous les ans Ă la mĂȘme Ă©poque : des *ÂŁ*#{] de vacances. Il est temps pour moi de mettre ce blog en pause pour quelques semaines, et laisser tomber lâactualitĂ© et son commentaire : compte-tenu du rythme dâenfer que les politiciens actuels nous font subir, [âŠ] â Read more
Mais que fait Obélix ?
Par Edmond DantĂšs Depuis plusieurs annĂ©es, les discussions de fin de soirĂ©e ont pris des allures de dĂ©briefing mĂ©dical dans un centre de soins palliatifs. On ne refait plus le monde, on regarde comment il meurt. Parfois, ça ressemble Ă une discussion entre experts analysant une malfaçon de charpente industrielle. Lâun soutient que câest telle [âŠ] â Read more
France : le dĂ©litement sâaccĂ©lĂšre
Chaque jour qui passe â et Ă plus forte raison lorsque câest un jour de forte chaleur â est une ode, que dis-je, un poĂšme raffinĂ© Ă lâorganisation minutĂ©e et cadencĂ©e de nos infrastructures de transport, notamment en Ăle-de-France et en particulier Ă Paris. Il ne se passe pas une journĂ©e sans quâon doive louer [âŠ] â Read more
I just read that on average we get about 108 liters of rain per square meter in July. This year it has only been 6 liters so far. I truly hope that we get some heavy rain later this evening. But looking at the forecast I reckon it will only be a few drops, if at all. Itâs supposed to get less and less with each day and even hour I look at the weather report. :-( Terrible 35°C at the moment. BwĂ€h!
Enumclaw â Cowboy Bepop
Another John C. Peterson joint. Enumclawâs Save the Baby is out October 14th on Luminelle. Pre-order the limited gatefold stonewashed vinyl here.
Continue reading⊠â Read more
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.
@prologic@twtxt.net Thatâs an even cooler slider, thanks! @mckinley@twtxt.net Iâm also on the fence of changing my current background:

(44°C, what the heck!)
@off_grid_living@twtxt.net Beautiful! We melted at humid 34°C yesterday, it was awful.
Cette si discrĂšte colĂšre batave
DĂ©cidĂ©ment, la presse grand public choisit ses sujets et sans prendre beaucoup de risques, on peut dĂ©jĂ parier que les prochains jours verront se dĂ©velopper une titraille toute en finesse sur le thĂšme du rĂ©chauffement climatique et de lâabomination que constituent de fortes chaleurs en plein mois de juillet. Câest pratique, cela permet dâĂ©viter consciencieusement [âŠ] â Read more
https://beej.us/guide/bgc/html/split/index.html Beejâs Guide to C programming
@kt84@twtxt.net This is beautiful! Iâd like to trade our temperatures from tomorrow on. Approaching and then exceeding 30°C here. 22°C today were alright.
My mate and I spontaneously decided to go for a longer tour today in 29°C heat. We ended up hiking 23 km in 4:30 hours. I had two liters of mineral water in my backpack and we bought a bottle of cherry limonade each on the way in. In the end we opted for pear limo at the same self-service fridge. What a great invention these small vending machines and self-service huts are! In Germany shops are closed on Sundays, so we would have needed to find an open restaurant (plenty didnât survive Corona) with some detours.
It was my first time on that particular terrain. We went through some beautiful and quaint forest paths with scenic views. I forgot to put my SD card back into my camera, so no photos until my mate will send me his.
Now my feet a cooling off in a bucket of cold water. Superb.
Yesterday, we had a heavy thunderstorm in the evening. At first it wasnât too bad, just thunder in the distance and then a few drops of rain for at most five minutes. That was it. Alright, I thought, itâs over, let me call a mate and walk to the dairy farm. The heavy clouds looked awesome, a bit threatening but mostly harmless and just beautiful. We decided on a small detour to the home made ice cream vending machine and got ourselves some expensive, but very yummy pineapple/mint, yoghurt and raspberry/basil tubs. Mint was super strong, had to eat three spoons of some other flavors to actually taste it. A few spoons in and then the thunder rolled in from nowhere. So we quickly headed for the dairy farm while eating our ice creams. Half way there the sky floodgates opened and we took cover under a tree at the local playground. A minute later we decided to climb up the slide tower, because it had a proper roof. A tiny bit of hail cam down, but nothing serious.
About 15-20 minutes the rain stopped and the thunder and lighning rolled past. So we continued our journey and I finally filled my two one liter bottles successfully. Every now and then it drizzled a little bit through the forest. We reached our homes and a couple minutes later rain hit again. Thunder and lighning went crazy. The sky lit up every few seconds and this continued through half of the night.
Right after I hung up to meet my mate, another mate called and reported a few villages north of us they experienced hail sized a bit under golf balls. But he luckily managed to get the car in the underground carpark in time.
Today, it rained the whole morning. This was great since the temperatures stayed below 20°C, so my walk was a real joy. Itâs going to get close to 30°C tomorrow, though, gnarf, örks, bwĂ€h. :-(

GitHub enables the development of functional safety applications by adding support for coding standards AUTOSAR C++ and CERT C++
GitHub is excited to announce the release of CodeQL queries that implement the standards CERT C++ and AUTOSAR C++. These queries can aid developers looking to demonstrate ISO 26262 Part 6 process compliance. â Read more
https://github.com/jflaherty/ptrtut13 pointers and arrays in C
https://www.youtube.com/watch?v=ZbRQWmTIHkI Watching âC from scratchâ ep 23
https://www.youtube.com/watch?v=F-Ow6-uH6Mc Watching âC from scratchâ ep 22
Enumclaw announce debut album <i>Save the Baby</i> + share âJimmy Neutronâ video
Tacoma band Enumclaw officially announce their Gabe Wax-produced debut album Save the Baby with soaring, heartfelt new jam "Jimmy Neutron". Video directed by John C. Peterson. Save the Baby is out this fall on Luminelle, pre-order the limited stonewashed vinyl gatefold edition here⊠[Continue readingâŠ](https://www.gorillavsbear.net/enumclaw-announce-debut-album-sav ⊠â Read more
https://www.youtube.com/watch?v=bAwLRYQDhao Watching âC from scratchâ ep 21
Erlang Solutions: Modern Software Engineering Principles for Fintechs by Daniel Pilon at SumUp
Daniel Pilon is a Software Engineering Manager at SumUp. Since 2007 he has worked across several industries before arriving in the fintech space. He has experience in many programming languages, such as C#, Java and JavaScript but since discovering Elixir and the power of functional programming a few years ago, he hasnât looked back.
Right now he is building SumUp Bank, a complete digital banking solution ⊠â Read more
https://codeahoy.com/learn/cprogramming/toc/ programming and data structures in C
https://www.youtube.com/watch?v=R_uZMQLopOY watching âC from scratchâ ep 20
https://www.youtube.com/watch?v=yklkgcjCKEk watching âC from scratchâ ep 19
Labor Wins â Read more
https://www.youtube.com/watch?v=WLOBzZRk0-U watching âC from scratchâ ep 18
https://www.youtube.com/watch?v=J5r-r5Wp3M0 watching âC from scratchâ ep 16
https://www.youtube.com/watch?v=CXQmSxQMHwI watching âC from scratchâ ep 14
https://www.youtube.com/watch?v=UxEFLfOriUc watching âC from scratchâ ep 13
https://www.youtube.com/watch?v=za-6-LFI7Hc watching âC from scratchâ ep 12
https://www.youtube.com/watch?v=3X5m0PSXLjE watching âC from scratchâ ep 0xb
https://www.youtube.com/watch?v=Y9FXE7d1WvY watching âC from scratchâ ep 0xa
https://www.youtube.com/watch?v=sjMu3_djryM watching âC from scratchâ ep 8
https://www.youtube.com/watch?v=cPv3O1BQC6E watching âC from scratchâ ep 7
Monerotopia Presentation and Website News
Just a note that within two hours (11AM NY time), my edited Monerotopia presentation with slides and all will be premiering here on the Monero Talk channel on YouTube.
I did already do an extended commentary and explanation of my talk here on my PeerTube channel, and I might put this an the edited talk onto my YouTube channel if I feel like it. You shou ⊠â Read more