Hacker Newsnew | past | comments | ask | show | jobs | submit | infogulch's commentslogin

Q: 3. Get a user to upgrade their app's dependencies to versions newer than 2010.

A: Calculate the average age in years of all dependencies calculated by: (max(most recent version release date, date of most recent CVE on library) - used version release date). Sleep for that many seconds before the app starts.


I couldn't find my birthday in the first 10 or so pages, so I clicked "Give up" and searched the page for it. Said my pi index was in the 100,000s. Went back to the ui to select it manually and gave up after clicking fast for minutes and I hadn't even hit index 50,000.


I've been following Unison for a long time, congrats on the release!

Unison is among the first languages to ship algebraic effects (aka Abilities [1]) as a major feature. In early talks and blog posts, as I recall, you were still a bit unsure about how it would land. So how did it turn out? Are you happy with how effects interact with the rest of the language? Do you like the syntax? Can you share any interesting details about how it's implemented under the hood?

[1]: https://www.unison-lang.org/docs/fundamentals/abilities/


> congrats on the release

Thank you!

> Unison is among the first languages to ship algebraic effects (aka Abilities [1]) as a major feature. In early talks and blog posts, as I recall, you were still a bit unsure about how it would land. So how did it turn out?

No regrets! This Abilities system is really straightforward and flexible. You find yourself saying that you don't miss monads, if you were already of the FP affiliation. But were glad that it means that you don't have to understand why a monad is like a burrito to do FP.

> Do you like the syntax?

So this one is very loaded. Yes we LOVE the syntax and it is very natural to us, but that is because most of us that are working on the language had either already been fluent in haskell, or at least had gotten to at least a basic understanding to the point of of "I need to be able to read these slides". However we recognize that the current syntax of the language is NOT natural to the bulk of who we would like to be our audience.

But here's the super cool thing about our language! Since we don't store your code in a text/source code representation, and instead as a typechecked AST, we have the freedom to change the surface syntax of the language very easily, which is something we've done several times in the past. We have this unique possibility that other languages don't have, in that we could have more than one "surface syntax" for the language. We could have our current syntax, but also a javascript-like syntax, or a python-like syntax.

And so we have had lots of serious discussions recently about changing the surface syntax to something that would be less "weird" to newcomers. The most obvious one being changing function application from the haskell style "function arg1 arg2" style to the more familier "c?" like style of "function(arg1, arg2)". The difficulties for us will be trying to figure out how to map some of our more unique features like "what abilities are available during function application" onto a more familiar syntax.

So changing the syntax is something that we are seriously considering, but don't yet have a short term plan for.


The craziest thing in that video is realizing that the Entity Component architecture was actually invented for Sketchpad in 1963, but the whole idea was slept on until Looking Glass reinvented it in 1998 for Thief: The Dark Project.


I wonder if a columnar storage format should implement sum types with a struct of arrays where only one array has a nun-null value for each index.


Arrow has two variants of it and this is one of them. Other variant has a seperate offsets array that you use to index into the active “field” array, so it is slower to process in most cases but is more compact


Oh is this based on my favoritest data structure ever: zed's Sum Tree?


True! If only grandma wouldn't insist on bringing 250kg of weapons and ammunition with her everywhere I'd get much better range in my EV, but alas this is the USA.


250kg grandma = ~20 small dogs

250kg weapons = ~20 small dogs

Instead of technological advancements of EV motors, we can immediately use existing pharmaceutical tech (Ozempic, GLP-1) to immediately deliver weight reduction to cars. However, this will be immediately offset by the increase in weight of weapons carried, thanks to Jevons Paradox.


Quite frankly I would like to hang out with that grandma. Load it up, I’ll take the range hit.


Is it really that annoying?


My employer uses Outlook/Exchange and those reactions are a lot less annoying than short mails expressing the same thing on mailing lists and also is an alternative to notes not really demanding a proper response ending in the void. (Like a fun/life sharing post)


I don’t see any issues with it using outlook either but from what it sounds like when people do it for emails not managed by outlook, they’re getting a whole new email about it? If so, I could see how that would be annoying.


Yes


Is it really that annoying?

It depends on the context.

If it's my mother acknowledging receipt of a recipe, then it's fine.

If it's a co-worker acknowledging receipt of a legal document, then it is both unprofessional, and annoying.

I mock my co-workers by replying with an actual e-mail message with the word "Thumb!" in it. They've stopped thumbing my e-mail messages.


> if it's a co-worker acknowledging receipt of a legal document, then it is both unprofessional, and annoying.

Disagree - a reaction is a perfect acknowledgement and a clear sign of “you don’t need to do anything here”. If they send an actual email it could be:

    Acknowledged, thanks.

    By the way can you change X to Y?
And it’s super easy to miss.


You're that guy who everyone thinks is weird for doing the thing. In the real world language changes over time. We need not be dogmatic about it, you know what it means.


In the real world language changes over time.

This is what we used to say back in high school.

When you have actual "real world" experience, you learn that while language changes, there is professional language that you use in the workplace, and there is informal language that you use in a bar.

You don't use a single vocabulary for every interaction in every situation of your life. You alter your speech for the situation. You don't talk to the cop that just pulled you over, or the bank manager you're trying to get money from, or your mom the same way you talk to your friends watching a sportsball game.


You're that guy who everyone thinks is weird for doing the thing.

You mean like articulating complete sentences?


"Annoying" is probably a more accurate word to describe what they're thinking. Coworkers have to remember to not use the reaction buttons with this one specific person who responds like an ass to them.


If they annoy me, I can annoy them right back.

In the logic presented in this thread, how is an emoji any different from the word "Thumb?"


Wow how did I not know of this?!

How does it cancel in-progress goroutines when the provided context is cancelled?


They have to all use the special context.


They just need to be context aware, or call context-aware things.


Ok so no magic goroutine interruption, just contexts all the way down.

Still, this is nicer than hand-rolling a WG every time.


Yes, the term block chain does has a specific technical meaning: a sequence of hashed values where each contains the hash of the previous, similar to the way a git commit includes the hash of its parent commit. But the term blockchain has also taken on a broader colloquial meaning of "log with certain cryptographic properties", which both block chain and merkle tree implementations can satisfy with various advantages and disadvantages. I think it's fair to allow usage of the broader definition.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: