HNHacker News
TopNewBestAskShowJobs

Ndymium

1,525 karma · joined November 19, 2015

Web developer @ Tampere, Finland
submissionscomments
Ndymium··on Triggering a Phoenix controller action from a form in a LiveView
By default Phoenix uses client side sessions. The session data is written into a cookie and signed (or encrypted) to prevent tampering.
Ndymium··on Milwaukee Tool Raises the Bar with New USA Factory
This is in the US? I live in Finland and here Makita seems to be _the_ brand used by professionals. At least those that I've seen. Milwaukee exists but doesn't seem to be very popular.
Ndymium··on GitHub suspends Tornado Cash developer account
Dedicating work to the public domain is not possible in many jurisdictions, which is the reason for CC-0 and similar licenses. They're "close enough" for practical purposes but they're not the same thing. Even if you use CC-0, you will still have the copyright of the work in such jurisdictions, because it is only an attempt to give up as many rights as possible.
Ndymium··on I analyzed hospital price lists so you didn't have to
From the context I'm guessing MUMPS, and it kinda seems to resemble it, if it had more line breaks: https://github.com/programarivm/mumps-examples/blob/f160bfb6...
Ndymium··on Shrugs.app – A native Slack client for macOS
I wouldn't be so sure. IRCCloud offers Slack connectivity (using Slack's API, not the IRC bridge that was closed long ago) and it costs money. I've used it for a couple of years now.
Ndymium··on Bluetooth relay attacks allow Tesla Model 3 / Y to be unlocked and driven away
This seems to be already discussed here: https://news.ycombinator.com/item?id=31403925
Ndymium··on New EV vs. old beater: Which is better for the environment?
I bike year round, even in 10°F or lower. But it does require a place that plows the bike lanes. Going through snow with an ebike isn't bad when you're the first, but when it has already been turned into a potato field by everyone, then it's definitely a struggle.
Ndymium··on Yandex data center in Finland loses power due to contract termination
You're correct, though I wonder what the reason could be other than expiring. Thinking out loud, maybe they've had trouble paying due to money transfer issues between Finland and Russia. In any case it's not directly due to any sanctions as the company is not sanctioned.
Ndymium··on Yandex data center in Finland loses power due to contract termination
Yep, their electricity sales contract ~~expired~~ (EDIT: ended for unspecified reasons) and they don't have a new contract. Their electricity transfer contract is still valid because their Finnish company is not a part of sanctions. (Electricity sales and transfer is separate in Finland.) When they get a new electricity sales contract, then the transfer company will reconnect power.

I think the only matter here related to the war could be that electricity sales companies might be reluctant to sell a contract to them, due to PR reasons. But I bet one of them will, and they will get their power back.

Ndymium··on Show HN: This AI Does Not Exist
Looks like the URL path just contains the generated output and not the inputs.
Ndymium··on Ask HN: Share your personal site
Cool website, but I have to note that the picture file of you on the front page is humongous, when compared to the little size it's scaled to. :)
Ndymium··on Ask HN: Share your personal site
I have a blog[0] where I talk about whatever, usually tech related, but quite rarely. It uses my own blog engine[1] but since that's kind of a mess I just had the thought of remaking it, once again. It has very little JS and I'm quite proud of the syntax highlighting and comments (and thus Disqus tracking) being opt-in. Actually I'm more proud of the tech than the writing on the site. :D

It runs on Elixir and I write blog posts by editing Markdown files over SFTP and calling a certain function on the blog instance to reload the files.

[0] https://blog.nytsoi.net [1] https://gitlab.com/Nicd/mebe-2

Ndymium··on Mastodon 3.5
I use fosstodon.org. I don't know what version it has, but I can just click on any post's favourite button (or reply to it or boost it) even if it's from another instance. So I reckon if there was an issue before, it has been fixed or it's not universal to all deployments.
Ndymium··on Gated challenges unknown senders to donate to charity in order to reach you
I guess I missed the point, as I provided an example on how to parse it, since it was deemed "unparseable".
Ndymium··on Gated challenges unknown senders to donate to charity in order to reach you
> X challenges (verb) Y to Z in order to reach you

where X = Gated, Y = unknown senders, and Z = donate to charity.

Ndymium··on First look: adding type annotations to JavaScript
It's not identical as features that have a difference on the runtime behaviour / code generation such as enums are deliberately omitted. It's intended to be a large subset of TS at first. [0]

[0] https://devblogs.microsoft.com/typescript/a-proposal-for-typ...

