Marcelo Cezar (MC) Pinto

39 Followers
120 Following
135 Posts
Professor de Ciência da Computação, pai de duas filhas gêmeas.
dummy sitehttps://mcpinto.github.io/
XMPP[email protected]

RE: https://social.treehouse.systems/@swags/116235865719541791

Today was the SuperTux 0.7.0 release (yay!), but some of us were alarmed by the "Claude contributed to this repo" message on GitHub (oh no!)

Well, I've learned a few things from the discussion about this topic.

A single PR "co-authored by Claude" has slipped through. The code was written by a human (according to the commit), then properly reviewed and eventually merged by a maintainer. The Claude contribution is attributed solely to the code comments added through a mid-PR-flow commit update.

And now the commit history will show Claude as a contributor. It might be impossible to rewrite it. Rewriting kind of goes against the idea of having the git history, too. Even if that was possible, it's an extra effort which not all maintainers can prioritise.

So: seeing "Claude was here" in a GitHub repo is a "red flag", but it shouldn't be "therefore guilty of slop and LLM proliferation by default"; please use your head/best judgement.

I guess it is a cautionary tale for the maintainers, too 

Para os novos e antigos corações que chegaram no XMPP Social, Voz Social e isaCloud, segue um resuminho sobre como o nosso serviço opera ⚙️

🤝 O serviço é  mantido voluntariamente , com recursos próprios e doações, portanto não espere que tenhamos a infraestrutura de um Signal que conta com milhões de dólares de investimentos!

👩🏻‍💻 Temos um "bus factor = 1", o que significa que, hoje, só existe 1 pessoa operadora responsável pelo serviço, portanto, em caso de incidente técnico, a atuação ocorre no tempo mais rápido possível.

🏬 O serviço opera em 2 + 1 datacenters (2 BR, 1 UE), em regiões diferentes (Sudeste e Nordeste), isto é, possui um datacenter primário, um secundário e um com replicação em "tempo real" somente de dados. Em caso de incidente com uma região, a troca para o secundário é comandada pela pessoa operadora após confirmação do incidente.

💪🏻 Estamos trabalhando na máxima automação desse processo e em breve será mais automático (mas sem IA).

Com carinho,
A Operadora do Sistema

#xmpp #backstage #behindthescenes #isacloud #xmppsocial #vozsocial

Federated Replies and Reactions in Madblog

Engage with the Web from plain text files

Madblog is founded on a simple principle: a blog is just a collection of #markdown files in a folder. No databases, no logins, no client-side bloat — just files.

The recently implemented support for both Webmentions and ActivityPub add an extra appeal to this approach: now those text files can federate, they can send mentions to Wordpress blogs or Mastodon accounts, and you can visualize mentions, comments and reactions from other corners of the Web directly under your articles.

But after receiving in the past few days a bunch of reactions on my blog that I couldn't interact with, which forced me to fall back on my standard Fediverse account to send replies and likes, I've decided to take the "everything is a file" philosophy a step further.

Now from #madblog you can also reply to comments and react to posts across the Fediverse - all from plain text files in your content folder.

Replying to Comments

When someone comments on your article from Mastodon or another ActivityPub-compatible services, their message appears on your blog.

Now you can also respond directly from your blog.

Or you can reply to any other post on the Fediverse or mention anyone, without those posts cluttering your blog's front page (I've learned to avoid this fatal design mistake made by e.g. Medium).

How it works

Create a Markdown file under replies/<article-slug>/:

