HNHacker News
TopNewBestAskShowJobs

abjKT26nO8

730 karma · joined March 19, 2016

submissionscomments
abjKT26nO8··on Pain Points of Haskell
The maths of today has very little to do with the maths of 500 years ago, let alone 2500 years ago. Sure, we still have the Pythagorean theorem, but in today's modern formulation it's trivial. We still have numbers, but they are no longer something that can be totally ordered. With numbers we even turned things upside down, because we used to first try to define single numbers and only then collections of numbers. These days we say that "a number is an element of a number field", "a vector is an element of a vector space" etc. and we define the structures first. But the biggest departure probably is the widespread reliance on proof. In XVI century you could call yourself a mathematician without proving things, as long as the ideas you came up with worked in practice.

I'm sure that in the programming world we'll still have "if"s and variables/aliases 200 years from now. And that's right about how much commonalities modern mathematics has with the mathematics of the age of Euclid.

Disclaimer: I took a course in history of mathematics and I have to say, if I was born as little as 200 years earlier I wouldn't be able to stand mathematics. These days, it's actually interesting to me. Similarly to how mathematics in primary through high school is really boring.

abjKT26nO8··on Diving into Go by building a CLI application
What specific problems do you see with it?
abjKT26nO8··on The Fastest Google Fonts
TrueType implementations need to include an interpreter for a Turing-complete language (the hinting language). More about vulnerabilities:

1. https://security.stackexchange.com/questions/91347/how-can-a...

2. https://threatpost.com/of-truetype-font-vulnerabilities-and-...

3. https://googleprojectzero.blogspot.com/2015/07/one-font-vuln...

abjKT26nO8··on YouTube actively deletes anti CCP comments
> I think this is just a case of fighting low-quality comments rather than deliberate censoring of anti-CCP political speech.

As opposed to what comments? I've never seen a non-low-quality comment on YouTube.

abjKT26nO8··on Achieving Accessibility Through Simplicity
> I don't see that as any different from saying "use 19.6px text unless the user specifically overrides it." Maybe the designer just likes big text!

If the designer wants to make text big, they should first set somewhere a specific value for its size, not go on to "you like your text this way? fuck you, i'll make it bigger than that!". There was no "px" or "pt" size setting anywhere higher in the DOM, so that's effectively what the author was saying to the readers.

> If a user doesn't, they can easily make it smaller.

The user already set their text preferences in browser settings. It's the designer that decided that they will make every user, who made that choice at some point, miserable.

abjKT26nO8··on Achieving Accessibility Through Simplicity
>> Leave the page at its default font size and avoid using custom fonts, preferring to use vague selections like “sans-serif” and “monospace”.

> Why? These are all easily customizable by the user.

monospace and sans-serif are customizable. Helvetica isn't. Regarding font size, not that long ago there was a post here from someone who set "font-size: 1.4em" in their CSS, because they couldn't be bothered to set up HiDPI scaling on their system. Mind you this CSS rule doesn't set the font size to anything specific. It tells the browser "whatever size you wanted to use for this text, make it 1.4 times bigger". So if user set say 14px as their preferred font size, it would be 19.6 px instead. That's just asshole design.

abjKT26nO8··on Qt Online Installer 3.2.3
A license is "GPL-compatible" when code released under its terms can be used in a GPL-licensed project.

However, using any GPL-code, no matter if linked statically or dynamically, requires the author to release the combined work under GPL.

abjKT26nO8··on Qt Online Installer 3.2.3
No Qt for BSD-licensed projects then? Great.

"Creative accounting is what we want, since we didn't outlaw it."

abjKT26nO8··on Qt Online Installer 3.2.3
I couldn't care less what's FSF-endorsed. They are not the company behind Qt. Perhaps ask the Qt company what they endorse?
abjKT26nO8··on Qt Online Installer 3.2.3
That's just a workaround. Now I need to add *.o files to my deb packages. Or ship source code in deb packages? What is it? Gentoo?
abjKT26nO8··on Qt Online Installer 3.2.3
I was replying to the suggestion that Qt could be released under GPL if its authors wanted to prevent the creative accounting described by OP.

Also, LGPL is already problematic, because you cannot link statically with it.

abjKT26nO8··on Qt Online Installer 3.2.3
Then you wouldn't be able to write BSD-licensed apps using Qt at all. Creative accounting is also legal per se. It doesn't make it right.
abjKT26nO8··on Qt 5.15 LTS
Are there (even non-cross-platform) toolkits that provide better developer experience than Qt?
abjKT26nO8··on Qt Online Installer 3.2.3
That's the equivalent of creative accounting for software developers.

Dick move.

Such behaviour just leaves the market to big corps who can afford to release such tools for free while extracting money from elsewhere.

abjKT26nO8··on Diving into Go by building a CLI application
It does have them: https://doc.rust-lang.org/book/ch19-03-advanced-traits.html#...
abjKT26nO8··on Exiting VIM is hard; sometimes we need to take drastic measures
https://xkcd.com/378/
abjKT26nO8··on A major reason for departures at Slack was “remote work request rejected”
Exactly. Just 30 minutes ago I observed delays between me typing text and the text appearing in Slack's text input box. With my bare eyes on an idle system with 32GB RAM and a quad-core i7-6700! It isn't even rare. That's just absurd.

Back around 2012 I would have Empathy (XMPP) always on and I would use GNOME's wonderful "reply in notification" UI to talk to people. It felt snappy and its resource use wasn't noticeable on a laptop with 4GB RAM and a dual-core CPU. Modern chat apps are crap.

abjKT26nO8··on Catalina is checking notarization of unsigned executables
On the contrary, it's easy in our tech bubble to assume that everybody else uses a computer just for mail, netflix and spreadsheets, when in reality most people have niche needs. It's just that there are many niches. E.g. I know people from scientific circles who use CAS software I've never even heard of, my sister is an architect and needs to use CAD software. YouTube video authors often use advanced video editing software. Musicians use audio editing software. Publishers use Adobe InDesign. Then there are gamers. This "not geek => mainly spreadsheet user" stereotype is really strange.

And basically everybody, whom I know personally, complains about the UX of anything web-based, so don't even think about putting CAD, CAS or InDesign into the browser.

abjKT26nO8··on Siri, What Time Is It in London?
Correction: Hacker News is an American-founded site with international community of users. That's not a site for Americans where the rest of the world just comes to watch. Or maybe I missed a point in the guidelines...

I'm not talking about currencies. I'm talking about sentences like "if you move to the east, you'll earn...", "in the south, it's..." in conversations with no prior indication that it's just about US and "the east" means "the east of US" and "the south" means "the south of US". Because US is the whole world and there is no need to clarify...