Ndymium··on First look: adding type annotations to JavaScript
TypeScript itself has two types for this purpose: "any" and "unknown".

"any" is the escape hatch and allows you to do anything with the variable. In essence it stops type checking entirely for that variable.

"unknown" takes the opposite approach and doesn't let you do anything with the variable value (other than pass it along to other "unknown" accepting variables/functions) until you have asserted its actual type with type guards.

Ndymium··on Zulip Cloud security vulnerability with reusable invitation links
> You don’t think a random generator that looks like it outputs log₂(26²⁰) ≈ 94 bits of entropy, but is limited by the weak PRNG state space to 36 bits, and further limited by poor seeding to about 20 bits, creates a false sense of security?

I don't think so, as the Erlang documentation states that 1) the distribution protocol is in plaintext, 2) the cookie is not secure in the cryptographic sense, but in the sense that it will prevent accidents, and 3) the cookie handshake is not cryptographically secure.

It is not possible to generate a cookie that provides any true security as the distribution protocol is plaintext and the cookie handshake is not secure. Claiming to get any security benefit from a "stronger" cookie would only give a false idea to the user.

Erlang does not start distribution by default. This is done by the user of Erlang, or the application that runs on Erlang. It is up to them to make sure that their environment is secure and that they understand how Erlang distribution works. Namely, to not open ports in the firewall willy nilly and only allow communication to them from an isolated network or over TLS. Frankly I don't know what you would expect Erlang to do here, maybe to add even bigger warnings to the documentation?

The problem here is application developers not understanding how to configure their application to be secure by default. They are the ones opening the distribution wide to the Internet and not advising their users on how to do it safely, not Erlang.

Ndymium··on Zulip Cloud security vulnerability with reusable invitation links
> RabbitMQ as well as every distributors of it that we've investigated allows remote execution of arbitrary code on your server through having no effective access control mechanism for the distribution port, which is open by default after installing the software.

This is exactly how I would word the issue. If an attacker can talk to the Erlang distribution port with nothing but the cookie preventing them, then the system is already lost. That should never happen, the distribution ports should only be open on an isolated internal network for the other cluster members.

If RabbitMQ opens these ports by default and does not document the issue clearly, then that is the failing. I don't think fixing whatever random number generator is generating the cookie will make the system secure enough to be considered fixed. At worst it may give a false sense of security when in reality the fix has been made in the wrong location.

Ndymium··on Zulip Cloud security vulnerability with reusable invitation links
The blog post tries to paint the RabbitMQ cookie generation as a security issue, but the Erlang distribution cookie is NOT a security feature. Indeed, the Erlang documentation states:

> "Security" here does not mean cryptographically secure, but rather security against accidental misuse, such as preventing a node from connecting to a cluster with which it is not intended to communicate.

The purpose of the cookie is to guard against _accidental misuse_, such as a user connecting to the wrong node (prod vs testing?). The cookie is not meant to secure a system against unauthorised use. Any system relying on the cookie for security should already be considered broken. Thus I can see why there has not been such hurry to "fix" the issue.

Ndymium··on Nuclear power may be the key to least-cost, zero-emission electricity systems
Finland is building a long term storage facility[0] that is estimated to open in 2023–2025.

[0] https://en.wikipedia.org/wiki/Onkalo_spent_nuclear_fuel_repo...

Ndymium··on Humble subscription service is dumping Mac, Linux access in 18 days
I think you mean Steam Deck, Steam Link is a remote play box for your TV that was released in 2015 and discontinued (in hardware form) in 2018. Steam Deck is expected to release at the end of next month.
Ndymium··on In MySQL, use “utf8mb4” instead of “utf8” (2016)
This is unfortunate as it makes things unreadable for screen readers. I have seen many tweets from companies and organisations that use these characters to replace funny "fonts" or create emphasis effects in the text, rendering them inaccessible in the process.

In my own service I plan to offer users the ability to define a "stylised" nickname and an alternative text for screen readers, should they be interested in it (like an alt text for images). If Twitter had such a feature, I'd use it because I really like the effects, even if they're cheesy. :)

Ndymium··on Harmful Defaults in Django
I worked on Django projects for around 7–8 years professionally. Most of these weren't really issues, though I think we did run into name conflicts at some point with an app vs package.

But the first pain point I very much agree with. Implicitly sending queries to the backend is one of those things that is an attempt to be very helpful to programmers, but that ends up as an obstacle that you always need to be wary of and avoid. Over time I have grown to appreciate explicitness in queries more and more, though I probably wouldn't go so far to remove lazy queries completely since they can be handy in query building, just remove the implicit loading feature if possible.

