Sign in

Kurt Raschke

@kurtraschke.com
216 followers 111 following 382 posts

they/them Transit and technology, mostly. Prone to ranting. Reposts and favorites are not endorsements. Posts are solely my own. ABATE NOXIOUS STIMULI.

PostsRepliesMedia
Kurt Raschke @kurtraschke.com · 5h
Notify NYC: Planned Flyover: Several F/A 18s will fly over the Verrazzano Bridge to the Mario Cuomo Bridge today 10/5 at 11:30 AM.
030
Kurt Raschke @kurtraschke.com · 09/08/2026
i literally just introduced @multipleunit.bsky.social to @jetbrains.com DataSpell and then this pops up! the horrors!
DataSpell update

DataSpell will be sunset on September 1, 2026.
Learn more about how this affects your license...
020
Kurt Raschke @kurtraschke.com · 09/08/2026
this adaptation of the Rumsfeld matrix to experiences came to me in a discussion with @multipleunit.bsky.social yesterday and now you have to see it too
a 2x2 matrix with the following items:
"expected pleasant"
"unexpected pleasant"
"expected unpleasant"
"unexpected unpleasant"
053
Kurt Raschke @kurtraschke.com · 27/06/2026
feels like as good a time as any to dust off and update my montage of every annual report of the Port Authority of New York and New Jersey
185
Kurt Raschke @kurtraschke.com · 16/06/2026
@oceansofnyc.com T687283C
010
Kurt Raschke @kurtraschke.com · 30/05/2026
looking at feed health over a longer span it seems like intermittent failures have been going on for a while but picked up in intensity around 5/25
160
Kurt Raschke @kurtraschke.com · 30/05/2026
* with that said, looking at agencies _within_ the consolidated TripUpdate feed (apologies for the quick-and-dirty chart), it seems like all of the expected agencies are there (including Muni and AC Transit) and with roughly the expected volumes of TripUpdates
140
Kurt Raschke @kurtraschke.com · 30/05/2026
a couple of quick observations from my GTFS-rt archive: * it seems like the consolidated regional RT feeds (operator ID 'RG' in the 511 API) were basically dead for much of the morning of 5/28 and are continuing to suffer intermittent timeouts
250
Kurt Raschke @kurtraschke.com · 08/05/2026
only with a human companion!
Screenshot of tweet by @NYCTSubway with text:

Sharing food with friends is one of life's pleasures, and we want to help transport love across the city. However, soup must always have a human companion, because an unattended bag on a train could delay thousands of people and divert first responders from real emergencies. ^JLP
020
Kurt Raschke @kurtraschke.com · 07/04/2026
I have just discovered the @1password.bsky.social SDK for Python (github.com/1Password/on...), and I love that I no longer have to worry about accidentally publishing credentials because it becomes LITERALLY IMPOSSIBLE. Need a connection to @clickhouse.com? There it is!
Screenshot of Python code:

import clickhouse_connect
from onepassword.client import Client, DesktopAuth

client = await Client.authenticate(
    auth=DesktopAuth(account_name=""),
    integration_name="",
    integration_version="20260406",
)

