Cryptsetup 2.0.0 introduces new on-disk LUKS2 format - <AUTHOR> https://www.kernel.org/pub/linux/utils/cryptsetup/v2.0/v2.0.0-ReleaseNotes <comment><USER2> I'm surprised to see so many comments here throwing up on the use of JSON. Have we really forgotten the Unix philosophy?

> Write programs to handle text streams, because that is a universal > interface.

A lot of the data formats I've written recently have used JSON. Partly because of that aforementioned principal, but mostly because it's just easier and there are very little downsides. Almost every language has support for it so it's fairly universal, it's self documenting, it's easy to debug, easy to manipulate by hand, and easy to maintain.

Put more simply: I've implemented several data formats using custom binary and several data formats using JSON. JSON was easier and faster every single time.

My recommendation for data formats: just use JSON; unless you have a really good reason not to.

And I do mean really good reason. For example, many might think concerns about data size would be a reason not to use JSON. But go ahead and run some JSON through a compression algorithm some time. You'll be amazed. Compressed JSON is very competitive versus a custom binary format.

<comment><USER3> > several data formats using custom binary and several data formats using JSON

You may not realize it, but you've presented a false dichotomy here.

The alternate to JSON isn't "custom binary", it's standardized binary encodings that allow the same flexibility (or additional flexibility) compared to JSON. Some examples include cbor & msgpack.

>> Write programs to handle text streams, because that is a universal interface.

cryptsetup manipulates block devices. I don't think that line can or should really be applied to something that is fairly similar to a filesystem's on- disk format.

</comment></comment><comment><USER4> Doesn't solve my most important problem with LUKS: Allowing Trim passthrough on SSDs without impacting vulnerability.

Also, why use json for meta-data instead of simple C Structs? No human is supposed to read this kind of data anyways.

<comment><USER5> > Alowing Trim passthrough on SSDs without impacting vulnerability.

Unfortunately I don't think that's possible. If I scan your encrypted disk and see that 10% of blocks are zeroed out, I can assume that your disk is 90% full. So information has been leaked, which is arguably a vulnerability.

<comment><USER6> Couldn't this be an opt-in feature? For some people, this might be a reasonable trade-off given their threat model

<comment><USER7> Yes, it can be, and it's already present.

<comment><USER6> Oops, probably should have checked before asking

</comment></comment></comment></comment></comment><comment><USER8> Anyone aware of any independent formal security audits of this version of this or any prior version of LUKS?

</comment><comment><USER9> Section regarding the format:

        LUKS2 format and features
        <comment><comment><comment><comment><comment><comment><comment><comment>~
        The LUKS2 is an on-disk storage format designed to provide simple key
        management, primarily intended for Full Disk Encryption based on dm-crypt.

        The LUKS2 is inspired by LUKS1 format and in some specific situations (most
        of the default configurations) can be converted in-place from LUKS1.

        The LUKS2 format is designed to allow future updates of various
        parts without the need to modify binary structures and internally
        uses JSON text format for metadata. Compilation now requires the json-c library
        that is used for JSON data processing.

        On-disk format provides redundancy of metadata, detection
        of metadata corruption and automatic repair from metadata copy.

        NOTE: For security reasons, there is no redundancy in keyslots binary data
        (encrypted keys) but the format allows adding such a feature in future.

        NOTE: to operate correctly, LUKS2 requires locking of metadata.
        Locking is performed by using flock() system call for images in file
        and for block device by using a specific lock file in /run/lock/cryptsetup.

        This directory must be created by distribution (do not rely on internal
        fallback). For systemd-based distribution, you can simply install
        scripts/cryptsetup.conf into tmpfiles.d directory.

        For more details see LUKS2-format.txt and LUKS2-locking.txt in the docs
        directory. (Please note this is just overview, there will be more formal
        documentation later.)

<comment><USER3> > JSON text format for metadata

It seems like it could be better to use some easier to parse binary format that allows the same flexibility that json does, like cbor/msgpack/bson.

Using JSON here is a very strange choice.

<comment><USER10> BSON, despite its name, is really just a format for MongoDB rather than a binary alternative for JSON.

<comment><USER11> Why can't it be both?

<comment><USER10> I see no reason why it can't be both, it's just that BSON happens to be a poor format for general interchange, and if you went back and redesigned you could probably fix many of its flaws. I'm a little skeptical though, I would rather just throw it out.

It's kind of shitty that it was called BSON, because it falls so far short of the generality that JSON has.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> LUKS2 on-disk format specification:

[https://gitlab.com/cryptsetup/cryptsetup/raw/v2.0.0/docs/LUK...](https://gitlab.com/cryptsetup/cryptsetup/raw/v2.0.0/docs/LUKS2-format.txt)

</comment><comment><USER12> As noted on the release notes, do not use this for production systems (for now) unless you have a backup of your data</comment>


Channel the voice of Paul Graham with WriteLikePaul.com - <AUTHOR>

So this was a quick hack for the TechCrunch Disrupt hackathon. As you type, it uses the last word you've entered to grab all the "next words" that Paul Graham might say. So if you type in "Startups", you'll see a list of words that have followed the word "startups" in PG's essays.
You can click on words to select them, or use up/down arrows to navigate and the right arrow to select.
It's simplistic and a bit buggy but was fun to build. I used Node.js, Express, Now.js, and Redis. It's hosted on a free Heroku Cedar instance.
http://www.writelikepaul.com <comment><USER2> I now call for a classic fixed round, but barring emergencies you do raise angel investments.

</comment><comment><USER3> "Beautiful highways running android, mountains on drugs"

</comment><comment><USER4> Creative! "I worry we didn't think about investors' intentions so we'd be replaced by its opponents."

</comment><comment><USER5> _It turns out_ by taking a block of absolute returns, investors cause the best deals to close.

</comment><comment><USER6> Clickable: <http://www.writelikepaul.com>

</comment><comment><USER7> "Never again play games with users, it's literally just like malaria."

This is pretty fun

</comment><comment><USER8> "David Heinemeier Hansson gave up a dangerous drug addiction we funded."

</comment><comment><USER9> Students may also influence people doing something broken.

Nice.</comment>


How it feels to learn JavaScript in 2016 - <AUTHOR> https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f <comment><USER2> I had come from a Compilers/computer vision and distributed systems background, and just recently I decided I'd quit my job and bootstrap my own little SaaS business. My web development knowledge had basically been stuck in the era of PHP and XmlHttpRequest, so I was in for a huge surprise when I decided to dive into modern day web development. For 3 months I couldn't do anything useful; it's just straight up a lot of fumbling in the dark with lots of alternatives and opinions on how to do something. The most aggravating things I found were the proliferation of tutorials written by beginners, and libraries/frameworks with lots of new terminologies which are just rebranding of existing CS concepts. It's aggravating to me because I made a distinction between knowledge from sciences and knowledge of made up words that won't be relevant in a few years (e.g action reducers, action creators, state store, etc), but in the end I decided to just suck it up and internalize all these words so I can move on with my project. They were useful to someone's project, so surely I could humble myself and learn something from them.

This piece may seem like a satire on the current state of javascript's ecosystem, but as far as I'm concerned it's an accurate portrayal of the pains that one goes through when picking up front-end development from scratch. I can't reproduce my initial development environment from memory even if I wanted to (too many npm dependencies and command line incantations). I've resorted to freezing them in a git repo and forking from it when I want to start a new project. I hope in time I will figure out the bare basics for what I plan to do.

Reflecting on my learning experiences, I think perhaps I would have progressed faster if I had an opinionated mentor who could hide from me the diversity of the ecosystem, or a guide if you will, until I'm ready. Entering web front-end development is just like entering a bazaar with thousands of sellers calling out to you. You wanted to buy a simple woodwork table so you could get on with your home improvement project, but you left the place 8 hours later with a bunch of tools that would be used to build said table instead, and you're nowhere close to getting started on your actual project.

This maybe the beauty of the ecosystem, but getting into it wasn't a pleasant experience for me. Now that I've gone through that phase and can get started on the real work, I hope to spare others the pain with what I've learned.

</comment><comment><USER3> > Yeah, but apparently in the web we love making things complicated and then > going back to the basics. We do that every year or so, just wait for it, we > are going to do assembly in the web in a year or two.

Genius. Took me a while to realize this wasn't satire, and was actually about WebAssembly.

Also: imagine how much worse it is if you _don 't_ yet know HTML/CSS.</comment>


Interview with reddit co-founder Alexis Ohanian  - <AUTHOR> http://www.mentalfloss.com/blogs/archives/14093

<comment><USER2> Hmm, extrapolating from the article, I guess I should get some credit for reddit's success because of my involvement with digg. Where's my cut? ;-)

Seriously though I regret not meeting the reddit guys. I felt a certain kinship with them during the crazy days of 2005. Now I'm just jealous of their exit.

<comment><USER3> "the crazy days of 2005" -- is that what we're calling them now? :)

</comment></comment><comment><USER4> Alexis is a really funny guy. This took me back to Reddit's Startup School talk last year at Stanford. Alexis and Steve did a slideshow presentation, and it was hilarious.

<comment><USER5> I was sitting in the back row last year and I watched him prepare the presentation during the afternoon. I didn't know what he looked like at the time but seeing him work the alien on his laptop was a dead giveaway. And yes, I did talk to him and asked about his YC experience. It certainly made the idea of doing startups more real to me. (Sigh... working at a job-job these days, but still dreaming.)

For those of you who are going this year - remember to talk to other people; meeting other like-minded hackers is part of the Startup School experience.

</comment></comment><comment><USER6> If Alexis hasn't been coding, what has he been doing all this time? I thought reddit was started only by hackers.

