HNHacker News
TopNewBestAskShowJobs

npstr

470 karma · joined November 20, 2014

https://npstr.space

[ my public key: https://keybase.io/napster; my proof: https://keybase.io/napster/sigs/1DYMjeTxF3HkRhxXM_0iHIP9wTgJl3Vb-sXCh57AQf8 ]

submissionscomments
npstr··on Why CockroachDB doesn't use EvalPlanQual
Why not simply use an example that isn't confusing? Many developers, and especially academics, love wasting effort and time on solving issues they made up but that have no real life examples. When using examples that have trivial alternative solutions, it does not help me as a reader to distinguish whether this is a real problem, or something made up.
npstr··on Why CockroachDB doesn't use EvalPlanQual
Idk to me this looks like a modeling issue of the data. There should be a team table that contains team specific data such as the skill level, then these two queries wouldn't run into any problems.
npstr··on Why CockroachDB doesn't use EvalPlanQual
> given what constraint 2 says the level is actually a team level, not a player level.

Then it's bad unnormalized data design that is the problem here. If that is a team level, it should be in the team table, not the player table.

npstr··on Scientists have traced human tail loss to a short sequence of genetic code
Nature does not refactor. There's the laryngeal nerve somewhere in the neck of mammals that has to go around a blood vessel. On Giraffes, this runs all the way down the neck, around said blood vessel, than back up, all that just to connect two places in the upper neck that are inches apart. Evolution writes the ultimate spaghetti code.

More info: https://berto-meister.blogspot.com/2011/08/unintelligent-des...

npstr··on Spotube: Open-source Spotify-Youtube client
I don't know if I was the first to come up with the idea or implementation, but my contribution certainly ended up in the largest open source music streaming bot at the time: https://github.com/freyacodes/archived-bot/pull/90

Was quite a similar idea: load Playlist from Spotify but play the actual music from YouTube. Still proud of that one, good times when Discord was wild territory.

npstr··on Fury – Fast multi-language serialization framework powered by JIT and Zero-copy
The comparison to JDK serialization is surprising me. Noone should be using it for anything serious in production. Even the Chief Architect of the Java platform has called it a "horrible mistake". https://www.infoworld.com/article/3275924/oracle-plans-to-du...
npstr··on Vegan diets cause far less climate pollution, study shows
Being dead causes even less climate pollution. But that's not the point of living.
npstr··on Could the world go PFAS-free? Proposal to ban ‘forever chemicals’ fuels debate
Try more heat. It needs to crisp at the bottom while staying runny at the top. Don't let them sit in there once done, get them out to stop the heat transfer. I only do one side.
npstr··on 1,626 Books Were Banned Across America Last Year We Reviewed All of Them
I did not communicate my point well enough. I'm sure a lot of these "bans" are not well justified, and good arguments can be found against them. Why use something weak like "we are the good guys and the ends justify the means"?
npstr··on 1,626 Books Were Banned Across America Last Year We Reviewed All of Them
> it’s important to note that they are to the end of positive social change

The end does not justify the means. Name me one single objectively bad political movement which internally thought of themselves as bad or negative. There isn't one. They all claim and for the largest part of their membership believe to serve the greater good. Therefore I find this argument of the author extremely weak. Surely they can come up with some less naive arguments?

npstr··on Ask HN: What's your favorite software testing framework and why?
My context: Backend Java/Kotlin dev. Don't really need any fancy test framework, JUnit 5 is absolutely fine for executing the tests. But I do use a bunch of additional tools and libraries.

testcontainers so I can write proper integration tests instead of mocking dependencies away.

AssertJ for fancy assertions with great failure messages.

Mockito for the rare mocking/spy usage.

Awaitility for the rare async/timing based test.

When there is a Frontend (templated or SPA, doesn't matter), I like writing the tests with Selenide assertions and using its Selenium integration to run against a large array of browsers + variants (Chrome, FF, Mobile etc) launched via testcontainers.

npstr··on PFAS can suppress white blood cells’ ability to destroy invaders
Cast iron is heavy and some people hate that. Try forged iron.
npstr··on Functional Core, Imperative Shell (2012)
> This design has many nice side effects.

Hahaha...great choice of words for an article on functional programming =)

npstr··on Ask HN: How do you give back?
Donated blood for the first time a few days ago.
npstr··on Google Cloud (Europe-west2) is experiencing downtime
Nice, another entry for this month's https://outage.bingo/
npstr··on The Problem with Gradle
Gradle was really not that great back around v3. It was using a ton of my ram, and required frequent cleaning, it was just as bad as Maven in that regard. I think it has improved by lot since then - or maybe thats stockholm syndrome speaking ;) or maybe it's because I stopped doing Android stuff.

