HNHacker News
TopNewBestAskShowJobs

defanor

1,100 karma · joined April 28, 2017

submissionscomments
defanor··on Suspicionless ChatControl must be taboo in a state governed by the rule of law
What is "nope" about? I understand "people in Government are subject to the same laws as any other citizen" to mean the same as "written laws that apply to everyone equally". The sort of thing Aristotle and Locke advocated for.

As for the separation of powers, it is a related concept, but still a distinct one; not sure if bringing it up helps here.

Added "The Road to Serfdom" into my book queue, thanks for the suggestion.

defanor··on Suspicionless ChatControl must be taboo in a state governed by the rule of law
Good for Germany and the EU, but how (or why) is the rule of law supposed to make it a taboo? Is it thrown in just to sound nicer, or did they skip a few steps in the reasoning?

I heard "rule of law" being used to justify roughly the opposite (Russian laws, including mass surveillance and censorship), and neither that was clear; apparently it worked simply as an universal justification.

The usual definition is that there are written laws that apply to everyone equally, as opposed to a rule by decree and some kind of tyranny, and the laws do not change too often, are not made for particular occasions (so they do not turn into decrees effectively). So I'd think "suspicionless" -- that is, universal -- sounds closer to it, rather than selective/arbitrary surveillance on a suspicion. Unless such suspicion is at least decided by a court, without rubber-stamping.

defanor··on Become unbannable from your email
While I did lose access to a hosted email and other services, and only permanently lost access to a free domain name so far, also was close to losing access to regular paid domains on multiple occasions (once because of the used registrar, twice because of the place I live in and international politics, being disconnected from payment systems, though with registrars also contributing a little).

Mandatory reliance of services on other services (whether it is email, phone, or a more explicit identity provider) is generally unfortunate. I think it is best to not look for a perfectly reliable setup, as it is unachievable, but to keep in mind that they are not reliable, to have recovery plans and fallback options if possible, reduce dependence on online services, especially those depending on others. Though a personal domain name still seems more reliable to me than that of an email provider.

defanor··on The least amount of CSS for a decent looking site (2023)
I have gradually reduced CSS to zero myself, since pretty much every tweak seems to mess up accessibility more than improve things, and generally it is the client that should control the style, and the user who should configure it for themselves, knowing their own requirements better. As for suggestions from the article:

> Granted, if you have images they can cause some overflow issues.

The "fix" breaks zooming in.

> In general, the font-size is a little small as well

It is quite annoying when websites mess with your preferred font, its size, style, and so on, often turning texts illegible. In this case it is made awkwardly large, but often it is made illegibly small, apparently also with the intention to fix the defaults.

> Many people love dark mode, so let’s enable it based on a user’s system preferences.

"color-scheme" is like "viewport": an invocation to tell the browser that the website is not too broken, and the web browser should act more sensibly. Those are practical, but still awkward, not quite how things should be: I wish web browsers defaulted to sensible behaviors. So I rather view it as a choice between adapting to how things are and pushing for how they should be.

> We generally want to try and fall somewhere in the 45-90 characters per line range (for body text, not headlines).

I used to set max-width in ch before removing CSS completely as well, but usually desktop web browser windows are resizable, with the space being there to be used, not to fill with background color. I see it in epub files sometimes as well: huge margins are enforced, being rather annoying when you do not want those, while if you do, you can simply adjust the window size (or set such default styles, as another option).

defanor··on Modern messaging: Running your own XMPP server
> I assume the server is going to be run under xmpp.example.com and you all the following domains have been set up.

> [multiple A records]

"A" DNS records may be used for a fallback, but SRV records are the primary way to configure those [1, 2]. Also some of those can reuse an existing domain name, and some may not have any DNS RRs, but only be used as an internal JID.

> ejabberd is a robust server software, that is included in most Linux distributions.

Prosody [3] is another nice and popular option.

> Install from Process One repository

> Install from Github

Both ejabberd and Prosody are available from regular Debian repositories as well.

> Make sure the fowolling ports are opened in your firewall, taken from ejabberd firewall settings.

A port range is also needed for TURN, to use for relaying. And there is a typo.

> Clients I can recommend are Profanity, an easy to use command-line client, and Monal for MacOS and iOS.

Among relatively feature-rich and user-friendly ones (quite polished, supporting more recent standards, including voice calls with DTLS-SRTP, OMEMO), there are also Conversations for Android, Dino for Lignux (GUI), poezio for TUI (though that one has no voice calls). Setting converse.js (a Web client) may also be convenient (and done rather easily, at least with Prosody).

