78 karma · joined January 2, 2017
1. Compare the code against production data with MCP. We use a read only platform called Metabase which reads one of the MySQL replicas. I tell the agent to fetch production data and make a static pass (it doesn't run the code) in which it compares shapes and inputs, and oh boy it has caught a few misnomers.
2. To debug production data and create graphs. It connects to datadog (where we store the logs), checks the history of the commits, and many times suggest fixes. These are for low-medium impact like validations that didn't need to go through, or a step check that it was missing
3. Creating tickets on the board (we use linear). Now PRs are more detailed and can be understood.
And for coding? I've been spending the last 4 weeks scrutinizing EVERY output and decision from frontier models, and pushed back in many decisions.
How many of the talent from frontier labs is immigrant?
On the degree the software evolves and will be used.
The reason we've spent years discovering patterns, creating special syntaxes has been to tackle certain domain problems more efficiently and to have systems that can evolve through time.
The only constant is change.
Albeit LLMs chunk out code (and with great know how impressive output), the developer must have the know how to pass a certain threshold.
Writing in unknown languages may seem fine at first. But once you go to the edge, you'll be finding certain quirks, inefficiencies along the way that the LLM may work around it instead of removing it from root.
For example, I've been learning Effect.ts for some weeks now. I've used LLMs extensively, but before that there were a series of manual coding rounds first.
To understand composability, the nitty gritty, where things break, how, how the syntax is formed, and how could I structure some observability challenges I had around the library.
If I hadn't gone through that process, the code quality would be subpar. It wouldn't have been evident at first, but once the system would begin to evolve and adapt to feedback, things would be brittle, existing customers would be affected, and more.
I like to move fast without breaking things
In which programming language do I write?
Does this let me write an application, say in JavaScript, and then it automatically compiles it to a Desktop, Android, and iOS app?
It's also pretty interesting to think how an attacker could exploit images on his behalf. Never thought that would be a way!!!
Thanks!
Apparently they also block certain ports. As soon as I route the traffic through Tailscale through the same VPS I can connect without issues (My phone was affected as well)
I also got blocked from using RustDesk.
It's been crazy. As this happens intermittently. I had to set up a tailscale exit node in one of my servers to circumvent this crap. I lost several days and called Vodafone (ISP) to understand what was going on.
That's when I read Reddit and saw that crap.
I don't know why I never tried this in the past! SSHing my machine and vice-versa!
Just figured out that I could use my computer's terminal to send to my android's clipboard via SSH.
Pair it with Tailscale and we have a beast!
I haven't had to tweak an OS like Win 11 ever.
I learned from a friend to use Zod to check for process.env. I refined it a bit and got:
```
const EnvSchema = z.object({
NODE_ENV: z.enum(['development', 'production', 'staging']),
DATABASE_URL: z.string(),
POSTHOG_KEY: z.string(),
});export type AlertDownEnv = z.infer<typeof EnvSchema>;
export function getEnvironments(env: Record<string, string>): AlertDownEnv { return EnvSchema.parse(env); }
```
Then you can:
```
const env = getEnvironments(process.env);
```
`env` will be fully typed!
Definitely, I need to do some improvements in my frontend logic!
I'm in a process where application-level programming isn't cutting it anymore (I still have a lot to learn, but it's in the diminishing returns).
I've been looking to understand the entire stack at a deeper level (from how requests are made to how they're parsed), and this seems like the next natural step!
Thanks a bunch!
I love to have thumbnail tabs!
https://medium.com/@tomer2138/how-canaries-stop-prompt-injec...
Here, Derek DeJonghe, provides production-ready Nginx configurations with explanations for the most common cases.
And I think the latter is good enough for us to do exciting things.
ULIDs or CUID2s for primary keys?
I remember seeing Hussein Nasser's Shopify video: https://www.youtube.com/watch?v=f53-Iw_5ucA
And it made me switch to using ULIDs instead.
I know this may fall into the "premature optimization is the root of all evils" category. But since it's straightforward, what should I do?
I've been using ULIDs in distributed systems with no problems so far.
Ever since I've been using a Mac since Nov. 2023 that's been one of the things that I've battled with, and I've assigned a heck tons of shortcuts to make that happen.
I've been testing it out and works wonders.
It's pretty nice when I do forget about size.
For example, I saved 2 hours. I told it to generate a GraphQL resolver after inferring a Zod schema.
It followed the code conventions from other file.
It generated it beautifully.
Every time there's boilerplate, to ChatGPT it goes.