In any case, one of the large problems remaining is the bad discovery of stuff-it-can-do-and-how-to-configure-that, and making it too easy for devs to write imperative code when they should be staying declarative.

Also, I don't very much like how complicated some of the newer features are to use, and how much weird magic they require to be turned on / configured.

Another thing I absolutely hate is how it splatters the build scripts into half a dozen files. Personally, even for large monorepos or multi-module builds, I prefer to have one huge script file + plugins.

The strengths of Gradle, if the scripts are written properly, however are very clear to me:

- Task avoidance and therefore crazy good build speedup ofc that requires tasks to be well defined, ideally the whole project to be split up into smaller modules, and each of the build tasks being deterministic. unfortunately many devs don't understand how to do this, and some of the more exotic build steps in monorepos might not be properly deterministic (looking at you, frontend build tools)

- It can be wrapped around other langs and exotic build steps for monorepos. E.g. you can first fire up a database in a container, and run your migrations against that, then use the resulting schema to generate your database entities. In parallel, you might want to run some protobuf generation, that is then used by e.g. a Java backend and a JS frontend built that's actually using yarn in the background. There are plugins available that will wrap the yarn scripts to the Gradle lifecycles. The output of the frontend can be used to be included in the static files of your jar, which you can fire up for tests with browsers running in docker containers and doing e2e tests from the Java BE code, so you can do amazing test setups. Gradle can do all of that, with incremental builds / cached in- and outputs. Imagine having to keep all these steps in your head and running them on-demand when you think its necessary. Or running them every time no matter what (looking at you, Maven) Gradle allows me to write down all of these steps as individual, declarative tasks, making use of a vast and high-quality plugin ecosystem. Then wire up their order, again, declaratively. Once that is accomplished, I can turn off my brain and focus on building code and don't have to know which parts needs to run when exactly.

When I joined one of my previous teams, they were using a rube goldberg machine of Bash, AWK, Python scripts with a lot of JSON slurper and AWK sprinkled in to manage multiple modules in different repos into a monorepo-like state with individual releasing and versioning. With Gradle, that was much easier to accomplish: The dependency resolution rules could be written as simple code with easy and well defined conditionals, instead of manipulation of Maven pom files during random build steps. Also introspection into the build dependencies allowed an easy way to find out which projects dependend in which other ones. (Now was doing all of this a good idea in the first place? probably not :) but they certainly didnt allow themselves to be stopped by Mavens inflexibility, and the resulting horror of a build pipeline was certainly worse then writing all of that in Gradle)

In think, in the end, for small projects, Gradle isn't that benefitial. Maven can accomplish simple builds with no special rules and no necessary task avoidance just as well as Gradle, if not better due to the restrictions. But once you need to build something bigger (did someone say Enterprise?), Gradle starts shining - as long as you tread carefully.

npstr··on I asked GPT-3 for the question to “42”
Did you ever see Data and your father in the same room together?
npstr··on We are a spectrum of jobs, not just one
Absolutely. Doing the right calls here is very hard, and takes a lot of experience. Btw - I'm not against building your own castles (I love doing that, esp. in my free time) - I am just a bit triggered by the previous blog post arguing unconditionally for it, and now the next one even saying these are two (or even more) different professions. I don't think that is the case. I think we need to understand the contexts, to know when each of the approaches is a likely better fit. Sometimes its very clear, and sometimes you won't know until much later. That's ok. I think it is important to document why a route was chosen, and evaluate if it is still the correct one, once more facts are available, or the environment changes. What I really don't like seeing is ranting about a chosen approach, without informing oneself first about how the decision was reached, and broad generalisations.

