HN user

abcxjeb284

30 karma
Posts0
Comments13
View on HN
No posts found.

It’s really 2 ways to do it, and the defaultdict way (I believe) would have less allocations in a deeply nested loop (since this version has to create a {} and a [] every time).

Also setdefault causes confusion for less experienced users in a way that the defaultdict format does not.

Great for expressivity of multi-level dicts (excuse the goofy example):

    state2name2visited = defaultdict(lambda: defaultdict(list))
     state2name2visited[“PA”][“Joe].append(“Pittsburgh”)

In hindsight, probably would’ve been way better to ship a `cryptography2` package and deprecate the old package.

That way you get the benefits of using rust without the anger about the sudden breakage of a transitive dependency.

In terms of floating versioning, I honestly think it’s not reasonable to ask packages to do this, because then you get into dependency hell with unfixable dependency conflicts.

Bit of a miss on why “serverless” (though author & I have different definitions), possibly because of language / toolset.

Lambda / Step Functions make for an easy combo for easily understandable units that you can use without a bunch of servers. Combine it with AWS CDK and you end up with a low boilerplate, auto-completeable environment (with types!) that’s actually easy to unit test locally!

I agree that yaml config and figuring out how to wire things up sucks. I’m open to Smalltalk being better.

But we’ve been using Lambda / Step for a few years now and it’s been highly robust, easy to understand, monitoring / logging essentially free and - best of all - we haven’t had to manage any server upgrades / patches / etc the whole time. (And super easy to spin up stack per user)

Have a queue of items to work on? Combine lambda + sqs (just a few lines with cdk) and now you have code that auto scales linearly with how many entries are in your queue.

We did write our own tool to handle boilerplate of linking python functions to their lambda handlers (but again this is the beauty of actually being able to use programming language to define your stack)

But Wintel will own business desktops for probably a decade, unfortunately.

Do you see this as being different from what was going on pre-M1?

Aside from shared math libraries, seems like most stuff required cross compilation just to work - I’m not clear that M1 adds more work on top of that.

It’s pretty absurd for github to suggest that you should go through multiple steps to disable commands to log untrusted output. [1] Poor form to expect developers to understand and check for a new way that they need to sanitize their input rather than Github fixing it (possibly in a backwards incompatible way)

At a minimum they should provide a shell script (`show $XYZ`) and a js function that handles generating those tokens and enabling/disabling workflow commands for you.

[1] https://github.blog/changelog/2020-10-01-github-actions-depr...