frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Laravel Comments Package

https://github.com/usamamuneerchaudhary/commentify
1•umun•13s ago•0 comments

CSS Carousel Configurator

https://chrome.dev/carousel-configurator/
1•stefankuehnel•3m ago•0 comments

CSS Anchor Positioning Tool

https://chrome.dev/anchor-tool/
1•stefankuehnel•4m ago•0 comments

China makes first 5G satellite-to-phone video call

https://www.scmp.com/news/china/science/article/3311108/china-makes-worlds-first-5g-satellite-phone-video-call-will-it-test-us-tiktok-curbs
1•mooreds•4m ago•1 comments

Generate Big Deals on Reddit Without Being Salesy

https://docs.google.com/document/d/1E7jXd7M_07nDD50xmU7CL3JJ3jYcjxA8WyxxNxLqhKU/edit?tab=t.0
1•mooreds•6m ago•0 comments

Dev Problems

https://builtfor.dev/99/
1•mooreds•6m ago•0 comments

Please Fund More Science (2020)

https://blog.samaltman.com/please-fund-more-science
2•ssuds•7m ago•0 comments

A Hugo Survival Guide (2022)

https://janert.me/guides/hugo-survival-guide/
1•Tomte•8m ago•0 comments

Addressing Criticism of RISC-V Microprocessors (2022)

https://medium.com/codex/addressing-criticism-of-risc-v-microprocessors-803239b53284
1•Tomte•9m ago•0 comments

Paper Is Good

https://dynomight.net/paper/
1•homarp•9m ago•0 comments

The genetic medicine of the future will be able to treat everything

https://english.elpais.com/health/2025-05-24/carl-h-june-creator-of-car-t-therapies-the-genetic-medicine-of-the-future-will-be-able-to-treat-everything-from-diabetes-to-chronic-infections.html
1•dxs•10m ago•0 comments

The Who Cares Era

https://dansinker.com/posts/2025-05-23-who-cares/
2•hjuutilainen•14m ago•1 comments

Crypto Investor Charged with Kidnapping and Torturing Man for Weeks

https://www.nytimes.com/2025/05/24/nyregion/crypto-investor-torture-italian-tourist.html
2•2OEH8eoCRo0•15m ago•1 comments

Company patented "ceiling fan" drone but it was already open source

https://twitter.com/Nicholas_Rehm/status/1925733974510383114
2•felineflock•17m ago•0 comments

Apple is hitting back in the war over internet age-gating

https://www.theverge.com/internet-censorship/673771/apple-texas-age-verification-law-objection-tim-cook
1•chriskanan•18m ago•0 comments

Lone coder cracks 50-year puzzle to find Boggle's top-scoring board

https://www.ft.com/content/0ab64ced-1ed1-466d-acd3-78510d10c3a1
1•DavidSJ•20m ago•0 comments

Cybercrime orders of magnitude more than state-backed ops: exWhite House advisor

https://www.theregister.com/2025/05/24/cyber_crime_bigger_than_nation_state/
2•rntn•24m ago•0 comments

Apple helped China become America's biggest tech rival

https://www.thetimes.com/business-money/technology/article/how-apple-helped-china-become-americas-biggest-tech-rival-8f83tttv5
6•felineflock•26m ago•1 comments

Exposed Industrial Control Systems and Honeypots in the Wild [pdf]

https://gsmaragd.github.io/publications/EuroSP2025-ICS/EuroSP2025-ICS.pdf
4•gnabgib•29m ago•0 comments

Show HN: I built a free AI-powered Pocket alternative

https://apps.apple.com/us/app/eyeball-ai-bookmarks-notes/id6670705634
1•quinto_quarto•30m ago•0 comments

Being God Is a Big Responsibility

https://qntm.org/responsibilit
1•ko_pivot•32m ago•0 comments

Infinite Feed Design Sucks

https://aphantasia.io/graph/2534
2•Aikaros•33m ago•1 comments

The loudest mechanical keyboard features relays and firecrackers to make noise

https://www.tomshardware.com/peripherals/mechanical-keyboards/the-worlds-loudest-mechanical-keyboard-features-relays-and-firecrackers-to-make-noise
1•rbanffy•37m ago•0 comments

