5,257 karma · joined February 26, 2009
What Stripe did for payments, Pylon is doing for the mortgage industry: We're taking a sleepy industry with backward technology and re-building the stack from the ground up. We're first-principles thinkers, and our team is small, talented and ambitious.
I'm hiring generalists who love coding and want to build something beautiful in an industry where technology written in the 90s is the norm. We're Series A, well funded, and we have traction with customers. Come to Menlo Park and help us turn the $2 trillion US mortgage industry into a set of APIs.
I've been commenting on HN since 2009, if you apply through this link, I'll personally reply to your app:
https://jobs.ashbyhq.com/pylon?utm_source=hn-whos-hiring
If you like:
- Programming languages
- Operations research & optimization
- Building things the right way
Come join us!
Google kills off things that are a maintenance burden for them, they dont care who is using it.
Amazon has their pathologies, but killing off beloved services isn't really one of them
LLMs write code, today, that works. They solve hard PhD level questions, today.
There is no trick. If anything, it's clear they haven't found a trick and are mostly brute forcing the intelligence they have. They're using unbelievable amounts of compute and are getting close to human level. Clearly humans still have some tricks that LLMs dont have yet, but that doesn't diminish what they can objectively do.
i.e. instead of a big bang C++ -> Carbon migration, instead you want something like:
C++ -> C+++ -> Carbon-- -> Carbon -> Carbon++ -> Rust
(Basically fake names for more gradual transitional intermediate languages, assuming Google would like to have everything in Rust eventually.)
The key idea of "targeting automated migrations" makes this kind of thing feasible
Why does it feel bad? Everyone wants to be right more often. All else equal, we'd like the people we work with to be right more often than wrong.
Here are some statements that don't feel as bad to say for some reason (not endorsing these per se, just they dont feel bad to say):
- good engineers are pleasant to work with
- good engineers are practical
- good engineers know a lot about engineering
Here are some statements that start to feel weirder to me:
- good engineers have high IQs
- good engineers are uncompromising
- good engineers know that lisp is the best language
- good engineers are right a lot
Maybe it has something to do with the ratio of how easy it is to verify the property, with how hard it is to embody the property once you hear about it.
Having a high IQ is kinda hard to verify directly. If that was a widely known phrase, everyone would just claim they had the high IQ. Same with being right: you can just claim you're right a lot. Being uncompromising is easy, just don't compromise.
Being practical is hard to do, but maybe is easy to claim? Maybe it's easier to verify if someone is practical than if someone is smart. Not sure. Being pleasant tonwork woth is hard work maybe? Maybe there's just a social confluence bias.
It could plausibly be 20 years before that plays out
(Unfortunately, it turns out he was struggling with dementia and it seems he was trying to cash out before he couldn't act at all)
How might this cash out with recursive LLMs? Generalizing is very similar to compression: imagine recovering the Schrodinger equation from lots of noisy physical experiments. You might imagine that an LLM could output a set of somewhat general models from real data, and training it on data generated from those models generalizes further in future passes until maybe it caps out at the lowest entropy model (a theory of everything?)
It doesn't seem like it actually works that way with current models, but it isn't a foregone conclusion at the mathematical level at least.
But we aren't just talking about SQL the high level language that you might execute when you are poking the data live. In a web app dynamically constructing sql, we have multiple issues:
1. Deserialization: we need to know what the query returns and plug it into data structures we want to use in our program
2. SQL is dynamically typed, and if you construct queries dynamically you're even more dynamically up a creek. Maybe even "sql injection vulnerability" up a creek.
1 and 2 are solved by strongly typed query builders like this: the type system has a proof that the ways you will construct queries in your program actually result in valid sql queries and that they return the right data shape.
It's actually solving a real problem
We'll see if I can actually use it!
There are native macos containers, but they arent very popular
But generically, a compiler is the exact kind of thing you want when you're doing "Take this data structure and transform it into this other data structure". In a traditional compiler, we usually deserialize the first data structure from a string (parsing), call that data structure a CST, validate the data structure (syntax & type checking), do the transform, then serialize the output.
This kind of validate and transform pattern is all over programming though. And it's pretty easy to test with things like property tests. So yeah, we should build little compilers more as abstraction boundaries in our code.
It's humans that copy each other without a second thought. It's a great heuristic on average. These kinds of fables are correctives against our first instinct to replicate other's behaviors, but if we actually tried to reason through everything from first principles we'd never get anything done.
Copying is the plain pieces in the lucky charms, thinking things through is the marshmallows.
- awkward groping for how to explain things
- none of the words match how we talk about things now
Algol-68 was clearly so ahead of its time, it's hard to understand anything they're saying. They're in outer space"Alive" is a fuzzy boundary in concept space that helps humans navigate a fractally complex world. It's not a fact about mitochondria that either hides or reveals structure. We can harness the potential of viruses, and reasonable people can disagree on whether they are alive.
Oh you totally can, you just have to give up consistency
There are libraries that handle it, but they probably have weird types, you can just use functions in the prelude to write a lot of these basic utilities.
Yeah! Sometimes the thought isnt compressible and language doesnt help. But a lot of times it is, and it does
Serializing much higher dimensional freeform thoughts into language is a very lossy process, and this kinda ensures that mostly only the core bits get translated. Think of times when someone gets an idea you're trying to convey, but you realize they're missing some critical context you forgot to share. It takes some activation energy to add that bit of context, so if it seems like they mostly get what you're saying, you skip it. Over time, transferring ideas from one person to the next, they tend towards a very compressed form because language is expensive.
This process also works on your own thoughts. Thinking out loud performs a similar role, it compresses the hell out of the thought or else it remains inexpressible. Now imagine repeated stages of compressing through language, allowing ideas to form from that compressed form, and then compressing those ideas in turn. It's a bit of a recursive process and language is in the middle of it.