HN user

JelteF

1,084 karma

Building pg_duckdb at MotherDuck

[ my public key: https://keybase.io/jeltef; my proof: https://keybase.io/jeltef/sigs/ZMan3toJpggBpU3_dAtlav5NbAMU_TcEoMp4LaxqiwA ]

Posts45
Comments268
View on HN
www.lutanho.net 7mo ago

Magic Eye Tetris

JelteF
1pts0
generativeai.pub 7mo ago

The Eternal Return of Abstraction: Why Programming Was Never About Code

JelteF
15pts3
github.com 8mo ago

Temptations of an open-source browser extension developer (2021)

JelteF
3pts0
motherduck.com 8mo ago

Faster Ducks

JelteF
13pts1
archlinux.org 1y ago

Critical rsync security release 3.4.0 with read-only access RCE

JelteF
4pts0
github.blog 2y ago

New options for controlling the default commit message when merging a PR

JelteF
2pts0
checkmarx.com 2y ago

When "Everything" Goes Wrong: NPM Dependency-Hell Campaign – 2024 Edition

JelteF
1pts0
www.pgbouncer.org 2y ago

PgBouncer 1.21.0 released with prepared statement support

JelteF
20pts3
github.com 2y ago

PgBouncer 1.21.0 – "The one with prepared statements"

JelteF
2pts0
www.citusdata.com 2y ago

Citus supports the PostgreSQL MERGE command, as of Citus 12.0

JelteF
2pts0
yusitnikov.github.io 3y ago

Rush Hour Sudoku Puzzle

JelteF
2pts0
www.citusdata.com 3y ago

Distributed Postgres goes full open source with Citus: why, what and how

JelteF
7pts0
www.citusdata.com 4y ago

Citus 11 for Postgres goes fully open source, with query from any node

JelteF
62pts3
www.citusdata.com 4y ago

How to Benchmark Performance of Citus and Postgres with HammerDB on Azure

JelteF
2pts2
www.citusdata.com 4y ago

UK Covid-19 dashboard built using Postgres and Citus

JelteF
1pts0
www.citusdata.com 4y ago

How to scale Postgres for time series data with Citus

JelteF
3pts0
www.citusdata.com 4y ago

Shard rebalancing in the Citus 10.1 extension to Postgres

JelteF
2pts0
status.github.com 7y ago

GitHub is down

JelteF
2pts0
mobile.twitter.com 7y ago

Russ Cox: community process around Go dependency management was handled poorly

JelteF
4pts0
getstream.io 8y ago

Fixing the billion dollar mistake in Go by borrowing from Rust

JelteF
5pts0
www.traviscistatus.com 8y ago

Travis CI is down: Sounds like the main database was truncated

JelteF
4pts0
github.com 8y ago

DNS66: OSS ad blocker for Android that works for all apps (no root needed)

JelteF
30pts6
ds9a.nl 8y ago

An ELI5 Version of Spectre and Meltdown

JelteF
1pts0
xkcd.com 8y ago

Xkcd: Meltdown and Spectre

JelteF
11pts4
boats.gitlab.io 8y ago

Things explicit is not (coining syntactic salt)

JelteF
2pts0
news.ycombinator.com 8y ago

Some .io nameservers are returning wrong results again

JelteF
192pts73
news.ycombinator.com 9y ago

How to segfault bash: a() { a; }; a

JelteF
2pts3
www.mono-project.com 9y ago

Mono 5.0 released with C#7 support and open sourced Microsoft tooling

JelteF
3pts1
blog.travis-ci.com 9y ago

Travis CI will keep running EOLed Ubuntu 12.04 for 2-3 more months

JelteF
1pts0
graphite.readthedocs.io 9y ago

Graphite 1.0.0 released after almost 1.5 years

JelteF
2pts0

Quite some years ago I created a Python FUSE filesystem[1] to to interact with dokuwiki (a wiki system).

It's built on hde llfuse[2]. But that required implementing a bunch of low level APIs that were not really related to dokuwiki. So I created easyfuse[3][4] as a wrapper, which implemented the things that were unrelated the dokuwiki implementation. If you're interested it in building a FUSE system it might be worth looking at.

[1] https://github.com/JelteF/dokuwikifuse [2]: https://pypi.org/project/llfuse/ [3]: https://pypi.org/project/easyfuse/ [4]: https://github.com/JelteF/easyfuse

Vim Racer 2 years ago

I actually think the wall clock time that is used here is a more useful metric here. Using as few keystrokes is not necessarily most "efficient" in time if you have to think longer about which ones to press.

The most effective way I've found to get other people to "write" good commit messages is by changing the "Default commit message" for squash merges on the GitHub repo to "Pull request title and description". [1]

That fixes the "Squashing, when you have 100 crap commits, and then not re-editing the message is a crime" item, because suddenly not re-editing will give you a fairly useful message. This ofcourse assumes the PR description is useful, but I've found it much easier to convince people to write a decent PR description than to write decent commit messages.

[1] https://github.blog/changelog/2022-08-23-new-options-for-con...

One of the authors of the patch here. Two reasons:

1. This config option approach was extremely easy to implement

2. Because making this auto.conf read-only would break many existing tools around Postgres that write to auto.conf

I wanted to clarify that I (Jelte, the author of the final patch) work at Microsoft. So, it's definitely not just one company seeing benefit in this feature. Arguably Microsoft is a cloud company too though, but honestly most of the active contributors to PostgreSQL work at a "cloud company".

My personal favorite additions to my git config are using delta[1] as my pager for much more readable and syntax highlighted diffs. And adding the following alias, which means I no can always check out to the default branch of the repo, no matter if it's called master/main/develop/whatever

    [alias]
    checkout-default = "!git checkout $(git rev-parse --abbrev-ref origin/HEAD | sed 's@^origin/@@')"
[1] https://github.com/dandavison/delta

You can put this in your .gitconfig and do 'git checkout-default' to always checkout the default branch of the repo you're in, no matter what it's called:

    [alias]
    checkout-default = "!git checkout $(git rev-parse --abbrev-ref origin/HEAD | sed 's@^origin/@@')"

Disclaimer: I work at Microsoft on Postgres related open source tools (Citus & PgBouncer mostly)

Microsoft is heavily investing in Postgres and its ecosystem, so I wouldn't be extremely surprised if we would do this. We're definitely building things to combine AI with Postgres[1]. Although afaik no-one is working actively on query generation using AI.

But I actually did a very basic POC of "natural language queries" in Postgres myself last year:

Conference talk about it: https://youtu.be/g8lzx0BABf0?si=LM0c6zTt8_P1urYC Repo (unmaintained): https://github.com/JelteF/pg_human

1: https://techcommunity.microsoft.com/t5/azure-database-for-po...

SwiftKey is still the only keyboard with an autocorrect that's actually really helpful, instead of actively messing up what I'm writing. But only if you (counterintuitively) turn off the "autocorrect" checkbox in the settings. Because then you will always have 3 distinct options to choose from (instead of middle and left sometimes being the same). Apparently you can install SwiftKey on iOS too (although I've never tried it).

I Love Ruby 3 years ago

Were you successful? I spent a lot of time too, but never got "go to definition" to actually work well.

PgBouncer maintainer here, so obviously biased. But I think currently PgBouncer should still be the default connection pooler that you choose. There's a few newer options: Odyssey, pgcat, and supavisor. But all focus on a solving 1 or 2 specific problems that PgBouncer did not solve well, while not solving many of the other problems that PgBouncer does solve. So if you have the exact same requirements as the authors of those tools, then switching might be good. But otherwise you should probably continue using PgBouncer.

Supavisor specifically is too immature for general usage IMHO. It's missing some really core functionality like query cancellations: https://github.com/supabase/supavisor/issues/174 Also it's now the only connection pooler without prepared statement support.

I did a talk on this exact topic at PGConf NYC recently. My slides are here: https://github.com/JelteF/slides/raw/main/2023-10-05-future-...

Personally as an open source maintainer I like the typo/wording fixes/automated refactor PRs the most. There's almost no effort needed from my side to review them, so I almost always merge those very quickly. It's the PRs that implement huge are the ones that you take the most time reviewing/discussing, and thus those are the ones I put off looking closely at.

Pgbouncer maintainer here. Overall I think this is a great description of the tradeoffs that PgBouncer brings and how to work around/manage them. I'm actively working on fixing quite a few of the issues in this blog though

1. Named protocol-level prepared statements in transaction mode has a PR that's pretty close to being merged: https://github.com/pgbouncer/pgbouncer/pull/845

2. SET/RESET tracking in transaction mode. For this we need some changes in the postgres protocol to ask for postgres to tell pgbouncer about setting updates. This is being worked on here: https://www.postgresql.org/message-id/flat/CAGECzQQOOhH1Rztu...

3. The single threading issue can be worked around by using multiple processes that listen on the same port using so_reuseport=1 https://www.pgbouncer.org/config.html#so_reuseport

4. The pg_dump issue can actually be solved already by installing the Citus extension and using track_extra_parameters (otherwise you have to wait for the same postgres protocol addition that's needed for the other SET/RESET commands) https://www.pgbouncer.org/config.html#track_extra_parameters

Go 1.20 released 3 years ago

There's many uses for random numbers where cryptographic random is unnecessary, but where different runs of the program should use different pseudo random sequences.