Ncdu 2.8 – NCurses Disk Usage

https://dev.yorhel.nl/ncdu
1•macote•38m ago•0 comments

Go Beever AI

1•malv•38m ago•0 comments

Timebot – A Time and Frequency Expert System

https://timebot.febo.com/?page=info
1•thcipriani•41m ago•0 comments

LLM Friendly Projects

https://davidgasquez.com/llm-friendly-projects/
2•kalendos•41m ago•0 comments

Show HN: Unsiloed Chunker – VLM powered semantic chunking for RAG

https://github.com/Unsiloed-AI/Unsiloed-chunker
1•unsiloed-ai•41m ago•0 comments

Show HN: Made a free tool for affiliate marketers to fix in-app browser issues

https://www.link-it.bio/
1•DevEric•43m ago•0 comments

Show HN: Berb (Update) – WebRTC File Sharing

https://berb.app
1•goodpanda•43m ago•0 comments
Open in hackernews

Show HN: SuperUtilsPlus – A Modern Alternative to Lodash

https://github.com/dhaxor/super-utils-plus
64•dhax_or•5h ago
Hey HN!

After years of wrestling with Lodash's quirks and bundle size issues, I decided to build something better. SuperUtilsPlus is my attempt at creating the utility library I wish existed.

What makes it different?

TypeScript-first approach: Unlike Lodash's retrofitted types, I built this from the ground up with TypeScript. The type inference actually works the way you'd expect it to.

Sensible defaults: Some of Lodash's decisions always bugged me. Like isObject([]) returning true - arrays aren't objects in my mental model. Or isNumber(NaN) being true when NaN literally stands for "Not a Number". I fixed these footguns.

Modern JavaScript: Built for ES2020+ with proper ESM support. No more weird CommonJS/ESM dance. Actually tree-shakable: You can import from specific modules (super-utils/array, super-utils/object) for optimal bundling. Your users will thank you.

The best parts IMO:

compactNil() - removes only null/undefined, leaves falsy values like 0 and false alone

differenceDeep() - array difference with deep equality (surprisingly useful)

Better random utilities with randomUUID() and randomString()

debounce() that actually works how you expect with proper leading/trailing options

Also genuinely curious - what are your biggest pain points with utility libraries? Did I miss any must-have functions?

Comments

gaaaaaaaarf•5h ago
Nice work! Reminds me of https://github.com/angus-c/just

Suggestion: add more tests and run some benchmarks

dhax_or•2h ago
Thanks for this! I've already started adding more tests. I ran some benchmarks and they were really impressive. I will get it out in the next release
dannyfritz07•4h ago
I don't think we've really seen many successors to LoDash other than Ramda because the platform now has many of Underscore's functions built in.
7bit•4h ago
> Like isObject([]) returning true - arrays aren't objects in my mental model.

Correct me if I am wrong, but Array factually are JS objects and "[] instanceof Object" is true.

Fair enough if that does not fit your mental model, but I would not use any library that treats facts like opinions.

ivanjermakov•4h ago
Distinction is tricky since you can use indexing on plain objects, e.g.

    const foo = {};
    foo[0] = "bar";
williamdclt•4h ago
I agree with the author that it’s almost never what you want. But I agree with you that it’s the reality of the platform, ignoring it will cause its own problems.

I’d surface the footgun rather than trying to pretend it’s not there: isNonArrayObject and isObjectOrArray, or something like that

7bit•4h ago
Absolutely agree. I also hate that empty arrays are true, which is different from other languages. But I agree that it's better to face the reality of the language than create a function that evaluates [] to false. It trains you a bad habitnand some day that will cause you to introduce a bug.
williamdclt•3h ago
> I also hate that empty arrays are true, which is different from other languages

I don’t mind that actually! I don’t think I have much use cases for “empty array is semantically different from non-empty”. Usually I find null/undefined are better choices, an empty array is just a normal array, I don’t expect it to be handled differently

7bit•2h ago
What do you think about empty strings being falsy in most languages including js?

