HN user

synthc

892 karma

reach me at hackernews@chrisblom.net

Posts5
Comments220
View on HN

I gave it a weird and convoluted code snippet, and asked an LLM to step through the execution and trace the value of the variables at each step.

It was completely correct and I realized LLM are capable of generalizing beyond their training sets

Very hit or miss.

Stack: go, python Team size: 8 Experience, mixed.

I'm using a code review agent which sometimes catches a critical big humans miss, so that is very useful.

Using it to get to know a code base is also very useful. A question like 'which functions touch this table' or 'describe the flow of this API endpoint' are usually answered correctly. This is a huge time saver when I need to work on a code base i'm less familiar with.

For coding, agents are fine for simple straightforward tasks, but I find the tools are very myopic: they prefer very local changes (adding new helper functions all over the place, even when such helpers already exist)

For harder problems I find agents get stuck in loops, and coming up with the right prompts and guardrails can be slower than just writing the code.

I also hates how slow and unpredictable the agents can be. At times it feels like gambling. Will the agents actually fix my tests, or fuck up the code base? Who knows, let's check in 5 minutes.

IMO the worst thing is that juniors can now come up with large change sets, that seem good at a glance but then turn out to be fundamentally flawed, and it takes tons of time to review

I'm thinking of using it to replace an analytics pipeline at my job, which now uses expensive batch jobs. If the tech is solid, we would have instant and incremental updates, instead of recomputing everything every X hours. This would simplify things a lot.

I think Materialize offers a similar product, but last I checked it was only available as a SaaS solution.

I hope to do a proof of concept soon, to compare both solutions

Why Clojure? 1 year ago

Immutability removes so much accidental complexity, it makes whole classes of mistakes dissapear. I'd also take immutability over types.

Clojure sort of guides you to simplicity, building everything out of functions and simple datastructures has big advantages when testing and reasoning about code.

I do find that in larger code bases, Clojure lack of types causes friction (spec is just a bandaid, not a fix).

There are languages with immutability and types (like Haskell), but these don't have the get-shit-done factor I seek.

For me it just speeds up learning the language, so I think i'd become fluent faster.

I do thoroughly review of the the LLM answers, and hardly every directly copy paste answer, so I feel this way I still learn the language.

Interesting! I did an internship where I tried to use transducers for fast information extraction. In theory, you can use FST's for fast approximate parsing. I didn't really work out, but I had lots of fun implementing a libary to compose FST's and explore cool algorithms to compose them. Not much business value was delivered, but I learned a lot.

This year I switched to a new job, using programming languages that I was less familiar with.

Asking a LLM to translate between languages works really well most of the time. It's also a great way to learn which libraries are the standard solution for a language. It really accelerated my learning process.

Sure, there is the occasional too literal translation or hallucination, but I found this useful enough.

'Serverless' has it's uses, but not for everything

- Serverless can get very expensive - DevEx is less than stellar, can't run a debugger - Vendor lock-in - You might be forced to update when they stop supporting older runtime versions

My first job (around 2010) was to extract events from financial news and police reports.

We built this huge system with tons of regexes, custom parsers, word lists, ontologies etc. It was a huge effort to get somewhat acceptable accuracy.

It is humbling to see that these days a 100 line Python script can do the same thing but better: AI has basically taken over my first job.

The Croissant Diet 2 years ago

I wouldn't recommend it but I'd figure the hackernews crowd likes deep dives on wierd diets.

GCP has the superior UI, api and design. I prefer it over the other clouds: Azure plain sucks and AWS has too much bloat and does IAM/accounts worse.

In my experience GCP's core services are very stable: I had a site running on free tier App Engine for over 10 years without any supervision.

However it is clear that many GCP products are run by skeleton crews and will not improve. Documentation is also lacking sometimes.

Dataform for example is conceptually a great tool, but hampered by really basic UI bugs.

I found Datastream (change data capture tool) impossible to use. You would think that shoveling data between 2 GCP products (Postgres and BigQuery) would be easy, but I spend a week fiddling with obscure network settings before giving up.

People discovered that using messaging can add tons of overhead, and async messaging architectures are harder to manage and monitor.

Serialization and going over the network are an order of magnitude slower and error prone than good ol' function calls.

I've seen too many systems that spent more time on marshalling from and to json and passing messages around than actual processing.

Caddy 2.8 2 years ago

Caddy is great! Absolutely beats Nginx and apache for hosting simple stuff.

Seem like the design decision to only allow a single thread to handle writes paid off. Datomic is a marvel of good design, I wish I could use it again....

I think the language has indeed reached a stable point and found its niche, which is small, but there are certainly domains where Clojure is the best fit.

The ideas behind Clojure (functional, immutable datastructures, homoiconic syntax, focus on simplicity, JVM interop) still stand strong IMO.

There are still some exciting projects done in Clojure: Electric Clojure and Rama come to mind.