ProcessOne: AI Bots Can’t Use WhatsApp Anymore. So… Who Are They Going to Talk To?
Meta just closed the gates on AI chatbots. I think this is an early warning.
Starting January 15, 2026, [WhatsApp will ban all third-party general-purpose AI chatbots from its platform](https://techcrunch.com/2025/10/18 … ⌘ Read more
No sex, drugs or dangerous stunts: Instagram limits teens to PG-13 content
Teenagers on the social media app will be restricted to seeing PG-13 content by default and won’t be able to change their settings without a parent’s permission, Meta has announced. ⌘ Read more
No sex, drugs or dangerous stunts: Instagram limits teens to PG-13 content
Teenagers on the social media app will be restricted to seeing PG-13 content by default and won’t be able to change their settings without a parent’s permission, Meta has announced. ⌘ Read more
No sex, drugs or dangerous stunts: Instagram limits teens to PG-13 content
Teenagers on the social media app will be restricted to seeing PG-13 content by default and won’t be able to change their settings without a parent’s permission, Meta has announced. ⌘ Read more
The women taking Meta to task after their baby loss
Several women say the pain of losing their babies was made worse by targeted advertising. ⌘ Read more
Wegen Meta: Apple Vision Air gestoppt - smarte Brille im Fokus
Apple verschiebt seine Prioritäten und will Meta beim Wettlauf um Smart Glasses einholen. Dafür soll ein anderes Modell gestoppt werden. ( Vision Pro, Apple)
Apple’s 2026 Smart Glasses: Five Key Features to Expect
Apple is working on a set of smart glasses to rival the Meta Ray-Bans, and now that Meta has debuted glasses that include a display, Apple wants to speed up development on its first-generation model. Work has stopped on the next Vision Pro so that Apple can prioritize getting the glasses to market.

- Accessible copy-code button
- “On this page” collapsible TOC
- RSS, sitemap, robots
- Archives, tags, tag cloud
- Draft support (hidden from lists/feeds)
- Open Graph (OG) & Twitter card meta (default image + per-post overrides)
- Ready-to-use 404 page
As well as custom routes (redirects, rewrites, etc) to support canonical URLs or redirecting old URLs as well as new zs external command capability itself that now lets you do things like:
$ zs newpost
to help kick-start the creation of a new post with all the right “stuff”™ ready to go and then pop open your $EEDITOR 🤞
Oi @claromes@claromes, acredito que você manja desses paranauês, dei umas buscas e não encontrei…
Queria saber se as fotos que as pessoas mandam pro Instagram mantém os metadados, se podem conter localização e tal… (desconfio que a Meta guarda a sua localização no momento da postagem e os metadados das fotos para os fins nefastos deles mas publicam uma foto com os metadados removidos, mas não consegui confirmar essa informação)
Se tivesse uma tabela pra eu mostrar pros meus alunos sobre quais serviços fazem o quê com os metadados das fotos ia ser lindo…
Maybe someone can explain this to me.
An #EU citizen trying to access Facebook today faces the following choices (see screenshots).
In there, they say that they are asking this again to comply with #EU rules, and yet the question - and the options to choose from - are the same they had in the past.
So, hm, how does this make them comply with something they weren’t complying before? What’s the detail I’m missing?
Ciência: a Europa precisa de chegar à neutralidade carbónica até 2035
Europa: só estamos disponíveis a propor fazer uma redução de 90% nas emissões e lá para 2040
Direita: vamos deixar a extrema-direita controlar esta agenda
Extrema-direita: hahaha, no way.
Obrigado a todos os envolvidos, this is fine.
Metas Europeias: “Os países da UE têm de poupar, em média, 1,5% por ano. A poupança de energia deve começar com 1,3% por ano até ao final de 2025”
Portugal: “Consumo de eletricidade em Portugal atingiu máximo histórico no primeiro semestre [de 2025]”
Fontes:
Francisco Ferreira da #ZERO:
“A União Europeia (UE) está a dizer adeus à ambição climática. Esta semana, em contraste com sinais evidentes de um clima em alteração com temperaturas recordes em toda a Europa, a Comissão Europeia apresentou, com meses de atraso, a meta climática para 2040, propondo uma redução de pelo menos 90% das emissões face a 1990. No entanto, esta meta inclui mecanismos de flexibilidade, como créditos de carbono internacionais e compensações intersectoriais, que enfraquecem a ambição necessária num momento crítico de agravamento da crise climática.
Este atraso compromete também as metais europeias para 2035 a aprovar na COP30 no Brasil no final deste ano e enfraquece a liderança global da UE ao sinalizar falta de determinação política. Estas flexibilidades inaceitáveis, pois permitem desresponsabilizar setores emissores e adiar a transição, ignorando recomendações científicas que apontavam para reduções entre 90% e 95% sem tais mecanismos. A proposta surge num contexto político adverso após as eleições europeias de 2024, com um recuo climático generalizado, tendo a Comissão optado por um compromisso frágil para evitar confrontos com governos menos ambiciosos, como os da Polónia e Hungria. Esta é uma oportunidade perdida de promover a liderança climática europeia.”
½
#Meta to the #EU: “the focus should be on creating a regulatory infrastructure that ensures any licence that is sufficiently permissive for the user is considered open source, rather than anointing specific licences as “open source”.”
Brilliant, sure, let’s ignore existing definitions and go with gut feeling (incidently, Meta has a gut feeling generator).
Meta: Milliarden-Investition in Scale AI in Planung
Laut internen Quellen soll sich Meta in Gesprächen mit Scale AI befinden, das Datensätze für KI-Training bereitstellt. ( Meta, KI)
KI-Rechenzentren: Meta kauft 20 Jahre lang “sauberen” Atomstrom
Für Training und Nutzung seiner KI-Systeme benötigt Meta viel Strom. Der Konzern setzt dabei auf “saubere” Kernenergie. ( KI, Wirtschaft)
Umgehung des Sandboxings: Meta und Yandex de-anonymisieren Android-Nutzer
Sicherheitsforscher decken eine Methode auf, mit der Meta und Yandex flüchtige Web-Identifikatoren in dauerhafte Nutzeridentitäten umgewandelt haben. ( Android, Browser)
Num evento a ser já aliciado para o próximo: o segundo dia da #WikiConPT começou com o anúncio da #GLAMWiki 2025, que vai acontecer em Lisboa:
Ollama 多模態引擎重磅升級:本地也能實現 “圖文對話” 的 AI 體驗
在大模型的發展過程中,文本理解已經逐步成熟,而多模態能力——即 “看圖說話”、“圖文結合理解”、“圖像 OCR 翻譯” 等——正成爲新一輪的核心能力。就在昨天,Ollama 宣佈其新一代多模態推理引擎全面上線,支持一系列領先的視覺多模態模型,讓 “本地 AI 也能看圖說話” 真正落地。這次升級,Ollama 一口氣支持了多個重要模型,包括:• Meta 的 Llama 4 Scout • G ⌘ Read more
Data is code
Meta: no Forth or concatenative tag, but in the future hopefully search will find it via this.
Mark Zuckerberg has a creepy new way to invade your privacy
The new Meta app promises to be a more “personalised” form of AI. It is really a more disturbing version of ChatGPT. ⌘ Read more
FTC v. Meta (The Case That Could Break Up Facebook)
How likely is it that Meta is found to be a Monopoly and gets broken up? ⌘ Read more
Pretend friends, real risks. Harming kids is now part of big tech’s business model
Meta boss Mark Zuckerberg said famously “move fast and break things”. But now it’s children and families who are being broken by the relentless thirst for big tech profit. ⌘ Read more
ProcessOne: Supporting XMPP Standard Foundation’s open letter to Meta for true interop
The XMPP Standards Foundation (XSF) has published an open letter to Meta, asking them to support … ⌘ Read more
Meta Rolls Out AI Assistant Across Europe
Meta has announced the rollout of its AI chatbot across Europe starting this week. The AI assistant will appear across WhatsApp, Facebook, Instagram, and Messenger platforms in 41 European and 21 overseas territories.
Meta AI launched in the United States in 2023, but the company paused a planned rollo … ⌘ Read more
The tell-all memoir Mark Zuckerberg tried to stop you reading
It’s hard to know whether the Facebook boss’ symbolic ways of currying favour with China, such as asking President Xi Jinping to name his unborn child, are more remarkable than Meta’s apparent plan to let the Communist Party snoop on users outside the country. ⌘ Read more
@prologic@twtxt.net huh interesting! yeah i was stumped for a bit i was like WHAT config.json file are these logs talking about…. but then it worked after i moved the old meta.json file lol!
@kat@yarn.girlonthemoon.xyz it was like…. meta.json was corrupt or well it was empty actually whatever idk. ended up moving that elsewhere temporarily, rebuilding the binary, restarting server… and it worked?!?!? shit was confusing
If we don’t keep insisting on simplify and “The beauty of twtxt is, you put one file on your server, done. One.”, then people should just use ActivityPub-based software like Mastodon, PixelFed, etc. which are getting a lot of attention and uses migrating to the fediverse from meta/x here in Denmark over the last couple of months.
For point 1 and others using the metadata tags. we have implemented them in yarnd as [lang=en][meta=data]
For point 1 and others using the metadata tags. we have implemented them in yarnd as [lang=en][meta=data]
oh cool @lyse@lyse.isobeef.org !! and thanks, got rid of that empty line. ATM I’m using twtxt very much in an experimental way, only manual editing or writing my tools. curious to see how it will evolve. #meta #twtxt
hey @lyse@lyse.isobeef.org I’ve seen your mention from uhhmmm 4months ago just now using my crawler -__-’ / curious to know, do you see my mention now? #meta #twtxt
Apple is ‘Ramping Up’ Work on a New Studio Display
Apple is “ramping up” work on a new Studio Display, according to Bloomberg’s Mark Gurman.
In his [Power On newsletter today](https://www.bloomberg.com/news/newsletters/2025-02-16/apple-and-meta-are-set-to-battle-over-new-area-humanoi … ⌘ Read more
New ‘HomePod’ Hub With 7-Inch Screen on Track to Launch This Year
Bloomberg’s Mark Gurman today said that a new HomePod-like smart home hub with a 7-inch screen remains on track to launch in 2025.
A conceptual render of Apple’s rumored smart home hub
Gurma … ⌘ Read more
EU Not Reassessing Apple and Google Antitrust Investigations, But New Administration Could Shift Priorities
The European Union is “reassessing” its investigations into big U.S. tech companies like Apple, Meta, and Google, claims Financial Times, though a spokesperson from the European Commission has denied that such a review is taking place.
 in the hands of Elon Musk, who gets crazier every day and hangs out too much with Donald Trump (and recommends a fascist party in Germany), and now Mark Zuckerberg with Meta (Facebook, Instagram, Threads) is also joining the group of friends around Trump and removing fact checks in the name of “free speech”. What could possibly go wrong? ⌘ Read more
Thousands of Australian Facebook users to share $50 million after privacy scandal
Meta has agreed to a record settlement with Australia’s information commissioner, ending years of legal proceedings over Facebook’s infamous Cambridge Analytica scandal. ⌘ Read more
Wealth of World’s Richest Has Doubled Over Past Decade
Julia Conley, Staff Writer - Common Dreams
_Stephan: Yet another fact shows that the United States has become a neo-medieval oligarchy. This was all done by the Republicans rigging the tax code to favor the rich grotesquely. Think about it: “The wealth of the four richest people in the U.S.—Tesla CEO Elon Musk, Amazon founder Jeff Bezos, Oracle co-founder Larry Ellison, and Meta CEO Mark Zuckerberg—has hit $1 tril … ⌘ Read more
On my blog: Five Years of Entropy Arbitrage https://john.colagioia.net/blog/2024/12/08/five-years.html #blog #celebration #meta
Every time you use ChatGPT, half a cup of water goes to waste
Tech giants including OpenAI, Meta and Google are being urged to tackle AI’s dirty secret – its massive power problem. ⌘ Read more
‘A cheap magic trick’: Amazon, Google, Meta accused of dodging Senate questions
ChatGPT, Google’s Gemini and Meta’s Llama should be deemed ‘high risk’, a Senate committee has found, with executives in the firing line for their appearances. ⌘ Read more
My next Fediverse migration?
I currently use GoToSocial (with my numeronym domain) next to my blog, but it always confuses me where to post what. That’s why I want to move to my blog as my sole Fediverse identity. But before that, I wanted to implement another Fediverse feature in GoBlog: support for the new fediverse:creator meta tag. ⌘ Read more
[ANN] [PROPOSAL] Add optional is_gift and txs parameter and create a new gift standard
There is currently no easy and safe standard way to gift Monero to people around you. It is possible to gift a wallet containing money. However, malicious people can use this to trick people into using the wallet they gifted them and steal the money after the recipient puts in more money, so this is unacceptable.
Link: https://github.com/monero-project/meta/issues/1100
detherminal (Gith … ⌘ Read more
avatar field has a #20240102 at the end: To trick yarnd into reloading it.
What if i want to delete avatar? Im deleted avatar meta field but still see avatar on twtxt.net
Apple May Launch First iPad-Like Smart Home Accessory Next Year
Apple could release an iPad-like smart home accessory based on its homeOS platform as early as next year, according to Bloomberg’s Mark Gurman.
Writing in his latest [Power On newsletter](https://www.bloomberg.com/news/newsletters/2024-09-29/meta-steps-up-pressure-on-apple-vision-with-orion-ar-glasses-and-cheaper-quest-3-m1 … ⌘ Read more
Mark Zuckerberg shows off ‘the most advanced glasses the world has ever seen’
Meta debuted its first pair of augmented reality glasses, a key step in chief executive officer Mark Zuckerberg’s goal of one day offering a hands-free alternative to the smartphone. ⌘ Read more
Meta Unveils ‘Orion’ Augmented Reality Glasses
Facebook parent company Meta today unveiled “the most advanced pair of AR glasses ever made,” called Orion. Meta claims Orion looks and feels like a regular pair of glasses, but with augmented reality capabilities.
The glasses have been in development for the last five years, and Meta describes them as lightweight and great for indoor and outdoor use. Unlike a VR heads … ⌘ Read more
Meta admits Australians cannot opt out of ‘predatory’ AI data scrape
Senators are calling for stronger privacy laws to give Facebook users the ability to block the company from using their posts to train its AI models, as users can in the EU. ⌘ Read more
EU Consumer Group Summarizes How Apple Fails to Comply With DMA
There are a number of ways that Apple, Google, Amazon, Meta, ByteDance, and Microsoft are failing to comply with the Digital Markets Act, according to an analysis published by the European Consumer Organization (BEUC). The BEUC advocates for consumer rights and provides guidance to European lawmakers.
How to Run Llama LLM on Mac, Locally
Llama is a powerful large language model (LLM) developed by Meta (yes, the same Meta that is Facebook), that is able to process and generate human-like text. It’s quite similar to ChatGPT, but what is unique about Llama is that you can run it locally, directly on your computer. With a little effort, you’ll be … Read More ⌘ Read more
Threads Gaining Support for Analytics, Scheduling Posts, Multiple Drafts and More
Threads, Meta’s social network that’s meant to rival X, today announced several new features that are available or coming soon. For creators, Threads is launching analytics for performance measurement.
Users can see view numbers, replies, reposts, an … ⌘ Read more
Impôt universel : les idées consternantes de Lucie Castets
Dans le méta-univers de la gauche, cette réalité parallèle rigolote dans laquelle le Barrage Républicain a permis de repousser les fascistes et les racistes dans les nimbes de l’Histoire, tout se déroule fort bien : un gouvernement a été nommé et, déjà, les premières politiques musclées se mettent en place. La proposition, hardie, n’a pas manqué […] ⌘ Read more
I admit I’ve always compromised on this way too much myself, always to this day having Facebook Messenger just to communicate in my families group chats. Sure I run it in a Work profile on my GrapheneOS phone that I can switch off at any time, I can completely cut it off from network access any time as well, I can have a lot of rudimentary control over it, I use it as sparingly as possible, but it doesn’t change the fact everytime I use it we’re funneling private convos through bloody Meta’s servers and trackers etc.
And having meta discussions about the protocol itself all day.
Facebook, Instagram are using your data – and you can’t opt out
If you’re one of the millions of Australians using Facebook or Instagram, Meta is using your data to train its AI – and unlike people in the European Union, you can’t stop them. ⌘ Read more
Open Source A.I. Definition to include Closed, Secret Data
The Open Source Initiative – backed by Microsoft, Amazon, Meta – is pushing for a “Closed” definition of “Open Source Artificial Intelligence.” More from The Lunduke Journal: http://lunduke.com ⌘ Read more
Is the Ray-Ban Meta mash-up worth putting on your face?
Meta and Ray-Ban’s smart glasses put cameras, microphones, speakers and a little bit of AI into an object you would probably be wearing anyway. ⌘ Read more
logs/blog: more poetry; garden/equipment: update computers, welcome obsidian; meta: update pubkey
@lyse@lyse.isobeef.org its a hierarchy key value format. I designed it for the network peering tools i use.. I can grant access to different parts of the tree to other users.. kinda like directory permissions. a basic example of the format is:
@namespace
# multi
# line
# comment
root :value
# example space comment
@namespace.name space-tag
# attribute comments
attribute attr-tag :value for attribute
# attribute with multiple
# lines of values
foo :bar
:bin
:baz
repeated :value1
repeated :value2
each @ starts the definition of a namespace kinda like [name] in ini format. It can have comments that show up before. then each attribute is key :value and can have their own # comment lines.
Values can be multi line.. and also repeated..
the namespaces and values can also have little meta data tags added to them.

the service can define webhooks/mqtt topics to be notified when the configs are updated. That way it can deploy the changes out when they are updated.
@lyse@lyse.isobeef.org its a hierarchy key value format. I designed it for the network peering tools i use.. I can grant access to different parts of the tree to other users.. kinda like directory permissions. a basic example of the format is:
@namespace
# multi
# line
# comment
root :value
# example space comment
@namespace.name space-tag
# attribute comments
attribute attr-tag :value for attribute
# attribute with multiple
# lines of values
foo :bar
:bin
:baz
repeated :value1
repeated :value2
each @ starts the definition of a namespace kinda like [name] in ini format. It can have comments that show up before. then each attribute is key :value and can have their own # comment lines.
Values can be multi line.. and also repeated..
the namespaces and values can also have little meta data tags added to them.

the service can define webhooks/mqtt topics to be notified when the configs are updated. That way it can deploy the changes out when they are updated.
meta: umm… call me Iris? (new key)
I’ve added myself to the registries at registry.twtxt.org and twtxt.tilde.institute. I wonder if there’s a list of registries. #meta
How to Delete a Threads Account Without Leaving Instagram
When Threads debuted from Meta (FaceBook), it was intricately linked to Instagram, and initially when you went to delete or deactivate a Threads account, it had the unfortunate side effect of also deleting the related Instagram account. But that is no longer the case. Now you can choose to delete a Threads account without impacting … [Read More](https://osxdaily.com/2023/12/31/how-to-delete-a-threads-account-without-le … ⌘ Read more
meta: it’s official - I am transgender, and this site now runs on FreeBSD and hydropower
@prologic@twtxt.net I only use it so that family that follow me can see the images I post.
I do not browse around and spend time there, just check what family and friends have posted.
But still - makes me mad that they put that tracking infront of a paywall like that.
Hate putting money in zuckerberg’s pocket.
Same with VR - you need a meta account to use the oculus.. and you get full screen notification inside the VR headset if you do not use that.. Luckily there is a trail going on in Norway now..
https://www.datatilsynet.no/en/news/aktuelle-nyheter-2023/meta-case-brought-to-the-european-level/
Did not expect anything less from meta. Pay or we will track you. Should be illegal.
@prologic@twtxt.net Perhaps we should add a meta flag to Twtxt to stop indexation by ChatGPT and consorts? I already use robots.txt for this.
Run Threads on Desktop with Mac, Windows PC, Linux
Threads, the social network microblogging Twitter/X competitor launched by Meta (Facebook), is typically thought of as a mobile only experience, with users having the Threads app on their iPhone or Android device. But, if you have a Mac, Windows PC, or Linux computer, and you want to use Threads on your desktop computer, you can … Read More ⌘ Read more
Norway has had it with Meta, threatens $100K fines for data violations.
so. if you join threads (meta’s new twitter clone) - then you cannot leave without nuking your instagram..
wanted to use my oculus to do some flightsimming on Friday, but now Meta forces you over to facebook. super annoying message that constantly pops up in the desktop client, but then after 10 minutes of flying they show the same message in fullscreen inside the VR glasses. so fuck them. I will try and get it to work on linux instead one day soon when I have time.
Metaverse Could Contribute Up To 2.4% of US GDP By 2035, Study Shows
A study commissioned by Meta has found that the metaverse could contribute around 2.4% to U.S. annual GDP by 2035, equating to as much as $760 billion. Reuters reports: The concept of the metaverse includes augmented and virtual reality technologies that allow users to immerse themselves in a virtual world or overlay information digitally on … ⌘ Read more
meta/now: finished Metroid Dread. 5 stars
RT by @mind_booster: No âmbito do 20º aniversário da Convenção de Salvaguarda do Património Cultural Imaterial, é amanhã lançada a campanha Wiki Loves Living Heritage. Vejam como assistir ao lançamento no link:
https://meta.wikimedia.org/wiki/Event:Wiki_Loves_Living_Heritage/Wiki_Loves_Living_Heritage_launch_event #Patrimonioimaterial #Portugal @cultura_pt
No âmbito do 20º aniversário da Convenção de Salvaguarda do Património Cultural Imaterial, é amanhã lançada a campanha Wiki Loves Living Heritage. Vejam … ⌘ Read more
RT by @mind_booster: ❗Breaking: Meta Tracking Tools unlawful
In a groundbreaking decision in one of noybs 101 complaints, the Austrian Data Protection Authority decided that the use of Facebook’s tracking pixel directly violates the GDPR: https://noyb.eu/en/austrian-dsb-meta-tracking-tools-illegal?mtc=tw
❗Breaking: Meta Tracking Tools unlawful
In a groundbreaking decision in one of noybs 101 complaints, the Austrian Data Protection Authority decided that the use of Facebook’s tracking pixel directly violates th … ⌘ Read more
** week notes **
I’ve been experimenting. I’ve been concocting a recipe for vegan kugel, and rediscovering little features and edges of my website I’d forgotten I baked in. Like chocolate chips hidden in an oatmeal raisin cookie.
One chip most recently re-discovered: support for per-page custom styles?! All I gotta do is include an optional bit of meta data, bespoke-css, that points to a style sheet. I may play with this feature more. I do love myself some css. I can tell exactly when in my life I added this feature because th … ⌘ Read more
**Ciência: os planos actuais não são suficientes para atingir as metas estabelecidas
Comissão Europeia: vamos ser ainda menos ambiciosos**
Ciência: os planos actuais não são suficientes para atingir as metas estabelecidas
Comissão Europeia: vamos ser ainda menos ambiciosos
nitter.net/ZEROasts/status/1625784479418818560#m ⌘ Read more
“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
(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
}
(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
}
malign prior as an idealized case of meta-optimization
content="width=device-width" to your viewport meta tag will help massively with scaling on different device widths.
Thanks for the feedback! This site was designed to look perfect on good old 800x600 monitors (I even left a comment next to the meta tag). Maybe I’ll add a mobile-friendly version someday :-) P.S. Nice try with SQL injection, haha. Do you have any plans for XSS attacks? :D
@win0err@kolesnikov.se I agree with @prologic@twtxt.net about the text size. Adding content="width=device-width" to your viewport meta tag will help massively with scaling on different device widths.
Eg. The first screenshot is the current site with a device width of 440px and the second is with the updated viewport meta tag.


Other than that, I like the aesthetic of it 😊 It gives me early-ish internet vibes, which I wasn’t online for (I’m a ‘90s baby) but I’ve seen some pretty early websites.
the right level for solving the hard problem of consciousness is within existing science/within philosophy/within meta- or pre-philosophy/needs a fully new paradigm of thought
Upgraded my Twtxt feed to 2022 with the twtxt.net meta-data extensions.
The Liminal Web: Mapping An Emergent Subculture Of Sensemakers, Meta-Theorists & Systems Poets ⌘ Read more
I think it is long due dropping Facebook (now Meta) from the S&P 500 index funds. As an owner of some, I really have a problem with it—and yes, I know there is little I can do but voice it everywhere I make noise online.
@prologic@twtxt.net the meta info on the top I added manually. it’s following what I have seen from some other twtxt feeds. the new parser will read them.
@prologic@twtxt.net the meta info on the top I added manually. it’s following what I have seen from some other twtxt feeds. the new parser will read them.
@lucidiot@tilde.town “nuclear realtor” I like this twtxt. [meta: I guess I’ll often just reply with “I like this” or , although perhaps liking could be a primitive. I’ll do it rarely enough to not clutter my timeline tho]
added a !meta page. this proof of concept integrates with the weewiki !zettelkasten I am developing to produce something similar to this !feed.