Hacker News new | past | comments | ask | show | jobs | submit | more clon's comments login

How many of those do you recon had already been exposed before vaccine availability?

These people were putting their neck out almost a full year before the first shot was administeres. Chances are, many of them already acquired immunity via this route.


I wish people did not disregard natural immunity. There are quite many who do. Anyways... for how long does natural immunity last?


I don't think we know yet with much certainty. But I'll tell you this, it's a lot easier to get a vaccine booster than a natural immunity booster.

Not to mention, the body of evidence that point to the vaccines providing super-human immunity (i.e. better than natural) continues to grow.

Much of the original "natural immunity is the best" idea came from a single Israeli study.


So by this logic, would you let "front line workers" that aren't vaccinated off the hook as well, seeing that they were probably "exposed before vaccine availability" and "Chances are, many of them already acquired immunity via this route"?


That makes sense?


Event Horizon by John Micheal Godier


You would still be doing the job of concatenating together the error message, possibly rendering some complex objects to a string, that is then fed to the no-op. The point parent was making is that there is also a performance aspect to this, in addition to the security aspect.


> You would still be doing the job of concatenating together the error message, possibly rendering some complex objects to a string, that is then fed to the no-op.

Why would you still do be doing that work? If a value goes into a no-op, then the value isn't computed. (In theory - I'm sure it doesn't always work out 100% of the time in practice.)


Unless the JVM is sure the logic is not effectful, it couldn’t eliminate it.


There's an even simpler reason why the JIT compiler can't prune it: it's possible to dynamically change the logging level at run time.


That is actually a reason that a JIT compiler can prune where an AOT compiler can't. JIT can deoptimize when assumptions change.

One of the bigger wins with the JVM is assuming that a virtual method can be called statically if there are no derived classes. That's a huge win for every leaf class in the class tree. The assumption can change every time a class is loaded of course. The optimization is called devirtualization and it can be combined with inlining to get even bigger wins.


Fair point... but it seem like, even so, doing that to monitor whether a single integer variable might change sounds like a lot of added complexity. Are there other use cases that would help to justify it? Reducing the impact of failing to follow logging best practices doesn't seem like an obviously sufficient cause.



The JVM knows what string concatenation does.


`"hello" + myFooObject.toString()` Can you eliminate that? It's impossible to say without knowing whether or not `myFooObject.toString()` is effectful. Maybe the JVM can make that assessment. Maybe not. I don't know, but it's not as trivial as "knowing what string concatenation does".


A straightforward way to do this is for Java to assume built in types like strings are side effect free, but custom types may not be. This would likely cover a good portion of log lines but not all, obviously.


But what if one of the arguments is a function call? Then it isn't easy to prove there are no side effects


If it’s too big to in-line then yes.


That’s says absolutely nothing about whether the function has a side effect.


If you can inline it into the compilation unit, then you can see if it has side effects or not.


The noop determination is made during runtime within the log method called. So, it's LOG.info(obj.toString()), wherein that method inspects the log level setting, then decides whether to ignore.

Are you saying that Java does or should "optimize" in such a way that it branches to the logic within each method called during runtime, inspects which code would be executed per possibly mutable runtime values (like log level), considers possible side effects (in-method and in parameters) then decides whether to even invoke the method at all?


Isn't the point that you don't generally stuff your log of things that are only strings but of things that can become strings? (Asking since I know of your work with truffle)


I assumed things like the names of resources that are already strings because you’re using them in the actual program?


A typical logger.info("user {} did the thing", user) can skip the actual string interpolation and user value stringification, if the log level is not > info. However, logger.info("user " + user + " did the thing") cannot avoid at least the execution of user.toString(), even after jit optimizations, unless the jit could prove that toString does not have side effects. But I don't believe the jvm jit tries to do that. Am I wrong?


If user is a string, then #toString() is a trivial method, will inline, and become a no-op.


However, if user happened be an user-defined User object it would be hard to guarantee that it could be inlined


Yes


For what it's worth, libvips is part of OSS fuzz

https://github.com/google/oss-fuzz/tree/a21768ce6a5056d27f82...

I thought they mostly fuzz the loaders, which are the most critical, apparently the found bugs present a picture of a pretty wide coverage:

https://bugs.chromium.org/p/oss-fuzz/issues/list?can=1&q=Lib...

As of June 2021, OSS-Fuzz has found over 30,000 bugs in 500 open source projects.


Ah, very nice! I should have checked there.


libvips is great! The performance is so good you can probably process your images on the fly. Can't recommend it enough.


Thank you. This will replace my notes app.

One small thing that got me confused. Typing ? in my SO's Android (MS SwiftKey) automatically adds a space after it: "? ". No idea why it does that, but it stops search from working. Maybe skip leading whitespace?


Hope it helps you. That’s a surprising bug. Does it happen with every keyboard? Thanks for the report.


It's a SwiftKey quirk, apparently, trying to be helpful in inserting common punctuation.


Not so sure it's a true bug. Seems like it'd be adding whitespace after what's usually punctuation. Definitely a quirk though.


When I press the ? button it does also add a space. I'm using Google Keyboard.


Absolutely. Sidewalks were never meant for meandering robots. At the very least we should tax those stupid things as they consume a public resource.


Exactly the same sentiment. My yearlong experiment to try to love mechanical keyboards left me with a thousand euro hole in my wallet and physical problems spanning from fingers to upper body musculature. I loved the tactile feel, but hated what they did to my body.

I think mechanical keyboards are just too high, with excessive travel. You sort of have to keep your hands floating in the air, which transfers stress to your neck, shoulders and upper body. No palm support I tried offered any substantial relief, probably due to the long travel and finger contortions required.

Second issue, perhaps I'm a poor typist, but my fingertips frequently got stuck between the keys, causing mistakes by triggering adjacent keys.

One day I got tired and bought a 10 euro keyboard from the grocery shop. Noname, slimline, rubber domes. What a relief that was.

These days I swear by Logitech MX Keys. Best keyboard I have ever touched.


> One day I got tired and bought a 10 euro keyboard from the grocery shop. Noname, slimline, rubber domes. What a relief that was.

Actually, I had the same thing happen to me during my mechanical keyboard experiment when I had to use some old keyboard found in the basement on a raspberrypi.

It felt SO GOOD, SO COMFORTABLE, that I said "screw that experiment, I'll accept that I'm an uncultured swine who likes membrane keyboards!"

I decided to stop trying to fit my tastes to what's popular, and instead added that quirk to my list of differences with normal geeks (who hate many of the things I like, such as Windows...)

Then I bought myself a Thinkpad SK-88xx membrane keyboard new in a box at a price that'd make even mechanical keyboard snobs cry, and I've been happy ever since with regular Thinkpad membrane keyboards :)


» I decided to stop trying to fit my tastes to what's popular

Funny enough, for me it was the inexpensive (~ USD 25) no name "blue" switches keyboard that I like best. They are very clickity clackity. However, I work from home now so it works out.

It doesn't have a number pad which I thought would be a deal breaker but I don't mind much at all. Even the legendary Thinkpad keyboard is not good enough anymore. In fact, I went to the Thinkpad bios and switched the fn <-> Ctrl keys back to the same layout as on my USB keyboard.


> Funny enough, for me it was the inexpensive (~ USD 25) no name "blue" switches keyboard that I like best. They are very clickity clackity. However, I work from home now so it works out.

That sounds exactly like my personal experience. I purchased a cheap Ajazz ak33 for around USD 25 and I loved the feel and response. It's a shame that no one within a 30 feet radius shared my appreciation of it's clickyness, and now it sits on a shelf gathering dust.


I find average mechanical keyboards to be perfect for my typing style. They never cause me hand strain, stress, tension, etc. Membrane keyboards, however - and especially whatever you call the keyboards on Macbooks - feel like I'm trying to finger drum on glass. I end up with tons of hand pain.

However -- the qualifying fact is that I am a pianist, from the age of 5. I believe that a lot of the biomechanics I learned at the piano keyboard transfer to the computer keyboard, whether I want them to or not. I can't help but try to type the way I play piano to some degree -- in large part, this means an elevated wrist, a pretty high finger force and more of a hammer-type finger action rather than a pressing-type acting.

A very important part of any instrument training is learning correct technique, and a large reason for this is the prevention of injury. I've had decades to adopt the correct technique for keeping my wrists elevated and my fingers hanging down without tension. And I'm sure the increased finger strength helps, too.