Writing your own software, or just importing a lib, and the resulting side effects such as huge amounts of code to maintain or dependency hell, are tradeoffs - they are neither good nor evil - it all depends on the context.

I'd love to see an article from the author drawing from their experience on making that kind of decisions.

npstr··on We are a spectrum of jobs, not just one
Agreed! If your priorities are e.g. high reliability, it is a good idea to vet any potential software that you are planning to use, and maybe it will have to be written from scratch if existing solutions are found to be outside of the expected specs. But even with such a product, you will have other pieces and parts: think about collecting metrics, marketing tools maybe, obscure internal admin UIs...selecting software for that probably does not need to be evaluated under the same extreme scrutiny as the "critical control software".
npstr··on We are a spectrum of jobs, not just one
I don't quite understand why we need to invent an new word for it? There are people who program and optimize all day and write clever one-liners and create libraries and frameworks only they understand (programmers), and people who collaborate & have a holistic view on software development, and as a result actually get stuff done in a solid way (engineers).

Yes, you can tell what I think about this article (and the one before it).

If your goal is to ship a product, there is no reason to reinvent anything that is not your core business. I don't see the author of this article writing their own OS from scratch, so why stop there? Why should all the auxiliary libs and frameworks be created from scratch? Because they don't like all the communities around the existing ones?[0] If everyone around you is the problem...maybe its you who is the problem. I've never had any pull requests with fixes or minor features rejected from upstream, so my view may be biased.

I prefer hiring and working with people who understand the value of contributing to OSS instead of building their own little castles.

[0] http://rachelbythebay.com/w/2018/10/09/moat/

npstr··on I Am Deleting the Blog
Similar effect when reading the news on a topic that one is an expert in - they usually get it incredibly wrong. And then you turn the page and read the next article completely forgetting how bad the reporting actually is - there is no reason to assume they do a better job on topics that one is not an expert in! I think this bias had a name but I can't remember it.
npstr··on Kafka Removing Zookeeper Dependency
Have a look at https://sdkman.io
npstr··on Over 275 days since Equifax’s data breach settlement and no one has been paid
That is not true. It is almost impossible to rent a flat in the larger cities of Germany without showing a positive credit record to the landlords. And requesting even small credits of a few k will have your credit rating checked and recorded that such a check happened.
npstr··on Kotlin and Jersey and Jetty and MongoDB – Creating a Scalable RESTful API
Have a look at liquibase and flyway. Personally I love using flyway together with jOOQs' code generation (concretely, running the migrations against a docker db container during build, and code-generating the entities/records then based on it).
npstr··on Lego ISS
Used to have a KNex model of the ISS when growing up, it was great for someone who was dreaming of going to space :)
npstr··on Catching SQL errors at build time
That's why I love using sql query builders on top of code generation from the migrations. Helps with writing new, type-safe queries and if migrations break the queries, we will know at compile time, its truly amazing.
npstr··on Show HN: Bel
Same on Android Chrome.
npstr··on Show HN: Bel
As mentioned in the user guide, just like Lisp, Bel is still in its formal phase, and not usable as a programming language yet. The idea is to extend the formal phase for a longer time, before diving into the implementation.
npstr··on The growing science of memory manipulation
A human is just an animal.
npstr··on A new core playlist for VLC 4
The VLC Android App is unusable since an update earlier this year. Any plans to fix that? I reverted to an older version and would like to come aboard again once the bugs are fixed & bad UI decisions corrected. There was plenty of feedback on the playstore to act on and there was at least one bug fix release, but current reviews are still negative :/
← PreviousPage 2 of 4Next →