Hacker Newsnew | past | comments | ask | show | jobs | submit | jjmarr's commentslogin

The most legible font is Atkinson Hyperlegible, which is free and developed by the Braille institute.

https://www.brailleinstitute.org/freefont/

I never see people using it because it's a weird hybrid between serif and sans serif, breaking many traditional design rules.


That’s the most legible font for people with impaired vision, which is a completely different concept

I'm replying to the comment saying "you need glasses" to say that the best font for people that need glasses is free.

The folks with big titles need to determine if the company's technical strategy is cloud-agnostic and whether 1000x growth in Q4 is a legitimate concern.

If Big Title wants to own the schedule impact they can make these demands.

Maybe I'm not read into the secret deal with Microsoft for next quarter that'll require all 3 of these.


> I find it confusing when Unicode "shadows" of normal letters exist, and those are of course also dangerous in some cases when they can be mis-interpreted for the letter they look more or less exactly like

Isn't this why Unicode normalization exists? This would let you compare Unicode letters and determine if they are canonically equivalent.


It's why the Unicode Collation Algorithm exists.

If you look in allkeys.txt (the base UCA data, used if you don't have language-specific stuff in your comparisons) for the two code points in question, you'll find:

  004B  ; [.2514.0020.0008] # LATIN CAPITAL LETTER K
  212A  ; [.2514.0020.0008] # KELVIN SIGN
The numbers in the brackets are values on level 1 (base), level 2 (typically used for accents), level 3 (typically used for case). So they are to compare identical under the UCA, in almost every case except for if you really need a tiebreaker.

Compare e.g. :

  1D424 ; [.2514.0020.0005] # MATHEMATICAL BOLD SMALL K
which would compare equal to those under a case-insensitive accent-sensitive collation, but _not_a case-sensitive one (case-sensitive collations are always accent-sensitive, too).

Are the meanings for the levels for each code point defined somewhere (accent, casing, etc)?

Typically it is defined by the collation. For the default collation, where all the weights are as in the file, it's none/accent/accent+case. But if you go to e.g. Japanese, you can have a fourth level of “kana-sensitive” (which distinguishes between e.g. katakana and hiragana).

Normalization wouldn’t address this.

What do you mean? All four normal forms of the Kelvin 'K' are the Latin 'K', as far as I can tell.

Normalization forms NFKC and NFKD that also handle compatibility equivalence do.

A few deprecated characters, including the Kelvin and Ångström symbols, are in fact canonically equivalent to their replacements and not just compatibility equivalent, so plain NFC/NFD is enough. (It’s generally better to avoid NFKC/NFKD normalizations unless you fully understand the implications, as they do lose meaning and at the same time do not account for all possible confusables.)

Does Czechia really have 4 million square miles and NaN population?

I don't understand why anyone would use auto and a trailing return type for their functions. The syntax is annoying and breaks too much precedent.

Generally, you don't. I'm not sure why the parent suggested you should normally do this. However, there are occasional specific situations in which it's helpful, and that's when you use it.

It just is an improvement for a bunch of reasons.

1. Consistency across the board (places where it's required for metaprogramming, lambdas, etc). And as a nicety it forces function/method names to be aligned instead of having variable character counts for the return type before the names. IMHO it makes skimming code easier.

2. It's required for certain metaprogramming situations and it makes other situations an order of magnitude nicer. Nowadays you can just say `auto foo()` but if you can constrain the type either in that trailing return or in a requires clause, it makes reading code a lot easier.

3. The big one for everyday users is that trailing return type includes a lot of extra name resolution in the scope. So for example if the function is a member function/method, the class scope is automatically included so that you can just write `auto Foo::Bar() -> Baz {}` instead of `Foo::Baz Foo::Bar() {}`.


1. You're simply not going to achieve consistency across the board, because even if you dictate this by fiat, your dependencies won't be like this. The issue of the function name being hard to spot is easier to fix with tooling (just tell your editor to color them or make them bold or something). OTOH, it's not so nice to be unable to tell at a glance if the function return type is deduced or not, or what it even is in the first place.

2. It's incredibly rare for it to be required. It's not like 10% of the time, it's more like < 0.1% of the time. Just look at how many functions are in your code and how many of them actually can't be written without a trailing return type. You don't change habits to fit the tiny minority of your code.

3. This is probably the best reason to use it and the most subjective, but still not a particularly compelling argument for doing this everywhere, given how much it diverges from existing practice. And the downside is the scope also includes function parameters, which means people will refer to parameters in the return type much more than warranted, which is decidedly not always a good thing.


1) consistency, 2) scoping is different and can make it a significant difference.

I have been programming in C++ for 25 years, so I'm so used to the original syntax that I don't default to auto ... ->, but I will definitely use it when it helps simplify some complex signatures.


it makes function declarations/instantiations much more grep-able.

Consistency (lambdas, etc.)

Carbon fibre has poor compressive strength and good tensile strength.

That makes it inherently bad at holding pressure from outside in a submarine and good at holding pressure inside a spaceship or airplane.


Selinux and AppArmor?

Android has it figured out too.


Have you ever tried to fix an application that was getting denied based on SELinux policies? It's a cryptic nightmare. You run a tool that gives you some magic string and hope that it works because nobody really understands what's going on. If that doesn't work you're in a world of pain. Almost as bad as Microsoft's ACLs.

"I don't care about x" clearly indicates a lack of want but is considered ruder than "I don't want x".

I suspect that whether it's considered more rude will vary by culture, but yes I think "I don't care about x" is a way to specify a lack of want in contrast to a negative want. It's also probably the most common way, but still used rarely I find, maybe because people consider it more rude.

Many of my university classmates would give up on more than one paragraph so I'd say we're already there.

I have a modest proposal for dealing with future unemployment.

There are too many people in power right now who I wouldn't put it past to take that proposal seriously.

Ha ha, yes. You should write that up as a pamplet somewhere.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: