HN user

aidos

8,340 karma

Co-founder of https://www.countfire.com

I like automating things. Currently building lots of software in Python / Typescript / Postgres.

Contact me: aidankane on that google hosted email platform.

Posts41
Comments2,678
View on HN
www.newyorker.com 3y ago

Trial by Fire

aidos
2pts0
fettblog.eu 5y ago

TypeScript + React: Why I Don't Use React.FC

aidos
1pts0
en.wikipedia.org 5y ago

The original Sankey diagram from 1898 (now used in Google Analytics)

aidos
2pts0
www.quantamagazine.org 6y ago

Mathematicians solve version of rectangular peg problem

aidos
2pts0
news.ycombinator.com 6y ago

Tell HN: PSA about getting hired via Stack Overflow

aidos
2pts1
vimeo.com 7y ago

Radiohead remixed on computer parts (2008)

aidos
1pts0
www.kickstarter.com 7y ago

Antstream: Retro Gaming Reborn

aidos
3pts0
blog.chartmogul.com 7y ago

SaaS Quick Ratio: How efficient is your growth?

aidos
2pts0
mailinator.blogspot.com 8y ago

The Mailinator Architecture - 1 server, 6M emails/day [2007]

aidos
3pts0
en.wikipedia.org 8y ago

The Great Leap Forward

aidos
2pts0
en.wikipedia.org 8y ago

Complaint tablet to Ea-nasir

aidos
221pts74
news.ycombinator.com 8y ago

Ask HN: Best way to set up linux for kids?

aidos
4pts4
www.dropbox.com 9y ago

Dropbox is down

aidos
4pts0
status.intercom.com 9y ago

Intercom Incident Report for 2017-01-19 outage

aidos
2pts2
status.aws.amazon.com 9y ago

AWS DNS outage in EU

aidos
3pts0
gameprogrammingpatterns.com 9y ago

Game programming patterns

aidos
2pts0
www.youtube.com 10y ago

How to turn a sphere inside out [video]

aidos
1pts0
en.wikipedia.org 10y ago

The time Sony installed rootkits on music owners PCs

aidos
2pts0
gitlab.com 10y ago

Is gitlab down for anyone else?

aidos
1pts1
physics.stackexchange.com 10y ago

The sound pitch increases each time you tap the bottom of a cup of coffee

aidos
1pts0
status.aws.amazon.com 10y ago

AWS API Outage in EU-West

aidos
3pts0
www.firstmenonthemoon.com 10y ago

Experience the first manned lunar landing (Apollo 11)

aidos
2pts0
www.slate.com 11y ago

Animated History of the Atlantic Slave Trade

aidos
79pts46
www.slate.com 11y ago

Animated History of the Atlantic Slave Trade

aidos
2pts0
en.wikipedia.org 11y ago

Space Cadet Keyboard

aidos
2pts0
news.ycombinator.com 11y ago

Ask HN: What's with the AWS spot price rise?

aidos
2pts2
m.bbc.co.uk 11y ago

Drones-eye view through London's Crossrail tunnels

aidos
1pts0
www.pcworld.com 11y ago

If It Ain't Broke, Don't Fix It: Ancient Computers in Use Today

aidos
8pts0
twitter.com 11y ago

Amazon AWS US-East API is down - Can't launch instances

aidos
3pts1
unix.stackexchange.com 11y ago

How do I play YouTube videos in the terminal?

aidos
1pts0

Don’t get me wrong, I very much agree with the danger. As I highlighted - I saw it this morning when someone used Claude to draw the wrong conclusions.

I’m saying there is a way in which they can be used where there isn’t scope for numerical hallucinations at all. They can write sql queries, for example, without ever being allowed to even see numbers.

What invariably does and will happen though is they’ll inner join instead of left join and some data will get missed. Or there will be some missing context (users in this set already have a certain class of property by virtue of some selection bias and that will be mistreated as some signal etc).

Depends on how it’s done.

I use it a lot now for knocking up grafana charts etc. It’s not so much that the LLM is feeding the numbers through. You can still use real tools to analyse and summarise the numbers, it’s just much quicker at driving them.

As ever with data analysis, two things will continue to be true. Real insights come from spotting something that looks off and digging into it deeper. Secondly, it’s really easy to connect data in a misleading way.

I’ve had a Claude analysis handed to me this morning including a summary list of actions we’re going to take next which falls into this very trap.

The insights you’ll get from your data will only be as deep as the curiosity of the person at the helm.

Alleycat in CGA just hit me hard.

For the people that didn’t live through this time, lining these images up makes it obvious why those that did speak of how visually impressive the Amiga was.

That does seem like less than I would expect!

It always makes me a bit sad that everyone knows RHCP but less so their early stuff. Blood sugar sex magik is a funk masterpiece. Didn’t help that for years Spotify used the singles versions of the tracks so the levels were all over the place and it was basically unstreamable.

Can you explain how conflicts are not conflicts?

If I change a line of code several times and rebase on to a branch that changed the same lines of code, how are you sure what the right one is?

To what degree did I expand scope because I knew I could do more using the AI?

Someone at work recently termed this “Claude Creep”. It’s so easy to generate things push you towards going further but the reality is that’s you’re setting yourself up for more and more work to get them over the line.

Claude Code 500s 4 months ago

Yup same. Going a little insane trying to set up a new device that's having network issues. Claude was helping me diagnose. Seems like I've infected the whole internet.

One annoying thing about that flow is that when you change the world outside the model it breaks its assumptions and it loses its way faster (in my experience).

Write-only code 5 months ago

