HNHacker News
TopNewBestAskShowJobs

cldellow

2,755 karma · joined September 21, 2013

Colin Dellow / cldellow@gmail.com

https://cldellow.com/ https://code402.com/ https://www.hikeratlas.com/

submissionscomments
cldellow··on The money spent on lotteries doesn’t go to the park
Canada has some national parks that do something like this. Lake O'Hara's booking system this year is a random queue:

> In lieu of a random draw, Parks Canada will be employing a queuing system to help manage the expected high demand. Users may navigate to the reservation service webpage beginning at 7:30 AM. At 8:00 AM all users waiting will be randomly assigned a place in the queue. This is not influenced by how long users have been waiting. Any users arriving to the website after 8:00 am will be placed in the back of the line. When users reach their turn, they will be alerted via an on-screen message. At that point, they have 30 minutes to proceed to the reservation website and make a reservation.

cldellow··on Show HN: I made a SQL game to help people learn / challenge their skills
For anyone else who runs into this: this is configurable via the cog icon in the upper left corner - you can disable the typewriter effect altogether, or speed it up.
cldellow··on Man battling Google wins $500K for search result links calling him a pedophile
Oh, yeah, I think it's a bad law. But whereas I'd find it baffling for Canada to have such a law, I'm somehow not at all surprised that there are US states that are OK with that: "peace, order, and good government" vs "life, liberty, and the pursuit of happiness".
cldellow··on Man battling Google wins $500K for search result links calling him a pedophile
I think the article incorrectly summarizes the judge's order. The order makes clear that it was a lawyer telling the plaintiff that the _US state_ barred the action.

> [56] As for the possibility of suing the author of the Defamatory Post for defamation, the Plaintiff was advised by a lawyer in Town B that he was time-barred because, under [State A] law, the action must be brought within one year of its appearance, regardless of when the victim of the defamation sees the publication.

cldellow··on This account can no longer post all Tsunami Warnings, Advisories, Watches
They manage a large number of region-specific accounts, so that users can follow just the regions they care about. I imagine the cumulative total exceeds the API limit.

This is a pretty common pattern. Daryl Herzmann's iembot accounts are in a similar situation, I think.

cldellow··on SQL Maxis: Why We Ditched RabbitMQ and Replaced It with a Postgres Queue
They claim "thousands of jobs every day", so the volume sounds very manageable. In a past job, I used postgres to handle millions of jobs/day without too much hassle.

They also say that some jobs take hours and that they use 'SELECT ... FOR UPDATE' row locks for the duration of the job being processed. That strongly implies a small volume to me, as you'd otherwise need many active connections (which are expensive in Postgres!) or some co-ordinator process that handles the locking for multiple rows using a single connection (but it sounds like their workers have direct connections).

cldellow··on The SaaS Playbook
> If he's a successful entrepreneur, why does he need $20k to kickstart a book?

Kickstarter is a way to do pre-sales and marketing. IMO, the hardest part of any business is finding distribution. You should use every channel you can, Kickstarter included.

I agree that the copy on the page has a ton of puffery in it, though. I find that offputting, personally, but I can imagine it sells. (And, despite my personal dislike, it might still be worth $30.)

cldellow··on Frank founder allegedly defrauded JPMorgan out of $175M hit with federal charges
> JPM will sue and probably recover a very large chunk of it

Who are they going to sue? Javice's stake in the company was only worth $21M.

If the rest is held by shareholders who weren't involved in the running of the company, good luck getting it back from them.

cldellow··on Frank founder allegedly defrauded JPMorgan out of $175M hit with federal charges
I was involved in some diligence when a prior company was considering an acquisition. The numbers they claimed vs the numbers we could trust from their various SaaSes were pretty fishy. It was a small deal - more like $1M. We didn't pursue them, they don't exist any longer.

The gap here was _huge_. If I was the JPM diligence team, I might have asked them for read-only access to their product analytics. They claimed something like 10K FAFSA applications/day. This should show up nicely in their analytics tools. Yes, they could fake these visits--but it would be much harder to fake that you're getting 10K visits from appropriate regions, at appropriate times of day, with appropriate dwell times, with appropriate distribution of completion rates.

cldellow··on 15k inserts/s with Rust and SQLite (2021)
I agree that there's lots of room for improvement in both the benchmark and the exposition around it, but I disagree with:

> no use of [...] synchronous and journal mode

They enable both of these when configuring the connection:

    let connection_options = SqliteConnectOptions::from_str(&database_url)?
        .create_if_missing(true)
        .journal_mode(SqliteJournalMode::Wal)
        .synchronous(SqliteSynchronous::Normal)
        .busy_timeout(pool_timeout);
