Advertisement · 728 × 90

Posts by Kurt Raschke

TIL that the term "planned obsolescence" was in use at least as far back as 1963!

1 hour ago 2 0 2 0

sometimes it's the really simple things, like ordering food for pickup while you're still a few stops away on transit and having it become ready just as you arrive.

1 week ago 4 1 0 0

Of course, the ClickHouse instance in question is hosted on my tailnet and so thanks to @tailscale.com I could publish the username and password here and it wouldn't matter in the slightest (not that I'm going to try that, mind you...). But the same approach works for "real" secrets, API keys, etc.!

2 weeks ago 0 0 0 0

You completely eliminate the risk of a sensitive file going astray; you eliminate the risk of something getting copied-and-pasted or zipped up and sent somewhere it shouldn't go.

2 weeks ago 0 0 1 0

Sure, you can put credentials in a .env file, and I've certainly done that before, and it works, but it's so much easier to say "hey, the credentials this script needs are already in my password manager, why don't we just get them from there?".

2 weeks ago 0 0 1 0
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"),
)

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"), )

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!

2 weeks ago 0 1 1 0

This was genuinely so much fun—sorry we didn't have more time to catch up but hopefully I'll be back on that side of the country before too long!

2 weeks ago 1 0 0 0

My BLÅHAJ turns one today!

2 weeks ago 3 0 0 0

this is why you can't take anyone seriously who says they're safer than cars; as these things become more commonplace for middle class people, they're gutting the will to support public transit among those groups, *who used to take transit*

2 weeks ago 38 3 1 0
Advertisement

a reminder that, as long as Waymo is undercutting the popular will for public transit, they are actively making people *less* safe

2 weeks ago 237 44 5 1

so not only are www.prana.com/p/stretch-zi... excellent pants but they also appear to be engaging in pocket reparations because the equivalent pants in the men's line have *fewer* pockets!

2 weeks ago 1 0 0 0
Highly efficient timezone lookups using a ClickHouse polygon dictionary I use ClickHouse for a wide range of data projects, and I recently needed to go from geographic coordinates to the time zone identifier for the time zone observed at those coordinates. The set of loca...

Need to go from geographic points to time zone identifiers in @clickhouse.com? With @evansiroky.bsky.social's time zone boundary shapefiles and ClickHouse's support for polygon dictionaries, it's fast and easy: kurtraschke.com/2026/04/clic...

2 weeks ago 2 2 0 0

bringing motonormativity to rodentia, i see…

https://www.bbc.com/news/world-us-canada-50167812

2 weeks ago 0 1 0 0

I don't know who needs to hear this, but if you design a system and 50% of its users are using it wrong, that is not user error.

You cannot blame users for that, you built a terrible system.

2 weeks ago 2171 238 62 13

Let’s talk about how this works and why we have older devices. When I started doing cabin integration back in 2017, we actually had a 2020 launch date. We bought the tablets the crew used for Artemis II back then. To not spend as much, we limited our choice to devices that were in the ISS catalog.

2 weeks ago 463 150 8 13
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.

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.

Now, if you really want something to get your hackles up about, how about *Microsoft Access in space*?

2 weeks ago 3 0 0 0
Advertisement

Anyway, quit laughing. It may sound absurd at first but it's a good solution to a unique problem and it has worked for years.

2 weeks ago 1 0 1 0

And that's without even getting into the security concerns around directly linking IP networks onboard a space vehicle and on Earth. (It's not impossible! It's been done before, but it's something we have to design for and think about carefully!)

2 weeks ago 1 0 1 0

Until and unless we invent some kind of faster-than-light communication, you're always going to have latency challenges which will strain terrestrial communication protocols. It simply makes no sense to try to run EWS over the DSN.

2 weeks ago 1 0 1 0

Will there ever come a time that the Station LAN is "just another network"? In many ways, it already is. The ISS has Wi-Fi, printers (and printer problems!), and many of the other trappings of a "real" network.

But there's no getting around physics.

2 weeks ago 3 0 1 0
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.

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.

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.

2 weeks ago 1 0 1 0

You could even then pack up Outlook's data files again, send them back, and keep right on going.

And indeed, this is how mail works in space. Outlook isn't talking to an Exchange server via TDRS or the DSN. Nor IMAP, POP3, or SMTP.

2 weeks ago 1 0 1 0

But, Outlook can operate just fine without a direct connection to a mail server. If you just happen to close Outlook, transport its files to another computer, and open them there, it'll send and receive mail as if nothing ever happened.

2 weeks ago 2 0 1 0
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.

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.

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.

2 weeks ago 2 1 1 0

Okay, I'm getting tired of people cracking jokes about Outlook (or worse, "hurr durr stupid NASA"), so, look, we're going to talk about email in space.

Yes, Outlook is in space. It has been for decades. Literally. However, the way Outlook is used is, well, you might say "out-of-this-world".

2 weeks ago 3 1 1 0
Advertisement

i recently learned, via @nat.makhijani.us, that some bodegas sell sleeves of Ritz crackers this way.

2 weeks ago 5 1 1 0

We used to have Sun Solaris in space, running on IBM ThinkPads. Those were the good days.

2 weeks ago 2 0 0 0

We've been down this road before: there is _literally_ the APTA Contactless Fare Media System Standard, plus ISO 24014.

2 weeks ago 7 0 0 0
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'));

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'));

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!

2 weeks ago 0 0 0 0
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>()?),
    })
}

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>()?), }) }

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!

2 weeks ago 0 0 1 0