[1] https://www.rfc-editor.org/rfc/rfc6120.html#section-3.2.1

[2] https://xmpp.org/extensions/xep-0368.html

[3] https://prosody.im/

defanor··on You can't parse XML with regex. Let's do it anyways
Given that we tend to pretend that our computers are Turing machines with infinite memory, while in fact they are finite-state ones, corresponding to regular expressions, and the "proper" parsers are parts of those, I am now curious whether there are projects compiling those parsers to huge regexps, in the format compatible with common regexp engines. Though perhaps there is no reason to limit such compilation to parsers.
defanor··on Self-hosting email like it's 1984
FWIW, some of the things I configure differently:

- More of anti-UCE, with postscreen (greylisting, DNSBL and DNSWL checks), policyd-spf, body_checks, check_sender_access, check_client_access, postscreen_access_list.

- Setting "home_mailbox = Maildir/", to keep mail in user directories and in the Maildir format (which seems to be less prone to corruption than mbox is, and well-supported by MUAs).

- Leaving TLS defaults, except for the paths. I used to set mandatory TLS, but then ran into some servers not using it, and figured that I do not trust the involved servers more than channels between them anyway (especially the servers that do not support TLS). Being overly strict with allowed protocol versions (or even ciphers) also reduces compatibility, while for encryption it is better to rely on OpenPGP.

- I do set Dovecot (for both IMAP and SMTP submission); the recent configuration change did not seem like a big deal to me, and it was documented, so I found it easy to update. It is nice to be able to use email from a server (and that ability does not go away with Dovecot), but a local MUA also has its advantages.

- Registered at dnswl.org, to improve deliverability in some cases.

defanor··on Self-hosting email like it's 1984
I missed an incoming message (fortunately an unimportant one) from Amazon SES recently, since its 54.240.27.30 address was listed by bl.spamcop.net: Amazon kept trying different addresses while running into greylisting, until it tried that address and was rejected. Possibly it is less of an issue when sending between large providers (e.g., Amazon to Gmail), but apparently still not a perfect solution to ensure message delivery.
defanor··on F3: Open-source data file format for the future [pdf]
Indeed, I guess in a while it is going to look pretty much like the older formats relying on obscure bytecode look now. Possibly the kind of data analytics it aims has some special requirements, but I would expect a simple format like CSV (or DSV, more generally) to be more future-proof generally.
defanor··on Typst: A Possible LaTeX Replacement
It is indeed considerably more verbose, especially the "context" version (the one focusing on semantics, rather than presentation), and I did not write much of it myself, but I can imagine it being fine. It should not be a bottleneck for carefully (and slowly) composed documents, while for more casual and quick notes, even with LaTeX it appears to be common to use both a preview (often inline) and some input assistance, avoiding completely manual handwriting. Besides, as the linked Wikipedia article mentions, it is rather like expressions in Lisp-family programming languages (or pretty much any common ones, if you avoid infix operators), which are not that bad. I imagine it may also be more convenient (and terse) in combination with SXML or KDL, to avoid closing tags.
defanor··on Typst: A Possible LaTeX Replacement
Among alternative typesetting systems, there is also SILE, which supports two syntaxes (XML-based and TeX-style), supports scripting in lua, comes with freely available sort-of-specification (unlike (La)TeX or Typst, unless one counts program sources as specification). For formulae, it additionally allows direct MathML input. I have not used either Typst or SILE though, only looked into their documentation.

HTML with MathML may make a decent system as well; possibly with an XML source and XSLT for templating, which is apparently how OpenStax textbooks are composed (via CNXML, though that also has just a couple of rain frog pictures in its documentation repository -- seems to be a common pattern around typesetting systems).

Then there is troff with eqn(1), which looks simpler, but not sure if there is an actual specification for it around, either.

And then there are Texinfo, org-mode with LaTeX embedding, other TeX-adjacent options, perhaps Markdown with HTML and MathML embedding.