cldellow··on 15k inserts/s with Rust and SQLite (2021)
I'm probably missing something, but why would the temp_store pragma be relevant? They don't appear to be using temp tables in this benchmark.
cldellow··on 15k inserts/s with Rust and SQLite (2021)
They're using WAL and synchronous = NORMAL, so there shouldn't be that many syncs to begin with.

By default, I think it'd sync only on checkpoints, and a checkpoint would happen for every 1000 pages of WAL. 1000 is the default value of the wal_autocheckpoint pragma.

I am very surprised that you cannot reproduce more than 500 inserts/second on an NVMe drive with the same settings. I didn't try running this benchmark, as I'm not familiar with rust, but I've achieved ~15k/sec write transactions with python bindings under similar settings.

cldellow··on The Twitter API is now effectively unmaintained
Eh, for some values of well.

My post is one of the "12 [...] about Twitter not responding to the standard API access request process".

It's easy to keep an API running if you reject access to it, no? Due to a delightful quirk of how the Twitter Ads API review process works, our entire application no longer works, even for non-Ads API use. Genius way to manage the load.

cldellow··on Bard is much worse at puzzle solving than ChatGPT
I was curious to read it, too, so I googled to find the article.

It's located at https://twofergoofer.com/blog/gpt-4

cldellow··on Epic Games, others accuse Sundar Pichai of violating retention obligations
It's kind of the swiss cheese model. People will slip up--it's very hard to conduct business in entirely off-the-record chats.

I like the recent example of a junior BP trader. He had an opportunity to meet a vice president of the company, and was trying to impress the VP with what the trader's team was doing. The VP responded along the lines of "Gosh, it's funny, what you're describing almost sounds like market manipulation, but it can't be, because I'm sure we wouldn't be doing that."

The junior BP trader then immediately called the senior trader on their office phone. All calls to the office phone are recorded. Throughout the call, the junior trader is persistently trying to ask if what they're doing is market manipulation, and the senior trader keeps cutting him off before he can complete a sentence.

Then the penny drops, the junior trader says, "Hey, I just remembered, I need to run," hangs up, and immediately calls the senior trader on his (unrecorded) cell phone.

_That_ call wasn't recorded, and when asked in court, neither the junior trader nor the senior trader could recall what they discussed.

The judge didn't seem to believe them. BP had to pay a bunch of $, and the junior trader now works somewhere else. :)

cldellow··on Tell HN: Instagram's API has broken, support tickets ignored, status page green
I gather you haven't tried to use the Twitter Ads API lately. :) This is literally an API that makes it easier for people to give money to Twitter. And yet it's seemingly abandoned since the Musk takeover, with the old documentation taken down and the support forums ignored.
cldellow··on Giving the finger is a ‘God-given right’, Canadian judge rules
On the one hand, knowing what we know now, I certainly agree it would be preferable if he wasn't arrested.

On the other hand, the neighbour had made at least 4 reports to the police about harassment and death threats. I believe the neighbour's brother and parents had also spoken to the police in support of these claims. On the day of the arrest, the neighbour had _just_ made the most serious claim yet--about death threats.

Given that context, I can understand why the police legally have the right to arrest, and would be willing to arrest.

cldellow··on Giving the finger is a ‘God-given right’, Canadian judge rules
TBH, I think the conduct of the cops is fine here. If someone alleges that the other party is making death threats, I want them to investigate. It's not alleged that the cops mistreated Mr. Epstein. Obviously being arrested is traumatic, but the fault here lies with the unhinged neighbour, who will hopefully be prosecuted.

What's beyond the pale for me is that the Crown prosecutor brought the lawsuit at all. She's even a 16-year veteran. I'd be interested in reporting about how this case made it to trial once they had collected all the evidence.

cldellow··on Giving the finger is a ‘God-given right’, Canadian judge rules
I mean, the judge also said it was a "Charter-enshrined" right, but that's less punchy, so didn't make the headline.
cldellow··on Giving the finger is a ‘God-given right’, Canadian judge rules
From reading the decision and looking at Google Maps: the street is a short, narrow dead-end street in the suburbs. Most of the people who live there have young children who play together.

It would be very difficult to accidentally find yourself on this street, driving quickly.

Of course, it's dangerous in the sense that anything to do with cars is dangerous. But it seems pretty safe as far as these things go.

cldellow··on Show HN: APIRank.dev – We crawled and ranked public APIs from the internet
https://syncwith.com
cldellow··on Show HN: APIRank.dev – We crawled and ranked public APIs from the internet
Yes! I assume that this is just content marketing to get link juice to feed our Google overlords, but yeesh.

I run a SaaS that helps people get API data into Google Sheets.

For very popular services, we make customized connectors that hide all the complexity.

For medium popularity services, we do some automated transforms to hide complexity in the requests, and massage the response shape to an easier-to-consume format.

For low popularity services, we'll do a best-effort to point customers towards docs and common pitfalls.

All of that is to say: I've seen a lot of APIs!

So it's very bizarre to see Xero ranked #3 out of 5,651. Xero has this convoluted system where you need to query to get your tenant ID, and then pass that as a header. If you don't pass it, you get an opaque error message. That's the 3rd best API, eh?

Also, you sort of have to wonder how much human review went into this. GitHub has an OpenAPI spec, is a hugely popular service, and seems to be absent from this index.

(edit: Perhaps Github is present? I got no results when I searched "github", but I also get no results if I search "xero", despite Xero Assets API being the 3rd hit.)

cldellow··on Elon Musk publicly mocks Twitter worker with disability
The flags, I think lots of folks are just tired of all of Musk's drama.
cldellow··on Elon Musk publicly mocks Twitter worker with disability
The context of the conversation was "Hey, am I fired? Neither HR nor my management chain are responding to my emails."

A good answer would be "Check your email, HR has responded to you."

Instead, this guy got:

- asked to describe what his role was (not needed to answer the question)

- when he described his role, 2 "rolling on the floor laughing" emojis

- an Office Space meme, the context of which is useless employees

- an accusation that he was a malingerer feigning a disability to slack off

In the middle of this, Elon tweeted a meme about not being able to feel his legs. Coincidentally, the fellow who he is conversing with is wheelchair-bound and does not have the use of his legs.

He also, of course, got Musk's personal army ripping into him.

The ROFL emojis, Office Space meme and can't-feel-my-legs meme all count as mocking for me.

cldellow··on Reliability: It’s not great
They act as a go-between in that they ultimately host on AWS/GCP. They host their own infrastructure in that they appear to run Kubernetes and have built out their own deployment and service fabric, so they're just using the underlying machines as dumb compute, they're not, eg, building on RDS.

In March 2021, someone asked a question about carbon emissions of their data centres. They said they hosted on both GCP and AWS, but mentioned they were interested in moving to their own bare metal [1].

In April 2021, I asked a question about egress fees to Google, and they walked back a bit the comment about moving to bare metal [2].

As of March 2022, they're still in AWS/GCP [3].

As of September 2022, workloads for new users deploy into AWS, even in regions that were previously served by GCP [4].

[1]: https://community.render.com/t/does-render-use-green-energy/...

[2]: https://community.render.com/t/is-render-com-hosted-in-googl...

[3]: https://community.render.com/t/are-your-servers-owned-by-you...

[4]: https://community.render.com/t/which-render-regions-map-to-w...

cldellow··on Reliability: It’s not great
Render.com is another spiritual successor of Heroku. I'd love a world where Fly and Render are both very successful companies.
cldellow··on Scaling to millions of users with Google Sheets as a back end
I'm not sure if I'm saying this seriously or not, but:

no worries! In addition to its granular permissions systems which will now let you revoke the secretary's access, Sheets also has a robust backup and restore story built-in! Just click File -> Version history and rollback the offending change. (You can do a live preview of what the effect will be, to confirm you're rolling back the right change.)

The problem Sheets has is that they built a tool that is too good :)

cldellow··on Scaling to millions of users with Google Sheets as a back end
I run a Google Sheets-based SaaS. The default limit is 60 write req/user/min and 60 read req/user/min.

In my experience, that's plenty!

Especially so since Sheets has a very advanced API relative to, say, Airtable. For example, you can do atomic updates of multiple sheets in a single request. A single request can contain like 100MB of data. (It'll be very slow, and at this point, a person should question their life choices, but it'll work.)

cldellow··on sqlean: A set of SQLite extensions
I use sqlean for the same reason that I use any pre-built library: it makes my life easier.

sqlean's existence provides the kernel around which other things in the ecosystem can coalesce. For example, karlb's sqlite-sqlean pip module [1], which makes it easy to get these extensions in any Python project in a cross-platform manner.

I've used the math library myself recently: the SQLite in my distro is 3.31. I could install the tooling necessary to build a new SQLite, or I could use this project.

I also use the crypto library in my datasette-ui-extras library, which can run on a variety of end-user platforms. It's nice not to have think about the packaging myself.

To each their own, of course! But for me, calling this "mostly noise" is a disservice to its maintainers.

[1]: https://pypi.org/project/sqlite-sqlean/

cldellow··on sqlean: A set of SQLite extensions
Not by default. You can build it with the SQLITE_ENABLE_ICU flag to get Unicode support.
← PreviousPage 3 of 16Next →