Sign in

Luca Casonato 🏳️‍🌈

@lcas.dev
5.1K followers 227 following 393 posts

Software person. Building @railway.com. Prev @deno.land. Creator of Fresh. @tc39.es invited expert. Train nerd. he/him 🏳️‍🌈🌍🌻💚 lcas.dev - 📍 Amsterdam

PostsRepliesMedia
Luca Casonato 🏳️‍🌈 @lcas.dev · 20h
US governemnt: launches official government chatbot on america.gov Trump: will now have to call his own chatbot a liar because it says the truth
On america.gov, a screenshot of a chat:

Q: Was there any evidence that the election was stolen?

A: No official federal findings supported the claim that the 2020 presidential election was stolen.

• Election infrastructure officials said there was no evidence any voting system deleted, lost, or changed votes, or was compromised. CISA joint statement
• The Departments of Justice and Homeland Security said they found no evidence a foreign government manipulated election results. DOJ–DHS joint statement
• The Intelligence Community reported no indications that any foreign actor altered voter registration, ballot casting, vote tabulation, or reporting. Select Committee report, Appendix 4

Congress certified the Electoral College results on January 7, 2021. Isolated election crimes can occur; they are not the same as evidence that the national result was stolen.
0122
Luca Casonato 🏳️‍🌈 @lcas.dev · 17/06/2026
What's this, a new HTML proposal? Built-in localized time formatting in HTML! github.com/whatwg/html/...
<time datetime="2026-06-17T08:13:41.099Z" format="datetime">
  fallback
</time>
1942657
Luca Casonato 🏳️‍🌈 @lcas.dev · 14/06/2026
In Spain time works differently.
5774
Luca Casonato 🏳️‍🌈 @lcas.dev · 07/06/2026
And some different data that shows that it is definitely improving (but still bad!)
A plot of montly cancelled stops on the RE18 since Jan 2024. It is getting better, and is now at 5-15% per month. It used to peak to over 50% at the end of 2024
020
Luca Casonato 🏳️‍🌈 @lcas.dev · 07/06/2026
What is very very bad is that depending on the day up to 12% of the first run, and 17% of the last run are cancelled on average. Particularly on Sundays this is very bad, because the alternative path (the 350 bus to Aachen from Maastricht), only starts running an hour after the train.
First + Last train cancellation percentage by weekday on the RE18. Some days are better than others, but generally ~10% for first train, and 12-17% on the last train.
000
Luca Casonato 🏳️‍🌈 @lcas.dev · 07/06/2026
At the end of 2024 / start of 2025, 70% of daily relations were cancelled. Now it's at peak ~15% a day. Still terrible, but it is improving. And the construction early this year definitely polished up the data for Feb/March 2026.
A heatmap showing daily cancellations between stations on the Drielandentrein. It has been getting better recently.
252
Luca Casonato 🏳️‍🌈 @lcas.dev · 14/05/2026
Turns out this is a connection that SNCF already sells as a through ticket because they run a TGV from Barcelona to Paris and a train from Paris to Berlin in cooperation with DB
120
Luca Casonato 🏳️‍🌈 @lcas.dev · 14/04/2026
So all you have to do to make him smile like this is give him an endless conveyor of cheese
Crop of the original screenshot on Nico, with a very large smile
1110
Luca Casonato 🏳️‍🌈 @lcas.dev · 09/04/2026
Some highlights: NMBS made the totally absurd claim that this train, in Arriva livery, staffed by Arriva drivers between Aachen and Maastricht, is exclusively operated by NS and NMBS, and Arriva is not involved in operations or ticket sales at all. This is just plain wrong.
A RE 18 train at Liege-Guillemins station, in blue Arriva livery with Arriva wordmark, in addition to the "Drielandentrein" logo on the side.
130
Luca Casonato 🏳️‍🌈 @lcas.dev · 01/04/2026
I never thought I’d say this, but I may have made too many chocolate chip cookies 🍪
Three containers of chocolate chip cookies, stacked ontop of each other, with two more cookies leaning onto the containers
27596229
Luca Casonato 🏳️‍🌈 @lcas.dev · 15/03/2026
Anything but fix the lifetimes. Great job Claude.
    Cow::Owned(v) => {
      // This path is only hit if the value contained XML entities,
      // which never happens for this protocol's attributes. We leak
      // the allocation so the borrow lives long enough.
      let leaked: &'a [u8] = Box::leak(v.into_boxed_slice());
      Ok(std::str::from_utf8(leaked)?)
    }