conn = clickhouse_connect.get_client(
    host=await client.secrets.resolve("op://Personal/ClickHouse/host"),
    port=await client.secrets.resolve("op://Personal/ClickHouse/port"),
    username=await client.secrets.resolve("op://Personal/ClickHouse/user"),
    password=await client.secrets.resolve("op://Personal/ClickHouse/password"),
)
101
Kurt Raschke @kurtraschke.com · 03/04/2026
Now, if you really want something to get your hackles up about, how about *Microsoft Access in space*?
3.1.3 Databases Access and Management
Utilizing the OPS LAN, crewmembers will be able to access database information from anywhere in the ISS. Database systems supported by the OPS LAN include IMS and HazMat.
3.1.3.1 IMS
Equipment and material aboard the International Space Station will be cataloged and stored in Microsoft SQL databases that will reside on the OPS LAN File Server. The Inventory Management System (IMS) controls placement and use of Station equipment and parts. The IMS will be a Web-based system using Microsoft Internet Information Server (IIS) and Microsoft SQL Server.
Modifications to the IMS database will be downlinked daily to keep the ground records synchronized. Server database updates can be sent via the OCA.
3.1.3.2 HazMat
The Hazardous Material (HazMat) database lists potentially harmful substances that may be encountered aboard the ISS. At present, HazMat is a Microsoft Access application; to conform to S-POCCB standards (see Section 2.7), HazMat will be hosted on SQL Server.
030
Kurt Raschke @kurtraschke.com · 03/04/2026
Instead, astronauts read their mail in offline Outlook, and before they go to bed, they quit Outlook, and then "overnight", their Outlook .ost file gets sent to the ground, opened, synced, sent back, and replaced on the on-orbit computer. Is it weird for us earthlings? Sure. Does it work? Yes.
OUTLOOK: All the .ost (offline) files reside on the ProShare PGSC. You must either be on the ProShare PGSC or networked to it to use Outlook. Close Outlook and every email message when you are finished composing e-mail or else it will cause problems when the .ost files are synced by MCC.  To sync means to downlink the messages that you composed, and uplink your mail. If Outlook is running during this process, these files may be corrupted, and the e-mail may not make it to its destination.  While the .ost files are being synced, Outlook will be disabled temporarily; you may get a message after you launch it that tells you this. Just try again later. Save your read e-mail by dragging and dropping it in your personal folder. This keeps the size of the .ost files small and speeds up the uplinking during the syncing process.
110
Kurt Raschke @kurtraschke.com · 03/04/2026
I can't speak for Artemis, but I can speak, from primary source documentation, to how email was handled on the Shuttle and is handled on the ISS. In this era of ubiquitous connectivity, I suspect some folks have forgotten what it means for a mail client to be "offline", or what an "outbox" is.
3.1.4 Crew Mail (E-Mail) Handling
Currently, Microsoft Outlook 98 is installed on SSCs to support crew email operations on-orbit. The manner in which Space Station crews create, send, and receive email messages is identical to how email is managed on the ground.
However, since orbiting crews do not have a direct network or Internet link for sending or receiving email, their messages are temporarily saved to an Outlook-unique ‘offline’ folder, or *.ost file. An *.ost file exists for each Station crewmember mail account, based on the crewmember’s network username; i.e., email from or to William Shepherd is stored in shep.ost file.

These *.ost files are periodically downlinked and uplinked to the crew via the Station OCA file transfer system. After the downlinked *.ost files are received by the ground, the OCA operator will log into the same mail accounts that exist on a JSC mail server. The mail server will synchronize the downlinked *.ost files with the ground mail accounts. Email being sent by the Station crew and saved in the *.ost files will be distributed over JSC networks and the Internet during the synchronization. New email sent to the crew is also saved to the crew *.ost files during the synchronization with the mail server. The updated *.ost files, with the new email, are later uplinked to the Station crew on-orbit to be viewed with MS Outlook.
121
Kurt Raschke @kurtraschke.com · 01/04/2026
On the ClickHouse side, you'll pass and return tuples, and aside from some extra parentheses when you call the function, it's basically seamless!
Screenshot of SQL code:

CREATE OR REPLACE FUNCTION do_something
LANGUAGE WASM
ABI BUFFERED_V1
FROM 'my_udfs'
ARGUMENTS (args Tuple(DateTime('UTC'), String))
RETURNS Tuple(DateTime('UTC'));
000
Kurt Raschke @kurtraschke.com · 01/04/2026
chrono's serde support provides optional serializers and deserializers for seconds, milliseconds, and nanoseconds, but you can't annotate function arguments nor return types with those! What to do? The answer is easy: just wrap your arguments and/or return type in a struct!
Screenshot of Rust code:

#[derive(Serialize, Deserialize, Debug)]
struct FunctionArgs {
    #[serde(with = "ts_seconds")]
    some_timestamp: DateTime<Utc>,
    some_string: String,
}

#[derive(Serialize, Deserialize, Debug)]
struct FunctionReturn {
    #[serde(with = "ts_seconds")]
    some_timestamp: DateTime<Utc>,
}

#[clickhouse_udf]
pub fn do_something(args: FunctionArgs) -> Result<FunctionReturn> {
    Ok(FunctionReturn {
        some_timestamp: args.some_timestamp + Duration::hours(args.some_string.parse::<i64>()?),
    })
}
100
Kurt Raschke @kurtraschke.com · 30/03/2026
I have been slowly trying to introduce the use of TRLs at work; perhaps next time instead of the very stuffy graphic below I will go for the one with unicorns instead.
020
Kurt Raschke @kurtraschke.com · 29/03/2026
it is the solemn obligation of every city with a waterfront to have a Yearning Pier.
Seattle’s Pier 62, pictured from above.
091
Kurt Raschke @kurtraschke.com · 24/03/2026
perfect weather for an iced latte, obviously!
a screenshot of the Apple Weather app showing the current temperature to be 36°F (2°C).
131
Kurt Raschke @kurtraschke.com · 24/01/2026
some unsolicited advice for, i suppose, younger me, and perhaps anyone else, but particularly techy folks whose neurodivergence gives them a rigid rule-following streak: when you get to these screens in the Debian installer, you can do whatever you want!
A screenshot of the text-mode Debian installer. There is a dialog box with a gray background on a blue screen. The dialog has the heading "Set up users and passwords" and contains the following text:

  A user account will be created for you to use instead of the root account for non-administrative activities.
  Please enter the real name of this user. This information will be used for instance as default origin for emails sent by this user as well as any program which displays or uses the user's real name. Your full name is a reasonable choice.
  Full name for the new user:

There is a prompt for text entry, and two buttons: "Go Back" and "Continue".A screenshot of the text-mode Debian installer. There is a dialog box with a gray background on a blue screen. The dialog has the heading "Set up users and passwords" and contains the following text:

  Select a username for the new account. Your first name is a reasonable choice. The username should start with a lower-case letter, which can be followed by any combination of numbers and more lower-case letters.
  Username for your account:

There is a prompt for text entry, and two buttons: "Go Back" and "Continue".
131
Kurt Raschke @kurtraschke.com · 23/12/2025
Je me souviens!
A tableau of STM monthly passes (CAM, carte autobus-metro) from September 2005 to April 2006.
060
Kurt Raschke @kurtraschke.com · 22/12/2025
Another surface parking lot in Jersey City gets developed!
040
Kurt Raschke @kurtraschke.com · 14/12/2025
Well then.
020
Kurt Raschke @kurtraschke.com · 06/12/2025
It was as if I were being followed by the infernal contraption.
130
Kurt Raschke @kurtraschke.com · 05/12/2025
These contraptions have no place on any road, anywhere, least of all on city streets. But it is the HEIGHT OF HYPOCRISY for a company whose goal is to "limit our impact on the communities we touch" to commission these monstrosities to roam around for a daft, insipid ad campaign.
A digital billboard truck parked on a Lower Manhattan street showing an ad for Columbia Sportswear.A digital billboard truck parked on a Lower Manhattan street showing an ad for Columbia Sportswear.
130
Kurt Raschke @kurtraschke.com · 04/12/2025
Hey, Columbia Sportswear, if you really care about the outdoors, if you really care about people, maybe you can explain how clogging New York City’s streets with two diesel exhaust-belching rolling billboards for a MARKETING CAMPAIGN aligns with your ESG goals?
120
Kurt Raschke @kurtraschke.com · 01/12/2025
In case, like me, you were wondering what on Earth UMTA was up to…
SDL: A SOFTWARE DESIGN LANGUAGE. FINAL REPORT
The Office of Methods and Support of the Urban Mass Transportation
Administration (UMT A) develops and distributes computer software that
aids local agencies in planning their transportation systems. This report
describes a computer language designed to accommodate the continuing
software development effort, namely, the Software Design Language
(SDL). SDL is a block-structured, scoped, go-to-less language with strong
type-checking. The blocks can be delimited either by an ALGOL-like
BEGIN-END block structure or by a uniform indentation scheme of the
subordinate statements in the block. The data types are based upon Pascal's
structured data types and upon Simula 67's abstract structured data types.
SDL also contains facilities for scientific calculations, logical decisions,
database manipulations and report generations. There are FOR, WHILE,
and UNTIL control structures, as well as IF-THEN-ELSE and CASE
constructs for decision control. Decision table constructs are added to
permit a• concise, tabular specification of complex conditional logic. The
report writer feature permits specification of output reports by means of a
two-dimensional layout depicting the actual form of the printed results. In
addition, SDL provides its users with: top down structure, I/O features,
multi-word names, treatment of shared (common) data, separate compila-
tion, and a run time library.
050
Kurt Raschke @kurtraschke.com · 12/10/2025
So, I've gone and built another widget: Data Lake Merritt, real-time stringlines for BART. data-lake-merritt.choochoo.systems
183
Kurt Raschke @kurtraschke.com · 12/10/2025
I was recently in the Bay Area again, and each time I find it a little bit harder to leave behind.
A Muni J Church light rail vehicle passing Mission Dolores Park at night. Some motion blur is visible.Street furniture at a Muni streetcar stop. The following text, a quote from Harvey Milk, is visible:

"HOPE FOR A BETTER WORLD. HOPE FOR A BETTER TOMORROW. HOPE WILL NEVER BE SILENT. YOU GOTTA GIVE THEM HOPE."A wide view of the San Francisco skyline at night taken from the outer end of Pier 14. The Salesforce Tower is prominently visible.
140
Kurt Raschke @kurtraschke.com · 27/07/2025
Does it still count as a “burrito taxi” if it’s a robot?
030
Kurt Raschke @kurtraschke.com · 20/07/2025
They’re moving in herds!
An image of four food delivery robots lined up on a sidewalk.
020
Kurt Raschke @kurtraschke.com · 15/07/2025
I try generally to be civil online. But this...this just pisses me off. To be clear, this sentiment is not directed at the commenter, but rather the circumstances which have led people to think this way. You see, I use em dashes and en dashes, and words like "delve".
Screenshot of a comment on a blog post. The text has been blurred except for the following sentence:

When you see the telltale signs of ChatGPT (em dash, bullet points, bold font, words like “delve”), just close the ticket and stop reading.
270
Kurt Raschke @kurtraschke.com · 11/07/2025
In 1999 a Fujitsu task force formed to reduce the backlog of outstanding defects in the software found code which they described as follows: "[w]hoever wrote this code clearly has no understanding of elementary mathematics or the most basic rules of programming"
Although parts of the EPOSS code are well written, significant sections are a combination of poor technical design, bad programming, and ill-thought out bug fixes. The negative impact of these factors will continue and spread as long as the PINICL fixing culture continues. This is partly due to the nature/size of the bug-fixing task and partly due to the quality and
professionalism of certain individuals within the team. The problem is
probably best illustrated examples :
Example 1:
This extract from EPOSSCore.dll has been written to reverse the sign of a
number and is equivalent to the command : -
d=-d
Public Function ReverseSign(d)
If d < 0 Then
d = Abs(d)
Else
d = d - (d*2)
End If
Reverse Sign = d
End Function
Whoever wrote this code clearly has no understanding of elementary mathematics or the most basic rules of programming.
110
Kurt Raschke @kurtraschke.com · 02/06/2025
I neglected to mention this in the blog post, but writing code to parse the "Location" field into semi-structured data led to quite a bit of fun with regular expressions. (I actually really enjoyed this! Really!)
A screenshot of a block of Rust code, containing the following six lines:

static ref RELATIVE_PATTERN: Regex = Regex::new(r"^(?P<location_type>Approachih?ng|Arriving At|At|Around|Departed|Departing|Leaving|Left|Near|(?:North|South) of) (?P<location_name>(?:.(?!Depot))+?)(?:(?:,? (?:p|P))(?:lat?form)?(?: ?(?P<platform_number>(?:[0-9 ]|(?:and))+))?)?$").unwrap();

static ref AREA_PATTERN: Regex = Regex::new(r"^(?P<area_name>.+) [Aa]reao?(?: fast)?$").unwrap();

static ref BETWEEN_PATTERN: Regex = Regex::new(r"^(?:In b|B)etween (?P<from_station_name>.+) ((?<!Elephant )and) (?P<to_station_name>.+)$").unwrap();

static ref LEFT_BETWEEN_PATTERN: Regex = Regex::new(r"^Left (?<from_station_name>.+)(?: Approaching |, heading to(?:wards)? )(?<to_station_name>.+)").unwrap();

static ref SIDINGS_PATTERN: Regex = Regex::new(r"^(?:(?:In|(?P<prefix>Siding at)) )?(?P<location_name>.+?)(?(<prefix>)| (?:S|s)idings?)(?: (?:Road |(?P<lparen>\())(?P<road_number>.+?)(?(<lparen>)\)))?$").unwrap();

static ref DEPOT_PATTERN: Regex = Regex::new(r"^(?:At )?(?P<depot_name>.+) Depot(?: entrance road)?$").unwrap();
030
Kurt Raschke @kurtraschke.com · 15/05/2025
We generally call this a “bus”, and have since the days of Blaise Pascal.
030
Kurt Raschke @kurtraschke.com · 15/05/2025
Shared autonomous rides? They’re called SkyTrain, and the DLR, and a whole host of other GoA3/4 systems.
130
Kurt Raschke @kurtraschke.com · 15/05/2025
“Transportation Hub”
240
Kurt Raschke @kurtraschke.com · 12/04/2025
To give you a sense of the impact this has had on me, I registered a domain and spent several weeknights fixated on building oddsfavorprogress.now, despite my great distaste for CSS!
A screenshot of the Web site oddsfavorprogress.now.

It contains the following blocks of text overlaid on an image of the Statue of Liberty:

“I understand the frustrations of New Yorkers who find themselves alternately confronted by problems and progress. One subway train is a brand new adventure in 21st-century transportation but the one right behind is a disheartening ride with grime and graffiti.
But slowly, yet steadily,
we are gaining ground and the
odds favor progress.

“New York today is what it has always been: it’s the world's No. 1 arena for genius, it’s the battleground of new ideas. New York is the city where the future comes to rehearse, where the best come to get better. We’re the leading city because we are the city of leaders.
If you're trying for the top, you cannot top New York.

The background image is described as follows: Aerial view of Lady Liberty's left side, face, torch, and tablet looking west.
131
Kurt Raschke @kurtraschke.com · 05/04/2025
Well, how else are you supposed to get your BLÅHAJ home?
An IKEA BLÅHAJ stuffed shark in the luggage rack of a Metro-North Railroad M8 train.
060
Kurt Raschke @kurtraschke.com · 05/04/2025
This is why I do what I do. This city is what it is because of transit. It exists because of, not in spite of transit. Without mass transit, this city would not exist. It’s simply impossible to move the volume of people who travel in this city without mass transit.
180
Kurt Raschke @kurtraschke.com · 30/12/2024
catless.ncl.ac.uk/Risks/34/51#... It was Muni, not BART, and anyway, the Second Generation VCC can boot just fine off a floppy emulator (this was proven on JNUP), and...oh well.
Indiana bakery still used Commodore 64 in 21st century (Boeingboing)
"Jim" <jgeissman@socal.rr.com>
Thu, 19 Dec 2024 12:56:51 -0800
https://boingboing.net/2024/12/19/indiana-bakery-still-used-commodore-64-=
in-21st-century.html

  [This reminds me of BART booting off a floppy. It works.]