<comment><USER7> "There were three founders – me, Steve, and Alexis. Steve and I did the programming and Alexis handled promotion and customer service and office management and business development and the myriad of other tasks that came up." -a chat with aaron swartz <http://blogoscoped.com/archive/2007-05-07-n78.html>

<comment><USER8> I'm confused, this article says the third founder was Chris Slowe (in the picture) and not Aaron Swartz.

</comment></comment></comment><comment><USER9> > Nowadays our team has exploded to a total of five.

BOOM!</comment>


The Dark Art of Mastering Music - <AUTHOR> http://pitchfork.com/features/article/9894-the-dark-art-of-mastering-music/ <comment><AUTHOR> A neat read I think, even touches on LANDR, a new-ish and pretty compelling service.

I do take such an article with a grain of salt though, because a lot of the "tightest" sounding music since 2010 - in my PERSONAL opinion - is in drum & bass and, more than likely, not run through too much outboard gear like is romanticized here. Smart routing in Ableton and into iZotope isn't outside the reach of intelligent, determined artists and producers of many stripes.

I just tend to think "Oh, yeah Grimes sounds pretty good, so does Radiohead, but compared to what's happening in a Netsky or Camo & Krooked track, just different ballparks altogether." Like I said, that's me and my ears.</comment>


Lightning Captured at 7,207 Images per Second - <AUTHOR> http://apod.nasa.gov/apod/ap120723.html

<comment><USER2> Whats amazing about this is you can see the lightning going out at the beginning looking for a route to discharge(idk what these are called scientifically), and the first one that hits the ground(or an object connected to the ground presumably) is the one that it follows.

This secondary part of the video is what we usually associate with lighting, or in the least it is the part that we see/recognize as lightning.

</comment><comment><USER3> This is absolutely incredible to watch. I had no idea that a lightning strike was a 2 stage process. Is this how all lightning occurs? I've been pretty much fascinated by it since it struck a tree in my backyard as a kid. I was probably 20 feet away inside my house. I remember how brightly the house lit up when it hit. Then I remember cutting that tree down the week after and how burnt up it was internally. It blows me away that people can live through a lightning strike.</comment>


Show HN: Yep, we grew too fast and had to add custom fields - <AUTHOR> http://blog.aha.io/index.php/be-you-add-custom-fields-to-features-and-releases-in-aha/

<comment><USER2> It's the first thing I look for when evaluating a PM tool. Now I just need to be able to use them in calculations (so I can calculate a priority).</comment>


Stop treating your phone like a pocket watch - <AUTHOR> http://qz.com/48284/stop-treating-your-phone-like-a-pocket-watch/

<comment><USER2> Not on topic, but HOLY CRAP that is an annoying website. Slyly "inserting" pages in your browser's navigation history as you scroll down is clever, but it's a sure-fire way to piss off a reader! I thought I had just blanked out for some period when I clicked the back button expecting to come back to HN and saw a whole history of pages I had supposedly visited.

Never mind the horrible user-experience when the site takes a few seconds to load the next page and halts your scrolling...

/rant

</comment><comment><USER3> Dear Quartz Grumpy Writer: Jump up my butt. I will treat my phone as I please, and it pleases me to have very accurate time kept on it. I am not a slave to fashion or to Your Grumpiness, who isn't royalty, and thus cannot decree what I do with my possessions.

<comment><AUTHOR> Dear HN snarky commenter,

My point is not that you shouldn't use your phone how you please, it was that the current state of technology forces us to use them in a manner consistent with a pocket watch. There's a reason people dont use pocket watches anymore.

As I point out, some electronics makers are future looking enough to see the value in a wrist worn device. I'm also pointing out that over time multiple devices tend to combine into fewer devices, and we should advocate for one of those devices to be similar to a watch. It's a proven form factor, just like pocket watches are a disproven form factor.

<comment><USER4> Pockewatches were never disproven as a former factor.</comment></comment></comment>


Software engineers will be obsolete by 2060 - <AUTHOR> https://medium.com/@dtauerbach/software-engineers-will-be-obsolete-by-2060-2a214fdf9737

<comment><USER2> Actually software engineering as we know it will be extinct in 30 years. For example, the software engineering that existed in 1980s is completely obsolete today. The kind of software engineering that I did in the 90s, is gone today.

</comment><comment><USER3> More likely software programming as we know today will no longer exist in another 30 years.</comment>


Linux Kernel Teaching - <AUTHOR> https://linux-kernel-labs.github.io/refs/heads/master/index.html <comment><USER2> I miss the Eudyptula Challenge [0], I never got around to complementing it. It was a series of 20 challenges to introduce you to Linux kernel development, and it was done entirely over email. I think it's been shut down for a few years now, I'm not sure when or if it'll come back at this point.

[0] [http://eudyptula-challenge.org/](http://eudyptula-challenge.org/)

<comment><USER3> It is still possible to find the exercises/answers on github, so anyone can complete the challenge on their own.

<comment><USER4> Yep! A quick search turned this up.

[https://github.com/agelastic/eudyptula](https://github.com/agelastic/eudyptula)

</comment></comment></comment><comment><USER5> The Linux Foundation recently released a free course as well titled "A Beginner's Guide to Linux Kernel Development" \- haven't taken it yet, but another resource for the community:

[https://training.linuxfoundation.org/resources/free- courses/...](https://training.linuxfoundation.org/resources/free- courses/a-beginners-guide-to-linux-kernel-development/)

<comment><USER6> Here's another freely available beginner's resource on Linux internals by u/0xAX [0]: [https://0xax.gitbooks.io/linux- insides/content/index.html](https://0xax.gitbooks.io/linux- insides/content/index.html)

[0] [https://news.ycombinator.com/submitted?id=0xAX](https://news.ycombinator.com/submitted?id=0xAX)

</comment></comment><comment><USER7> Started getting into kernel stuff for work. Does anyone have a good idea what kind of market demand there is for kernel devs or similar skill sets? Being new to this I absolutely love it, but have no idea.

The resources shared by everyone here are so helpful! I've been muddling through by reading the docs, source code, and various messages on the mailing list and... it's been a little painful.

<comment><USER8> Consistent kernel hackers get hired fast. Focus on a particular subsystem, participate in the community, and contribute regularly - you'll have opportunities in no time.

<comment><USER9> what would be a typical salary range for 1 year kernel dev + 4-5 years in related experience? let's say BayArea/NY/Austin? I really did like learning about kernel dev before. Might be time to learn again..

<comment><USER8> I dunno, maybe around $80K-$100K? In expensive cities, more? At FAANG, more still? A lot of kernel hackers work remotely.

<comment><USER10> seems low

<comment><USER8> Well, it depends on whether or not "4-5 years in related experience" means systems programming or if it means making single-page webapps.

<comment><USER11> That's less than somebody with 0 years experience in FAANG will make. I wouldn't expect kernel developers to get paid much differently than non-kernel developers at a similar level.

<comment><USER8> FAANG rates aren't normal outside of FAANG (and maybe finance).

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Someone here probably knows this, so I figured I'd ask: I submitted a small patch to the kernel a while back and I made a typo in it and it broke the tests, and then I couldn't figure out how to get the test bot to pick up my new patch and by that point I assume anyone who would possibly have reviewed my patch stopped bothering. Is there something I should do to get it looked at again?

<comment><USER13> If your original patch contained a mistake, you just send the new version with the v2 prefix to the mailing list. You can do this with git format-patch -v2 and then send-email will pick it up automatically.

You should note the change in the individual commit or the cover letter.

<comment><USER12> Hmm, I'll take a look. I think I manually did some munging of the subject line to add "v2" where it seemed appropriate but I probably did it wrong.

</comment></comment></comment><comment><USER14> Awesome! I can't wait to dig through this, I've been wanting to contribute to the linux kernel for over 2 years but no one on the linux mailing lists seemed interested in helping a newbie (so much for kernel newbies). Thanks for putting this together.

<comment><USER15> I find other systems (such as netbsd) to have a fairly more readable codebase and friendlier community.

It was very easy for me to make some contributions there.

<comment><USER16> I pretty much agree with this. For example, the BSD Handbook and documentation is the point of call for a newbie entering into the community and the codebase is much more readable than the Linux kernel.

Last time I checked, the kernel-newbies site doesn't seem to be beginner friendly and aside from following the IRC channel, the mailing list is still the way to do code reviews there, which is quite frankly pre-historic and very unfriendly for beginners sending patches at best.

At least for FreeBSD, they uses Phabricator for code reviews, HaikuOS uses Gerrit and SerenityOS uses GitHub and they seem to be the other OSes that have both good documentation about their kernels and their userland APIs. Perfect places to start learning about operating systems and kernels in general.

<comment><USER17> Prehistoric? It is actually how the Git workflow was designed to work, and it is a standard method that does not require third-party services nor tools. Just your mail agent.

Sending patches is as easy as sending one in GitHub or any other web-based system. The problem is that you (and many others) have never done it, and so anything different is harder.

You should consider that if learning a handful of CLI commands is such a problem for you, perhaps it is not the system that is being unfriendly to you, but that you are unfriendly to learning anything else that is not your way.

<comment><USER16> > Sending patches is as easy as sending one in GitHub or any other web-based > system.

Its still prehistoric in projects like the Linux Kernel, from a beginners point of view compared to GitHub, Gerrit or GitLab, which most of the active contributors are already working at large companies who's work requires contributing to it, thus already have invested in time and money learning the contribution process. To look at the LKML and do code reviews via back and forth emails looks simple for a veteran Linux developer at a large company but very arcane for a student sending a patch to the kernel.

> The problem is that you (and many others) have never done it, and so > anything different is harder.

Your assumption is quite funny here as I have done both and I can tell you that most of the beginners particularly students are introduced into open- source via GitHub or even GitLab these days and its used as a starting point into contributing to a OS project. IIRC, ReactOS and FreeBSD has retained more student contributors from Google Summer of Code than say GNU/Hurd, by both improving the contribution process for beginners. I still wouldn't recommend beginners to learn about OSes in general by contributing to the Linux kernel due to the above reasons. Project making contributions more accessible for beginners isn't a bad thing, its actually how they attract potential long term contributors to stay on, rather than to make things simple only for veteran developers.

> You should consider that if learning a handful of CLI commands is such a > problem for you, perhaps it is not the system that is being unfriendly to > you, but that you are unfriendly to learning anything else that is not your > way.

There's my point, it is still beginner unfriendly. Beginners these days would start with Github or Gitlab with a GUI to send PRs to a different OS project and wouldn't bother learning tons of CLI commands to send a patch in a email + code reviews. It is therefore favours veteran developers at large companies who stay on being long term contributors than the old days of random Linux enthusiasts doing this, which I'm very surprised you don't see the contribution process prehistoric from a beginners eyes. Perhaps something needs to change...

<comment><USER18> Here's the thing.

Take GitHub, and boil it down, and it's a mish mash of version control, diff, and patch, all plastered over with a shiny HTTP veneer.

Diff/patch, git, and email alone are the basic tools you _need_. Even before VCS was a really big thing, that is how software changes were propagated around.

There is nothing wrong with sticking with the basics. In fact, I flat out refuse to tell newbies that they should host _everything_ on GitHub, or GitLab. It's becoming a twisted new form of "social media-esque" hype.

<comment><USER16> Well done. But here's the actual thing:

There will always be those who don't like using the mailing lists for back and forth reviews and the same goes for GitHub (I use both anyway and have a self- hosted community GitLab and cgit). This isn't about me, its about attracting potential contributors to the Linux kernel in the long term.

If I were tasked to attract as many beginners/students to go this path, It won't be to start with the Linux kernel or the LKML mailing lists (that will put them off). It would ultimately be other beginner-friendly similar projects like SerenityOS, HaikuOS or some of the BSDs even, etc so they can get some experience. Then their mental model is used to the Git flow so they can transition to using bare Git commands and can go into a technical discussion involving anything about kernel internals.

Since Linux doesn't need to worry about attracting new outsider contributors due to commercial contributors doing most of the work, little needs to change. Which is why from the very start I much rather recommend beginners to start with other OSes and transition later to Linux internals.

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> Great, thanks for this contribution. So helpful this just came at the moment when I got my hands on The Linux Programming interface book, hopefully this will all help myself to contribute, thanks guys

</comment><comment><USER20> Any additional material on cgroups and namespaces?

<comment><USER21> I'd be interested in the next course on BPF and KVM.

<comment><USER7> BPF has some pretty good docs out there if you just poke around the BCC GitHub repo (libbpf-tools/ is a good one) you'll find a lot of them. I was able to start building programs using libbpf, but a lot of the "understood" info about the kernel is what's been slowing me down, so I'm psyched to go through all this material and learn.

</comment></comment></comment><comment><USER22> Cool, thank you very much!

</comment><comment><USER23> Does this contain videos?</comment>


Meta Programming in Ruby - Part 1/16 - <AUTHOR> http://learnbysoft.blogspot.com/2010/10/meta-programming-in-ruby-part-1-alias.html

<comment><AUTHOR> This could definitely use more discussion, but the code samples are interesting.</comment>


The Various Kinds of IO – Blocking, Non-Blocking, Multiplexed and Async - <AUTHOR> https://www.rubberducking.com/2018/05/the-various-kinds-of-io-blocking-non.html <comment><USER2> One thing I'd like to add to the discussion is the difference between edge- triggered and level-triggered notifications. Quoting from the Linux Programming Interface (Kerrisk, 2010),

> Level-triggered notification: A file descriptor is considered to be ready if > it is possible to perform an I/O system call without blocking.

> Edge-triggered notification: Notification is provided if there is I/O > activity (e.g., new input) on a file descriptor since it was last monitored.

The two different types can affect the way the program is structured. For example, the same book says that for level-triggered notification, generally when a file descriptor is ready, only one read/write operation is performed, and then go back to the main loop. Whereas for edge-triggered, usually I/O is performed as much as possible, so we don't miss any more opportunities.

In practice, you usually want your file descriptors to be non-blocking, for many reasons (like writing a large enough buffer can nevertheless block even when the file descriptor is initially considered ready for writing), so even for level-triggered notifications you can read/write in a loop.

Personally I believe edge-triggered notifications can make program design slightly simpler, though I'm not exactly uncertain how much simpler. I'd appreciate if my comment would invite a more detailed and nuanced discussion about those two.

<comment><USER3> > In practice, you usually want your file descriptors to be non-blocking, for > many reasons

I think I know what you're saying, but in practice this is exactly backwards.

 _Usually_ you're doing I/O for some practical reason and want to do simple, well-defined, typically sequential processing on the results. Which is to say blocking _is your friend_ and you shouldn't be mucking with parallel I/O paradigms if you can at all avoid it.

<comment><USER4> > _Usually you 're doing I/O for some practical reason and want to do simple, > well-defined, typically sequential processing on the results. Which is to > say blocking is your friend and you shouldn't be mucking with parallel I/O > paradigms if you can at all avoid it._

In principle yes, though it becomes annoying when your use-case evolves or you have to miss out on otherwise obvious optimization opportunities because they'd seriously complicate your program.

E.g., Your program is mostly sequential but _in one step_ , you'd be able to do a bunch of requests in parallel.

I think paradigms like async/await are a step ahead to give you the best of both worlds here: You can write your programs _as if_ your requests block, but it still uses async IO behind the scenes - _and_ you can drop the pretense of blocking when it makes sense at any time.

<comment><USER5> > _async /await are a step ahead to give you the best of both worlds here: You > can write your programs_ as if _your requests block_

Are you thinking of "green"/M:N threading (as found e.g. in Go)?

Async/await (as found e.g. in Python) is precisely what _hinders_ the style you describe: If your brand new I/O routine is "async colored" to take advantage of non-blocking syscalls, you can't easily call it from your regular "sync colored" code without "spilling the color" all around, i.e. considerable refactoring.

</comment></comment></comment></comment><comment><USER6> There are three main kinds of async IO.

* Event driven with callbacks (`on data`, `on error`, and so on).

* Stackless coroutines (async/await).

* Stackful coroutines (no direct semantic changes to code required).

Personally, I like stackful coroutines because the concurrency model has minimal effect on the structure of the code, i.e. it's possible to retrofit existing code without change.

<comment><USER7> What's a good example implementation of stackful coroutines?

<comment><USER8> Would golang count?

<comment><USER6> Yes go would fit into the green thread bucket pretty well.

</comment></comment></comment></comment><comment><USER9> > On the IO completing, the OS will suspend your thread, and execute your > callback.

On Windows, you have to put your thread to sleep to receive any callbacks [1]. If OS would suspend your thread at random point to execute a callback, that could lead to hard-to-detect/debug deadlocks and race conditions.

[1] [https://msdn.microsoft.com/en- us/library/windows/desktop/aa3...](https://msdn.microsoft.com/en- us/library/windows/desktop/aa364052\(v=vs.85\).aspx)

</comment><comment><USER10> It's a little bad for newcomers to define these as one being better than the other. In reality it's a trade-off. And multiplexed/async are not really "I/O types" but ways to handle the two I/O types. In reality everything is either blocking or non-blocking and you always need to consider which option is better for your current usecase. Even the most fancy of web frameworks won't take that out of the equation.

</comment><comment><USER11> I think there are some misleading points in a hardware perspective at intro.

> That is, gone are the days of serial communication. In that sense, all > communications between the CPU and peripherals is therefore asynchronous at > a hardware level.

At a hardware level, 99.99% of modern peripherals are based on serial communication (e.g. USB, PCIe, I2C...), and these serial comminications are of course fully asynchronous. They implement concurrent communication at a higher level.

> Think of the simple case, where the CPU would ask the peripheral to read > something, and it would then go in an infinite loop,

Many peripherals are logic blocks that doesn't infinite loop internally. Infinite loop is a kind of software techniques and they don't need to implement looping to do their job.

<comment><USER12> In both of your arguments you are disagreeing because you are not talking the same thing that the author is talking about. You are talking about what the hardware does behind the scenes. He is talking about what is going on in the software on the surface. "serial communication" should maybe be rephrased as "serialized communication and execution" in the application process.

</comment></comment><comment><USER13> Also vectored and ninety mapped but that's in a somewhat different category.

<comment><USER14> Where is vectored I/O used in practice? I'd think the requirement of using multiple buffers for scatter/gather is not very efficient...

<comment><USER15> Erlang iolists are an example. It means you can generate HTML from templates as a deeply nested list of strings, and write that to a socket efficiently, without concatenating the strings.

</comment></comment></comment><comment><USER16> [http://www.kegel.com/c10k.html](http://www.kegel.com/c10k.html) FTW

</comment><comment><USER17> I actually have a little repo that has many of the ways you can have IPC (interprocess communication):

[https://github.com/lettergram/IPC- examples](https://github.com/lettergram/IPC-examples)

Lots of fun to play with

</comment><comment><USER18> I feel like one critical misunderstanding people have is left out in between the hardware and software discussion, which is that the kernel provides certain abstractions, and everything else is built on top of that. Whether or not a program is blocking or non-blocking or multiplexed or whathaveyou is an effect depends on the _layer of abstraction_ you are looking at. It is perfectly possible to have a programming language that is blocking that, if you strace it, is using the non-blocking kernel calls. It is perfectly possible to have an "async" layer under the hood and implement a "non- blocking" layer on top of it, and then on top of that you could easily (even accidentally!) implement a blocking layer of abstraction. It's a lot more a continuum than people realize.

I also got the sense during the height of the Node craze that some of the people who were very excited about it had the impression that Node had some sort of unique access to a "non-blocking" kernel layer or something (of course, they just weren't thinking about the kernel layer at all) that no other languages were using. In reality, if you set something like a Go program to a single OS thread for execution, you could mechanically translate a Go program into something that executes in principle identically to a Node program at the assembler level, at least in terms of what events come in and what sort of high-level code gets executed in response (vast differences in the literal instruction stream, of course). The converted Go would have a lot more "event handlers" than you'd expect because Go programs also break at function calls and a few other places (as the compiler is doing it it's easy to have lots of "event break points" that you'd never write by hand), but the compiler essentially converts the "blocking code" that uses lots of threads into "non-blocking event-based code". The difference between the two is not at the execution layer; it's at the layer you're programming. In fact pretty much everything nowadays is "non-blocking event-based code" at the execution layer, because the high-powered kernel functions that make that efficient implement event-based code, so anything else you find at a programming-language-level must be converting that abstraction into the language's abstraction. Even using kernel threads still turns into non-blocking event-based code under the hood, if you dig far enough in.

(A more clear example of how critical the _layer of abstraction_ you are looking at is IMHO is the distinction between immutable and mutable. You can implement an immutable abstraction layer on top of mutable storage, which given that our hardware is based on mutable storage, all immutability in programming languages necessarily comes from. You can implement a mutable abstraction on top of an immutable layer with a worst-case penalty of O(log n), as in the worst case you represent memory as a immutable tree of bytes and then mutate as you would normally. Whether or not something is "mutable" or "immutable" critically depends on layer of abstraction you are looking at; it does not have a non-contingent answer, or, if it does, since our hardware is mutable the answer is that immutability does not exist at all. But while true in a sense, that answer is not as _useful_ as one that is contingent on the abstraction layer being examined.)

<comment><USER19> Yup basically under the hood I saw golang also using event loop for io, but I never have chance to see the source code to confirm it. have some write up on this, not directly related tho. [https://wejick.wordpress.com/2017/06/04/tcp- socket-implement...](https://wejick.wordpress.com/2017/06/04/tcp-socket- implementation-on-golang/)</comment></comment>


Why I joined a startup - <AUTHOR> https://medium.com/on-startups/2ede8a7b34e

<comment><AUTHOR> Couldn't agree more. I joined BugHerd for the same reasons. Pull together and make something great. Too many people try to start companies by themselves.</comment>


Dion Almaer: The rise and fall of webOS is an epic tale; webOS != Web OS - <AUTHOR> http://almaer.com/blog/the-rise-and-fall-of-webos-is-an-epic-tale-webos-web-os

<comment><USER2> The title should say webOS != Web OS.

<comment><AUTHOR> Not sure how that happened.</comment></comment>


GetScale's (YC S15) QC System Protects Factory Workers and Hardware Companies - <AUTHOR> http://techcrunch.com/2015/07/24/getscale/

<comment><USER2> The article notes that:

> All information is permanently archived on GetScale's servers, which saves > workers from being held responsible for mix-ups that aren't their fault.

This is presumably meant as a way to try and fix the issue referenced in the article's title and hook:

> He realized that many line workers have very few legal protections, and if > something goes wrong while an order is being produced, they often end up > absorbing their employer's losses by taking wage cuts or deductions even if > they aren't at fault.

Is there any actual evidence that in legal regimes with inadequate worker protections, increasing transparency of the workers' labor efforts improves fairness or pay for the workers?

<comment><AUTHOR> That's a very thoughtful comment!

You're right in that if the factory wants to misbehave and the owner/GM is a tyrant, you aren't likely to directly impact worker treatment (we have in- house auditors in China that can check on the factory for you if you have that specific concern). Fortunately, the overwhelming number of factory owners/GM's are fundamentally decent people caught up in difficult circumstances.

Typical contracts are structured 30% deposit and 70% when it ships. Margins to the factory aren't 70% so they wind up quite leveraged. Most of the scenarios I saw came out of the factory not understanding or executing on the customer requirements correctly. If they build units and the customer rejects them, they have to cover those material costs so they can repair or otherwise try again. This tremendous financial pressure causes otherwise good GM's to cut corners every possible way they can to try to keep the lights on.

GetScale impacts worker treatment in several ways:

(1) it eliminates waste and errors that result from misunderstandings in customer acceptance procedures. After deploying us in a factory you just don't encounter thousands of bad units because the factory is confirming against the exact acceptance procedure as you go (instead of build a lot, ship, customer receives and rejects).

(2) it is possible to audit your suppliers and if you do that, GetScale provides the ground truth of which workers were working at which stations when and for how long (down to the millisecond!). Since you have to login-logout to do any work our records are very accurate.

(3) it enables you to vote with your dollars. Without invasive monitoring (like GetScale) it is very difficult to determine which factories are "good" because reputation is easy to coopt and places like Alibaba can be bought. GetScale data collection is automatic and the data is held off-shore (in the US). We already see factories in China using GetScale as a selling point to foreign clients since it provides quantitative proof of their compliance and performance. A factory that is willing to be open about its performance and let you document workers on the line is the factory proud of its worker treatment, not the one trying to hide it.

As to studies, I have seen some in both the psychology of management literature and the manufacturing management literature, but as to specific citations I will need some time to dig them out of my research notes.

In any case, I hope I've answered your concerns. If I missed anything, please follow-up!

<comment><USER2> The owners who are "fundamentally decent" are the ones abusing the workers?

Of the three ways that GetScale "impacts worker treatment", the first doesn't mention workers at all, the second only improves record quality (not worker treatment), and the third depends on foreign buyers to demand good treatment of workers (which there is no evidence they'll do) and does nothing to address the single abuse mentioned in the article, higher water bills for "unproductive" workers.

This story seems set on the idea that increasing productivity (benefiting the owners directly) will increase conditions for the workers. I think it's great to increase productivity, but the link to worker conditions still seems like magical thinking, and as a result I find the linked article deceptive.

</comment></comment></comment><comment><USER3> Interesting. So there's two parts:

\- a set of communications tools for enabling the assembly workers to have good assembly instructions. This is an iterative process as the design engineers watch the assembly.

\- video is now cheap enough that you can video _all_ the assembly and trace QA failures to a particular step.

There's a generally humane tone to the writeup, one of giving people the right tools to do a good job. If it can improve DfM that's great. The number of devices I've had to take apart with ridiculous numbers of screws or blind clips is too high. On the other hand, who among us would accept continuous surveillance every second of being clocked on?

<comment><USER4> Currently Upwork freelancers who are hired for hourly work get monitored for time tracking called the Work Diary[0]. My understanding is that this is a well-received value-add for their platform.

[0][https://support.upwork.com/entries/23141928](https://support.upwork.com/entries/23141928)

</comment></comment><comment><AUTHOR> Hi HN. I'm Jonathan, one of the founders. I'll monitor this thread all day to answer questions. Thanks for taking the time to read about us! It means a lot to everyone here at GetScale.

<comment><USER5> Do you think your camera system could (eventually) support some combination of Computer Vision and Machine Learning to identify (some) assembly mistakes in real-time and provide feedback/warnings to the assembler?

My thought is improving yields by reducing defect rates caused by those hopelessly imperfect humans (like me) might be a great selling point for some types of manufacturing.

<comment><AUTHOR> That's a really neat idea!

You are describing a type of machine called an AOI (automated optical inspection). It is a common piece of equipment in electronics assembly lines. But AOI equipment is very expensive (~$250k+) and only works on a specific set of products. For example, it doesn't work well when the product contains soft or flexible surfaces, or has a highly non-planar shape.

GetScale terminals can be interfaced with AOI machines in the factory to collect and store the findings along with our human-led inspections and catalog everything by serial number and we do have ambitions to add AOI-like capabilities to our hardware down the line.

Sounds like you have a project in mind. What are you working on? ;-)

<comment><USER5> I was trying to avoid running off into the endless weeds of details and acronyms and talking, but oh well... ;)

I'm not very familiar with the more advance microscopy based AOI systems used on silicon and chip level manufacturing (e.g. wire bonding checks). I'm also not familiar with advanced AOI used in robotic assembly. On the bright side, I am familiar with the comparatively "simple" form of AOI used on PCB assembly lines.

With PCB's most of the AOI identification and spatial orientation issues are solved through Fiducial Marks [1] and pattern recognition. Some PCB AOI systems even read/record chip/board lettering with OCR, as well as handling Bar and QR codes. Most of the rules and routines controlling the AOI are consistently derived directly from the PCB design files, so there is little need for custom setup programming on each new PCB run.

That last point is critical; The rules and routines are automatically and consistently _derived_ from the authoritative data sources. Manually writing every tiny step in the AOI automation routines for each PCB design would never be time/cost effective, so it has never been done.

Given sufficient example 2D images, 3D scan models, or CAD files, doing the object recognition and spatial orientation with OpenCV is reasonably straight forward, even without fiducials. The extremely tricky part will be automatically deriving rules and routines for the GetScale AOI-like capabilities from authoritative data sources. If the human assembly task is to attach the top cover and secure it with four screws from the other side, you should __never__ need to manually write the AOI routine for checking the existence of a screw in each of the four corners when viewing the bottom of the product.

I'm sure you're really busy, so I think I'll stop here. ;)

If you want to know about the projects I'm working on, email would be a lot better for me. My address is on my HN profile page. Also, I spotted a few places where your website could use a little TLC, and it's better to point them out through email rather than publicly.

[1] [https://en.wikipedia.org/wiki/Fiducial_marker#PCB](https://en.wikipedia.org/wiki/Fiducial_marker#PCB)

</comment></comment></comment></comment><comment><USER6> All of the photos in the article show consumer electronic devices. Could I use it with, say, furniture manufacturing / aftermarket car parts / leather goods manufacturing?

<comment><AUTHOR> That's a really good observation!

We think GetScale works great for anything that:

(1) Is valuable enough to warrant a serial number (unique ID)

(2) Has unit margin of at least a few dollars

(3) Is complicated to build or inspect, or has to be held to an extremely high aesthetic standard (e.g. luxury goods)

That covers almost all of your examples. One counter-example might be T-shirt manufacturing.

</comment></comment><comment><USER7> Hi, I'm Colton - another of the founders. I'll also be here to answer questions!</comment>


Show HN: Catfs – Cache AnyThing Filesystem Written in Rust - <AUTHOR> https://github.com/kahing/catfs <comment><AUTHOR> This is my attempt at learning rust and also build something that I can potentially use. I'd have to say that the feeling of being reasonably sure that my code is free of many classes of bugs is a very nice feeling indeed, but I am still not entirely sure if the effort to fight against the compiler was worth it.

Two shortcomings that I noticed building my first rust project:

* many lifetimes that are easy for humans to reason about are difficult/impossible to express to the compiler, so I had to use unsafe hacks.

* the std library does not feel complete or well thought out. For example too many string types with different sets of functions. Also many IO functions are too abstracted away.

Happy to elaborate more and hear what others think about catfs or rust!

<comment><USER2> Can you show me some examples of 1?

2 is necessary, unfortunately, in a systems language. Well, regarding strings anyway. Most people complain that IO isn't abstracted enough; could you give some specifics? Thanks!

<comment><AUTHOR> For 1: [https://users.rust-lang.org/t/conflicting- lifetime/11887](https://users.rust-lang.org/t/conflicting-lifetime/11887)

Or any time you want to use thread and closure. I know I am joining the threads before the references go away but it's not possible to express that. There's scoped threadpools but sometimes it's at a higher level than scope.

2: Can't get the return value for close(). readdir doesn't return the offset. I ended up wrapping libc myself: [https://github.com/kahing/catfs/blob/master/src/catfs/rlibc....](https://github.com/kahing/catfs/blob/master/src/catfs/rlibc.rs)

I guess wrt string, it's extra frustrating because on unix, OsStr is really CStr but I get former (from command line) and often need latter for interacting with libc. Also when you learn Rust you first learn about str and String even though in my case I actually want to avoid them. Admittedly that's probably rare. Having every type duplicated (a ref type and a storage type) also increases the complexity.

<comment><USER3> You should use crossbeam for #1. And as for strings, I wouldn't think of them as duplicate types any more than u32 and &u32 are duplicate types. They are semantically the same. Referencing a boxed type returns the reference type.

<comment><AUTHOR> What does crossbeam have to do with #1? I already mentioned scoped thread pools.</comment></comment></comment></comment></comment>


FB refused to take down hate speech to do business in India - <AUTHOR> https://www.aljazeera.com/news/2020/08/facebook-hate-speech-india-bjp-politicians-report-200815164733827.html <comment><AUTHOR> This is the original article but its pay-walled: [https://www.wsj.com/articles/facebook-hate-speech-india- poli...](https://www.wsj.com/articles/facebook-hate-speech-india-politics- muslim-hindu-modi-zuckerberg-11597423346)

This coupled with the recent analysis by Ben Thompson of stratechery here: [https://stratechery.com/2020/antitrust- politics/](https://stratechery.com/2020/antitrust-politics/) makes me feel very uncomfortable with having any relationship with facebook. Should I passively protest and quit or actively try to change things?</comment>


Google: PROTECT IP Would Be A 'Disastrous Precedent' For Free Speech - <AUTHOR> http://www.techdirt.com/articles/20110518/11311114322/google-points-out-that-protect-ip-would-be-disastrous-precedent-free-speech.shtml

<comment><USER2> | "So, 'let's whack off the DNS'. Okay, that seems like an appealing solution but it sets a very bad precedent because now another country will say 'I don't like free speech so I'll whack off all those DNSs' -- that country would be China.

How exactly does one whack off a DNS? That seems pretty inappropriate.</comment>


Network Manager 1.0 Released after 10 years of development - <AUTHOR> https://mail.gnome.org/archives/networkmanager-list/2014-December/msg00030.html

<comment><USER2> > A faster, lighter-weight internal DHCP client based on code from systemd- > networkd has been added

This is huge news. systemd-networkd's DHCP client, thanks to Tom Gundersen's work, can successfully get an address in milliseconds, rather than the many seconds required by dhclient. See [https://plus.google.com/+TomGundersen/posts/eztZWbwmxM8](https://plus.google.com/+TomGundersen/posts/eztZWbwmxM8) for some of the details.

I eagerly await wireless networking support in systemd-networkd, but in the interim, this will drastically improve network setup time on the average Linux system.

<comment> vezzy-fnord The author of dhcpcd (Roy Marples) also weighs in the discussion, saying that the former matches the same speed as long as ARP checking is disabled.

So really, it seems to me that the only reason networkd's DHCP is fast is because it's bare bones (and also skips a few sections of RFC 1531, according to Jayson Vantuyl... which doesn't sound good). Only dealing with lease negotiation, if Gundersen's statement near the end is still true.

<comment><USER3> IIRC, Apple also does something similar (skipping a few sections of the standard) to acquire a lease faster. That's why Macs connect faster to the network.

I'm not an expert on the implementation of mac/windows/linux so maybe someone who knows can chip in.

<comment><USER4> Upon reconnectionn to the network the Apple OSs immediately resume using their previous lease address on the network, whilst initiating DHCP in the background.

Works OK in small domestic networks but can cause some issues in big uni and corporate nets with frequent address churn.

</comment></comment></comment></comment><comment><USER5> Seems like nmcli is still kind of a second-class citizen— would be interested to see an in-depth comparison between nmcli and connman for the use case of a wifi-connected headless device.

<comment><USER6> At least you can connect to new networks now. Pre 1.0 it was practically a joke.

</comment></comment><comment><USER7> So NetworkManager has been using the GRUB model of what "1.0" means, then?

<comment><USER8> Everyone who gets to touch a version number should have a read of [http://semver.org/](http://semver.org/) first. And for this particular case, the FAQ question "How do I know when to release 1.0.0?" is particularly appropriate.

My favourite one to watch was the roguelike ADoM, which went through 0.1 - 0.9, then 0.91 - 0.99, then .99alpha - .99gamma, then got up to .99gamma16 before it finally hit 1.0.

</comment></comment><comment><USER9> I'm sure drivers play a part in it but I always found Network Manager to be more inconsistent than WICD.

</comment><comment><USER10> Has anyone tried the bridge support? Can it be used reliably yet? (I sure hope so for a 1.0 release).

<comment><USER11> I am using the one from Fedora 21 which is definitely pre 1.0 and bridge support seems to work fine with KVM.

What issues have you had?

</comment></comment><comment><USER12> got my first real exposure on NetworkManager/nmcli this past week doing some redhat 7 stuff. it turns out that it works quite well. For automation stuff, it definitely beats trying to sed a bunch of ifcfg- files. havent really touched the gui though.

<comment><USER13> Redhat 7? Oh you must mean RHEL 7. Redhat 7.1 was the first distro I ever installed back in 2001. At the time NetworkManager didn't exist.

</comment></comment><comment><USER14> Does this mean I should switch from wicd? Wicd seemed to install better in xfce/debian environments, but dislikes certain networks when connecting for some reason.

</comment><comment><USER15> where is reliable, easy internet connection sharing on linux?

i've built scripts that serve ics but only under shamanic preconditions that elude me

network manager is supposed to allow for it with their 'share this connection' but getting it to work has also eluded me

on a windows7 boot everything just works with ics, but then i'm booted into windows

gramm`err : /allude/elude/

<comment><USER16> Unfortunately every couple of years the popular kids come up with a new half- assed GUI for doing this stuff, but if you stick to the command line then the same simple things that have always worked still work, viz:

        echo 1 > /proc/sys/net/ipv4/ip_forward
        iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Ta-da, basic internet connection sharing is working. (If you want automatic network configuration for the devices that are connecting to your machine, you'll need to install and configure a dhcp server e.g. dhcpd)

Edit: oh, no, that won't work, your network device is no longer eth0 because the distros have been messing around with it again. Sorry, I can't help, I moved to FreeBSD years ago to get away from this crap.

<comment><USER17> I believe that is what justifier was alluding to as 'shamanic preconditions'.

<comment><USER16> They're two simple lines and they work everywhere; I'd understand "shamanic" to mean things that work as long as you sacrifice a chicken and the phase of the moon is right and your heart is pure. i.e. networkmanager.

<comment><USER15> The shamanic line was because those two lines you suggested would sometimes work, then suddenly stop working, or just fall to start working, or even rarely dibilitate all network activity where manually removing the flag and disabling the route failed to fix anything; then requiring a full reboot to fix

Sometimes using those two lines would work alone, sometimes they would only work in conjunction with more lines with different flags.. This is why I said reliable and shamanic

I run ubuntu 1404 server, slack on my notebook, debian on my home box.. Those two lines all do something different on each at different times of day under different moons, or alike when they all fail to do anything at all

I chalked it up to some kind of collision with how nm or wicd, machine respective, were trying to run their show

<comment><USER16> On slack or pre-systemd debian, those two lines work 100% reliably (I've used them thousands of times), unless you've installed something that would screw them up. On ubuntu I wouldn't be surprised if network manager arbitrarily messed up your stuff.

<comment><USER15> i have wicd installed on both and it seems to have a waffling identity crisis trying to connect to both my eth0 and wlan0

its been years since i tried a *BSD back in my greener days when i was trying every alt os around before i settled on linux by way of slack, but itd be interesting to look at it now with more knowledge of the whys and wherefores</comment></comment></comment></comment></comment></comment></comment>


Facebook API Can I Pull "Like" Data - <AUTHOR>

I'm new to Facebook API and I am building am app and I was wondering if there was a way to pull all the "likes" from a user? <comment><USER2> No. You can get movies and bands from the graph. But any likes related to articles (web pages, etc.) they do not share.

<comment><AUTHOR> Is that the only useful information I can pull in regards to what activities the user is interested in?

</comment></comment><comment><USER3> With the Graph API, the user_likes permission allows your app to get a list of all of the [Facebook fan] pages the user has liked. I don't think that even you as a user can see what articles etc. you have liked - at least I haven't been able to find that information.

</comment><comment><USER4> Good god do we ever wish there were...

<comment><USER3> Imagine the data mining and semantic analysis you could do with this. Behavioral psychology all through Facebook.</comment></comment>


In mobile, everything is still wide open - <AUTHOR> http://ben-evans.com/benedictevans/2014/4/7/in-mobile-everything-is-still-wide-open

<comment><USER2> Mobile has shown the need for new systems of dealing with identity, application management and sync. Essentially, you need 'cloud services' to get the most out of mobile but anything you buy into is typically hampered in some way (iCloud, Google etc). What would be great is if everyone had their own place in the cloud which could run basic infrastructure (e.g mail, contacts, calendar) and then new applications could be installed there to provide additional services (an analogy might be that you MITM yourself). To do this well involves reassessing how we build software for distributed systems. I'm working on the underlying tools to make this possible - [http://nymote.org](http://nymote.org)

</comment><comment><USER3> its interesting to look at keystone components in mobile. AFAIK it looks as though identity is the predominant keystone API . if you own identity then you are leveraged across both mobile apps and web.

<comment><USER4> I'm not so sure identity in that sense is that important. It's important to advertisers for sure, but where's the value to Jane or Joe consumer beyond being able to claim a piece of cloud data as her or his own?

The mistake, in my opinion, is to insist on connecting identities across devices, and across meat space and cyberspace. I don't have any answers, but do know that Kim Cameron's seven laws of identity[1] are the best story I've heard on this.

[1] [http://www.identityblog.com/stories/2004/12/09/thelaws.html](http://www.identityblog.com/stories/2004/12/09/thelaws.html)</comment></comment>


New Impact Investing platform – Impact Trader - <AUTHOR> http://impacttrader.com/

<comment><AUTHOR> I'm a cofounder here, grateful for any and all questions and feedback. Thanks!</comment>


Cashless Future: Sweden Aims to Ditch Paper Money, Blockchain Potential Option - <AUTHOR> http://www.cryptoanalyst.co/2017/10/06/sweden-ditch-paper-money-bitcoins/ <comment><USER2> Who in the Swedish government is doing the aiming? Neither the link nor references give anything concrete, only what appears to be hype about how it could be possible.

Why would Swedes, who apparently already use low-cost bank cards and a smart phone application called Swish, want to switch to a cryptocurrency?

The reason given was to empower: 'the unbankables' - that is people without a bank account - and those who do not own a smartphone. Bitcoin, however, has the ability to solve those problems through technology. Users do not require a bank account, and they can, in effect, spend their money anonymously.

How can those without a smartphone use a cryptocurrency?

What are the transaction fees for Bitcoin these days, vs. the cost for using a Swedish debit card or Swift?</comment>


Michael Moore Documentary Reveals Ecological Impacts of Renewables - <AUTHOR> https://www.forbes.com/sites/michaelshellenberger/2020/04/21/new-michael-moore-backed-documentary-on-youtube-reveals-massive-ecological-impacts-of-renewables/#47503dd76c96 <comment><USER2> There are some lines that seem to be borderline hyperbole ("You would have been better off just burning fossil fuels in the first place") but it does highlight that as far as renewable energy goes solar and wind have some major shortcomings and difficult scalability problems. The percentages of the earth's surface that needs to be covered in solar panels to meet global energy demand ranges from 2-8% depending on whether the estimate factors in efficiency losses in storage, weather, and other factors. That amount of land consumption is going to have massive ecological impact. Solar's energy density and intermittency are such that it just takes up a huge amount of land.

Nuclear power remains the only renewable source of energy that demonstrated ability to provide the majority of a nation's electricity consumption, besides geographically limited options like hydroelectricity and geothermal power. Solar has a place on building rooftops to supplement electricity generation in otherwise wasted space, but it doesn't make sense to choose it as a primary power source.

<comment><USER3> I haven't seen the film yet, but I've heard Moore talk about it on his podcast. Nuclear vs fossil vs renewables isn't the point at all. It's about how the increasing size of the so-called 'economy' (of which energy production is just one component), regardless of the tech used, is a road to inevitable collapse. Our choices, on this view, aren't between types of growth; they are between collapse or degrowth. Agree or disagree, but that seems to be the point of the film, to which nuclear energy is scarcely relevant.</comment></comment>


Show HN: First app, Chill Timer - <AUTHOR> https://play.google.com/store/apps/details?id=com.mkthings.chilltimer

<comment><AUTHOR> Hello HN! OP here.

I'm not an app developer by trade, but I've tried my hand at Android development to scratch one of my own itches. I know the HN crowd appreciates things that are a little more technically impressive, but I can't miss an opportunity to get feedback from a community with so much expertise.

What it is: Throw your beer or wine in the fridge or freezer, set the timer and you'll be notified when your beverages are cold. Chill drinks quickly, without worrying about freezing them.

I'd love to get your feedback on design/usability and and ideas you guys might have for new features.

<comment><USER2> All of my beverages are currently sitting chilled in the fridge, but I'll install it now and next time I need them chilled fast I'll try your app out.

*Edit: I just ran through the options and I think it's great that your app just does what it says it will do. No fancy graphics everywhere, just raw information.

The settings button seems a little out of place. You currently only have the option for Farenheit and Celsius on that screen. Why not just put those options right on the main screen? Seems like a few extra touches for no reason.

<comment><AUTHOR> Thanks for checking it out! I agree it's awkward to have the temperature unit selection on its own page, but it seemed like something that wouldn't change much so I wanted to hide it away.</comment></comment></comment>


John Brown (Abolitionist) - <AUTHOR> https://en.wikipedia.org/wiki/John_Brown_(abolitionist) <comment><USER2> Several great books about John Brown, including Russell Banks's "Cloudsplitter" and a bio from W.E.B. Du Bois. Du Bois wanted to bio Frederick Douglass, with whom Brown frequently argued over anti-slavery tactics. Booker T. Washington got the Douglass book in the end. Social justice types at the University of Kansas in Lawrence have always kept up his memory in various ways. Despite Kansas being a very conservative place, the statehouse has a radical mural of him inside of it holding a Bible and a rifle and furiously thundering against slavery.

<comment><AUTHOR> Great! Thank you for this.</comment></comment>


Show HN: Fair Remote – the transparent remote jobs board - <AUTHOR> https://fairremote.com <comment><AUTHOR> Remote jobs need a fresh start. Especially now during these tough times.

We're tired of seeing "US Only", "UK Only", "In The Middle Of Nowhere Only" in a job description. True remote companies do know how to work in more than a single country.

For us remote equals unique. We're all wired differently and have various ways, times of the day, or tricks that make us do our best work. Putting everybody in a cubicle automatically means wiring people in a different way, whilst working remote means "here's what we need, we don't care how you do it, at what time of the day you do it, but we need a solution by date X".

A remote-first company should be built under the umbrella of transparency, productivity, freedom, flexibility, responsibility, and discipline.

What differentiates us from other job boards?

When we say remote, it really means remote.

We believe in fairness, care, and trust. We guide our lives by these values, so of course, they are the foundation of Fair Remote too.

For companies, we'll offer full refunds if you don't find the right candidate through our platform. We'll never check that in any way, we take your word for it because we build our service on trust.

You won't be able to boost your job post. No "Featured", highlight, or other strategies to make more money off of you. We'll charge a flat rate of $199 per job post for all businesses.

As an applicant, you'll find here fair remote opportunities that describe the interview process and include a salary range. So you'll be prepared and know what to expect from the company beforehand.

You can reach out to us and say email@example.com.</comment>


Pixel-perfect CSS3 border-image in depth - <AUTHOR> http://www.useragentman.com/blog/2011/03/29/pixel-perfect-css3-border-image-in-depth/

<comment><USER2> I tried to leave this comment on that post, but Chrome crashed the first time I tried, and the next time I got a 'duplicate comment' message. Perhaps it's waiting in a moderation queue. Reproduced:

You mentioned that "(Opera and Webkit are similar, except for the stretch, which Chrome and Safari currently don't support.)" - but Chrome does support stretch, as far as I can tell (I'm viewing this page in Chrome 12.0.712.0 and the stretch example looks identical to your Firefox screenshot. However, as you mention later, Chrome doesn't support the rounded method.

Regardless, thanks for explaining all of this and taking the time to show the various implementations.</comment>


Rasky, Rpi2 based KVM over IP new side goal: complete FLOSS development workflow - <AUTHOR> http://www.nexlab.net/product/rasky

<comment><USER2> I can't wait to have one to test and use in my hands!! Keep up the good work!!

<comment><USER3> go go go ;)</comment></comment>


What to do When a Tech Giant Decides to Eat Your Lunch - <AUTHOR> http://www.cloudave.com/13511/what-to-do-when-a-tech-giant-decides-to-eat-your-lunch/ <comment><USER2> Submission of the referenced TechCrunch version is here: <http://news.ycombinator.com/item?id=2649458></comment>


Largest photo site in the world looking for HNers (Facebook job post) - <AUTHOR> When looking for talented engineers I know of no other community with a higher signal/noise ratio than HN (well maybe Stackoverflow?).
I also know of no project to work on that is like Facebook Photos.  The team is about the size of an angel funded startup, yet the scale of the fbPhotos is larger than any other app (Facebook or not) that I know of.  By almost any metric it's an order of magnitude larger than any other photo sharing website.
=====Why?=====  You'll work on hard problems at a huge scale.  Expect to be responsible for mission critical features that will touch hundreds of millions of people.  You'll be deploying code your first week here.  I'm not kidding.  This isn't HR-speak.
Client-side image editing algorithms, third-party API integration,  data processing & warehousing, facial recognition, hi-res uploads, image matching[1], ... there are plenty of hard problems to solve.
I can promise you that it won't be easy, but it will be rewarding.
=====Interested?=====  Don't email recruiting, I'll refer you internally [2].  Find my Facebook email in my profile.  Use it to email me 3 sentences.  One should be why you're excited about photos (or hard problems).  Another should describe a cool project you've worked on.  Links/examples of deployed code is best.  The last sentence should be why you're going to pass Facebook's engineering interviews [3].
Hesitating?  Go ahead and send that email.  It might just be the best decision you make today.
---
1. http://scholar.google.com/scholar?hl=en&q=robust+image+hashing - does that excite you?
2. Internal referrals are given priority.  Also, there is a referral bonus.  Once you complete Bootcamp and join the photos team I will give 50% to you and 50% to the photos team (for trips, cool toys, etc).
3. I don't have the authority to bypass the standard interview process.  There will be lots of algorithm questions (sorting / tree traversals, etc.)  http://www.glassdoor.com/Interview/Facebook-Engineering-Interview-Questions <comment><USER2> Sam, I think you have done no wrong here. From my experience, if you appear 'too helpful' people become suspicious. Strange, but that is the reality. Human beings are not expected to be that nice, period. Cheers dude! I hope you get the best people.

</comment><comment><USER3> Dude, this is one of the coolest job postings I've seen on HN for a while.

Not so much what the job involves (which is pretty cool in itself) but that you're reaching out to the HN community to hopefully bring some people like yourself onto your project. You were obviously passionate about Divvyshot, glad to see it's followed through with FB.

</comment><comment><USER4> Just some advice for anyone going on to interview with Facebook.

1\. Know _why_ you want to work there. Really think about that one.

2\. Crack open an algorithms and data structures book. They ask some seriously off the wall questions.

3\. Be prepared to fail gracefully.

4\. Have an ivy league degree. Not saying that's a requirement, but it certainly helps.

5\. Do some of the puzzles for Facebook engineering. It makes the interview process go quicker, and you'll be a little more prepared for the technical interview.

That said, I failed my interview earlier this year. Your mileage may vary, but good luck!

</comment><comment><USER5> Last link is broken. Probably meant to be this: [http://www.glassdoor.com/Interview/Facebook-Engineering- Inte...](http://www.glassdoor.com/Interview/Facebook-Engineering-Interview- Questions-EI_IE40772.0,8_KO9,20.htm) Also see: <http://reza.lotun.name/entries/12052007a.html>

</comment><comment><USER6> There is something fishy about this, or just not cool about it.

He's going to give 50% of the referral fee back to the candidate? Links to the answers of FB's engineering questions over on a 3rd party site (presumably to help you pass the interview process)?

I'm sure its a legitimate call for applicants by a member of staff - it just seems fishy, or at the very least not the right way to go about things.

<comment><AUTHOR> I understard that it's unusual for a large corp to make a personal appeal on hn. However fb is more like a startup than a big corp.

It's pretty standard practice for fb employees to give part of their referral bonuses back to their friends. Are you suggesting that I keep it for myself?

<comment><USER6> Um, yeah if you don't feel the need to take a referral bonus for yourself then why take it in the first place?

I've been a hiring manager in the past. A company uses referral bonuses to incentivize staff to bring in the top talent into the company.

If you are really not motivated by the referral bonus (eg your startup was aquired and you're not short of cash these days) then you shouldn't take it - the start up could use the valuable cash elsewhere. I guess burn isn't a big problem for Facebook, but then to your point in your comment, Facebook is still a big startup isn't it? ( _is it?_ )

I also think its poor to offer image on the interview questions/answers (yes, even if they are on a public site somewhere). If I was the hiring manager I would be upset by that as it skews my ability to interview all candidates equally (ie the ones who did see the interview questions and the ones that did not).

I don't think you are coming from a bad place or doing anything under-hand but I think it isn't the right and professional way of obtaining talent.

<comment><AUTHOR> No offense but I'll let the hiring manager at facebook (not some guy on the 'net) decide whether I should get a referral bonus.

All I'm saying here is that anything I get will go back to the team/applicant.

I'm not sure how that's shady.

I'd take down the glass door link if I could to appease you. Personally, I think it's better that all photo team applicants see it rather than the few that find it through some cursory pre-interview research.

<comment><USER6> No offense, but if you are going to mention splitting referral bonuses and the like on a public forum, people might make a comment about it - it's the nature of these public forum thingies.

Ditto seeing as we're here to discuss the practices of running startups, among other things

Anyway, I'm sure the realities of working for a BigCo will continue to sink in as time goes on (if you think Facebook is still a startup, keep drinking the koolaid). Congrats on the sale to Facebook, I hope the next few years on the earn out are good for you.

EDIT: I notice you added the comment about the glassdoor link... it's not about appeasing me, it's your team and your employer, do what you like. But I would comment that while the interview Q's are out there, if someone was going to walk into my interview office with them already in their head, I'd like to think it is because they were savvy enough to go find them on their own and not because my staff member pointed the candidate directly to them. Just saying.

<comment><USER7> dotBen,

Don't you think that people at Facebook are smart enough to figure out if the applicant really knows what he/she is talking about?

An applicant can read the questions from that link but if he/she doesn't understand these algorithms, etc., the interviewers can easily tell the BS.

As with drinking the Kool-Aid, what makes you a better judge than Sam? You seem jaded by your past experiences but that doesn't mean it happens to everybody.

<comment><USER6> dannyr,

So yes, I'm very sure my friends at Facebook can weed out those who know what they are talking about and those who don't. And yes, if you don't know how to do map the shortest distance on a cube or create a bubble sort method, etc then you are going to come up short regardless of what you have read on a cheat sheet online.

But then, the same logic reasons that it is therefore pointless to direct people to the interview questions before hand, doesn't it?

 _"As with drinking the Kool-Aid, what makes you a better judge than Sam?"_

My koolaid reference was to Sam's perspective that Facebook is still a startup. I don't think it's a case of being 'a better judge' on that one - facebook has over 1000 employees, has professional management, makes acquisitions (like his company) and has a $1bn+ valuation. It's not a startup. _(I think they do a great job of encouraging the staff to think it is still a startup)_

I'm not jaded by any past, I'm not sure where that conclusion comes from. I do perhaps have, however, some more experience in hiring people (both for startups and for large companies) than Sam does... and maybe you are confusing 'thinking practically' for 'sounded jaded'.

I guess I might sound jaded from my overall snarky tone, but that's just how I am at 1:40am on a Thursday morning. :P

<comment><USER8> Ah, the eternal question of philosophy, rephrased.

If everyone at a large company think and act as if they are a startup, are they a startup?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> No one knows image manipulation more than this guy: <http://news.ycombinator.com/threads?id=DarkShikari>

At least no one that I know.

<comment><USER10> He's already worked for Facebook :)

</comment></comment><comment><USER11> Hi-res uploads? Has any site successfully sustained a "free" model while serving hi-res photos? Or do you just mean just during the upload process -- photos scaled down permanently and the originals discarded?

</comment><comment><USER12> Is this in San Francisco?</comment>


Used bookstores are making an unlikely comeback - <AUTHOR> https://www.washingtonpost.com/local/in-the-age-of-amazon-used-bookstores-are-making-an-unlikely-comeback/2015/12/26/06b20e48-abea-11e5-bff5-905b92f5f94b_story.html?hpid=hp_hp-more-top-stories_no-name%3Ahomepage%2Fstory <comment><USER2> The guy who used to run Georgetown Books, Andy Moursund, posted on his web site that he was tired of gambling his retirement money on losing bets. I wish these folks luck, but I remember quite a few used bookstores that have closed here over the last 30 years. Second Story Books does, by the way, sell on Amazon. But it has closed a location in Bethesda, and is down to its Dupont Circle store and the warehouse in Rockville.

[Edit: just remembered (I hope) Andy Moursund's last name.]

</comment><comment><USER3> Authors make money on new books. Second-hand is great and keeps a shop with books on the shelves in a neihbourhood but it won't build a distro chain for _new_ work. Perhaps some of these new outlets will order new for customers.

UK: many second hand bookshops sell through Amazon and through Exlibris/ABE

<comment><USER2> I don't think that it is generally a zero-sum competition, in the sense that every book purchased used means one not purchased new. Were I pinched for money, I might buy at friends of the library sales, I guess. But most of the books I buy used are either out of print or not easily ordered, and generally I wasn't thinking of buying them until I noticed them on the shelf.

And a fair bit of what is on the shelves of the regular bookstore is not by living authors, is it? Just about chest level of the rightmost shelf of fiction at Kramerbooks you will see about a foot of the works of Evelyn Waugh, who died about fifty years ago.

<comment><USER3> I'd certainly accept that there isn't a zero-sum game between living and dead authors or between new and second hand books. A quick scan of my own bookcases would make it impossible to argue otherwise.

I'm hoping that the increase in the number of bookshops of any kind will increase the number of people who _do_ buy new books by living authors as that is the way we keep authoring as a _somewhat_ viable mode of making a living.

</comment></comment></comment><comment><USER4> Ebook sales growth is not stagnating its only the big 5 publishers that are seeing ebook sales decline as they have jacked up the prices. And self publishing is taking over many of which don't use ISBN numbers so are not counted.

</comment><comment><USER5> As they say, be warned - secondhand bookshops are the best way to "spend" your retirement.</comment>


Microsoft Teams breaks daily record with 2.7B meeting minutes, tops high by 200% - <AUTHOR> https://venturebeat.com/2020/04/09/microsoft-teams-breaks-daily-record-with-2-7-billion-meeting-minutes-tops-mid-march-high-by-200/ <comment><USER2> Because it is free with Office 365.

That's the whole problem with Teams, because they get to ride O365's coattails they don't really /try/. The fact it is better than Skype for Business is more an indictment of how bad S4B was, not an actual defense of Teams as a stand- alone product/app.

Let's look at the popular things they haven't done:

\- Show video for all people in Video meeting: Created 2016. 37K votes. "In the backlog."

\- Multi-window for chats and more: Created 2016. 17K votes. "Internal testing."

\- Compact mode: Created 2016. 16K votes. "Not even in the backlog, we cannot figure it out" (in spite of multiple third party CSS hacks that accomplish it convincingly).

\- Move a project (channel) from one team to another: Created 2016. 15K votes. "In the backlog."

But don't take my word for it, review what they have actually accomplished from their own UserVoice here:

[https://microsoftteams.uservoice.com/forums/555103-public](https://microsoftteams.uservoice.com/forums/555103-public)

But it is popular because it is free and bundled with something successful, so the Teams team can sit around for four years with little to show for it.

When will Teams actually be good when measured against the market rather than the [worse] thing it replaced?

<comment><USER3> My problem with it is that Teams fails to do what Skype/Lync did do well, while trying to mimic slack and not achieving that very well either.

For instance you can't break out individual chat windows to take up less space. Dial-in numbers for meetings aren't there by default either, you need individual licenses - which is probably why it's 'free'.

</comment></comment><comment><USER4> Is it me or are there a lot of articles indirectly promoting Microsoft on HN these days?

It's getting harder and harder to tell if those are genuine news or a PR firm at work, but "MS breaks a records in meeting minutes" feels even more like advertising than "Azur is getting 10 times more traffic".

If this is advertising, is there a way to prevent them from staying on the front page?

<comment><USER5> Some companies (like today's Microsoft, apparently) have PR arms that are actually good at their jobs—writing articles that are, independent of their ability to advertise their company, actually intellectually gratifying in some way.

People who post things to HN, independent of being shills for any given company, like to post intellectually gratifying things. Sometimes those things happen to also be PR pieces. I don't think the people who post these things really think about them as being PR pieces; or, if they do, they post them _despite_ that, because in the balance, the piece still works out to be worth reading (in their opinion) even after giving it a demerit for being PR.

I'm not denying that there are shills on HN, mind you. I'm sure there are many of them. But I would say that even those shills probably have some sort of "standards"—only posting the PR pieces available to them if they think they'll do well here (which means, only posting the pieces someone else who wasn't a shill would have posted anyway.) To do otherwise might get them banned as spammers (which I do believe does happen—mods want to chime in on that?)

And then we still have the filter of some amount of upvoting being required to get things to the front page, plus (I assume) some sort of behind-the-scenes voting-ring detection. So the upvote signal is likely to express genuine community interest, and therefore to signal that the piece _does_ have value independent of its PR-power.

<comment><USER4> Good PR is not doing the post yourself, but creating a post that is passable enough to be posted by a regular user on your behalf.

Just because it is well done does not mean it has good value as news.

Indeed, even if it's an ok read, it's giving a lot of attention to a company just because it has the money to attract said attention, no matter the quality of their service. Since the reader's time and energy is limited, it's taking the place of another possible read.

In the same way, by allowing this to happen, this lets a company create a fantastic image of itself, that is independent from it's real quality, just because it has the budget to do it. Cumulatively, this can, after years, end up rewriting history, and lead even educated people to make altered judgements and decisions in the future.

I'm not saying that as an anti-microsoft attack, I dislike the concept of such powerful PR in general, MS is just here a potential example for this.

As an HN reader, I wish there would be a policy about this. But I have no idea what it would look like, or how one could enforce it.

So maybe I'm just making a lot of noise for nothing.

</comment></comment></comment><comment><USER6> Man this is a... boring article.

Anybody who upvoted this, why? It feels very weird to be on the front page with 27 votes so far.

<comment><USER5> Probably they found the title an interesting fact on its own, with the article itself being kind of vestigial.

I'm guessing people are _hoping_ there'll be interesting tangential discussion in the comments re: the infrastructural challenges imposed on IT departments (and especially cloud vendors) due to WFH. People expecting the title to have high "comment potential" seems to be a theme where "trivial" things being upvoted are concerned.

</comment></comment><comment><USER5> Some tangential conversations from this otherwise-boring lede:

• Has any Slack-based org tried actually using Slack's now-integrated video calling for your meetings?

• Has anyone tried using _Discord_ for meetings? It seems to have the required infrastructure...

• Is anyone here at an org that's skipping integrated video chat, where they're just doing regular company-PBX audio-only conference-call dial-in? (I've always thought there'd be nothing lost by just emailing everyone a link to a presentation, and then looking at it together over a conference-call via "now turn to page 3"-like instructions. Maybe together with a freely-editable Google Doc that serves as a "whiteboard" for the people in the conversation.)

• Is anyone here having synchronous meetings as regular group-chat text exchanges, where everyone is supposed to "synchronously" attend? (I've always felt like this would be the best approach for enabling accessibility to differently-abled employees; and, coincidentally, would enable machine- searchability later without anyone needing to transcribe anything.)

<comment><USER7> > Has any Slack-based org tried actually using Slack for your meetings?

Most of my work's teams use slack for their daily calls. Seems OK in testing with up to 10 people. Anything bigger usually moves to GoToMeeting.

> Has anyone tried Discord for meetings?

I use Discord for my team, since it allows you drop in & out of voice chat during the day so peeps can float in & out of chat as they go to other meetings/lunch etc. Lot more convenient than doing a call, and results in the entire team closely collaborating for most of the day.

The voice chat latency & screen sharing quality is also equal or better to other options due to Discord's gaming-focused optimisations.

I'd note that it isn't really suitable for the wider business as mass-meetings with webcams would require a manually created, private DM group (rather than just a an invite link as with zoom/goto).

</comment></comment><comment><USER8> For what it's worth, I like MS Teams... I'm not even a big Windows guy at this point... most of my dev at least targets linux, and most of my time is in VS Code with an ssh or wsl remote session. I use Linux directly, but not as much this past few weeks as a couple projects I'm on don't work in Linux.

I think that Teams is better than most at most of what it does... That's kind of hard to quantify, but like most things from MS Office, it's not that it's the best at any given one thing.. it's that it does many things good enough and things the competition doesn't.

<comment><USER9> Teams is however _weird_ when it comes to files. Apparently a Teams team has a shadow sharepoint site behind it. The attachments from teams are stored there. However, when I want to embed an Excel sheet from the _actual_ Sharepoint site of my team, I have no way to do that.

<comment><USER10> It's not meant to be a "shadow" SharePoint site from what I gather, it is meant to be the same O365 SharePoint site as every thing else for the Team. My impression is that it may be really easy for O365 admins to misconfigure, though, especially in (likely) scenarios of migrating (or avoiding migrating) on-premises SharePoint sites to O365.

Microsoft products are sometimes loved by IT departments because they have lots of configuration options; Microsoft is just really bad about leaving tons of footguns lying around in those configuration options, and IT departments apparently love footguns.

</comment></comment></comment><comment><USER11> The source of this article has better info: [https://www.microsoft.com/en- us/microsoft-365/blog/2020/04/0...](https://www.microsoft.com/en- us/microsoft-365/blog/2020/04/09/remote-work-trend-report- meetings/#.Xo8gHhj7jh4.twitter)

</comment><comment><USER12> I know in my company Webex is slowly being replaced by MS Teams. From my experience, neither is great, but they mostly just work, which helps since our team has a big spread when it comes to basic computer skills. Even them, why MS Teams? I don't see any real advantage between the two.

<comment><USER8> It does better than most with meetings, especially outlook integration. Beyond this, outlook calendar in teams... along with a better interface for documents/files (sharepoint on the backend, but mostly don't need to know) .. those same files can be accessed via OneDrive .. not to mention the wiki and other extension (devops feeds into channels).

There are bits and pieces better in other apps, but it does all of these things good enough, and as a whole, I find it better as a collaboration suite.

</comment></comment><comment><USER13> 2.7B billion minutes of work not being done :)

<comment><USER14> Quite a lot more if you include more than just calls.

I feel like I'm on a lower end of this with 2h 43m of my time this week, 36m 58s of which were yesterday.

</comment></comment><comment><USER15> It's well known that ones productivity increases in proportion to the number of meetings one attends.</comment>