HN user

sasmithjr

161 karma
Posts0
Comments49
View on HN
No posts found.

Once they no longer write about it, what then?

The AI will no longer be able to reproduce new a11y conventions/guidelines, but if no one is writing about it, do any new a11y conventions/guidelines even exist at that point?

I love Costco, but I get it. My wife and I always joke about how we can't leave without spending at least $100, and how that's only like 7 items sometimes.

For me, AI code generation for F# has been pretty good! There's one annoying thing Opus/Sonnet do (honestly don't remember what other models do): use old syntax for array indexing.

  values.[index] // Old way of indexing required a .
  values[index] // Supported for awhile now
That's the "biggest" issue I run in to, and it's not that big of a deal to me.

Yesterday, it did try to hallucinate a function that doesn't exist; compilation failed, so the agent changed the function to a fold and everything was hunkey-dorey.

I didn't look at the URL at first and was surprised when this turned in to an ad. Oh well!

Stop selling "unlimited", when you mean "until we change our minds"

The limits don't go in to affect until August 28th, one month from yesterday. Is there an option to buy the Max plan yearly up front? I honestly don't know; I'm on the monthly plan. If there isn't a yearly purchase option, no one is buying unlimited and then getting bait-and-switched without enough time for them to cancel their sub if they don't like the new limits.

A Different Approach: More AI for Less Money

I think it's really funny that the "different approach" is a limited time offer for credits that expire.

I don't like that the Claude Max limits are opaque, but if I really need pay-per-use, I can always switch to the API. And I'd bet I still get >$200 in API-equivalents from Claude Code once the limits are in place. If not? I'll happily switch somewhere else.

And on the "happily switch somewhere else", I find the "build user dependency" point pretty funny. Yes, I have a few hooks and subagents defined for Claude Code, but I have zero hard dependency on anything Anthropic produces. If another model/tool comes out tomorrow that's better than Claude Code for what I do, I'm jumping ship without a second thought.

sasmithjr was apparently trying to defend babysitting A.I. by making an analogy with mentoring juniors

I regret adding that last bit to my comment because my main point (which I clearly messed up emphasizing and communicating) is that I think you’re presenting a false dichotomy in the original comment. Now that work can be done with LLMs asynchronously, it’s possible to both write your own code and guide LLMs as they need it when you have down time. And nothing about that requires stopping other functions of the job like mentoring and teaching juniors, either, so you can still build relationships on the job, too.

If having to attend to an LLM in any way makes the job worse for you, I guess we’ll have to agree to disagree. So far, LLMs feel like one of many other automations that I use frequently and haven’t really changed my satisfaction with my job.

I don't think it's an exclusive choice between the two, though. I think senior engineers will end up doing both. Looking at GitHub Copilot's agent, it can work asynchronously from the user, so a senior engineer can send it off to work on multiple issues at once while still working on tasks that aren't well suited for the agent.

And really, I think many senior engineers are already doing both in a lot of cases where they're helping guide and teach junior and early mid-level developers.

[Dugan allegedly] escorted the them through a private back door to avoid arrest.

According to the complaint [0] on page 11, Flores-Ruiz still ended up in a public hallway and was observed by one of the agents. They just didn't catch him before he was able to use the elevator.

INAL but I don't think "Dugan let Flores-Ruiz use a different door to get to the elevator than ICE expected" should be illegal.

[0] https://static01.nyt.com/newsgraphics/documenttools/3d022b74...

The only thing that might be tricky about FizzBuzz is if the person doesn't know about the modulo operator. I can't remember the last time I used it in production code; I use it far more thinking about FizzBuzz than I do anywhere else.

Nobody cares 2 years ago

I agree people should be able to design things property, but I'm not sure this ramp is actually a good example. It might be! But no one is talking about an obvious issue for any ramp that would exist in that photo: it is merging bikes in to pedestrian traffic. So I'd think that you specifically want a ramp that forces the bike to slow down.

For another perspective, if you put 22.5lbs on each side of the bar, you wouldn't call that a "1 plate" lift even though both sides add up to 45 lbs. There are no plates involved in the lift, thus it's not a "1 plate" lift.

If you search "1 plate overhead press" or "1 plate ohp", you'll see many references to how that's a 135lb lift.

But nothing is stopping you from running Postgres in a Docker container, and wrap it in a unit test with the technology of your choice

I agree. I'm in .NET land, I use EFCore as my ORM, and I use EFCore's migration features. My ORM models are in a separate project (same git repo) from both the web server project and test project, and any hand written SQL gets added to the migration scripts that EFCore generates.

I spin up a docker container for postgres, my test code clears any existing DB, creates a DB in the container, and then runs the EFCore migrations on the DB. I have simple tests that make sure my CTEs are working correctly and that things like expected unique indices are also setup.

This works both locally and in Github Actions.

I just wouldn't call any of this a "unit" test. I put all this squarely in my integration test suite. I figure if IO is happening as a consequential part of the test (i.e. not setup/teardown), it's an integration test. I wonder how much that distinction is tripping people up? A lot of people think of unit tests as small, independent, and quick, so by only thinking about unit testing, they automatically rule out tests that have app code call out to a DB.

Based on the sibling comment, I'm going to have to take a look at Testcontainers. I'm not sure how much it'll simplify at this point, but who knows!

Heating up water quickly is almost never a use case.

It'd be helpful for my household for hot water for coffee and tea, and it'd also help us for heating up some extra water for grits or risotto when they need more.

Also, isn't boiling water just the measurable outcome of the test but what matters is that the pot is coming to temp sooner? Pots and pans heating up more quickly is helpful all the time.

I cannot stress enough that I think your second bullet is missing the point by a country mile. The Substack post is specifically talking about Nazi viewpoints, not "bad" viewpoints for some shifting definition of bad. And because we're talking about Nazi views, I think your first bullet then falls apart, too. There's no new scrutiny required for Nazi views because we've already done that work.

Additionally, Substack is allowing the monetization of (and thus profiting from) Nazi viewpoints. That's more than "shining a light on it".

Especially with risk of myocardiitis predominant in young males?

Isn't the risk of myocarditis worse from COVID than the vaccines? From [1], "In this systematic review and meta-analysis, we found that the risk of myocarditis is more than seven fold higher in persons who were infected with the SARS-CoV-2 than in those who received the vaccine."

I understand that my linked source doesn't seem to split up the data by age group, but given their overall findings, do you have a source that says the 7x difference doesn't hold in younger men?

[1] https://pubmed.ncbi.nlm.nih.gov/36105535/

In my mind, the difference between errors-as-values and exceptions is most useful when describing domain-specific errors and other issues that you have to handle in support of the domain/problem space. To me, domain errors make sense as errors-as-values, but your database being unreachable is unrelated to the domain and makes sense as an exception.

another example is where you are trying to fetch a file or database record that does not exist

I think this depends on whether or not you expect the file/record to exist. Handling a request from a user where the user provided the id used for lookup? The lookup itself is validation of the user input. But if you retrieved a DB record that has a blob name associated with it and your blob storage says that a blob doesn't exist by that name? I find that to be a great situation for an exception.

The errors-or-exception line is fuzzy and going to be dependent on your team and the problems you're solving, but I've found that it's a decent rule of thumb.

It's possible that you could end up with your example as given, but I think you could organize it differently so that it has your handling while also maintaining the same basic top-level pipeline.

Given what you've specified, I might organize it like:

  notify-user:
    if (ValidationError, notify-user-validation-error)
    or-if (DBError, notify-user-db-error)

  try-update-db:
    update-db
    or-then retry-in-5
    or-then retry-remote

  try-send-email:
    send-email
    or-then (requeue-email and ok)

  do-root-level-pipeline:
    validate
    and-then try-update-db
    and-then try-send-email
    or-then notify-user
I think I correctly mapped the and/or/thens to map/bind, so I hope that makes sense.
    a <- 4 // Assignment, valid
This is a compiler error because you haven't made your variable mutable.

Also, I actually like that initial assignment and equality testing both use =. I think of `let a = 1` to be less like assignment and more like `Assume that a = 1 is true`, so using the same operator (e.g. `a = 3`) makes sense for comparisons.

And `<-` as a separate operator is good because mutability should be exceptional for many (most?) codebases.

because the CoC allows this.

Project owners could do this before the CoC was created, and even if the CoC explicitly disallowed it, the project owners could do it anyway. The existence of the CoC changes absolutely nothing about what the project owners can and cannot do.

The Twitter Files 4 years ago

What was the content of the "handled" tweets, though? I think that matters a lot. For example, the RealJamesWood tweet (from [0]) seems to be a leaked nude of Hunter; it was most likely (safe to say) posted non-consensually, and I don't really see a big difference between that kind of tweet and revenge porn.

Having "stuff they dislike" removed would be one thing, but using the direct line at Twitter for reporting explicit ToS violations isn't a big deal.

[0] https://twitter.com/mtaibbi/status/1598828601268469760

I love using Unquote[0] in F# for similar reasons; it uses F#'s code quotations. Assuming the variables have been defined with the values you state, the assertion is written as:

  test <@ width > 0 && x + width < screenWidth @>
And part of the output is:
  width > 0 && x + width < screenWidth
  500 > 0 && x + width < screenWidth
  true && x + width < screenWidth
  true && 1500 + 500 < 1920
  true && 2000 < 1920
  true && false
  false
[0]: https://github.com/SwensenSoftware/unquote

EEE is when a proprietary addition is made that affects interop with other conformant implementations of an open standard. This privacy feature does not alter how Chrome, FF, or Safari will render HTML or run Javascript, so it is not EEE. There's nothing stopping Chrome from implementing a similar (or better) feature in order to maintain or grow its market share!

We're in funny territory that Microsoft is using a Google open source project in a consumer-positive way that also happens to hurt Google's primary business, but because the feature addition to Edge does not affect interop with other browsers, I don't see how this is EEE.

The email service I use has a library that allows me to set the Host as a constructor parameter, so I have an EmailHost environment configuration value that I change. It's localhost for dev/testing and set to the correct host for production. My test code then listens for the API calls from that library, uses a different library to parse the email, and then I can verify the content.

No code changes between dev, test, and production, but I added an environment variable to represent the e-mail host so that I can change where e-mails are sent as needed.

I dislike mocking, so I took the time to figure that out and set it up. If mocking works for you, I likely wouldn't go out of my way to change things to get rid of it.