[//]: # (reply-to: https://mastodon.social/@alice/123456789) Thanks for the kind words, Alice! I'm glad the tutorial helped. @alice@mastodon.social

Save the file, and Madblog automatically:

  • Publishes your reply to the Fediverse as a threaded response
  • Notifies Alice on her Mastodon instance
  • Displays the reply on your blog, nested under her original comment

Your reply lives in your content folder. Just like with your articles, you can version replies and reactions on git, synchronize them over SyncThing or Nextcloud Notes, or run some analysis scripts on them that would just operate on text files.

Replying to replies

Conversations can go as deep as you want. Reply to a reply by pointing reply-to at the previous message's URL:

[//]: # (reply-to: https://mastodon.social/@alice/123456790) Great question! I'll write a follow-up post about that. @alice@mastodon.social

The threading is preserved both on your blog and across the Fediverse.

[Example of a nested thread rendered on Madblog]

(I hope that @[email protected] and @[email protected] won't mind for using a screenshot from their conversation on my blog 🙂)

Remember to mention your mentions

An important implementation note: if you're replying to someone else's ActivityPub post, it's important that you also mention them in the reply, otherwise your reply will be rendered under their comment but they may not be notified.

Usually you don't have to worry about this on Mastodon because the UI will automatically pre-fill the participating accounts in a sub-thread when you hit Reply.

But this is something to keep in mind when your posts are just text files.

Your replies are articles in their own right

Even though anything under replies/ won't appear on your blog's home page, it doesn't mean that it must be rendered just like a humble rectangle in a crowded comments section.

By clicking View full reply you get redirected to a separate page where the reply is rendered as a blog article, and its comments section consists in the sub-tree of the reactions that spawned from that specific reply.

[Example of a Madblog reply rendered as a blog article, with its own sub-thread of reactions]

Liking Posts

Sometimes a reply is too much — you just want to show appreciation. Now you can "like" any post on the Fediverse with a simple metadata header.

Standalone likes

Create a file under replies/ with just a like-of header:

[//]: # (like-of: https://mastodon.social/@bob/987654321)

This publishes a Like activity to the Fediverse. Bob sees the notification, and your blog records the interaction.

Like and comment

Want to like and say something? Combine both:

[//]: # (like-of: https://mastodon.social/@bob/987654321) [//]: # (reply-to: https://mastodon.social/@bob/987654321) This is such a great point! Bookmarking for later. @bob@mastodon.social

Bob gets both the like and your reply as a threaded response.

Unlisted Posts

Not everything needs to appear on your blog's front page. Files under replies/ without reply-to and like-of headers become "unlisted" posts — they're published to the Fediverse but don't clutter your blog index.

Perfect for quick thoughts, threads, or conversations that don't warrant a full article.

[//]: # (title: Thoughts of the day) Quick thought: I've been experimenting with writing all my Fediverse posts as Markdown files. It's oddly satisfying to `git log` my social media history.

Guestbook Replies

Your blog's guestbook works the same way. Reply to guestbook entries by placing files under replies/_guestbook/:

[//]: # (reply-to: https://someone.blog/mention/123) @alice@example.com welcome! Thanks for stopping by.

Editing and Deleting

Changed your mind? Edit the file and an Update activity is sent. Delete the file and your reply is removed from the Fediverse too.

Accidentally liked something? Remove the like-of line (or delete the file) and an Undo Like is published.

Your content, your rules.

Getting Started

  • Enable ActivityPub in your config.yaml:
  • link: https://blog.example.com enable_activitypub: true activitypub_username: blog # Only specify these if you want your ActivityPub domain to be different from your blog domain # activitypub_link: https://example.com # activitypub_domain: example.com
  • Install Madblog
    • From pip:
    pip install madblog
    • From Docker:
    docker pull quay.io/blacklight/madblog
  • Run Madblog from your Markdown folder (it is recommended that your articles are stored under <data-dir>/markdown):
    • From a pip installation:
    madblog /path/to/data
    • From Docker:
    docker run -it \ -p 8000:8000 \ -v "/path/to/config.yaml:/etc/madblog/config.yaml" \ -v "/path/to/data:/data" \ quay.io/blacklight/madblog
  • Any text file you create under markdown/ becomes a blog article. Any text file you create under replies/ becomes an unlisted post, a reply or a like reaction.
  • Check the README for detailed configuration options.

    Happy blogging!

    Morre filósofo alemão Jürgen Habermas aos 96 anos

    Ao longo de mais de sete décadas de atuação intelectual, o filósofo se destacou por suas reflexões sobre democracia, linguagem e participação política, tornando-se uma referência central no debate público europeu.

    Agência Brasil
    Ring Network topology
    #IEEE8025 #TokenRing

    Claude Monet
    The Rue Montorgueil, Celebration, 1878

    #Art #Painting

    Se beber, não digita!

    I'm writing this in English.

    Not because English is my first language—it isn't. I'm writing this in English because if I wrote it in Korean, the people I'm addressing would run it through an outdated translator, misread it, and respond to something I never said. The responsibility for that mistranslation would fall on me. It always does.

    This is the thing Eugen Rochko's post misses, despite its good intentions.

    @Gargron argues that LLMs are no substitute for human translators, and that people who think otherwise don't actually rely on translation. He's right about some of this. A machine-translated novel is not the same as one rendered by a skilled human translator. But the argument rests on a premise that only makes sense from a certain position: that translation is primarily about quality, about the aesthetic experience of reading literature in another language.

    For many of us, translation is first about access.

    The professional translation market doesn't scale to cover everything. It never has. What gets translated—and into which languages—follows the logic of cultural hegemony. Works from dominant Western languages flow outward, translated into everything. Works from East Asian languages trickle in, selectively, slowly, on someone else's schedule. The asymmetry isn't incidental; it's structural.

    @Gargron notes, fairly, that machine translation existed decades before LLMs. But this is only half the story, and which half matters depends entirely on which languages you're talking about. European language pairs were reasonably serviceable with older tools. Korean–English, Japanese–English, Chinese–English? Genuinely usable translation for these pairs arrived with the LLM era. Treating “machine translation” as a monolithic technology with a uniform history erases the experience of everyone whose language sits far from the Indo-European center.

    There's also something uncomfortable in the framing of the button-press thought experiment: “I would erase LLMs even if it took machine translation with it.” For someone whose language has always been peripheral, that button looks very different. It's not an abstract philosophical position; it's a statement about whose access to information is expendable.

    I want to be clear: none of this is an argument that LLMs are good, or that the harms @Gargron describes aren't real. They are. But a critique of AI doesn't become more universal by ignoring whose languages have always been on the margins. If anything, a serious critique of AI's political economy should be more attentive to those asymmetries, not less.

    The fact that I'm writing this in English, carefully, so it won't be misread—that's not incidental to my argument. That is my argument.

    A new Share button

    We'd like to help you to Share to Mastodon, with a new tool.

    Mastodon Blog

    "It costs less to get a Microsoft Office 2024 lifetime license than to pay one year of Microsoft 365"

    O desconto é ainda maior se usar o LibreOffice, manchete gringa. Incríveis 100% de desconto.