Ha! I had someone doing a task the other day and the llm they used wrote a regex in Perl. I joked that in 25 years all the seems to have changed is the number of layers between me and Perl.

For me, all the code in the PR at that point is in question. The code was changed as part of a bigger part of work and reverting it without understanding why might cause issues back the other way.

The other thing to say - that is missing from this conversation - is that if you’re using github, the original commits are still against the PR.

Maybe a slight misinterpretation of what I meant. The commit that goes with a PR is definitely useful context, but I’ve found more granular than that is seldom useful. Even big ones like “move from angular to react” - the details of someone getting something wrong in there don’t matter, it’s the scale of it that just makes me go “oh yeah, this is bound to be a mistake”.

Maybe different in other places, but after 15 years in my codebase, I’m still happy with a simple linear history.

Sudden flashbacks to when I was trying to figure out why there was so much traffic to a blog post (15+ years ago).

I guess the internet was looking for something different to my “kick-[ass open]-source software”.

It’s pretty hard to keep the commits in a working branch in a good legible state - certainly it takes work to do it.

In 25 years of professional development I’ve never really had a situation where the commits on a branch would have helped me understand what was going on a year ago when the work was done. That includes pretty big bits of project work.

I’d much rather have a trunk with commits at the granularity of features.

Vim recognises that the typing text is a small part of coding by defaulting to a mode in which you can’t even type :)

For me, vim is a nice way to navigate code. It’s really fast to jump from place to place so I can explore quickly and build an understanding.

Pandas 3.0 6 months ago

allows functions to read the context they’re called in

Can you show an example? Seems interesting considering that code knowing about external context is not generally a good pattern when it comes to maintainability (security, readability).

I’ve lived through some horrific 10M line coldfusion codebases that embraced this paradigm to death - they were a whole other extreme where you could _write_ variables in the scope of where you were called from!

Ha! As if anything about Notion is simple.

But yeah. It's all just objects pointing at each other. It's mostly tree structured, but not entirely. You have a Catalog of Pages that have Resources, like Fonts (that are likely to be shared by multiple pages hence, not a tree). Each Page has Contents that are a stream of drawing instructions.

This gives you a sense of what it all looks like. The contents of a page is a stack based vector drawing system. Squint a little (or stick it through an LLM) and you'll see Tf switches to Font F4 from the resources at size 14.66, Tj is placing a char at a position etc.

    2 0 obj
    <<
      /Type /Page
      /Resources <<
        /Font <<
          /F4 4 0 R
        >>
      >>
      /Contents 5 0 R
    >>
    endobj

    5 0 obj
    <<
      /Length 340
    >>
    stream
    q
    BT
    /F4 14.66 Tf
    1 0 0 -1 0 .47981739 Tm
    0 -13.2773438 Td <002B> Tj
    10.5842743 0 Td <004C> Tj
    ET
    Q...
    endstream
    endobj
I'm going to hand wave away the 100+ different types of objects. But at it's core it's a simple model.

You can replace objects in PDF documents. A PDF is mostly just a bunch of objects of different types so the readers know what to do with them. Each object has a numbered ID. I recommend mutool for decompressing the PDF so you can read it in a text editor:

    mutool clean -d in.pdf out.pdf
If you look below you can see a Pages list (1 0 obj) that references (2 0 R) a Page (2 0 obj).
    1 0 obj
    <<
      /Type /Pages
      /Count 1
      /Kids [ 2 0 R ]
    >>
    endobj

    2 0 obj
    <<
      /Type /Page
      /Contents 5 0 R
      ...
    >>
    endobj
Rather than editing the PDFs in place, it's possible to update these objects to overwrite them by appending a new "generation" of an object. Notice the 0 has been incremented to a 1 here. This allows leaving the original PDF intact while making edits.
    1 1 obj
    <<
      /Type /Pages
      /Count 2
      /Kids [ 2 0 R 200 0 R ]
    >>
    endobj
You can have anything inside a PDF that you want really and it could be orphaned so a PDF reader never picks up on it. There's nothing to say an object needs to be referenced (oh, there's a "trailer" at the end of the PDF that says where the Root node is, so they know where to start).

The linked Claude generated script for giving more control over permissions in tool use is… typically Claude.

The code interleaves rules and control flow, drops side effects like “exit” in functions and hinges on a stack of regex for parsing bash.

This isn’t something I’ve attempted before but it looks like a library like bashlex would give you a much cleaner and safer starting point.

For a “throwaway” script like this maybe it’s fine, but this is typical of the sort of thing I’m seeing spurted out and I’m fascinated to see what people’s codebases look like these days.

Don’t get me wrong, I use CC every day, but man, you do need to fight it to get something clean and terse.

https://gist.github.com/mrocklin/30099bcc5d02a6e7df373b4c259...

Makes sense. I agree that it’s probably a safe bet too. Not sure how customers would feel about it though.

It’s also funny how these tools push people into patterns by accident. You’d never consider sending a customer’s details to a 3rd party for them just to send them back, right? And there’s nothing stopping someone from just working more directly with the tool call response themselves but the libraries are setup so you lean into the LLM more than is required (I know you more than anyone appreciate that the value they add here is parsing the fuzzy instruction into a tool call - not the call itself).

No model should ever know Jon Snow’s phone number from a SaaS service, but this approach allows this sort of retrieval.

This reads to me like they think that the response from the tool doesn’t go back to the LLM.

I’ve not worked with tools but my understanding is that they’re a way to allow the LLM to request additional data from the client. Once the client executes the requested function, that response data then goes to the LLM to be further processed into a final response.