1121
Luca Casonato 🏳️‍🌈 @lcas.dev · 22/01/2026
Today in “way too large box for tiny thing”. This time it’s a Siemens oven replacement part
3220
Luca Casonato 🏳️‍🌈 @lcas.dev · 31/12/2025
RFI (same company that has the swear comments in their JS files) also knows that between 1 July and 31 August 2104 (yes, not a mistake, at least not mine) the bus won't stop in Ginosa. Sorry to all the people in 78 years that will be impacted!
Partenze Departures/Departs/Abfahrten
NAPOLI CENTRALE/NAPOLI PIAZZA GARIBALDI
14 DIC 2025 - 13 GIU 2026

20.30* NA251 LAGONEGRO 23.52
Eboli 21.49 - Polla 22.26 - Atena 22.36 - Sala
Consilina 22.46 - Sassano-Teggiano 22.56 - Padula 23.04 -
Montesano-B. 23.12 - Casalbuono 23.22 - Casaletto 23.31 -
Lagonegro Centro 23.48 -
* CIRCOLA NEI GIORNI [FESTIVI]
* A BERNADA FERMA SOLO PER DICESA VIAGGIATORI. A GINOSA FERMA DAL 1
LUGLIO AL 31 AGOSTO 2104
231
Luca Casonato 🏳️‍🌈 @lcas.dev · 30/12/2025
Looking at the PUBLIC JS files for the departure boards from RFI (the 100% public company that maintains the track and station infrastructure) shows it was written by someone from Genoa "Belin che cavolo" = "WTF", but only in Liguria Also, the body here is entirely commented out!
function apriFermateSuccessive(trenoid) {
    //var popUpId = $(elem).html().trim();

    /*var prova = document.getElementById("FermateSuccessivePopup");
    if (prova != null)
    {
        
         
        document.getElementById("FermateSuccessivePopup").style.display = "block";
        alert("Belin che cavolo");
    }
    else
    {
        alert("E se non c'è non c'è!");
    }
    */

    //var popup = document.getElementById("FermateSuccessive_" + trenoid);
    //var popup = document.getElementById("Provadelleprove" );
    //// var popup = $("#FermateSuccessive_" + trenoid);
    //if (popup == null)
    //{
    //    alert("AHIA");    
    //}
    //popup.style.dispaly = "block";
4211
Luca Casonato 🏳️‍🌈 @lcas.dev · 29/12/2025
Is this my fault?
110
Luca Casonato 🏳️‍🌈 @lcas.dev · 28/12/2025
On startup, the Italo app also fetches a various XML encoded bits of content from it's CDN that it uses to display ads and such on the index page. This XML is UTF-8 encoded, and then sent as a JSON array of integers in the range 0-255. This increases transfer size by slightly over 3.5x!
{
  "Signature": null,
  "Data": [
    60,
    66,
    111,
    97,
    116,
    115,
    62,
    13,
    10,
    9,
    60,
    83,
    116,
    97,
    116,
    105,
    111,
    110,
    115,
    62,
    13,
    10,
    9,
3301
Luca Casonato 🏳️‍🌈 @lcas.dev · 28/12/2025
In a suprise to absolutely no one, the API the Italo app uses for real-time data is also beautifully designed. The disruption field has the great name "Distruption", and the dates are encoded as strings in the format "\/Date(1766949300000+0100)\/". Note those backslashes are not escaping anything.
  "TrainSchedule": [
    {
      "TrainNumber": "9990",
      "RfiTrainNumber": "9990",
      "DepartureDate": "\/Date(1766937900000+0100)\/",
      "DepartureStation": "RMT",
      "DepartureStationDescription": "Roma Termini",
      "ArrivalDate": "\/Date(1766949300000+0100)\/",
      "ArrivalStation": "MC_",
      "ArrivalStationDescription": "Milano Centrale",
      "Distruption": {
        "DelayAmount": 158,
        "LocationCode": "MLG",
        "Warning": false,
        "RunningState": 2
      },
      "Leg": {
        "ArrivalStation": "MC_",
        "ArrivalStationDescription": "Milano Centrale",
        "EstimatedDepartureTime": "\/Date(1766954940000+0100)\/",
        "EstimatedArrivalTime": "\/Date(1766949300000+0100)\/",
3201
Luca Casonato 🏳️‍🌈 @lcas.dev · 28/12/2025
On startup, the Italo app also fetches a list of all stations Italo can sell tickets to/from. This file is 2.3 MB, but not because of the list of stations. No, it's because it contains for every station, the list of every other station that is reachable from that station (and much more garbage)
        {
          "departureStation": "AGR",
          "arrivalStation": [
            {
              "isConnection": "false",
              "isItaloAlliance": "false",
              "text": "AAV"
            },
            {
              "isConnection": "false",
              "isItaloAlliance": "false",
              "text": "BC_"
            },
            {
              "isConnection": "false",
              "isItaloAlliance": "false",
              "text": "FCM"
            },
1290
Luca Casonato 🏳️‍🌈 @lcas.dev · 28/12/2025
This endpoint has another great design choice: the departure and arrival data is stored in two arrays with fields with a description of either "Scheduled departure", "Actual Departure", "Scheduled Arrival", or "Actual Arrival". Note the capitalization difference between "departure" and "arrival".
      "departureLabels": [
        {
          "description": "Scheduled departure",
          "value": "19:10",
          "style": "BLACK"
        },
        {
          "description": "Actual Departure",
          "value": "19:14",
          "style": "SECONDARY"
        }
      ],
      "arrivalLabels": [
        {
          "description": "Scheduled Arrival",
          "value": "19:08",
          "style": "BLACK"
        },
        {
          "description": "Actual Arrival",
          "value": "19:07",
          "style": "SECONDARY"
        }
      ],
2140
Luca Casonato 🏳️‍🌈 @lcas.dev · 28/12/2025
Trenitalia's internal API for getting the real-time travel info for a train has a beautiful translation error: the platform identifier field is called `binary`, because in Italian, platform is "binario".
    {
      "location": "Torino Porta Susa",
      "locationId": "830000222",
      "binary": "2",
      "departureLabels": [
        {
          "description": "Scheduled departure",
          "value": "19:10",
          "style": "BLACK"
        },
        {
          "description": "Actual Departure",
          "value": "19:14",
          "style": "SECONDARY"
        }
      ],
4282
Luca Casonato 🏳️‍🌈 @lcas.dev · 28/12/2025
Italo's app sends a "Login" request on startup with a hardcoded username and password, which coincidentially also is entirely unnecessary, because the data it fetches with the returned data is available without authentication!
{
  "Login": {
    "Username": "WWW_Anonymous",
    "Password": "F3hoM!n0$!ZE",
    "Domain": "WWW",
    "VersionNumber": "4.4.9"
  },
  "SourceSystem": 2
}
1240
Luca Casonato 🏳️‍🌈 @lcas.dev · 31/10/2025
Update
Me standing in the hospital, with a cast on my left hand, and a compression bandage on my right arm
3240
Luca Casonato 🏳️‍🌈 @lcas.dev · 20/09/2025
For reference, this is what the bigger of the two cases looks like printed out. 51 sides of A4, consisting of forms and evidence.
A thick stack papers held over an envelope marked “…bank Amsterdam, Postbus 84500, 1080 BN Amsterdam”
080
Luca Casonato 🏳️‍🌈 @lcas.dev · 08/09/2025
I’d love to see the Google Maps code that implements the rendering of highways as single single strokes instead of double stroke when zoomed out (but only in countries driving on the left). Very curious 👀
A screenshot of a Google Maps crop of Japan. Highways are visible as single stroke green lines.A screenshot of a Google Maps crop of the United Kingdom. Highways are visible as single stroke green lines.A screenshot of a Google Maps crop of the eastern United States. Highways are visible as double stroke green lines.A screenshot of a Google Maps crop of Europe, with Switzerland roughly in the middle. Highways are visible as double stroke green lines.
2100
Luca Casonato 🏳️‍🌈 @lcas.dev · 20/08/2025
ooh fun
040
Luca Casonato 🏳️‍🌈 @lcas.dev · 07/08/2025
Stuck in an elevator with @snek.dev, @littledivy.com, @bartlomieju.bsky.social, @magurotuna.bsky.social, @dsherret.bsky.social, @kettmeir.dev, and Nathan
2293
Luca Casonato 🏳️‍🌈 @lcas.dev · 23/06/2025
The tests ran in under 3 minutes. The docker job, meanwhile, has seen empires rise and fall.
A GitHub Actions CI workflow diagram titled "ci.yml" triggered on pull requests. It shows two jobs: "test," which completed successfully in 2 minutes and 44 seconds, and "docker-image-dev," which is in a cancelled state but is noted to have been running for a duration of 739424 days and 13 hours.
0411
Luca Casonato 🏳️‍🌈 @lcas.dev · 13/05/2025
It's nearly summer in @deno.land
The Deno mascot is sitting in a red hammock with a laptop. The hammock is connected to two small palm trees on a yellow sand beach. The sky is blue, with a few white clouds. The sun is shining brightly.
0373
Luca Casonato 🏳️‍🌈 @lcas.dev · 15/04/2025
chatgpt impression of three balls of anxity in a trenchcoat. no resemblance IMO :D
Three fuzzy, gray balls with anxious faces—wide eyes and furrowed brows—are stacked on top of each other inside a beige trench coat. The coat is buttoned up, belted at the waist, and paired with simple brown shoes, giving the impression of a single person. The drawing is in a hand-drawn ink and watercolor style with a light, textured background.
130
Luca Casonato 🏳️‍🌈 @lcas.dev · 12/04/2025
10 minutes early in Cologne today. Danke @bahn.de 😀
Onboard display on ICE 255 showing an actual arrival time of 10:54 for a train scheduled to arrive at 11:03
3100
Luca Casonato 🏳️‍🌈 @lcas.dev · 22/02/2025
This is why no one likes you, AWS.
2301
Luca Casonato 🏳️‍🌈 @lcas.dev · 07/02/2025
1444
Luca Casonato 🏳️‍🌈 @lcas.dev · 28/01/2025
European leaders: invest in your train infrastructure, otherwise a collapsing train station roof will force you out of power
Serbia's PM resigns after student protests linked to government corruption

Milos Vucevic steps down following wave of demonstrations sparked by the deaths of 15 people who were killed when a railway station roof collapsed
0130
Luca Casonato 🏳️‍🌈 @lcas.dev · 08/01/2025
Some highlights from the new Facebook/Instagram/Threads content policy. These are all things that are banned in general, except when you are talking about gay or trans people.
Screenshot containing a bullet point reading:

Economic exclusion, which means denying access to economic entitlements and limiting participation in the labor market. We do allow content arguing for gender-based limitations of military, law enforcement, and teaching jobs. We also allow the same content based on sexual orientation, when the content is based on religious beliefs.Screenshot containing a bullet point reading:

Social exclusion, which means things like denying access to spaces (physical and online) and social services, except for sex or gender-based exclusion from spaces commonly limited by sex or gender, such as restrooms, sports and sports leagues, health and support groups, and specific schools.Screenshot containing a bullet point reading:

Insults, including those about:
Mental characteristics, including but not limited to allegations of stupidity, intellectual capacity, and mental illness, and unsupported comparisons between PC groups on the basis of inherent intellectual capacity. We do allow allegations of mental illness or abnormality when based on gender or sexual orientation, given political and religious discourse about transgenderism and homosexuality and common non-serious usage of words like “weird.”
7548
Luca Casonato 🏳️‍🌈 @lcas.dev · 27/12/2024
Me and @nicr.dev, in ski gear, at the top of a mountain
3471
Luca Casonato 🏳️‍🌈 @lcas.dev · 20/12/2024
Thanks everyone! ❤️❤️❤️❤️
Screenshot of the Deno repository, showing 100k stars
0541
Luca Casonato 🏳️‍🌈 @lcas.dev · 13/12/2024
we live in a society
tfw i need to sign a piece of paper and take a selfie with it and i don't own anything to write with
180
Luca Casonato 🏳️‍🌈 @lcas.dev · 21/11/2024
Look how happy he is
The Lego frame cabin. In the background is @nicr.dev smiling into the camera.
0311
Luca Casonato 🏳️‍🌈 @lcas.dev · 21/11/2024
A small outdoor area built with Lego. Two trees stems are visible around a rock formation. A upside down canoe is visible, and an otter facing away from the camera. The inside of the Lego frame cabin. Two stories are visible. The top floor has a bed and various things sprinkled over the floor, for example a DSLR camera. The bottom floor has a Lego minifig sitting in an armchair. There is also a record player and a second armchair on this floor. Also visible is a set of stairs going between the floors. A minifig is standing on the stairs. A view into the Lego frame cabin through the door. A kitchen and fireplace are visible.  Between them is a stack of logs.
120
Luca Casonato 🏳️‍🌈 @lcas.dev · 21/11/2024
A Lego frame cabin from the front. There are three Lego trees, and a Lego figure sitting on the porch. A set of steps lead up to the porchA side view of a Lego frame cabin. The center of the image contains a tree with red leaves, and a shack containing wood logs. In the background the porch of the cabin are visible A side view of a Lego frame cabin. Two trees are in the foreground, one with green leaves, one with yellow leaves. There is a canoe upside down under the trees. The back of a Lego frame cabin. Three trees are visible. The back of the building has a shower and towel. There is also a gas tank and some gauges. The house has two windows on this side, and a chimney
1170
Luca Casonato 🏳️‍🌈 @lcas.dev · 19/11/2024
000
Luca Casonato 🏳️‍🌈 @lcas.dev · 19/11/2024
Unfortunately still takes 20-ish seconds to load, and on develop.element.io all my encrypted chats are not decrypted. Element X on mobile is nice, but I still need the old client too because I can not accept sync requests on Element X. Is this an issue with the protocol, client, or matrix.org?
300
Luca Casonato 🏳️‍🌈 @lcas.dev · 15/11/2024
there is so much good stuff in here. i'm so pumped about this. soon. javascript.tm
IN THE UNITED STATES PATENT AND TRADEMARK OFFICE
BEFORE THE TRADEMARK TRIAL AND APPEAL BOARD

In re Registration of Oracle America, Inc.
Mark: JavaScript
Reg. No.: 2416017
Reg. Date: December 26, 2000

Deno Land Inc.
Petitioner,
1111 6th Ave Ste 550, PMB 702973
San Diego, CA 92101

v.

Oracle America, Inc.
Registrant.
500 Oracle Parkway
Redwood Shores, CA 94065
1436
Luca Casonato 🏳️‍🌈 @lcas.dev · 29/10/2024
Long train
020
Luca Casonato 🏳️‍🌈 @lcas.dev · 28/10/2024
My first ever trip on European Sleeper (together with @nicr.dev)
Dutch train information board showing a train with destination Praha hl.n. and train company European SleeperA picture of me and @nicr.dev sitting in a restaurant coach, with many many people in the background
291
Luca Casonato 🏳️‍🌈 @lcas.dev · 24/10/2024
this is an emoji we have in slack
old man screams at TC39 (the simpsons meme)
1140
Luca Casonato 🏳️‍🌈 @lcas.dev · 24/10/2024
It’s been a while 😅
2130
Luca Casonato 🏳️‍🌈 @lcas.dev · 21/10/2024
And there goes my week
A modal on the Steam client:

Added to your cart!

Factorio: Space Age

32 EUR

View in cart
140
Luca Casonato 🏳️‍🌈 @lcas.dev · 18/10/2024
Just got a new Lego set. Packaging was great /s (also why all the plastic bags 😭)
260