010
Kurt Raschke @kurtraschke.com · 14/10/2024
now I somewhat want to figure out how to make a time series out of this... (maybe with a slider for different vintages?)
150
Kurt Raschke @kurtraschke.com · 30/09/2024
The lesson here is "if you really care, make your own copy".
020
Kurt Raschke @kurtraschke.com · 04/09/2024
"Microtransit" is not transit, it's not an "upgrade", and it's not how you "get riders back on board". instagram.com/p/C-blPhiN8fM/
110
Kurt Raschke @kurtraschke.com · 03/07/2024
Well, this should be fun! www.rssb.co.uk/standards-ca...
RIS-6702-DST Iss 1
Time and Date in Railway Systems
Synopsis
This document sets out requirements and guidance for the use, interpretation and formatting of time and date information in railway systems.
100
Kurt Raschke @kurtraschke.com · 22/06/2024
What?
000
Kurt Raschke @kurtraschke.com · 23/03/2024
foaming at sunset
020
Kurt Raschke @kurtraschke.com · 22/03/2024
I guess it's a bit soon to expect computer science curricula to be on board with the White House report on memory safety? www.whitehouse.gov/wp-content/u...
100
Kurt Raschke @kurtraschke.com · 16/03/2024
I had a PC Engines apu2 and a spare NVMe SSD sitting around, and eventually realized I could put the SSD in the apu2 with an M.2 to mini-PCIe adapter...or not. It's decidedly unhappy. It'll work for a short while, then drop off the PCIe bus.
100
Kurt Raschke @kurtraschke.com · 25/02/2024
My first thought upon seeing this (aside from “what the heck is that”) was “is that a Bookland EAN?”. Dear reader, that is indeed a Bookland EAN (i.e. ISBN-13).
000
Kurt Raschke @kurtraschke.com · 30/11/2023
I'm glad to see civil servants aren't the only ones thrust into absurd situations by their organizations' gift policies... www.nytimes.com/2023/11/25/m...
In the absent glow of the patio’s still-dormant fire pit, Courtney and I considered the dinner menu, which included a small quantity of caviar costing a sum of American dollars ominously, discreetly, vaguely, alarmingly, irresistibly and euphemistically specified as “market price.” Hours earlier, my supervisor had told me pre-emptively — and demonically — that I was not to order and expense the market-price caviar. Somehow, Courtney learned of this act of oppression, probably when I brought it up to her immediately upon being seated for dinner. To this, Courtney said, “I love caviar,” and added that my boss “can’t tell [her] what [she] can have,” because she doesn’t “answer to” him, “goddamn it.” She charged the caviar to her own personal credit card and encouraged me to eat it with her — even as I explained (weakly, for one second) that this is not allowed (lock me up!).Subsequently pinning down the exact hows and whys of my consuming a profile subject’s forbidden caviar took either several lively discussions with my supervisor (my guess) or about “1.5 hours” of “company time” (his calculation). In his opinion, this act could be seen as at odds with my employer’s policy precluding reporters from accepting favors and gifts from their subjects — the worry being that I might feel obligated to repay Courtney for caviar by describing her favorably in this article. Let me be clear: If the kind of person who purchases caviar and offers to share it with a dining companion who has been tyrannically deprived of it sounds like someone you would not like, you would hate Stephanie Courtney. In any event, to bring this interaction into line with company policy, we later reimbursed her for the full price of the caviar ($85 plus tip), so now she is, technically, indebted to me.
000