defanor··on How Isaac Newton discovered the binomial power series (2022)
I get those "math processing errors" in Firefox, after some time. Some of the error messages, which appear right before those:

  GET https://www.quantamagazine.org/wp-content/themes/quanta2024/frontend/js/mathjax/fonts/HTML-CSS/TeX/png/imagedata.js?V=2.7.0 NS_ERROR_CORRUPTED_CONTENT
  The resource from “https://www.quantamagazine.org/wp-content/themes/quanta2024/frontend/js/mathjax/fonts/HTML-CSS/TeX/png/imagedata.js?V=2.7.0” was blocked due to MIME type (“text/html”) mismatch (X-Content-Type-Options: nosniff).
  Loading failed for the <script> with source “https://www.quantamagazine.org/wp-content/themes/quanta2024/frontend/js/mathjax/fonts/HTML-CSS/TeX/png/imagedata.js?V=2.7.0”. how-isaac-newton-discovered-the-binomial-power-series-20220831:1:1
  Uncaught TypeError: c.FONTDATA.FONTS.MathJax_Main[8212][5] is undefined
The URL leads to error 404.
defanor··on Rules for creating good-looking user interfaces
It is quite similar on the Web still: web browsers (at least Firefox) allow to set user CSS or change default colors, but some websites (the percentage would vary defending on the method used) do not play nicely with that.

Likewise on Unix-like systems: most things can be covered with GTK and Qt themes, but some GUI programs would use a different GUI toolkit, and occasional developers would assume a dark-on-light theme, setting fixed colors accordingly.

Even TUI color interfaces suffer from that: when programs use colors outside of the 16 (that are rather practical to configure) or tweak (e.g., dim, reverse/invert) those for a particular kind of theme.

An annoying thing is that in most those cases things would have been fine if the developers simply did not touch colors. Even the linked article would have been more legible if it had no CSS, with either the usual defaults or a sensibly configured web browser: now it has a text-to-background contrast ratio slightly below the minimum of 7 recommended by WCAG.

defanor··on This website has no class
I can see whole lines and select the text in a desktop Firefox, but the fonts are messed up (thinned and otherwise tweaked) and colors are set to reduce the contrast, making it hard to read. As with most of the design-related articles, I had to use the reader mode to actually read it. But the content can be guessed from the title (with a hint that it is about CSS) anyway: they have simply removed CSS class selectors, replacing them with element selectors, adding combinator selectors, pseudo-class selectors, and so on.
defanor··on Why do we keep gravitating toward complexity?
The pyramids analogy may lead to a different line of reasoning: not only they look useless (making all the effort and complexity put into those unnecessary), but at least Aristotle claimed (not sure how accurately though) that they are made to keep people in poverty and occupied, in order to preserve a tyranny. Akin to the modern concept of "bullshit jobs".

The list of accidental complexity sources looks rather short. Off the top of my head, I can think of CV-driven development, of developers not being aware of basic tools, reaching for heavy and marketed ones instead, of awkward regulations pushing to silly solutions, of simple incompetence, of the NIH syndrome (or does that qualify as "creative temptation"?). The "Legacy systems and technical debt" point is applicable to newly developed systems with poor planning and strict deadlines as well. And then there are all the arguments about what is simple and elegant (or not) in the first place.

defanor··on Folks, we have the best π
A similar article, possibly was linked from Hacker News before: https://azeemba.com/posts/pi-in-other-universes.html
defanor··on Show HN: I made a small site to share text and files
Apparently the "Show HN" prefix would be appropriate here [0]. And this kind of a service is usually called a pastebin [1].

[0] https://news.ycombinator.com/newsfaq.html

[1] https://en.wikipedia.org/wiki/Pastebin

defanor··on We can’t circumvent the work needed to train our minds
Indeed, I thought that "decades old" sounds like an underestimate there: Socrates is said to have criticized writing for letting people to not train their memory, so that would be millennia by now. Though of course it is possible that the article's author would not agree with that, and would have a beef with more easily searchable content only, like the people who criticized tables of contents. I do not mean that they were all wrong though: probably the degree to which knowledge is outsourced matters, maybe some transitions were more worthwhile than others, and possibly something was indeed lost with those.
defanor··on Vetinari's Clock (2011)
I thought it is an overkill, though probably a convenient and practical one. But if one's aim is hacking with simpler technologies, a mechanical linkage (maybe something with a cam) should suffice for this task. Or an electrical circuit with simpler components, without digital logic in it.
defanor··on The Little Book of Linear Algebra
Always nice to see CC-licensed textbooks. This one looks fairly minimal, not including much of explanation, illustrations, or proofs; I think those are generally useful for the initial study, but this should still work as a cheat sheet, at least.
defanor··on FreeDroidWarn
Not OP, but sharing the sentiment (never had banking or similar software on a phone, yet using ATMs, banks' web interfaces, offices). Avoiding interaction with a bank completely is rarely viable these days, and they will run their software on their hardware to operate either way (whether it is an ATM, a bank office, or a website). I do not see it as relinquishing control of the hardware, since you are not expected to control a bank's hardware in the first place. While setting it on your phone comes with the usual risks of running proprietary software on your machines, such as sneaky data collection. If banks/governments will give mobile devices to people for that, those may act even a little more like electronic ankle bracelets, but they would also be isolated from your other data and software; in places with near-mandatory government software, some choose to create such an isolation by having multiple devices for different purposes.
defanor··on Cognitive load is what matters
Are you arguing against simplicity being subjective, or as a tangent, with the topics brought up as examples (particularly advocating early returns)? I already mentioned that I view it as subjective, so perhaps as an illustration of that, it is worthwhile to point out why I do not find early/premature returns simpler (and would not consider it as knowledge that they are easier to understand for everyone, though acknowledging that those must be easier for some). I work primarily with Haskell in the past decade, and occasionally other functional languages, which have no such return and break statements (not counting their emulation, as whole imperative languages can be emulated; and neither does lambda calculus have those, which is the simpler model one usually has in mind while working with functional languages), operating on expressions, so I am rather used to control flow mostly following the syntactic structure (and I dislike exceptions for that reason: I find that they make control flow more confusing). Sometimes I do use early returns in imperative languages, though often I still prefer to use a "ret" variable in those, setting it instead of returning, and returning it in the very end of a function, so that the correspondence between code structure and control flow is maintained, and the code can be read and thought of more like Haskell or Scheme, rather than like assembly or C with goto. Which, I think, helps to avoid confusion: adding an early return statement and making the function to skip some cleanup in the end (particularly in lower-level languages), or adding a cleanup and forgetting that there is an early return already in place above it, looks like an easy way to introduce a bug. As an example of me not being the only crazy person, there is the NASA C style guide [0] with a section on the return statement, and I recall online articles along those lines as well (as mentioned above, comparing those to goto). I do not claim that this is the one true view/approach, but there it is, existing.

As a bonus (an additional example of differing views on simplicity), even goto itself is still in use these days, with some advocating its use, and others (famously) arguing against it, both camps using some kind of a simplicity (or complexity of the opposing approach) as an argument.

[0] https://ntrs.nasa.gov/api/citations/19950022400/downloads/19...

defanor··on Cognitive load is what matters
> You would feel the need to look up a variable called isSecure, but would not need to look up condition4 or condition5?

I assume that those "conditions" are placeholders, not to be read literally in the example (since the example is not about poorly named variables, but about complex conditions), so I did not mean them literally, either. Supposedly those would be more informative names, such as "channel_encrypted", "checksum_verified".

> [...] describe wishful thinking by straight-up lying

This was what I had in mind upon seeing that "isSecure" bit, too: could easily be a lie (or understood differently by different people). But taking a little more effort to check then, and/or having to remember what those variables actually mean. It is a commonly debatable topic though, where the good balance is, similarly to splitting code into small functions: people tend to balance between spaghetti code and extreme splitting.

My point though is not to argue with those particular points here, but that we have no such practices/rules universally considered simple and formally stated/verifiable.

defanor··on Cognitive load is what matters
I think most programmers agree that simpler solutions (generally matching "lower cognitive load") are preferred, but the disagreements start about which ones are simpler: often a lower cognitive load comes with approaches one is more used to, or familiar with; when the mental models one has match those in the code.

For instance, the article itself suggests to use early/premature returns, while they are sometimes compared to "goto", making the control flow less obvious/predictable (as paxcoder mentioned here). Intermediate variables, just as small functions, can easily complicate reading of the code (in the example from the article, one would have to look up what "isSecure" means, while "(condition4 && !condition5)" would have shown it at once, and an "is secure" comment could be used to assist skimming). As for HTTP codes, those are standardized and not dependent on the content, unlike custom JSON codes: most developers working with HTTP would recognize those without additional documentation. And it goes on and on: people view different things as good practices and being simpler, depending (at least in part) on their backgrounds. If one considers simplicity, perhaps it is best to also consider it as subjective, taking into account to whom it is supposed to look simple. I think sometimes we try to view "simple" as something more objective than "easy", but unless it is actually measured with something like Kolmogorov complexity, the objectivity does not seem to be there.

defanor··on Show HN: Smart email filters to unfuck your email
Seems to be for Gmail and Fastmail specifically, and for some reason it calls those "clients" (rather than mail service providers).
defanor··on It is worth it to buy the fast CPU
This compares a new desktop CPU to older laptop ones. There are much more complete benchmarks on more specialized websites [0, 1].

> If you can justify an AI coding subscription, you can justify buying the best tool for the job.

I personally can justify neither, but not seeing how one translates into another: is a faster CPU supposed to replace such a subscription? I thought those are more about large and closed models, and that GPUs would be more cost-effective as such a replacement anyway. And if it is not, it is quite a stretch to assume that all those who sufficiently benefit from a subscription would benefit at least as much from a faster CPU.

Besides, usually it is not simply "a faster CPU": sockets and chipsets keep changing, so that would also be a new motherboard, new CPU cooler, likely new memory, which is basically a new computer.

[0] https://www.cpubenchmark.net/

[1] https://www.tomshardware.com/pc-components/cpus

defanor··on Efrit: A native elisp coding agent running in Emacs
It appears to have a feature overlap with gptel; would be nice to highlight the differences.
defanor··on Show HN: Kitten TTS – 25MB CPU-Only, Open-Source TTS Model
A Festival's English model, festvox-kallpc16k, is about 6 MB, and it is a large model; festvox-kallpc8k is about 3.5 MB.

eSpeak NG's data files take about 12 MB (multi-lingual).

I guess this one may generate more natural-sounding speech, but older or lower-end computers were capable of decent speech synthesis previously as well.

defanor··on The Rise of Whatever
Rather annoyed by the hype around LLMs myself, but I notice, both in this article and more generally, that some of the criticism seems to attribute to LLMs specifically the issues that are neither unique to them, nor caused by them.

> Why would someone using a really cool tool that makes them more productive… feel compelled to sneer and get defensive at the mere suggestion that someone else isn’t doing the same?

It sounds like it is about people seeing others doing things in a way they view as inefficient or wrong, and then trying to help. "Sneer and get defensive" does not sound like trying to be helpful, but they probably would not describe themselves as sneering and getting defensive, either.

> I might have strong opinions about what code looks like, because I might have to read it, but why would I — why would anyone — have such an intense reaction to the hypothetical editor setup of a hypothetical stranger?

As above, but even closer to this particular question, see the editor war.

> But the Bitcoin people make more money if they can shame everyone else into buying more Bitcoin, so of course they’re gonna try to do it. What do programmers get out of this?

Apart from "helping" others, a benefit of promoting technologies one uses and prefers may be a wider user base, leading to a better support, proliferation of technologies they view as good and useful.

> We’ve never had a machine that can take almost any input and just do Whatever.

Well, there is Perl. It is a joke (the statement, not the language), but the previous points actually made me to think of programming languages with dynamic and weak typing, similarly allowing to pretend that some errors do not happen, at the cost of being less correct, and doing whatever when things go wrong. Ambiguities in natural languages come to mind, too.

> That means they aren’t even reading the words they claim as their own!

Both homework and online discussions featured that before LLMs, too. For instance, with people sometimes linking (not necessarily copying) materials to prove a point, but materials contradicting it. Carelessness, laziness, lack of motivation to spend time and effort, are all old things.

> I can’t imagine publishing a game with, say, Midjourney-generated art, even if it didn’t have uncanny otherworldly surfaces bleeding into each other. I would find that humiliating. But there are games on the Switch shop that do it.

I heard "AI-generated game" mentioned as a curiosity or a novelty, apparently making it a selling point. Same as with all the "AI-powered" stuff, before LLMs. There is much of that used for marketing: as block chaining and "big data" were added everywhere when those were hyped, and many silly things are similarly added into items outside of computing if they have a potential to sound cool at least to some (e.g., fad diets, audiophile hardware).

> But I think the core of what pisses me off is that selling this magic machine requires selling the idea that doing things is worthless.

This also sounds like yet another point in the clash between prevalent business requirements and more enthusiastic human aspirations. The economic and social systems, and cultures, probably have more to do with it than particular technologies. Pretty much any bureaucracy/corporate/enterprise-focused technologies tend to lessen the fun and enjoyment.

defanor··on I just want to code (2023)
> But if I didn't listen to the devil from time to time, I wouldn't stay up to date with the latest technologies, and as a result I wouldn't be able to pay my bills.

It appears to imply that new technologies do not count as fun, which may be the case for the author, but not generally. And there are indeed fewer open vacancies requiring older (decades old) technologies exclusively, with vacancies often including currently-hyped technologies in addition to established ones, which opens more options and potentially leads to a higher salary if one employs those newer or hyped ones, but I guess that it is quite possible to pay the bills while using mostly the older ones, too.

← PreviousPage 2 of 15Next →