Skip to main content



An example of using Babashka and HTMX to make a simple form to list data from Postgres


I had to make a little UI to display some stats about an app at work, and decided to try using Babashka with HTMX for it. Turned out to be a really good experience.

Babashka has pretty much everything you need for a basic web app baked in, and HTMX lets you do dynamic loading on the page without having to bother with a Js frontend.

Best part is that bb can start nREPL with bb --nrepl-server and then you can connect an editor like Calva to it and develop the script interactively.

Definitely recommend checking it out if you need to make a simple web UI.

\#!/usr/bin/env bb
(require
 '[clojure.string :as str]
 '[org.httpkit.server :as srv]
 '[hiccup2.core :as hp]
 '[cheshire.core :as json]
 '[babashka.pods :as pods]
 '[clojure.java.io :as io]
 '[clojure.edn :as edn])
(import '[java.net URLDecoder])

(pods/load-pod 'org.babashka/postgresql "0.1.0")
(require '[pod.babashka.postgresql :as pg])

(defonce server (atom nil))
(defonce conn (atom nil))

(def favicon "data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD8fwAA/H8AAPxjAAD/4wAA/+MAAMY/AADGPwAAxjEAAP/xAAD/8QAA4x8AAOMfAADjHwAA//8AAP//AAA=")

(defn list-accounts [{:keys [from to]}]
  (pg/execute! @conn
               ["select account_id, created_at
                 from accounts
                 where created_at between to_date(?, 'yyyy-mm-dd') and to_date(?, 'yyyy-mm-dd')"
                from to]))

(defn list-all-accounts [_req]
  (json/encode {:accounts (pg/execute! @conn ["select account_id, created_at from accounts"])}))

(defn parse-body [{:keys [body]}]
  (reduce
   (fn [params param]
     (let [[k v] (str/split param #"=")]
       (assoc params (keyword k) (URLDecoder/decode v))))
   {}
   (-> body slurp (str/split #"&"))))

(defn render [html]
  (str (hp/html html)))

(defn render-accounts [request]
  (let [params (parse-body request)
        accounts (list-accounts params)]
    [:table.table {:id "accounts"}
     [:thead
      [:tr [:th "account id"] [:th "created at"]]]
     [:tbody
      (for [{:accounts/keys [account_id created_at]} accounts]
        [:tr [:td account_id] [:td (str created_at)]])]]))

(defn date-str [date]
  (let [fmt (java.text.SimpleDateFormat. "yyyy-MM-dd")]
    (.format fmt date)))

(defn account-stats []
  [:section.hero
   [:div.hero-body
    [:div.container
     [:div.columns
      [:div.column
       [:form.box
        {:hx-post "/accounts-in-range"
         :hx-target "#accounts"
         :hx-swap "outerHTML"}
        [:h1.title "Accounts"]
        [:div.field
         [:label.label {:for "from"} [:b "from "]]
         [:input.control {:type "date" :id "from" :name "from" :value (date-str (java.util.Date.))}]]

        [:div.field
         [:label.label {:for "to"} [:b " to "]]
         [:input.control {:type "date" :id "to" :name "to" :value (date-str (java.util.Date.))}]]

        [:button.button {:type "submit"} "list accounts"]]
       [:div.box [:table.table {:id "accounts"}]]]]]]])

(defn home-page [_req]
  (render
   [:html
    [:head
     [:link {:href favicon :rel "icon" :type "image/x-icon"}]
     [:meta {:charset "UTF-8"}]
     [:title "Account Stats"]
     [:link {:href "https://cdn.jsdelivr.net/npm/bulma@1.0.0/css/bulma.min.css" :rel "stylesheet"}]
     [:link {:href "https://unpkg.com/todomvc-app-css@2.4.1/index.css" :rel "stylesheet"}]
     [:script {:src "https://unpkg.com/htmx.org@1.5.0/dist/htmx.min.js" :defer true}]
     [:script {:src "https://unpkg.com/hyperscript.org@0.8.1/dist/_hyperscript.min.js" :defer true}]]
    [:body
     (account-stats)]]))

(defn handler [{:keys [uri request-method] :as req}]
  (condp = [request-method uri]
    [:get "/"]
    {:body (home-page req)
     :headers {"Content-Type" "text/html charset=utf-8"}
     :status 200}

    [:get "/accounts.json"]
    {:body (list-all-accounts req)
     :headers {"Content-Type" "application/json; charset=utf-8"}
     :status 200}

    [:post "/accounts-in-range"]
    {:body (render (render-accounts req))
     :status 200}

    {:body (str "page " uri " not found")
     :status 404}))

(defn read-config []
  (if (.exists (io/file "config.edn"))
    (edn/read-string (slurp "config.edn"))
    {:port 3001
     :db {:dbtype   "postgresql"
          :host     "localhost"
          :dbname   "postgres"
          :user     "postgres"
          :password "postgres"
          :port     5432}}))

(defn run []
  (let [{:keys [port db]} (read-config)]
    (reset! conn db)
    (when-let [server @server]
      (server))
    (reset! server
            (srv/run-server #(handler %) {:port port}))
    (println "started on port:" port)))

;; ensures process doesn't exit when running from command line
(when (= "start" (first *command-line-args*))
  (run)
  @(promise))

(comment
  ;; restart server 
  (do
    (when-let [instance @server] (instance))
    (reset! server nil)
    (run)))


Nuclear site licence issued for UK's Sizewell C site


Source: https://www.world-nuclear-news.org/Articles/Nuclear-site-licence-issued-for-UK-s-Sizewell-C-si

The Office for Nuclear Regulation (ONR) has granted a nuclear site licence for the Sizewell C site in eastern England, where the plan is to replicate the Hinkley Point C model of a nuclear power plant featuring two EPRs.

The licence application was initially submitted in 2020, and despite it having met "almost all" regulatory requirements, two issues prevented the granting of a licence in 2022 - relating to the shareholders' agreement and the ownership of the land at the site. The ONR said at that time it would carry out a "proportionate reassessment" once those two issues had been "resolved to its satisfaction". It has now done so and recommended the granting of the nuclear site licence.

The issuing of the licence is a significant step in the long-running Sizewell C process, but it does not permit the start of nuclear-related construction at the site - instead it formalises ONR's regulatory responsibility and allows it to require project company Sizewell C Ltd to request permission for the start of nuclear-related construction.

It is the first site licence issued by the ONR since the one issued for Hinkley Point C in 2012 and it means that Sizewell C has a legal responsibility to comply with health and safety and nuclear security regulations and needs the project to meet 36 conditions attached to the licence covering the design, construction, operation and decommissioning of the plant.

ONR CEO Mark Foy said: "I am pleased to confirm that following extensive engagement and review by the ONR team, our assessment of the Sizewell C application is complete and a nuclear site licence has been granted. The licensing process is fundamental in confirming that operators of a nuclear site are ready and able to meet their obligations under the nuclear site licence, to protect their workforce and the public.

"The granting of this licence is one step in ONR's process, allowing us to provide greater regulatory oversight, advice and challenge to the licensee as they progress their plans. We will continue working with Sizewell C to ensure that the highest levels of safety and security are met."

Sizewell C director of safety, security and assurance, Mina Golshan, said: "Securing a nuclear site licence is a show of confidence from our nuclear regulator that we have a suitable site, that we can achieve a safe design replicated from Hinkley Point C, and that we have a capable organisation ready to begin major construction work. It’s a huge milestone and demonstrates that this project is firmly on track."

The EDF-led plan is for Sizewell C to feature two EPRs producing 3.2 GW of electricity, enough to power the equivalent of around six million homes for at least 60 years. It would be a similar design to the two-unit plant being built at Hinkley Point C in Somerset, with the aim of building it more quickly and at lower cost as a result of the experience gained from what is the first new nuclear construction project in the UK for about three decades.

EDF agreed in October 2016 with China General Nuclear (CGN) to develop the Sizewell C project to the point where a final investment decision could be made. EDF had an 80% stake and CGN a 20% stake. However, the so-called "golden era" of UK-China relations has ended in recent years with the UK government citing security concerns as it reviewed and blocked Chinese investments in UK infrastructure. In November 2022, the UK said it would invest GBP679 million (USD845 million) and become a 50% partner with EDF in the Sizewell C project. A further GBP511 million of funding was made available to the project in summer 2023, with the government funding designed to get the project to the final investment decision. EDF said in November 2022 that it planned to "retain only a minority stake in the final investment decision - a maximum of 20%".

The UK government has been seeking investment in the Sizewell C project, launching a pre-qualification for potential investors as the first stage of an equity raise process last September. It has also taken legislation through Parliament allowing a new way of funding new large infrastructure projects - a Regulated Asset Base (RAB) funding model, which can see consumers contributing towards the cost of new nuclear power plants during the construction phase. Under the previous Contracts for Difference system developers finance the construction of a nuclear project and only begin receiving revenue when the station starts generating electricity.

In January, a further GBP1.3 billion of government funding was approved allowing for necessary infrastructure work such as roads and rail lines to continue pending a final investment decision being taken. In March Sizewell C Ltd, a standalone company majority-owned by the UK government, signed a deal with EDF Energy to purchase the freehold of the land which will be used for the new power plant.

Minister for Nuclear and Renewables Andrew Bowie said: "Sizewell C will be the cornerstone of the UK's clean energy transition, supplying six million homes with green energy for decades. Obtaining a nuclear site licence is a significant achievement and should instil further confidence from investors - bringing us another step closer towards reaching a final investment decision this year."

Sizewell C Ltd said that earthworks are under way at the site, that the process of raising private equity from investors "continues to make good progress" and "the project is anticipating taking a Final Investment Decision in the coming months".




Utilizing Multi-core with Parallel Lisp




The Lies of the Satanic Temple [Dead Domain; 2:02:45]


If you don't feel like watching a two hour video about The Satanic Temple but still want info, I'd recommend this Newsweek article.

If you've already watched it, here are some additional comments regarding this video as provided by QueerSatanic on Reddit (slightly edited for formatting):

On lawsuits

The chilling effect of The Satanic Temple suing Newsweek (and its reporter as an individual) for defamation over the magazine's story in October 2021 can't be overstated.

Everything has been dismissed except for the question of whether TST is a public or private figure (it's almost definitionally a public figure) and whether they were defamed by the article quoting someone about sexual abuse in the Temple; all the other ~20 claims got tossed by the judge.

But as Dead Domain's video showed, it's not like there is a paucity of evidence for the remaining claim, either.

If you want to dig into the court docket for the Newsweek SLAPP, this is the magazine's last filing (1)(2), which TST handwaves away as "Internet hearsay" in their reply.


On bigotry

Dead Domain may have been required to use that “I think it’s OK to hate Jews” clip because it’s the most infamous one and the one that has been addressed publicly at all.

However, the beliefs on eugenics are so much worse, plus the casual racism and the praise of literal fascism. (Examples).

I went to Italy and got a fascist shirt, and I loved how clean that part of town was” is something that made it into the video, but people still willing to give TST’s owner the benefit of doubt are basically saying they don’t care to learn how bad he actually was at the “young” age of 28, and they don’t need any proof of change other than not hearing those clips anymore.

Fifteen years later at age 43, TST’s owner was still running his website called “Dysgenics . com”



How many of you 9-5s have been given work from home forever ?


My mate works for an Indian company and got WFH forever. I was in shock because I never thought any company can give a work from home option forever ? Does any Australian company gives you such an option ? If so, please name those companies and job titles so that I can start applying for jobs there.
in reply to YⓄ乙

Where I work went Work From Anywhere during Covid. I joined after the decision was made. They recently acquired a place in New Zealand and went about shutting down the head office to do the same over there.

They say there are no plans to get people back into an office but I wonder about that. There have been questionable business decisions up top that have affected my team and others, so I wonder if they'll start getting people back in for the sake of 'productivity'


in reply to Seagoon_

When we purchased our new house 5 years ago, we had a Tesla PowerWall installed. It came with a Telstra 3G SIM card and when they installed it, I told them to connect it via Ethernet. The technician refused, saying that it has 3G and doesn’t need to be connect to the home network at all.

I received a text from Tesla this morning, telling me that our PowerWall will not be covered by warranty when Telstra kill 3G at the end of next month.

I then received an email from Tesla (that looked like Spam).

I then receive a phone call from Tesla.

I mentioned that I don’t have WiFi coverage in my garage and they told me to move my router. I told them that I instructed the technician to connect via Ethernet originally and they said that I would need to get the technician back out to connect it.

I am not allowed to plug Ethernet into it without voiding warranty and I need to plug Ethernet into it to prevent the warranty from being void.



!Friendica Support

Funktioniert die libranet.de Domain weiterhin oder muss ich mich dann bei forum.friendi.ca neu registrieren?

Wird das Twitter plugin irgendwann wieder funktionieren? Man kann ja zumindest die Posts fetchen:
https://nitter.poast.org/elonmusk

in reply to Mister Frety

Posten nach Twitter funktioniert, das Holen von Beiträgen nicht. Ich persönlich werde auch keine Zeit darin investieren zu schauen, wie es bei Nitter geht.


Mike Macgirvin recounts the depressing history behind Mastodon's rendering of `article` vs `note`


Here's the reason Article became a second class citizen...

https://github.com/mastodon/mastodon/issues/5022

In this issue I raised against Mastodon in 2017 (on a now defunct github account), Mastodon at the time treated Note and Article identically. In particular, it removed all the HTML except for 'a' tags - even from Article. This made federation with the elephant impossible for us. At this time the ActivityPub fediverse consisted of Hubzilla and Mastodon. Period. The specification wasn't even final yet. Hubzilla provides long-form multi-media content, just like a blog. This content was completely destroyed by Mastodon's HTML sanitizer, especially blockquotes, which displayed everything we quoted as original text and mis-attributed.

My proposal to the Mastodon team (which was basically Eugen) was to relax the input sanitisation on the Article type a bit , and Mastodon could have their plaintext Note and we could have our multi-media and the fediverse be one happy family. Regardless of the fact that HTML is specified as the default content-type for all content in ActivityPub.

The response from Eugen was to turn Article into a link, meaning our content wouldn't be shown inline at all - and closing the issue. I believe this is the last time I ever communicated with Eugen and I will never, ever file another issue against Mastodon.

We started using Note instead, so that our messages would federate at all and knowing that Article would have been the most sensible choice.

We also need to strip all the images out of our perfectly renderable content and add them back in as attachments - otherwise they won't be displayed on Mastodon. As it turns out, Mastodon only adds back 4 images and reverses the order. This is less than satisfactory because the source content lets us position text around each image, and it forces anybody with multi-media content to not only perform this unnecessary step, but also to check every attachment on import and see if it was already included in the HTML - or it will be displayed twice.

As far as I'm concerned, Mastodon should be taken to the mountain-top and cast into the volcano. But it appears we're stuck with the infernal thing.



@nutomic

Here's the reason Article became a second class citizen...

https://github.com/mastodon/mastodon/issues/5022

In this issue I raised against Mastodon in 2017 (on a now defunct github account), Mastodon at the time treated Note and Article identically. In particular, it removed all the HTML except for 'a' tags - even from Article. This made federation with the elephant impossible for us. At this time the ActivityPub fediverse consisted of Hubzilla and Mastodon. Period. The specification wasn't even final yet. Hubzilla provides long-form multi-media content, just like a blog. This content was completely destroyed by Mastodon's HTML sanitizer, especially blockquotes, which displayed everything we quoted as original text and mis-attributed.

My proposal to the Mastodon team (which was basically Eugen) was to relax the input sanitisation on the Article type a bit , and Mastodon could have their plaintext Note and we could have our multi-media and the fediverse be one happy family. Regardless of the fact that HTML is specified as the default content-type for all content in ActivityPub.

The response from Eugen was to turn Article into a link, meaning our content wouldn't be shown inline at all - and closing the issue. I believe this is the last time I ever communicated with Eugen and I will never, ever file another issue against Mastodon.

We started using Note instead, so that our messages would federate at all and knowing that Article would have been the most sensible choice.

We also need to strip all the images out of our perfectly renderable content and add them back in as attachments - otherwise they won't be displayed on Mastodon. As it turns out, Mastodon only adds back 4 images and reverses the order. This is less than satisfactory because the source content lets us position text around each image, and it forces anybody with multi-media content to not only perform this unnecessary step, but also to check every attachment on import and see if it was already included in the HTML - or it will be displayed twice.

As far as I'm concerned, Mastodon should be taken to the mountain-top and cast into the volcano. But it appears we're stuck with the infernal thing.




"olhai por nóis" meaning "watch over us"


a pixo that I like was in the Pátio do Colégio, a historical jesuit square and church that marks where the city was founded, the first building and the catechization of indigenous people. The jesuits were kicked by the settlers, because of the settlers interest in indigenous slave labour and some time later it also received the government of São Paulo. Nowadays the square shelters a lot of homeless people. The "pixo" reads "olhai por nóis", meaning "watch over us". Picture by myself.


via a comment in this thread by @hipgnose@mastodon.social

It was after the Guardian article, it received some local media coverage. After the cleanup, it was reinaugurated with tacky white ballons and the priest said: "We wanted it to be the symbol of our city, transparent, translucent, without stain, without any blemish, of the corruption that bury people, that supplants hope, that makes so many tears shed" Yeah, what a great history...


via a reply by @hipgnose@mastodon.social

and a link to this article that contains more photos of the piece:
Após 26 dias, fachada do Pateo do Collegio é recuperada e reinaugurada


a pixo that I like was in the Pátio do Colégio, a historical jesuit square and church that marks where the city was founded, the first building and the catechization of indigenous people.

The jesuits were kicked by the settlers, because of the settlers interest in indigenous slave labour and some time later it also received the government of São Paulo.

Nowadays the square shelters a lot of homeless people. The "pixo" reads "olhai por nóis", meaning "watch over us".

Picture by myself.


This entry was edited (3 weeks ago)


Pixação: the story behind São Paulo's 'angry' alternative to graffiti


in reply to wakest

a pixo that I like was in the Pátio do Colégio, a historical jesuit square and church that marks where the city was founded, the first building and the catechization of indigenous people.

The jesuits were kicked by the settlers, because of the settlers interest in indigenous slave labour and some time later it also received the government of São Paulo.

Nowadays the square shelters a lot of homeless people. The "pixo" reads "olhai por nóis", meaning "watch over us".

Picture by myself.

in reply to hipgnose

It was after the Guardian article, it received some local media coverage.

After the cleanup, it was reinaugurated with tacky white ballons and the priest said: "We wanted it to be the symbol of our city, transparent, translucent, without stain, without any blemish, of the corruption that bury people, that supplants hope, that makes so many tears shed"

Yeah, what a great history...

https://g1.globo.com/sp/sao-paulo/noticia/apos-26-dias-fachada-do-pateo-do-collegio-e-recuperada-e-reinaugurada.ghtml



Finland / Climate And Energy Concerns See Support For Nuclear Hit More Than 60%


Energy industry group calls for ‘common European market’ for nuclear power plants.

Climate awareness and the energy crisis have consolidated support for nuclear power in Finland with 61% of respondents in favour and only 9% against, according to a survey by Verian for Finnish Energy industry group.

The 61% approval rating is the second highest outside the “energy crisis winter “of 2023, Finnish Energy said

“The results show that concerns about electricity prices have decreased with Olkiluoto-3 online, and more electricity generation being built,” Finnish Energy said.

“Strong support for nuclear power is important at a time when more clean electricity capacity is needed to reduce emissions from industry and transport and attract new industrial investment.”

Last year, Finnish Energy said the operation of Olkiluoto-3 and a national desire to end energy imports from Russia had strengthened support for nuclear power.

Jari Kostama, director of energy production at Finnish Energy, said the role of nuclear energy has been more widely recognised in Brussels, as reflected in interest in new solutions such as small modular reactors and support for nuclear as a technology that can help meet climate targets.

“There is still work to be done,” Kostama said. “A common European market for nuclear power plants would enable the benefits of serial production, and this requires a technology-neutral climate and energy policy from the EU, as well as cooperation between nuclear safety authorities in harmonising requirements.”

In 1983, when the first survey was carried out, less than 30% of respondents said they supported nuclear with around 38% against.

Finland has five commercial nuclear reactors – two at Loviisa, owned and operated by Fortum, and three at Teollisuuden Voima Oyj’s (TVO) Olkiluoto. In 2022, before Olkiluoto-3 began operating, the four plants provided about a 35% share of electricity production.

Last year TVO began an environmental impact assessment for the possible extension of operating licences and power uprates at the Olkiluoto-1 and -2.




Germany arrests EU Parliament staffer over bombshell claims he spied for China


“The accused repeatedly passed on information about negotiations and decisions in the European Parliament to his intelligence service client,” authorities said.

German police arrested an Alternative for Germany (AfD) aide who works in the European Parliament over accusations he spied for China.

The staffer, named as Jian G. by German authorities, works for MEP Maximilian Krah, who is the AfD’s top candidate in the European Parliament election in June.

“Jian G. is an employee of a Chinese secret service,” the German Public Prosecutor said in a bombshell statement Tuesday morning.

“He has been working for a German Member of the European Parliament since 2019. In January 2024, the accused repeatedly passed on information about negotiations and decisions in the European Parliament to his intelligence service client,” the prosecutor added.



Newsletter platform Ghost adopts ActivityPub to ‘bring back the open web’


They’re not done yet. Just announcing (and the verge reporting on it).

Their announcement (here) is quite forceful though, interestingly. The article described it as a manifesto.

See also a recent post here about their survey on integrating activity pub: https://lemmy.ml/post/14734757


"we’re starting work to look into the possibility of adding ActivityPub support to Ghost" says Ghost CEO


"This idea has been at the top of the list for a long time, so this week we’re starting work to look into the possibility of adding ActivityPub support to Ghost.
Because there are lots of different potential ways this could be built, the team is curious to hear more detail about how you imagine this working…
If you have a moment spare, could you fill out this 2-minute, 3 question survey to tell us what you’d like to see?" posted by John O’Nolan, CEO and Founder of Ghost


in reply to maegul

This is the best summary I could come up with:


That’s a big shot of support for the fediverse — the network of open and interoperable social services that have all been gaining momentum over the past year.

This has long been the dream, and it seems like the platforms betting on it in various ways — Mastodon, Threads, Bluesky, Flipboard, and others — are where all the energy is, while attempts to rebuild closed systems keep hitting the rocks.

Ghost itself is one of the bigger winners in the oops-Substack-has-Nazis newsletter migration, and letting authors on its platform more easily distribute their work is itself in stark contrast to Substack, which is reacting to its failing business model by making it harder to leave its own increasingly-social-network-like platform.

Ghost says it’s working with Mastodon and Buttondown, another newsletter platform, on ActivityPub support.

The company also says it will be working to improve its reading experience as it prepares to let people follow other fediverse authors on its platform.

Importantly, the project FAQ also says that paid content “should work fine” with ActivityPub as well — something no other platform has really tried yet, as far as I’m aware.


The original article contains 377 words, the summary contains 189 words. Saved 50%. I'm a bot and I'm open source!

in reply to AutoTL;DR

Ghost itself is one of the bigger winners in the oops-Substack-has-Nazis newsletter migration, and letting authors on its platform more easily distribute their work is itself in stark contrast to Substack, which is reacting to its failing business model by making it harder to leave its own increasingly-social-network-like platform.


a synopses of this Verge piece by the autotldr bot Lemmy bot


This is the best summary I could come up with:

That’s a big shot of support for the fediverse — the network of open and interoperable social services that have all been gaining momentum over the past year.

This has long been the dream, and it seems like the platforms betting on it in various ways — Mastodon, Threads, Bluesky, Flipboard, and others — are where all the energy is, while attempts to rebuild closed systems keep hitting the rocks.

Ghost itself is one of the bigger winners in the oops-Substack-has-Nazis newsletter migration, and letting authors on its platform more easily distribute their work is itself in stark contrast to Substack, which is reacting to its failing business model by making it harder to leave its own increasingly-social-network-like platform.

Ghost says it’s working with Mastodon and Buttondown, another newsletter platform, on ActivityPub support.

The company also says it will be working to improve its reading experience as it prepares to let people follow other fediverse authors on its platform.

Importantly, the project FAQ also says that paid content “should work fine” with ActivityPub as well — something no other platform has really tried yet, as far as I’m aware.


The original article contains 377 words, the summary contains 189 words. Saved 50%. I'm a bot and I'm open source!




Building ActivityPub


Looks like it's really happening!
in reply to wakest

Ooh, thanks for the explanation. As someone that understands and has some insight, does this excite you?
in reply to sabreW4K3

Well the part that excites me is that Ghost is one of the biggest newer CMS's started after Wordpress. Ghost is also open source so at least the work they do can be reused into the future (unlike say Threads or Flipboard) and we will suddenly have the ability of a lot of large parts of the web to be able to switch on federation without much effort. Look at all these large entities that use Ghost. Everytime one of these big players joins the fediverse there is this overflow effect onto little community players who might have chosen to use Ghost or WordPress or Flarum etc a long time ago and suddenly without the individual sites having to do much they can grow a whole new audience. So in short, I don't use Ghost and am not personally super excited by the project, but I am excited to see who it ends up bringing in!

in reply to BrikoX

> The ability to opt-out of quote posts is also currently planned, which makes it that Mastodon’s implementation will not be compatible with other fediverse implementations of quote posting.

Not surprising. Even before ActivityPub was announced, when the #fediverse was still powered by #OStatus, Mastodon was already breaking compatibility. There were countless of heated debates about almost every Mastodon-only "feature" they implemented that all other Fediverse devs were _forced_ to implement.

And here we are with yet another.

I wonder what will supporters of opt-out or anti-quotepost camp will do if the other Fediverse devs ignore this Mastodon-only "feature", and just continue with the common implementation of quote posts? Are we going to see a new reason for "fediblock", and finally fragment the Fediverse network?



"we’re starting work to look into the possibility of adding ActivityPub support to Ghost" says Ghost CEO


"This idea has been at the top of the list for a long time, so this week we’re starting work to look into the possibility of adding ActivityPub support to Ghost.
Because there are lots of different potential ways this could be built, the team is curious to hear more detail about how you imagine this working…
If you have a moment spare, could you fill out this 2-minute, 3 question survey to tell us what you’d like to see?" posted by John O’Nolan, CEO and Founder of Ghost


Wikipedia is an Accurate and Unbiased Website | FLESH SIMULATOR


coming in hot with a damn near incomprehensible one


I enjoyed his conspiracy-theory-esq presentation style



Evan Prodromou - Bytedance: Add ActivityPub to Tiktok Notes


The grandfather of the fediverse @evan@cosocial.ca wants TikTok Notes to join the fediverse
in reply to wakest

@liaizon yeah a bunch of the OG AP authors are line-go-up type people, which unfortunately sucks
in reply to kimothy siddon

I am not posting this with judgement, I also think that every social thing should consider federating. I just thought this was news worthy in it self.