Django's query builder is also quite far removed from SQL. Especially once you get into more complex queries, I sometimes just went raw SQL as I knew I wouldn't be able to remember how to translate the Django expression into SQL in a month's time. Simple queries are easy to write and look very sleek, but complex ones can turn into a mess that is much more understandable in SQL form. The sleekness of the queries may also betray how complex they are to execute as it's not "in your face".

I still like Django's ORM quite a bit for many things, but after discovering Elixir's Ecto, I've enjoyed how explicit it is most of the time. I haven't needed implicit loading of relations once. It's also much closer to actual SQL. But there are things where Ecto also tries to be too helpful in my taste, like the humanised types in migrations (i.e. :utc_datetime instead of :timestamptz or :string instead of :"character varying"/:text) -- I strongly believe it would be easier in the long run for the programmer to specify the database types they want directly rather than through aliases which may result in surprising choices. Of course, that would cause issues in supporting multiple different databases, but that's not a goal I would go for in the first place, but I digress…

What I guess I'm saying is that sometimes projects build in helpful features to make the code nicer to look at, more approachable to beginners, or just shorter to write, but they often end up being a burden on those that go past the beginner stage. People invariably trip on them because who can remember everything mentioned in all the documentation? And then it's just a game of "who fails to avoid the trap every time" and that's a game that everyone loses eventually.

Ndymium··on Djinn Split Keyboard
The biggest advantage is freely positioning the halves to suit your personal preference. You might have them in a /\ arrangement next to each other, or | | so that they match the position of your shoulders. I'm currently sitting in a rocking chair with my laptop on a small desk and the halves of my split keyboard on my legs, which works surprisingly well. When I'm on the move without an ergonomic desk, I tend to put my laptop on a cardboard box to avoid having to look down all day, and my keyboard halves on each side. It helps me avoid neck strain.

For me, getting a split keyboard was a matter of protecting my hands. I felt strain in my wrists and fingers when using a regular keyboard all day. With a split keyboard my wrists can stay straight and I was forced to learn the correct finger positions. I no longer use a mouse, but instead my keyboard's mouse layer keys, so I have no reason to move my hands away from the home position.

Of course most of the split keyboards, being made for enthusiasts, also contain a lot of other features like customisable firmwares and such.

Ndymium··on London's Thames, once biologically dead, has been coming back to life
Note that Finnish forests are overwhelmingly young growth forests in forestry use, i.e. tree farms. They may not look as depressing as regular fields, but they are not diverse like natural old growth forests. It's a good thing that we manage our forest cover and grow more trees than we cut down, but it's not like we are a paradise either.
Ndymium··on Gmail’s fake loading indicator (2020)
I remember Internet Explorer also doing this back in the day. When I was a kid I assumed it was showing correct progress, and I'd be patiently waiting for no payoff. Only much later I learned it meant nothing, it was just showing it wasn't dead.

I'm not sure about GMail's case, but I recall Mac OS X (back when it was called that) used to do something like this. Since showing a correct progress bar doesn't make it look so nice (it might be stuck at 90% for longer than it took to get there) and might be difficult to estimate, they instead wrote the last boot time into a file and on the next boot would render a smooth progress bar that would follow the timer. In my experience it made for a reasonable estimation of the boot time and I thought it was a clever solution.

Ndymium··on Element One – All of Matrix, WhatsApp, Signal and Telegram in one place
Sadly I don't have a single friend on Matrix that I could consider doing this with, and it's unlikely I could convince my wife to use it either. So it would be double the money for only that piece of flair.
Ndymium··on Element One – All of Matrix, WhatsApp, Signal and Telegram in one place
One thing I didn't spot, does this tier allow you to use a custom domain name on Matrix, or will you be :matrix.org still? $5/mo is an interesting price point for me if it can do that, I don't need the bridges but I could support the project this way.
Ndymium··on Why soda bottles have gaps in their threads (2000)
Looks like in the EU "sugar free" is limited at 0.5g sugar per 100g or ml of product: https://ec.europa.eu/food/safety/labelling-and-nutrition/nut...

I checked one and it contains 0.1g of sugar per 100g, but it's not added sugar, it's contained in the other ingredients. I don't know if it's possible to make it with absolutely 0g of sugar. But there is no separate ingredient "sugar" there.

← PreviousPage 5 of 13Next →