An NES emulator in <5000 bytes of C++: https://github.com/binji/smolnes
RT by @mind_booster: Dear public bodies, business, & politicians: “incremental change is no longer an option: broad-based economy-wide transformations are required to avoid closing the window of opportunity to limit global warming to well below 2°C, pref. 1.5°C. Every fraction of a degree matters.”
Dear public bodies, business, & politicians: “incremental change is no longer an option: broad-based economy-wide transformations are required to avoid closing the window of opportunity to limit global warming to w … ⌘ Read more
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
Lunduke’s Normal Computing News - Oct 19, 2022
Listen now (40 min) | Microsoft kills “Office”, iPads get USB-C, and Firefox wants to know your feelings. ⌘ Read more
https://indymotion.fr/c/el_jj/videos chaîne avec des vidéos de maths
“Para Portugal, […] seria necessário garantir uma redução de emissões de pelo menos 61% até 2030 relativamente aos níveis de 2005, em vez dos atuais 55% na Lei de bases do Clima, para alinhar o país com a meta de 1,5°C”
“Para Portugal, […] seria necessário garantir uma redução de emissões de pelo menos 61% até 2030 relativamente aos níveis de 2005, em vez dos atuais 55% na Lei de bases do Clima, para alinhar o país com a meta de 1,5°C”
[nitter.net/ZEROasts/status/1575415098352586760#m](https://nitter.n … ⌘ 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
(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.
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!
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.
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
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
https://www.youtube.com/watch?v=lq2_RNFYv2o watching “C from scratch” ep 6
https://www.youtube.com/watch?v=LgHFh7-Bzoc Watching “C from scratch” ep5
🙰 c
Nix 2.8.0 released
We’re pleased to announce the availability of Nix 2.8.0. It will be
available from NixOS -\
Getting Nix / NixOS.
Here are the release notes:
New experimental command:
nix fmt, which applies a
formatter defined by theformatter.<system></system>flake
output to the Nix expressions in a flake.Various Nix commands can now read expressions from standard input
using--file -.New experimental builtin function
builtins.fetchClosurethat c … ⌘ Read more
Richard Stallman - “The state of the Free Software movement” - April 13, 2022
Free Software founder has choice words for Ubuntu, Apple. Announces a manual for GNU C. ⌘ Read more
https://github.com/helderman/htpataic how to program a text adventure in C
second, there’s predictions. a prediction is Done when it’s made. you could add comments, explanations, models &c, but the prediction can be Done and stand there on its own. (there is a slight problem with the fact that predictions need to be updated over time, though, so there is some Piling there as well).