Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
victorNicollet
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
8 ms
·
31.
▲
by
victorNicollet
3y ago
This is definitely the best idea for "drop down" DSLs (by drop down, I mean that you are working in a general-purpose language and then, for one specific situation, you drop down into the DSL because it is more productive). I thin
32.
▲
by
victorNicollet
3y ago
A few strong opinions, a lot stronger than they were in my 2017 talk https://youtu.be/_gmMJwjg0Pk , surely that must be the experience speaking :) - Creating a DSL is a commitment. It is never done, it's either in devel
33.
▲
by
victorNicollet
3y ago
I think it's wonderful that we have created a tech ecosystem (a techosystem?) that allows people to contribute with only a very narrow knowledge of things—or, in less positive terms, that allows companies to hire cheaper labor because
34.
▲
by
victorNicollet
3y ago
I agree ! This creates a situation where the SQL query does not represent the domain knowledge, but makes assumptions about it and cannot be understood without it. And while this will always be true for the more unusual parts of the domain,
35.
▲
by
victorNicollet
3y ago
I've gone into more detail about this a few years ago in https://nicollet.net/blog/vanishing-schema-paradox.html but here's a short summary. Suppose you have the following analytics query: SELECT Custom
36.
▲
by
victorNicollet
3y ago
This is such a pervasive issue with the relational SQL query model ! The fact that joins always create brand new tables is powerful, but it's rarely what is needed. The example in this article can manage to do without a join because it
37.
▲
by
victorNicollet
3y ago
C# has boolean pattern-matching (and library functions with TryXYZ names) as a solution to this kind of issue. For instance: while (Console.ReadLine() is string line && int.TryParse(line.Trim(), out int number))
38.
▲
by
victorNicollet
3y ago
There's an optional but very helpful sixth step: expose the loaded configuration (by pushing it to the logs, or as a /_config endpoint). For secrets, obviously don't expose the secret value itself, but do expose the vault add
39.
▲
by
victorNicollet
3y ago
My company enforces this with two rules. One, deployment always builds and deploys exactly what's in the git repository, so there is no way to include anything else (secrets, configuration...) in a deployment. Two, it's obviously
40.
▲
by
victorNicollet
3y ago
Hard agree. I think it's easy to get stuck on the mental model that "the configuration value is the secret" (which means the configuration itself needs special handling), and the correct mental model should be "the confi
41.
▲
by
victorNicollet
3y ago
Indeed, the event stream contains the full history of all events that have ever been produced during the lifetime of the application.
42.
▲
by
victorNicollet
3y ago
For example, with static typing one would define many different complex types over the program, in order to have the compiler enforce the many different constraints (here the value can be null, but not there ; these two values must be provi
43.
▲
by
victorNicollet
3y ago
I think there are at least two ways to write safe and robust code, one being to rely on static types to provide automatic guarantees, and another being to structure the program in a way where tests reveal errors immediately. They are mutual
44.
▲
by
victorNicollet
3y ago
The pain of database migrations is what originally pushed me towards event sourcing. The database is read-only (but immediately mirrors changes applied to the event stream), and I can have multiple databases connected to the same stream, wi
45.
▲
by
victorNicollet
3y ago
There are really two reasons one would be analyzing the source code. One reason is to make sense of how to run it: to determine what instructions to emit. This is the kind of analysis where you want to propagate constants (even if they'
46.
▲
by
victorNicollet
3y ago
It's a matter of dev team culture: always leave the code cleaner than you found it. Hire people who understand this, and remind each other through reviews. As for external pressure from shareholders to skip cleanup: it's better to
47.
▲
by
victorNicollet
3y ago
https://nicollet.net Rather than a site to write articles, it's a site where I keep links to things I write (or talks I give) so that I don't lose them. I used to have a large blog ten years ago, with at least one post
48.
▲
by
victorNicollet
3y ago
Besides, even if you use the standard tool today, five years from now this will be "the tool that was standard five years ago" unless you actively migrate every so often. There are a few domains where the standard tools remain the
49.
▲
by
victorNicollet
3y ago
Agreed ! I would add that some queue solutions (such as Azure) implement a lease system where a dequeued message re-appears at the head of the queue after a while, unless its removal is explicitly confirmed.
50.
▲
by
victorNicollet
3y ago
What kind of situation would have a producer push into a queue but not care about the output ? The only one I could come up with, is doing some computation in advance that would otherwise need to be done just-in-time when the result is requ
51.
▲
by
victorNicollet
3y ago
Most of these issues stem from the fact that queues provide no useful guarantees about how many times each entry will be processed (zero? one? many?), at least not without a large amount of work around the queues, usually enough to make the
52.
▲
by
victorNicollet
3y ago
Today you can install the .NET runtime, as well as the .NET development tools, on both Windows and Linux. They handle F# as well as C# out of the box. You can `dotnet publish MyApp.fsproj` on either Windows or Linux, copy the resulting `pub
53.
▲
by
victorNicollet
4y ago
From my experience, the issue is that the 50% intuition is hard to overcome (and it takes an overwhelming amount of evidence for the 33%/66% reality in order to overcome that intuition). Here's an alternate version of the game whi
54.
▲
by
victorNicollet
4y ago
We've been doing this type of gradient descent in production for a couple of years now, and we've been very happy with it. A few insights from my experience: One of the main benefits of doing differentiable programming over a rela
55.
▲
by
victorNicollet
4y ago
Indeed, '$' is a just bit flip away from '4' or 'd', and we end up with a user account that can be accessed by any password.
56.
▲
by
victorNicollet
4y ago
Azure has the LS series of VMS [1] which can have up to ten 1.92TB disks attached directly to the CPU using NVMe. We use these for spilling big data to disk during high-performance computation, rather than single-machine persistence, so we
57.
▲
by
victorNicollet
4y ago
As for the declining quality of products and services, we are leaving a decade where start-ups were burning VC money to provide a service that was both superior and cheaper, in order to starve their competitors. Now that the competitors are
58.
▲
by
victorNicollet
4y ago
From my experience, if you're fine with pushing a few dozen tasks into a queue, then you're likely fine pushing a few tens of thousands into the queue as well. You won't be able to go faster than the max throughput of whateve
59.
▲
by
victorNicollet
4y ago
Having worked with OCaml and F#, I find that TypeScript requires fewer changes to non-type code in response to changes to the types. For instance, given `type T = { a: string; b: string; c: string }`, if I want to make `b` and `c` nullable
60.
▲
by
victorNicollet
4y ago
I reached the bottom of the page without getting a good understanding of what Unleash is. Is it something that deploys applications ? Something that pushes settings to applications ? Something that applications pull settings from ? An agent
More ›