And that’s why we always leave an insightful comment (thanks gene!)


To you and the parent poster and the grandparent poster, I wonder if you've ever tried a mechanical keyboard with low profile keys and keycaps?

I enjoy mechanical keyboards myself, and even so, I found myself liking the low profile ones a lot better. Like you said, I love the tactile feel, and I also find regular sized mechanical keyboards too high.

I currently use two: The Keychron K1 "Ultra thin" for work and the HAVIT Low Profile one. Both are a joy to type with. They are as thin as any rubber dome keyboards and provide a better type feel.


So many people seem to rant and rave about mechanical keyboard that I'm still willing to give them a try!

Could you recommend a model that's not too noisy and doesn't require too much force, but which also has the page up and page down keys on both sides of the up arrow?

This seems a rarity for mechanical keyboards, while it's quite standard on laptops. Since I spend most of my time on laptops, I'd like to at least match the general shape for the features I use the most- like shift-page up and shift-page down scrolling in consoles.


Your best bet for mechanical switches that aren't too noisy are probably Cherry MX Browns.


I’m using silent red and I don’t find them too noisy.

One of the main advantages of a mechanical is that they are often programmable so you no longer have to rely on software based methods to change key mappings. Caps lock is Escape everywhere all the time.


I have Caps Lock mapped to Ctrl, like a UNIX-style keyboard. Otherwise, my requirements for a mechanical keyboard are simple:

1. High quality, tactile switches (Cherry MX Blues or Browns) 2. Programmable keymapping 3. TKL layout 4. 6NKRO 5. PBT double-shot molded keycaps (not ABS) 6. Steel baseplate with as little flex as possible 7. Removable USB-C cable 8. Black or grey (dark colours)

I don't care at all about RGB, that's a gimmick to me. I'm not a gamer. I need something I can blaze on when doing heavy Vim editing or writing (I type +/- 150 wpm) after a nap and a few cups of good coffee.

I also prefer a narrow bezel, something like this: https://www.duckychannel.com.tw/en/Ducky-One-Golden-grey-TKL


> I don't care at all about RGB, that's a gimmick to me. I'm not a gamer.

I once spent time writing a CPU, RAM, and IO barmeter using RGB backlight, using one color and one line of keys for each indicator.

It's VERY practical for a sysadmin!


> Caps lock is Escape everywhere all the time

This would be a limit: I use AHK to have chorded keys: - caps is esc if used alone, control if used with another key - enter is enter if used alone, control if used with another key - shift left is page up if used alone, shift if used with another key - shift right is page down if used alone, shift if used with another key - alt left is home if used alone, alt if used with another key - alt right is home if used alone, alt if used with another key

This makes many shortcuts very easy: ctrl-l can be done one handed with the right hand by pressing enter-l

Likewise, to control-shift-home, I press caps+shift left+alt left.

To move between tabs, on the left caps then shift left, or on the right enter then shift right.

Better: the two thumbs "beginning then end of file" to have a quick look at some code: right alt then left alt (so right alt=alt, left alt=home) and the same 2 keys but in the opposite order, left alt then right alt (so left alt=alt, right alt=end)

This is so super practical with AutoHotKey...


This is super interesting. I absolutely love AHK, too. But can you please clarify how you achieve, "caps is esc if used alone, control if used with another key"? Is it based on whether the key is still down (pressed) vs. up (released)?

If you don't mind, can you please share your script? My Capslock-as-a-modifier setup is very simple. I just use Capslock + various keys to do stuff:

   Capslock & p::Send, {PgUp}
   Capslock & n::Send, {PgDn}


Of course, I'm happy to share my script!

I've already posted it here, check my posting history.

Since you are the 2nd person to ask, I might even put it on github!