abjKT26nO8··on Goals and Priorities for C++
"&" captures references, not copies. I would like it to be just syntactic sugar for "&x, &y, ..." and only include the variables that I actually used in the body of lambda. There is no performance cost to that (unless a crash is somehow a performance win --- hey, the program finished earlier, I guess it's faster...).
abjKT26nO8··on Goals and Priorities for C++
At one job I wrote the equivalent of the following (it's just that I invoked create_lambda more times):

  #include <functional>
  #include <iostream>
  
  std::function<void()> create_lambda(const int& x, const int& y) {
      return [&] {
          std::cout << "x: " << x << "\n";
          std::cout << "y: " << y << "\n";
      };
  }
  
  int main() {
      int x = 5;
      int y = 7;
  
      const auto f = create_lambda(x, y);
  
      f();
  }
And it crashed. There were no local variables in create_lambda and the lambda crashed in the same function that create_lambda was called in. When I try to reproduce it now, it doesn't work. Not sure what's different, but this is basically what happened.
abjKT26nO8··on Siri, What Time Is It in London?
HN is not an exception. It's the most stark in threads about salaries.
abjKT26nO8··on Goals and Priorities for C++
> You will find out that minimalist Oberon is long gone and the language in a certain sense compares to C#, D in complexity, with support for generics, untraced references, exceptions, linkage models, inline Assembly.

Generics is something I can't live without, to be honest. But I don't like C++'s implementation of generics. The error messages they generate and the whole SFINAE business make for a horrible programmer experience. Rust has the best implementation that I know of currently. Inline assembly sure is useful.

Anyway, thanks for the extensive answer. I think I understand your point of view better now.

abjKT26nO8··on Goals and Priorities for C++
That's not really an option for me when I debug C++ that is run on a Linux or Android TV. It also wouldn't be an option when I used to work with C++ that was used on Linux servers. That's a big chunk of C++ use.

While I have your attention, I see your comments here in C++ threads quite often. You seem to like the language and at the same time you have some experience with simpler languages like Oberon. My experience with C++ has been that people happily go on to create giant inheritance hierarchies, with no restraint for multiple inheritance to the point that it's so unmanagable that nobody knows where things go and what actually happens. With all that inheritance, they lose track that the same thing has actually been copied tens of times between different classes and now these tens of classes have code that is basically copy-pasted and who knows what benefit anyone has from all this inheritance. Google engineers are one of the offenders when it comes to overuse of inheritance. Then, modern C++ allegedly fixes some warts, but IME it introduces more of them. E.g. the initialization fiasco (I honestly can't say with 100% confidence what braces do when you initialize std::vector). Then there is this thing that when you create a lambda like so:

  [&] { ... }
And then move it to a function which will create lambdas of this form, just with different captures:

  std::function<void()> create_lambda(args...) {
      return [&] { ... };
  }
The second version will crash later when you run the lambda. Because it turns out that "[&]" just copies the stack pointer and isn't syntactic sugar for enumerating all the variables that you capture. This was non-obvious to me and it was really hard to track down the first time I encountered this problem. I think "[&]" is broken. Similarly, std::thread crashing in destructor when the user doesn't call std::thread::join, nor std::thread::detach. The ambiguity of syntax... I just don't buy that "modern C++" makes things particularly better. It sometimes makes them worse.

Don't you experience the same fatigue as I do?

EDIT: Oh, I just remembered another thing: at a previous job we discovered that MinGW's implementation of std::random_device just returned 0 every time. It is major facepalm for MinGW, but also for the C++ standard for making this behaviour allowed (yes, it's actually compliant with the standard). And even after it was fixed, there are still systematic issues with this whole randomness API. E.g. you can't actually seed it properly[1].

[1]: https://codingnest.com/generating-random-numbers-using-c-sta...

abjKT26nO8··on Goals and Priorities for C++
What graphical debuggers for C++ do you recommend?
abjKT26nO8··on OpenBSD 6.7
This is a classic that may help you understand better why some people choose BSDs: http://www.over-yonder.net/~fullermd/rants/bsd4linux/01

Also, there are still new things being invented for BSDs (and Illumos) that aren't available in Linux. E.g. FreeBSD has Jails and Illumos has Zones which provide a complete solution for "containers" which are put together from different components in Linux which overall may not be as secure as Illumos Zones. Another one is the PF firewall. In OpenBSD they introduced security features like pledge and unveil.

Another thing is ZFS:

- on Linux there are legal problems with shipping it out of the box;

- it's far more popular on FreeBSD and Illumos than on Linux, so it wouldn't surprise me if there are bugs that will show up on Linux, but not on the other two.

abjKT26nO8··on Systemd, 10 years later: a historical and technical retrospective
This was already posted 12 days go: https://news.ycombinator.com/item?id=23062072
abjKT26nO8··on Coming to Chrome: a new way to use tabs
What I would like, is Emacs/Vim-style buffers. When you don't have one open, it's completely invisible. When you want to switch to it, you perform an incremental search for its title. No need to hunt for things on the screen. A lot faster and a lot more tidy wrt what's currently visible on the screen. No distractions.
abjKT26nO8··on Less is exponentially more (2012)
Needs "(2012)" in the title.
abjKT26nO8··on Linux (In)Security
What is the point of wayland-keylogger[1] that is linked in the article? Do Wayland compositors normally run under a different user account than the one that logged in via the login manager? I see this as being an issue with full filesystem (or just home) access given to applications, but I don't see how LD_PRELOAD is the problem here. Yet the author of TFA seems to suggest that this is the issue.

[1]: https://github.com/Aishou/wayland-keylogger

← PreviousPage 2 of 7Next →