Null/undefined is a better choice, but there's many occasions where you do not have the power of choice. For example with document.querySelectorAll, which returns an empty array if nothing is found. The simple thing to do is to just check for it's length or just iterate over it's nodes, but still. I prefer empty arrays being falsy.

Just to clarify, I'm not saying one is better than the other. I just prefer how it works in other languages like Python. But I still would rather work with the JS language properties, than import a library that changes how I test for empty arrays.

nothrabannosir•57m ago
Akshually, implicitly casting any non Boolean type to true or false is no better than implicitly casting “0” to 0. :) B-)
dcsan•2h ago
your option is a bit more verbose but definitely more clear. confusing the underlying definitions of the language itself will lead to problems later.
PUSH_AX•1h ago
Will it? Will it really?

I’ve been writing JS for so long I’ve forgotten all these language quirks, I feel like it’s fair for most people, these language choices are kind of meaningless in day to day, what’s meaningful is a function returning things that will make sense to most people. Or at least have two functions, languageStrictIsObject()

bryanrasmussen•4h ago
libraries of this sort, especially in JavaScript, often exist to enforce a more reasonable mental model rather than the model baked into the language.
7bit•4h ago
I understand that. I just don't think that it is a good habit. Instead of just learning the languages and it's quirks now you form a bad habit and start to rely on one dependency for all your projects.
bryanrasmussen•1h ago
this is generally the view I have on these sorts of things as well, although I must admit that my views are often out of step with what everybody else I work with feel on the matter.
_1tan•4h ago
We use es-toolkit to replace Lodash - how would you compare your library?

We just migrated a React app with around 500k LOC and this worked quite well and flawless.

dhax_or•2h ago
I've not used es-toolkit but from what I see you get lower bundle size, typescript support and a better performance with our library. I will be releasing the the benchmark soon enough so do watch the repository if you can
uwemaurer•16m ago
I use es-toolkit. It is fully in Typescript. Every function can be imported without any extra overhead, for simple functions it just adds a few bytes then to the bundle. I doubt "better performance" since most helpers functions are just tiny and there is no room for significant improvements.

So I think trying to be better here is pointless, better focus on offering more helpful utility functions which might be missing in es-toolkit

redslazer•4h ago
We migrated to remeda from Lodash and are pretty happy. https://remedajs.com/

What do you do differently?

jokull•3h ago
I recommend https://remedajs.com/ - they're always making the types more accurate too. Like groupby has nonempty lists.
gcmeplz•2h ago
The types look great on remeda, but one thing that looks intriguing about SuperUtilsPlus is the focus on being tree-shakeable. Lodash's lack of tree-shake-ability is a drawback to using lodash on the frontend.

edit: the types on remeda look great though! If I were doing a backend-only NodeJS project, I'd be super tempted to test it out.

bythreads•1h ago
Just import what you use for lodash?, the theres not need for a treeshake situation?
yoz-y•3h ago
What I’d like is a utility library like this, but instead of it being an actual library, be it some utility that generates a single file with exports of the few functions I need. Even just something that would make copy pasting them easier.

As in, I want actual zero dependencies, not even the library itself. The reason: I never want these to randomly update.

acbart•3h ago
Couldn't you just pin a specific version dependency? My brain says there's some way to also pin to a hash, but that would require googling and I'm on mobile.
nodewrangler•2h ago
The problem is that even if you pin to a version, at some point you’ll need to update node, typescript, or some other package, and then if this package doesn’t update, then you may have to migrate from it to something else. While js tries to enforce backwards compatibility, and npm, etc. help with the complex landscape, in practice with node, typescript, etc., even with LLMs helping, it can be a pita and hours or days of work to update at times. It’s just not worth it for things you could’ve just implemented yourself. There are exceptions to this, though.
mystifyingpoi•32m ago
> at some point you’ll need to update node, typescript, or some other package

I experienced both sides of this discussion (project that always pulled :latest disregarding any kind of versioning, and project that had node_modules commited inside the repo) and both extremes suck, but I lean towards the second one. I'll totally take a few days of pain over not knowing whether prod will work today or not.

hinkley•2h ago
This is why running your own mirror is what most large companies do. Guarantee no take-backs.
mystifyingpoi•38m ago
Pinning is a good strategy (I'd say that it should be the default one), but depending on your level of paranoia (think left-pad), you might consider just downloading the lib as it is, and storing it in source control forever.
parentheses•3h ago
OOC, what is the benefit of having a "library" that requires such manual labor to maintain and upgrade?

You'd miss out on CVEs because you don't use the common dependency paradigm.

You'd also miss out on bug fixes if you are not detecting the bug itself.

Help me understand because I'm with you on less dependencies but this does feel a bit extreme.

hofrogs•3h ago
Why would small functions like "difference", "groupBy", "flatten", etc. have CVEs and require bug fixes? Implementing those correctly is a one and done thing
jsheard•3h ago
You'd be surprised: https://positive.security/blog/lodash-ramda-underscore-vulne...
hofrogs•3h ago
Looks like these are mostly based on "reserved" attributes (with double underscores that have no special meaning in the language, just make unintentional collisions less likely), a modern solution utilizing JS Symbol type (where needed) would have no such issues
michaelsbradley•2h ago
Why not copy & paste the code you need into a vendor/ subdir?

If the vendored code needs to be updated because of a change in your build tools or whatever then you’ll likely be making similar changes to other parts of your project.

fsloth•2h ago
Nobody wants anything _ever_ to ”randomly update”. Why this is the default setting on so many development setups boggles my mind.

I really havent figured out why professional systems insist running on the bleeding edge - it’s your feet are bleeding here I believe. 10 year … 15 year old code is generally excellent if you know it through and thorough.

skydhash•31m ago
As my experience grows, I'm getting fonder of stances like Debian or Common Lisp, which favors stability. Once you've solved a problem, it's not fun having your foundation morphs under you for no other reasons than bundling features and security updates.
programmarchy•1h ago
shadcn distribution model for utils is a good idea. i wanted something for react hooks as well and was surprised that didn’t seem to exist either.
ryancnelson•2h ago
Biggest pain point: wtf is lodash? I don’t care if it’s in your readme, but maybe tell us in your HN hype post
cronelius•2h ago
lodash is extremely common knowledge in the js/web world. you’re asking a chemist to explain atoms before sharing their big discovery
ryancnelson•2h ago
No I’m asking a commercial that pops up in what I’m watching and says “ask your doctor if ciallis is right for you.” and gives no context but someone washing their tesla.
podgietaru•2h ago
I don’t know. Maybe if it’s getting a lot of traction it’s beholden on you to look up what it is.

I don’t understand everything on the HN frontpage either.

nativeit•2h ago
I dunno about anyone else, but someone washing their Tesla fits my mental model of impotence perfectly.
robinson7d•2h ago
Do the example functions (isObject, isNumber, differenceDeep, randomUUID, debounce), along with the name (“SuperUtilsPlus”), and sentences saying “utility library” and “JavaScript” really not give enough context to get an idea of what this library is for?

And so if Lodash is what they’re trying to replace, is that not enough info to infer what Lodash might be?

The pharma ad comparison seems more than a little hyperbolic to me.

AstroBen•2h ago
Anyone who doesn't know what lodash is wouldn't be interested in this. It's expected knowledge for the target audience
rgreek42•2h ago
Weird comment
cronelius•2h ago
I made twitter post 3 or 4 years ago making fun of Lodash team for _still_ not shipping loadash 5 and they didn't like it very much. They started working on Lodash 5 in like 2015 and it still hasn't shipped. Guess we make our own now
insin•1h ago
The published version appears to be CommonJS only:

    $ node index.mjs
    import { isString } from 'super-utils-plus'
             ^^^^^^^^
    SyntaxError: Named export 'isString' not found. The requested module 'super-utils-plus' is 
    a CommonJS module, which may not support all module.exports as named exports.
You might also need to update some of your type checks to handle wrapper objects like new String() - Object.prototype.toString.call(...) is your friend.
rco8786•1h ago
I wonder why the authors decided to make `flatten` only go one level deep, and have `flattenDeep` that goes N levels. AFAIK most other implementations of Array.flatten do it recursively through however many levels exist.