Silent reds are also known as pink, in case anyone is looking for them. They were exactly what I was looking for after trying brown (still too loud and a little too much force required), silver (way too many false clicks when I rested on the home row), and various Zilents (OK, until I tried the pinks and realized I don't like tactile switches at all).


Vortex Tab90M with silent reds. Best keyboard I've ever owned. Compact, quiet, mechanical, just fits all my needs for both work and gaming.


Sorry but like most of the 70% the up arrow has "shift" on the left, and "end" on the right.

The closest is the GMK UNIQEK C70, with pagedown on the right... but shift on the left. I might be able to remap FN, and to find a cap with the right slant... but then it's not low profile.


Take a look over this Keychron brand. They've got a lot of different set ups.

I've got two with Gateron Browns, I rate them very, very high.


>Second issue, perhaps I'm a poor typist, but my fingertips frequently got stuck between the keys, causing mistakes by triggering adjacent keys.

This is a new one on me. I have never heard of this happening to anyone. My recommendation for you would get a low profile mechanical keyboard like the Keychron K3 or Logitech G915


To be clear, I did not mean that my fingers are caught between the keys. More like I often felt like I'm hitting keycaps sideways. I could not always discipline myself to operate the keyboard like a 1970s typist. This was very distracting and caused errors. Probably I bottomed out too much, instead of just breaking the click? I'm sure there's technique that can be mastered.

I guess I'm a slimline keyboard person and thanks for the recommendation. Perhaps I will try a mechanical slim as well, to fully close this experiment. For the moment I enjoy just getting some work done on the MX Keys, it is an absolute delight. Can't say enough good things about it.


For some reason this happens to me with the MacBook laptop keyboards (the new ones). I don’t know what I‘m doing wrong, maybe it’s because I come from a MK with rather deep keys and all? I haven‘t figured it out yet.


After going to the Keeb Life (2x Ergodox + Iris + Mistel Borocco) for ergonomic reasons, i have some thoughts.

If using a mechanical keyboard caused the need for contortions, it was a bad fit for you. Full stop. Whatever layout you ended up with was built for the needs of someone else.

I generally tell people who're interested in the Keeb Life to grab something random off Amazon. If they want something known, I point them at the Code keyboard, which is 90% a basic keyboard, 10% swag. Nothing weird except some clever use of the function keys and some entirely optional helpful things for programmers in the layout.

IANAMD, but I'd bring up this with one. The relaxed "floating hands while typing" posture is one that a lot of people end up passing through. It works for some but not others and comfortable typing should be regardless of the keyboard.


> Second issue, perhaps I'm a poor typist, but my fingertips frequently got stuck between the keys, causing mistakes by triggering adjacent keys.

To me this is one of benefits of harder to press keys: Accidentally touching a key is not enough to trigger them but intentional keypresses go through. It's the same difference as between piano and light synth keyboard. The thing about long travel is part avoiding accidental keypresses but also that you don't have to press the key to bottom and can avoid the jolt.


Not all mechanical keyboard share the same key travel and profile height.

Mainly you can look up Chocolate switches.

[Example](https://user-images.githubusercontent.com/736191/49698493-06...)


The mx keys is amazing. It feels so sexy to type on, and I can type far faster and more accurately than anything else I've used.

I've also not charged the thing in months and it doesn't seem to care, which blows my mind.


For all the animosity that PHP gets these days, every single item on your list (granted, of very basic demands) aligns with PHP's composer. I am surprised that Rust is that much worse off than PHP in this regard.


I don't think composer has a diff option to dump the actual code differences before you update yet but yes most of this list comes from my past experience with composer. My current company doesn't use PHP but I look back fondly at how easy it was to audit my dependencies manually and be explicit about upgrades and transitive dependencies.


It does offer a diff option when you have local edits in the /vendor (for whatever insane reason). Always assumed it could be triggered manually as well. TIL.

I also love how easy it is to declare conflicts [1]. Some sub sub sub dependency down the tree had a bad 0.0.1 release? Just declare a conflict and have the tool do the work.

[1] https://getcomposer.org/doc/04-schema.md#conflict


Where do you place the teams in charge of the steaming pile of manure that is Teams, SharePoint, Dynamics 365, Office 365 et al? Seemingly these turds have also dropped from the cloud faction. My experience seems to be that excluding dev tooling, all attempts by MS to bring productivity tools to this brave new Internet thing have failed dismally.

Office 365 vs Google Suite is not even funny, if you have to use O365, that is. Dynamics 365 looks fancy at first, but make a few clicks towards settings and you can witness 5 different UX languages, one half-assed modernisation attempt laid on top of another. Plus the churn from ongoing attempts, pointless rebrands and nonsense invented by bizdev guys. Add the famous MS back compat policy and you have a special kind of hell.


Consider applying for YC's W25 batch! Applications are open till Nov 12.

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

Search: