Pickle's Nine Flaws - <AUTHOR> https://nedbatchelder.com/blog/202006/pickles_nine_flaws.html <comment><USER2> There _is_ a way to read pickles without running them, but it is Python-only and still requires one to know how pickles work. The module `pickletools` can be used to disassemble pickles to bytecode, just like `dis` for normal Python objects. Honestly, though, I wouldn't say that this invalidates the point about unreadability, but just hammers in exactly how unreadable they really are.

</comment><comment><USER3> To me it's interesting that _pickle_ can be thought of as recording some of the implicit assumptions GvR made about the expected use of Python semantics.

Formally serialization/deserialization is very crunchy and precise. (And I remember how stoked I was to find out that Python included an implementation!) In practice, things get messy and we break the implicit assumptions.

Is it a flaw of the _pickle_ module? Or are our designs too clever?

Patient: "It hurts when I do this."

Doctor: "Don't do that."

;-)

</comment><comment><USER4> * Insecure: If you are unpickling insecure code, you have other problems. Deserializers should not be used as a protection against hacking.

* Old pickles look like old code: Again, convert your object into json and serialize that to your database. Oh no, you are missing an attribute. Pickle should not be used so you don't have to employ a release engineer.

* Implicit: No software works everywhere with defaults. So use copyreg.

* Over-serializes: USE copyreg.

* __init__ isn't called: USE COPYREG.

* Python only: what's this for, then? [http://www.picklingtools.com/](http://www.picklingtools.com/)

* Unreadable: Great feature.

* Appears to pickle code: Another great feature.

* Slow: check again, it has been 8 years. I can't find any faster method.

<comment><USER5> > * Insecure: If you are unpickling insecure code, you have other problems. > Deserializers should not be used as a protection against hacking.

There are lots of good use cases for deserializing untrusted data -- it's what you do in almost any client-server situation. So the fact you can't do this with pickle really is an important limitation.

<comment><USER6> In what client server situation does it make sense to use pickles over JSON/YAML?

<comment><USER7> None, except when you're taking a huge shortcut. Which is why you want to be super cautious about using Pickle, or Java serialization, or any serialization solution that deserializes arbitrary objects. Once your deserialization isn't explicit about what objects you accept, you have to be super careful about the provenance of that data.

</comment></comment></comment></comment><comment><USER7> I'm skeptical of the point about over-serialization. In my opinion, throwing an exception on an unserializable attribute is a good default. If an object is using a file, it will more often than not be unusable when deserialized without the file.

This is one of the few things Java gets right about its built in serialization: if you have an object that can't be serialized, anything using that object has to declare it as transient, meaning it won't be serialized or deserialized. Hopefully you'll think about whether the result makes sense before using the keyword.

If you don't mark an unserializable field transient, you'll get an exception at runtime. It's not enforced by the compiler, which would be ideal, but linters will warn you.

</comment><comment><USER8> Hawking my own (incomplete) contribution to Pickle security/analysis [https://github.com/moreati/pickle-fuzz#rehabilitating- python...](https://github.com/moreati/pickle-fuzz#rehabilitating-pythons- pickle-module)

</comment><comment><USER9> This seems to seriously misunderstand the point of pickle. It's not for data interchange. It's for e.g. caching objects or debugging. That's it.

The fact it keeps "old code" is a feature. The object is exactly as it was at the time it was saved.

<comment><USER10> I mean, the most popular async message queue for python broadly supports pickle as its serialization format. I don't think this problem is exclusive to this blog post.

<comment><USER9> I should have been more precise. I meant interchange between different programs/platforms/etc. Not internal messages.

</comment></comment></comment><comment><USER11> I think these flaws are fairly minor, at least you seem to be nudged towards use cases where you're not overly reliant on pickle for complex work.

If readability is an issue there's a JSON version that's quite useful.

Other than that, most of the other concerns are addressable. If security matter perhaps use an encryption lib around the pickle, rather than ask for it to be built into it? As for speed, you're already using python and chances are you're not constantly pickling and unpickling?

<comment><USER5> Encryption won't do you any good - encrypted messages can be forged. But let's say you meant a signature or other form of authentication.

That still does you no good if you're, say, a server getting data from a client. Very few servers want to allow clients to execute arbitrary code inside them.

That still leaves some situations where it can be used - but it's a major limitation on the scope of those situations.

</comment></comment><comment><USER12> I am surprised when people use pickle NOT as a last resort.

For numeric data, H5 is nice. For configs, JSON is pretty much a standard. For Python code... well, nothing beats Python code.

</comment><comment><USER13> Pickle's greatest flaw is the complete lack of forward and backward compatibility. The compatibility is not guaranteed between when upgrading any of the dependencies. Dependencies should stay the same over releases, halting forward progress in the development process.

<comment><USER14> Can you elaborate? What dependencies? Pickle is in the standard library.

<comment><USER5> Perhaps they're referring to your application's dependencies, in a situation where you're pickling instances of those dependencies' types. Then this is an example of "old pickles look like old code".

<comment><USER15> I have this problem a lot with pandas Dataframes. I know I could engineer around it, but most of the time I just want to distribute some number crunching to a bunch of docker images quickly and a database is overkill for a one off analysis. Works fine until an image updates pandas. Not taking issue with pandas or pickle, but it's an issue of time trade-off. JSON is okay, but object conversion/Nan/None/inf can be a bear.

</comment></comment></comment></comment><comment><USER16> Data serialization is hard and the artifacts are much longer lived than executable code and even our API interfaces. YAML, JSON, XML are all flawed. There are many competing binary serialization frameworks. Beware. Dar be Dragons in Durable Data.

</comment><comment><USER17> I find it interesting that everyone so far has suggested JSON as a pickle alternative. Depending on why you are serializing and deserializing the data, a lot of times the true replacement for pickle is a full-fledged database.

<comment><USER18> Right now I'm working on a large Monte Carlo project where I need to export the result of every simulation. Inserting into a database takes longer than just pickling the result.

</comment></comment><comment><USER19> It must only be used for small programs and it serves the purpose well.

<comment><USER20> I use it for transferring stuff from a data collection program to a Jupiter notebook. It works quite well for that. Converting big numpy arrays to text and back again would be cumbersome.

<comment><USER21> If all you're transferring is numpy arrays, they natively support an efficient, cross-platform, forward-compatible binary format that might work better for you.

<comment><USER20> Good point, I'll look into that. Usually it's a mixture of things like numpy arrays and meta-data. I find it's easy to save a lot of stuff along with the data, that I might regret not having later on.

</comment></comment></comment></comment><comment><USER22> Similar to PHP's serialize() and unserialize()

<comment><USER23> Also very, very similar to Java's serialization mechanism.

<comment><USER24> Basically every language with a vm with boxed types has to have this. Erlang has term_to_binary, which has some crazy superpowers, like I can serialize a lambda, put it on a pigeon, and have it run on an airgapped machine (assuming any module referenced in the lambda has an equivalently named version in the airgapped VM). Of course you can see how this could also be a security problem if you're not careful.

On the other hand, this is part of how erlang distributed systems (which is crazy easy) can communicate with extremely simple semantics, and the security model for erlang distribution is very explicitly "trusted only; locking down the cluster as a single security domain is YOUR responsibilty".</comment></comment></comment>


Docker for Mac and Windows Is Now Generally Available and Ready for Production - <AUTHOR> https://blog.docker.com/2016/07/docker-for-mac-and-windows-production-ready/ <comment><USER2> I've been tracking the beta for a while. I'm confused about this announcement. These issues still seem unresolved?

(1) docker can peg the CPU until it's restarted [https://forums.docker.com/t/com-docker-xhyve-and-com- docker-...](https://forums.docker.com/t/com-docker-xhyve-and-com-docker-osxfs- cpu-usage/10537/32)

(2) pinata was removed, so it can't be configured from CLI scripts [https://forums.docker.com/t/pinata-missing-in-latest-mac- bet...](https://forums.docker.com/t/pinata-missing-in-latest-mac- beta-1-11-2-beta15/15541)

(3) it's not possible to establish an ip-level route from the host to a container, which many dev environments depend on [https://forums.docker.com/t/ip-routing-to- container/8424/14](https://forums.docker.com/t/ip-routing-to- container/8424/14)

(4) filesystem can be slow [https://forums.docker.com/t/file-access-in- mounted-volumes-e...](https://forums.docker.com/t/file-access-in-mounted- volumes-extremely-slow-cpu-bound/8076/168)

Are these fixed in stable? I'm personally stuck transitioning from docker- machine and (from the comments) it seems like other folks are as well...

<comment><USER3> Sadly, the state of things, be it the Docker ecosystem or others, "ready for production" means something much different than it did years ago.

For me, the definition of ready for production, Debian is a good example of the opposite end of Docker.

<comment><USER4> I think by 'production', they mean 'ready for general use on developer laptops'. No one in their right mind is deploying _actual_ production software on Docker, on OS X/Windows.

I've been using it on my laptop daily for a month or two now, and it's been great. Certainly much better than the old Virtualbox setup.

<comment><USER5> I'm still using VirtualBox. Could you elaborate why Docker is better?

<comment><USER6> Leaving containers vs VMs aside, docker for Mac leverages a custom hypervisor rather than VirtualBox. My overall experience with it is that it is more performant (generally), plays better with the system clock and power management, and is otherwise less cumbersome than VirtualBox. They are just getting started, but getting rid of VirtualBox is the big winner for me.

<comment><USER7> It's based on the OS X sandbox and xhyve which is in turn is based on bhyve [https://blog.docker.com/2016/03/docker-for-mac-windows- beta/](https://blog.docker.com/2016/03/docker-for-mac-windows-beta/)

</comment></comment></comment></comment></comment></comment><comment><USER8> I just installed D4W a few days ago for the first time. It's been great. It's a seamless experience on W10 Pro with Hyper-V. I've used VirtualBox a lot and I like it but I always have to fuss with the network bridge and such. With this, it's hard to tell I'm even using a VM. Their network port mapping is seamless.

FYI, I was using rc4 and I didn't see any information on how to upgrade (should I uninstall first?). I ran the release setup and it did an in-place upgrade, deleting earlier components and such.

<comment><USER9> My experience has been the auto-upgrade works without requiring reinstall (and indeed just did so to GA last night). I don't think there's any specific fresh install requirement.

</comment></comment><comment><USER10> I don't use Docker much now, but in my experience the reliance on Virtualbox (on Mac) was a little clunky and annoying, and I really wished for native support without Virtualbox. I'm super happy to see that's here!

<comment><USER11> I think it makes sense to depend on the "native" virtualization solutions for each operating system (Hyper-V and xhyve).

We have been using Vagrant and VirtualBox heavily and the new Docker for Windows/Mac is making us reconsider that since you can't easily use more than one hypervisor on the same dev machine without some hassle. We might be building our Vagrant boxes for these other hypervisors soon. VirtualBox still seems easier to work with but there isn't anything much exciting happening with it lately.

Let's see...

<comment><USER12> I believe xhyve works fine with recent versions of VirtualBox, since xhyve is a pure userland app (aka no kernel extensions). Check out the issues section in the xhyve readme...

[https://github.com/mist64/xhyve/blob/master/README.md](https://github.com/mist64/xhyve/blob/master/README.md)

<comment><USER13> xhyve needs to interact with all kinds of low-level things so there has to be kernel code involved. xhyve does not install kernel extensions of its own like VirtualBox or VMWare Fusion. xhyve uses the kernel extensions provided by Apple (com.apple.driver.AppleHV and possibly others).

<comment><USER12> Ah, that makes sense. It doesn't install anything extensions of it's own, only using the kernel bits provided by Hypervisor.framework.

</comment></comment></comment></comment></comment><comment><USER14> Absolutely love Docker.app, it's made life so much simpler at work for all of us, and performance has been increasing steadily (though it's still not 1:1 with boot2docker-xhyve).

</comment><comment><USER15> On Windows, Hyper-V doesn't really play nicely with laptops. If you've got it enabled and bridged to your wifi adapter, Windows 10 may think that your connection is Ethernet and turn off all bandwidth saving features. I only found out after Windows Update had exhausted my monthly LTE quota.

<comment><USER16> Speaking about Windows, it is also disabled on Windows 10 Home and only available on Pro edition. Hope they'll maintain VirtualBox support as a first- class citizen (well, given that it was the most mature option during the beta period, suppose they will).

</comment></comment><comment><USER17> Basically echoing senex's comment, but this announcement seems bizarre in light of [https://forums.docker.com/t/file-access-in-mounted- volumes-e...](https://forums.docker.com/t/file-access-in-mounted-volumes- extremely-slow-cpu-bound/8076). In particular, a Docker employee responds with a status update in [https://forums.docker.com/t/file-access-in-mounted- volumes-e...](https://forums.docker.com/t/file-access-in-mounted-volumes- extremely-slow-cpu-bound/8076), saying this isn't resolved for stable Docker for Mac. It's totally unusable for Rails development right now.

<comment><USER18> The 'convox start' dev environment enables Rails dev on Docker for Mac with a custom file sync strategy.

This is another case of simple solutions win... You can effectively rsync code changes without all the low level file system madness.

[https://convox.com/blog/bidirectional- sync/](https://convox.com/blog/bidirectional-sync/)

<comment><USER17> Thanks. There are some workarounds posted in the thread I linked, too. Frustrating that Docker for Mac doesn't just work for the main use case (local development), though.

</comment></comment></comment><comment><USER19> Can I run my usual VirtualBox VMs I have running for everything else (non- docker related) alongside Docker for Windows yet? When I tried one of the betas it enabled Hyper-V which prevented me from using any of my other VMs.

<comment><USER20> Wondering about this myself, going to write up a tutorial soon for people I know who use Windows. Last time I tried Docker for Windows it broke VirtualBox completely (just had to disable Hyper-V). Might be an easy fix for that though, didn't spend any time investigating

</comment></comment><comment><USER21> Can I expect a dockerfile that 100% works on Linux to 100% on Mac and Windows?

<comment><USER22> Short answer, yes. Medium answer, images your Dockerfile is based on are still run in a Linux environment, even if it's virtualised differently.

<comment><USER23> Wait now, hold on a minute. I'm very confused and curious how does this work?

Can I run any linux-based container on Windows? Can I run (are there any?) windows-based containers? If so, does it work the other way around: windows container on linux host? Does it somehow use the recently published Linux Subsystem for Windows, or is it completely different compatibility layer? If it is different, doesn't it seem like a waste of effort?

<comment><USER20> > Can I run any linux-based container on Windows?

No, on windows you still have to run a Linux vm which the containers will run inside. Meaning all containers actually run on a Linux host. The new Docker for Windows app only abstract away some stuff so it feels easier working with.

> does it work the other way around

No

<comment> mh-cx > No, on windows you still have to run a Linux vm which the containers will > run inside.

I don't think, that's correct. To me that's the whole point of having a native Windows / Mac version of docker. From their feature list:

> Faster and more reliable – native development environment using hypervisors > built into each operating system. (No more VirtualBox!)

<comment><USER16> No, GP got it right.

The quoted part is that instead of VirtualBox one can use Hyper-V. In either case, it's handled by docker-machine which runs a GNU/Linux VM with Docker (host) tools installed, and containers are ran on that VM.

I would be surprised if there aren't plans to support WSL (to run Linux- targetting binaries on Windows "natively", thus have "native" Docker containers) but don't think that's available yet.

</comment></comment></comment></comment></comment></comment><comment><USER24> I still can't bind mount a file in a container if that file already exists in that containter. Is this production ready?

<comment><USER25> This seems to work fine for me:

docker run -it -v /private/etc/passwd:/etc/passwd alpine sh (not recommended for any actual use obviously)

Is there a particular case in which this failed for you? We'd appreciate a bug report on [https://github.com/docker/for- mac/issues](https://github.com/docker/for-mac/issues) (or from the Docker for Mac GUI, just click on "Diagnose and Feedback") so we can chase down whatever issue you're having.

<comment><USER24> Yes, this use case, it happens on Windows and on Mac as well.

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: oci runtime error: rootfs_linux.go:53: mounting "/var/lib/docker/aufs/mn t/90d24356afdeb7b9ddad4b3b6903be92063151c33bf34f3d63ede464437060c6/cryptoservice/broker- config.yml" to rootfs "/var/lib/docker/aufs/mnt/90d24356afdeb7b9ddad4 b3b6903be92063151c33bf34f3d63ede464437060c6" caused "not a directory".

(I'm mounting broker-config.yml and that file is already present in the container. Most recent Docker for Win beta in this case, but getting the same on non-beta Docker for Mac.)

<comment><USER26> The error message specifically says "not a directory" and afaik you can't mount single files, only directories. I at least have never even thought of trying to mount individual files since the bind mounting functionality in Docker seems to always and everywhere have been described in a way that suggests that it's for mounting directories, not individual files.

</comment></comment></comment></comment><comment><USER27> An interesting fact I think is worth mentioning is that Docker for Mac uses a forked and currently closed version of xhyve, and not the same xhyve that we can find on Github. The last commit to open source xhyve was May 27.

With that said Docker has plans to open source it, I wonder if that will happen soon as they declare Docker for Mac ready for production. That would imply that the xhyve port also should be ready be contributed back or spin out into a new project (the quote below said they were not sure if they wanted to contribute back or make a new project).

Personally I think the "right thing to do" would be to contribute back to xhyve, at the same time I have a feeling it's more valuable for Docker Inc to "own" and control their own fork/project so I would guess they will go down that path instead (it would still be open source, just under a different project name).

Source: [https://news.ycombinator.com/item?id=11356293](https://news.ycombinator.com/item?id=11356293)

EDIT: I stand corrected, see talex5 comment below, I had missed the hyperkit announcement.

<comment><USER28> I think this is what you're looking for:

[https://github.com/docker/hyperkit](https://github.com/docker/hyperkit)

Source: [https://blog.docker.com/2016/05/docker-unikernels-open- sourc...](https://blog.docker.com/2016/05/docker-unikernels-open-source/)

<comment><USER27> Oh, my bad, thanks for the correction! :)

</comment></comment></comment><comment><USER29> I need nested virtualization as well. I don't know if this is possible with the hypervisor being used, but it's hugely important for me.

<comment><USER30> Curious, can you share what you need it for?

<comment><USER29> Basically for hacking on cloud software that runs hypervisors such as kvm. docker-machine with a VMWare Fusion VM and nested virtualization enabled is the current approach I use - works fine for now.

</comment></comment></comment><comment><USER31> "This version of Docker requires Windows 10 Pro, Enterprise or Education edition with a minimum build number of 10586. Please use Docker Toolbox."

:(

<comment><USER32> That'll be because Windows 10 is the first desktop Windows OS with support for Hyper-V.

If you didn't want to use Windows 10, perhaps you might have some more luck with a Windows Server OS. Does anyone know if the latest version of Docker will work on Windows Server 2012?

<comment><USER33> Client Hyper-V actually showed up in Windows 8 [1], but only recent versions of Windows 10 have Hyper-V with all the features needed by Docker for Windows.

[1]: [http://www.howtogeek.com/196158/how-to-create-and-run- virtua...](http://www.howtogeek.com/196158/how-to-create-and-run-virtual- machines-with-hyper-v/)

</comment></comment></comment><comment><USER34> My biggest issue with it is that there seems to be no easy way to provide more space to the VM docker runs inside. While it seems trivial it can be useful if you happen to have really large images (yes, for valid reasons). If you run too many containers you just run out of space.

<comment><USER35> I ran into this too when fooling around with SyntaxNet. It hink the default size of the VM is 16GB. I kept running out of swap space even after bumping the ram on the VM up to 16GB.

</comment></comment><comment><USER36> Does this thing work on Windows 10 home edition? That doesn't have hyperv I think.

<comment><USER37> No it won't work, you're right it seems:

[https://msdn.microsoft.com/en- us/virtualization/hyperv_on_wi...](https://msdn.microsoft.com/en- us/virtualization/hyperv_on_windows/quick_start/walkthrough_compatibility)

</comment></comment><comment><USER38> I've been trying to switch from VirtualBox to Hyper-V twice to use Docker for Windows, but always hit the same wall when using a desktop Linux guest: no 3D acceleration, no resolution scaling, no shared clipboard.

<comment><USER39> Yes, Hyper-V's Desktop UX for VMs is still in a _really_ sad state compared to the competition, even for Windows guests, let alone Linux ones. I have it enabled to use Docker for Windows by default, but very often still need to reboot to disable it and use VMware Workstation for any serious work inside VMs, for all the reasons you listed, plus the awesome multi-monitor support in Workstation.

Microsoft really needs to get its act together.

</comment></comment><comment><USER40> Good to see they are moving forward, but I have a working rig at the moment with virtual box.

"If it ain't broke, then don't fix it" is a motto I live by.

Better it's your blood on the bleeding edge rather than mine :-)

</comment><comment><USER41> Docker for Windows is unfortunately a bit gimped right now:

\- docker-compose isn't OS agnostic and as versions go forward Windows is lagging behind

\- this uses Hyper-V which blocks both Virtualbox and Vmware from running

</comment><comment><USER42> I love Docker for Mac but I have had a problem of containers just disappearing after running for a while.

<comment><USER43> It has a pretty good logging, have you taken a look if it crashes or something?

</comment></comment><comment><USER44> If you have issues with the Docker for Mac on Sierra, turn off ntp:

      sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist

If I see that "We are whaly happy to have you" welcome screen one more time though...

<comment><USER45> Can you actually live without NTP though? Isn't that a pretty critical service?

<comment><USER46> One of the issues is that if your laptop goes to sleep your linux container becomes out of sync on the time. To fix this you have to restart docker.

</comment></comment></comment><comment><USER47> Last time I checked it didn't support 32 bits but could be tested on Windows 7. Now I see it requires `Microsoft Windows 10 Professional or Enterprise 64-bit For previous versions get Docker Toolbox`.

<comment><USER35> Yeah, that's part of why this release baffles me. From 1.11 to 1.12 they dumped VirtualBox in favor of the latest version of Hyper-V which why it only supports Windows 10.

That's a pretty significant change in my mind but it didn't seem to extend their testing/validation timeline at all.

</comment></comment><comment><USER48> Anyone know if the volume ozone performance have been improved to at least the level of nfs method? This is what keeps me away from using the docket for Mac and just sticking to dinghy until this is fixed

<comment><USER49> Would like to know this as well. Docker for Mac performance is still horrible.

</comment></comment><comment><USER50> ARGH! I can't use Hyper-V on this hardware (no SLAT support).

</comment><comment><USER51> is anyone having troubles with docker-compose (on mac)? It seems that ports are not forwarded/opened.

</comment><comment><USER52> I'm finding it really funny how even Docker users can't really explain easily what Docker is.

<comment> alex- Docker is a process launcher that makes it fast and simple to start processes with a unique network/filesystem/process/user space (via cgroups and namespaces).

</comment></comment><comment><USER53> It won't work on Windows 7, 8. It needs Windows 10 pro or enterprise to work.

</comment><comment><USER54> Greate! It's hard to install it before.</comment>


The Selection of Talent: Evidence from Ethiopia [pdf] - <AUTHOR> https://docs.wixstatic.com/ugd/e9b89f_bd4ea11c3aef45d1a76f49309fc740e1.pdf <comment><USER2> Anyone know what font is used in that article? It's beautiful.

> Further, we measure the quality of the individuals who apply for the job > through a battery of personnel selection tests that capture cognitive > ability, non-cognitive ability and relevant work experience. These tests are > reliable predictors of work performance and are used by firms worldwide > (Heckman et al., 2006; Autor and Scarborough, 2008; Hoffman et al., 2015).2

> We use the Raven and Stroop tests for cognitive ability (Schmidt and Hunter, > 1998). For non-cognitive skills we administer the Big-5 personality test and > the Grit scale (John and Srivastava, 1999; Duckworth et al., 2007).

Does evidence really exists that these tests are predictive?

<comment><USER3> To answer your question about the font, I think it's the same font used by the current ACM LaTeX template. The font is called Linux Libertine[1].

[1] [https://www.dafont.com/linux- libertine.font](https://www.dafont.com/linux-libertine.font)

<comment><USER4> This is very obviously wrong. Just look at the letters.

<comment><USER3> Again, it was just a quick guess. I have a terrible eye for these kinds of things :P

</comment></comment></comment></comment><comment><USER5> I have a suspicion that if this were a widespread practice the effect would disappear.

<comment><USER6> It sort of is widespread. Some of my engineering classmates were flown to other countries for job interviews at the employer's expense. It's probably most significant for poor people like students and Ethiopian clerical job applicants for whom application costs are high compared to their income.

</comment></comment><comment><USER7> The article was beautiful and I would really like to know myself if the tests have been found to be predictive.

</comment><comment><USER8> I'm not sure I follow; the authors claim that paying job applicants for applying attracts better talent? And they further claim that Ethiopians cannot afford the cost of generating an application?

Somehow I doubt that these results would translate to white collar jobs in the first world.

<comment><USER9> I'd be willing to try this for white collar jobs in the first world.

As a developer, your time is valuable. We'll compensate you for helping discover if we'd be a mutual fit.

1\. I'd offer NYC-based K8s-savvy developers a $100 Amazon gift card for a CV and passing a phone screen, no obligation to interview on site.

2\. I'd offer NYC-based K8s-savvy developers a $500 Amazon gift card for getting to an offer after an on-site interview day (more like half day), no obligation to accept offer.

Types of folks I'm looking for is listed in my profile.

<comment><USER8> In theory it sounds like a good idea, but I just wonder, what stops people from gaming such a system if it becomes commonplace?

$500 for a couple hours of trouble, assuming I'm local, isn't a bad deal.

<comment><USER10> They'd have to be qualified enough to get an actual offer. He didn't say anyone interviewing would get the $500. Not sure what sort of gaming could be done with that criteria. And with that carrot for qualified people, he's likely to get more applicants than otherwise, which is the point.

<comment><USER11> Well, not every developer is making a ton of cash, and a fair few qualified ones may be quite happy to do an interview every day or so for a bit of extra cash.

Heck, if enough companies offered $500 for a successful interview, some people would probably end up making more from going to interviews than they would accepting the offer.</comment></comment></comment></comment></comment>


Why Optical Illusions Work - <AUTHOR> http://ankeshkothari.com/illusions/

<comment><USER2> The 32nd one with the woman is really freaky.</comment>


Wolfenstein 3D in HTML5 - <AUTHOR> http://wolfenstein.bethsoft.com

<comment><AUTHOR> Some obvservations:

• This appears to be a straight port from the original C source[1] to JS (it's in plaintext, so you can have a look.)

• As such, it's look and feel is more faithful to the original than the native iOS port, which is partly based on a GPL port[2], has high(er) resolution graphics from yet another port and is missing some things from the PC version (tally screen, the "Yeah!" scene when you escape from the castle.)

[1] <http://www.btinternet.com/~belowe/> [2] [http://www.idsoftware.com/iphone- games/wolfenstein-3d-classi...](http://www.idsoftware.com/iphone- games/wolfenstein-3d-classic-platinum/wolfdevelopment.htm)

IMHO the second link is an excellent read in itself.</comment>


Google Edge TPU Devices - <AUTHOR> https://aiyprojects.withgoogle.com/edge-tpu <comment><AUTHOR> In Nov 2018, Google engineers who designed the TPU gave a presentation about the use of open-source Chisel for designing the ASIC, [https://youtube.com/watch?v=x85342Cny8c](https://youtube.com/watch?v=x85342Cny8c)

From [https://techcrunch.com/2018/07/25/google-is-making-a-fast- sp...](https://techcrunch.com/2018/07/25/google-is-making-a-fast-specialized- tpu-chip-for-edge-devices-and-a-suite-of-services-to-support-it/)

 _> Google will have the cloud TPU ... to handle training models for various machine learning-driven tasks, and then run the inference from that model on a specialized chip that runs a lighter version of TensorFlow that doesn't consume as much power ... dramatically reduce the footprint required in a device that's actually capturing the data ... Google will be releasing the chip on a kind of modular board not so dissimilar to the Raspberry Pi ... it'll help entice developers who are already working with TensorFlow as their primary machine learning framework with the idea of a chip that'll run those models even faster and more efficiently._

<comment><USER2> So my guess is that Chisel is one of the many responses to the two horrors that are VHDL and Verliog.

Unfortunately, Chisel is built on Scala, and I have no interest in learning Scala. Though I'm intrigued by the claim of using generators and not instances, and would be interested in a white paper that explains it in PL- agnostic terms (PL: programming language).

Also have on my to-do list MyHDL [1], a Python solution to the same problem. (has anyone tried it and found to be better than VHDL/Verilog?)

[1] [http://www.myhdl.org/](http://www.myhdl.org/)

<comment><USER3> I get the impression that people who talk about the "horrors" that are VHDL and Verilog for hardware design are software developers who have little to no knowledge about hardware design processes.

There are reasons why VHDL/Verilog are still in use in the industry and why high-level synthesis hasn't taken off.

VHDL/Verilog for hardware design is not broken. I won't claim that there isn't space for improvement (because there is) but there isn't anything fundamentally broken in them. They are fit for the purpose and they fulfill all of the needs we have.

What could be massively improved is actually the functional verification languages we use, SystemVerilog for verification is in serious need of an overhaul.

<comment><USER4> OK. I'll bite. I only have experience with verilog, but it's basically uncomfortable to work with in the sense that there are absolutely no developer ergonomics. We're well into the 21st century and you'd think that our HDLs would learn from everything that the software world has learned.

1) the syntax is very finicky (slighttly more so than C, I'd say). Most software languages (thanks to more experience with parsers and compilers) have moved on from things like requiring semicolons, verilog has not.

2) writing tests is awful. Testbenches are crazy confusing. Much better would be some sort of unit testing system that does a better job of segregating of what constitutes "testing code" versus the "language of the gates". You would have a hard time doing something like, say, property testing using verilog.

3) there isn't a consistent build/import story with verilog. Once worked with an engineer that literally used perl as a verilog metaprogramming language. His codebase had a hard-to-find perl frankenbug which sometimes inserted about 10k lines of nonsense (which somehow still assembled a correct netlist!) but caused gate timings to severely miss and the footprint to be bloated. It took the other hardware developers one week to track down the error.

None of these things have anything to do with the fundamental difference between software and hardware development.

For chisel: at least to some degree, you can get some developer ergonomics from the Scala ecosystem, and do most of your unit, functional, in integration testing outside of verilog, in chisel, and last-minute autogenerate verilog and do a second round of testing to make sure chisel did everything right. It's the same reason why people do things like "use elm to develop frontend, compiling down to javascript" and it's a perfectly valid strategy.

<comment><USER5> I really don't get why some people get so much hyped up on typing semicolons.

Maybe we should write in our native tongues without any kind of punctuation.

<comment><USER4> "I really don't get why some people would want sub-10-second completion of their unit tests. Why not just wait a 30s to a minute to test everything?"

<comment> yjftsjthsd-h And yet, you typed the punctuation marks in your comment even though all of us would understand you without them.

<comment><USER4> I didn't type out the word "second"

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> Am I missing something, or are they not only not documenting the chip, they are also not even releasing the compiler, but requiring you to use a cloud based compiler:

> You need to create a quantized TensorFlow Lite model and then compile the > model for compatibility with the Edge TPU. We will provide a cloud-based > compiler tool that accepts your .tflite file and returns a version that's > compatible with the Edge TPU.

This seems like a new low in software freedom, and pretty risky to depend on as Google is known to shutter services pretty often and could just decide to turn off their cloud-based compiler at any time they feel like.

<comment><USER7> Chips without a public toolchain are not worth investing your time in. It is bad enough if your work is tied to specific hardware for which there may at some point not be a replacement but to not even have the toolchain under your control makes it a negative.

<comment><USER8> AI is too powerful a technology to let it out there to the masses. People might use it for killer drones after all. All users of AI must be tightly controlled and registered with the authorities!

This is the problem with certain kinds of technology that are bumping up against the edge of innovation. They're too powerful and if these technologies get in the hands of the DIY set, governments will lose control so they have to DRM and regulate everything. Heck, it's a problem with old technology. Many weapons aren't that complicated technologically, but their production and use are tightly regulated.

Edit: I'm not saying this is a good thing, I'm just deconstructing their though process for tight control over AI tech going forward.

<comment><USER9> >People might use it for killer drones after all.

For some reason drones are perceived to be completely different from all weapons that have existed before them. Those killer drones have existed for half a century. They are called missiles. Also the reason why UAV based fighter jets are not viable is because a cruise missile can be launched from 1000 miles away and for the cost of a global hawk you can send out more than a hundred of them.

If terrorists have access to explosives then it doesn't matter how they deliver them because most lucrative targets (= lots of people in a small area) are stationary or predictable. A simple bagpack filled with explosives was more than enough to injure hundreds of people during the Boston Marathon.

<comment><USER10> I can buy a drone on Amazon for relatively little money. I can't do the same with a rocket.

<comment><USER11> You can make an unguided, explosive-filled rocket that can harm people for cheap from scrap. Insurgents throughout the world have done so for the past 40 years. That may not be as simple as Add To Cart, but it is well within the economic means of almost everyone.

</comment></comment></comment></comment></comment></comment><comment><USER12> This is a long time coming. I'm normally not a big fan of large companies building products in the embedded space that could potentially destroy competition and future innovation but this is needed.

Nvidia's embedded boards are EXPENSIVE. So expensive it limits the applications dramatically. They also require a different skillset in people to set up which drives up the cost.

We did an analysis for a security project that required visual inference. It turned out all the extra costs to setup with TX boards meant it actually made more sense to have mini desktops with consumer gtx cards.

I am excited to see the performance of the inference module. If it's decent at a good price, that opens up so many pi/beagle/arduino applications that were limited by both cost and form factor of existing options.

<comment><USER13> Note that these chips only support TFLite, which is still pretty spartan atm.

<comment><USER14> What are you missing? Not involved with the project, just using it, and so far we've been able to work around the limitations (for computer vision).

</comment></comment></comment><comment><USER15> This looks cool.

Currently the only real options for amateur off-the-shelf (accelerated) edge ML are the Nvidia boards (but small carrier boards for the TX2 cost more than the module itself) or the Intel NCS which inexplicably blocks every other USB port on the host device due to its poorly designed case. There is the Movidius chip itself, but Intel won't sell you one unless you're a volume customer. The NCS also does bizarre things: the setup script will clobber an existing installation of opencv with no warning, for example.

There are various optimised machine learning frameworks for ARM, but I'm only counting hardware accelerated boards here. I'm also not including the various kickstarter or indiegogo boards which might as well be vapour ware.

There are no good, cheap, embedded boards with USB3 that I can find. There are a few Chinese boards with USB3, but none of them have anywhere near the quality of support that the Pi has.

Then camera support. The Pi has a CSI port, but it's undocumented and only works with the Pi camera. The TX2 is pretty good, but you need to dig through the documentation to figure things out. USB is fine, but CSI is typically faster and frees up a valuable port.

Finally another issue is fast storage. It's difficult to capture raw video on the Pi because you can't store anything faster than about 20MB/s. There are almost no boards that support SATA or similar (the TX2 does), so the ability to use USB3 storage would be welcome too.

If this is offered at a reasonable price point, it could be a really nice tool for hobbyists. It looks like they're trying to keep GPIO pin compatibility with the Pi too.

<comment><USER16> The Raspberry Pi provides documentation for their GPU architecture, so it _would_ be possible to provide support for that within open source machine learning frameworks. It would involve quite a bit of work, though, and the RPi is not really competitive with modern hardware in performance-per-watt terms, even when using GPU compute.

<comment><USER15> There are some well optimised libraries, for example a port of darknet that uses nnpack and some other Neon goodies. You can do about 1fps with tiny yolo. Not sure if it used anything on the gpu though.

<comment><USER16> NEON is the CPU SIMD feature, it has nothing to do with the vc4 GPU.

<comment><USER15> Yes, I know. My point was that CPU-only deep learning is possible on the Pi if you don't need real-time inference. What I wasn't sure of is whether that specific port does anything on the GPU at all, or if it's only using NEON intrinsics.

</comment></comment></comment></comment></comment><comment><USER17> > You need to create a quantized TensorFlow Lite model and then compile the > model for compatibility with the Edge TPU. We will provide a cloud-based > compiler tool that accepts your .tflite file and returns a version that's > compatible with the Edge TPU.

I seriously hope that's not the _only_ way they're expecting people to compile models for this particular TPU.

<comment><USER18> As a person with access to their documentation I can confirm that this is currently the only way to compile model for this TPU. Also list of supported network architectures is very very short.

Well this is just begining I am sure they are going to expand its capability.

<comment><USER17> I'd rather they enable independent development of models on the hardware they're selling. This is about as useful as a high performance electric car you can only charge at authorised dealerships. Dealerships which have the unfortunate habit of closing down after a few years or so.

<comment><USER18> I bet there is some technical reason behind allowing just few architectures and I hope they will fix it in future releases. Currently you can't even run ResNet type of networks on it.

<comment><USER17> Well, one can hope.

</comment></comment></comment></comment></comment><comment><USER19> This has been around for a while but has been stuck at 'Coming Soon' forever. Does anyone know what the status of this project actually is? I suspect that it has been stalled for some reason or the other.

<comment><USER20> One of the Google engineers on the project here. No, we haven't stalled. Keep an eye out. :-)

<comment><USER21> do you have any price estimation?and performance wise, what is its equivalent in the market?

<comment><USER22> 75 / 150 usd. usb module / full soc board

</comment></comment></comment></comment><comment><USER23> A related edge computing AI accelerator: [https://www.crowdsupply.com/up/ai- core-x](https://www.crowdsupply.com/up/ai-core-x)

</comment><comment><USER24> What is the use of 100fps vision models other than being the input to a controller (e.g. driving, flying etc) ? A raspberry can hold up to 3fps with standard open source frameworks, and this is enough for many applications, e.g. construction site surveillance etc... Not criticizing, rather a genuine interest to understand the edge ML vision market.

<comment><USER18> I did work on optical sorting machine: you have stream of fruits on very fast conveyor belt and then machine vision system scans the passing fruits, detects each object and reject (by firing stream of air) those that don't pass: those can be molded fruits, weird color or foreign material like rocks or leaves. 100 fps might be enough, but faster you go, faster your conveyor belt could be.

</comment></comment><comment><USER25> How would someone compare the Edge TPU Accelerator with a Movidius Neural Compute Stick? [https://software.intel.com/en-us/movidius- ncs](https://software.intel.com/en-us/movidius-ncs)

<comment><USER26> Movidius is not a TPU. It's more like a GPU, but with SIMD, DSP and even VLIW capabilities and with a _very_ wide memory bus (and massive throughput). It's rather impressive actually, but probably serious overkill for what really needs to be done during inference: [https://en.wikichip.org/wiki/movidius/microarchitectures/sha...](https://en.wikichip.org/wiki/movidius/microarchitectures/shave_v2.0). Whereas a TPU is highly specialized for just, you guessed it, processing tensors, which basically means matrix and vector multiply. It's a systolic architecture, so it also (purportedly, since I don't have insider knowledge) stores the weights for the computation for the duration of the computation.

<comment><USER27> We hardly know anything about Edge TPU. Yes, TPU uses systolic array, but there is really no reason to believe Edge TPU will use it. Edge TPU is not TPU.

<comment><USER26> It has "TPU" right its name. If that's not a dead giveaway, I don't know what is. :-)

</comment></comment></comment></comment><comment><USER28> I don't know enough about this but how do these devices compare to the Sipeed MAIX devices [1] I saw mentioned on HN the other day? They seem to both support TensorFlow Lite but that's where my ability to understand their capabilities end.

[1] - [https://www.indiegogo.com/projects/sipeed-maix-the-world- fir...](https://www.indiegogo.com/projects/sipeed-maix-the-world-first- risc-v-64-ai-module/x/20407509#/)

<comment><USER15> The risk with crowd funded chips is support and longevity. The reason that the Raspberry Pi wins every time against technically superior competition is that it's well supported and there are reasonable supply guarantees.

The same goes for big companies of course. Intel has a habit of releasing Iot platforms and then killing them. Let's hope the TPU lasts a bit longer.

As for a comparison, it's impossible to say until Google releases benchmark information on the edge TPU, or some kind of datasheet for the SOM.

<comment><USER29> Given Google's tendency to kill products and shift priorities rapidly, I think building a product or service dependent on a supply of their hardware is probably a pretty risky choice.

I definitely have been shocked how fast Intel maker boards have come and gone though. It feels like Intel has written them off before anyone's tried to build a project using one. I have one sitting around here somewhere that's never so much as been powered on.

<comment><USER15> It's very hard to beat the traction that the Pi has. I think because it's explicitly targeted towards people without any embedded experience, there's been a lot of pressure to make things work and to make the documentation somewhat organised.

Intel made some nice little boards, but there wasn't much publicity and actually getting started with them wasn't easy at all because the docs were buried. They were usually modules designed for integration, not standalone devices.

With the Pi you can buy a kit, plug in the SD card and boot ot desktop in minutes.

</comment></comment></comment></comment><comment><USER30> Are they going after the Movidius [1] with this?

[1][https://software.intel.com/en-us/movidius- ncs](https://software.intel.com/en-us/movidius-ncs)

</comment><comment><USER31> So they will sell develoent boards, without selling IC's.

Seems like a nice way to gather ideas and data about new products.

</comment><comment><USER32> How expensive is this likely to be? Feasible for a hobbyist to purchase?

<comment><USER33> The NXP® i.MX 8MQuad board is available for 150$ and has USB3 and PCIe. The TPU would probably be attached through one of those buses. I would bet around 250$ with the TPU which is pretty good and puts it around half the Jetson Tx2, 1/5 the Xavier. I wonder if the TPU could be used for SLAM not just object identification, now that would be useful

<comment><USER34> Do you know where I can buy the board itself? (without the TPU), I only saw "SOM" versions which I'm not equipped to use.

</comment></comment></comment><comment><USER35> Is this anything worth considering, if it cannot be used for training?

</comment><comment><USER36> When I see products developed by Google, I imagine them as Replicants. Developed by an advanced tech company, full of futuristic technology and amazing potential, and destined to die in ~4 years.

<comment><USER37> The competitors don't really keep chips around for longer. Intel isn't manufacturing Skylake anymore. Nvidia isn't manufacturing Maxwell GPUs anymore. (Incidentally, Apple did appear to be using their 4-year old A8 SoC in the first HomePods, released in 2018, though.)

Hardware and software are different things. We are all sad that Google Reader doesn't exist anymore, but every silicon product has basically been a flash in the pan. They make it, you buy it, and by the time it's shipped to you, it's announced as obsolete. That's the pace of that industry. Maybe with Google's attention span, they should have been a hardware company all along. They will fit right in.

<comment><USER36> My example was inaccurate, because at least dead Replicants can be replaced with newer models, whereas dead Google products have no follow-up model and require completely replacing what you had created around that product. That's something seemingly unique to either vaporware start-ups, or Google.</comment></comment></comment>


Microsoft is infesting Windows 10 with annoying ads (2017) - <AUTHOR> https://www.theverge.com/2017/3/17/14956540/microsoft-windows-10-ads-taskbar-file-explorer <comment><USER2> I've become increasingly annoyed with this trend. Apple is doing it too on iOS, though the ads are all for first party products. If you use Apple News you can't turn off all the teaser headlines for News+. If you use 4Gb of your free iCloud storage you'll be pestered with "Upgrade" notifications.

Similarly, it's a little more expected on the web, but I used to have YouTube Premium and now that I've canceled, every new YouTube session has a pitch for premium.

<comment><USER3> I can't use Spotify(premium!) without having a freaking in-app pop up on iOS too.

I'm actually thinking about going back to pirating music and just building my own player that load things off of S3.

<comment><USER4> I don't really get these complaints - the entire point of freemium services is to upsell users to a pay-for tier.

<comment><USER3> I have premium!!

That's the kicker…

<comment><USER5> I have had premium since 2011 and aside from the occasional oddball popup for a concert near me (which is always based on what I listen to), I never get ads. What exactly are you seeing?

</comment></comment></comment></comment></comment><comment><USER6> Pick your flavor of Linux: [https://distrowatch.com](https://distrowatch.com). I recommend Xubuntu, but whatever, as long as it's not Windows 10.

<comment><USER7> Sadly the year of Linux on the desktop has yet to arrive.

Last time I tried a Linux distro on my NUC6i7KYK wifi was going down every few minutes, despite upgrading to latest drivers and support for 200% magnification of the UI on my 4k monitor was pretty bad.

<comment><USER8> The Linux driver situation will be the same until it becomes more popular. Most hardware works and some doesn't, and older hardware works better than newer hardware because popular hardware whose vendors suck often have better drivers produced by the community eventually.

This is only a minor inconvenience because it means you have to choose the right hardware. It becomes a major inconvenience if you choose the wrong hardware, but nobody is forcing you to do that and you can always sell your thing and buy a different thing.

<comment><USER7> > This is only a minor inconvenience because it means you have to choose the > right hardware. It becomes a major inconvenience if you choose the wrong > hardware

So, year of linux on the desktop is not here yet..

</comment></comment></comment></comment><comment><USER9> Published Mar 17, 2017.

<comment><USER10> It would be nice if someone could update the title. I only clicked on the link because I thought it was news.

<comment><USER11> Updated.

</comment></comment></comment><comment><USER12> Great! When Windows gets awful enough, it will actually be the year of Linux Desktop.

<comment><USER13> Agree. I can't understand why anyone is still on windows or mac os. The world does not make sense.

<comment><USER14> I tried Ubuntu for the first time in years last month. At first I was pretty happy with it, but gradually I grew frustrated. Every time I would install a new library in R (statistical programming language) I would have to spend 10-15 minutes trying to figure out why it didn't work. I'd end up in this deep rabbit hole of missing dependencies that I never had a problem with in MacOS or windows

<comment><USER15> I would recommend arch linux, everything exists in the aur and most things work out of the box.

Dont buy the hype that arch is hard, its a really simple system imo.

<comment><USER16> The setup process for Arch is challenging, but it can be a rewarding exercise if you want to have a better understanding of how a Linux system is put together. It's like Linux from Scratch, but less time consuming, and you end up with a system that you can actually use when you're finished.

But yeah, once it's set up, and you've figured out how things typically work in Arch (e.g. you install a package first, but nothing is enabled by default - _you_ have to decide how you want it to start), it's a great system. You'll learn how to actually use systemd, and will generally have a better feel for how everything is supposed to function, which will make you better at investigating things when they break, or when they don't work out of the box, even on other systems.

Also the Arch wiki is an amazing resource regardless of what you're running.

I don't necessarily have any reservations about recommending Arch to a beginner, but you do have to be curious and willing to learn. People who tried Linux and then got frustrated because some piece of software didn't work quite right out of the box probably wouldn't enjoy using Arch.

</comment></comment></comment></comment></comment><comment><USER17> Clearly, this is a far more intrusive alternative than web advertising.

Many advertisers surely _love_ the idea of being able to advertise "from below the application layer," via the operating system itself, using ever bit of data they can collect directly from you, from the heart of your computer, bypassing browsers, ad-blockers, firewalls, ISPs, etc.

Looks like this is the inevitable future -- I mean, present -- of Windows, Android, and iOS.

:-(

</comment><comment><USER18> 2017

<comment><USER19> yes OP pls update title, this has been going on for years now

</comment></comment><comment><USER20> I love Windows 10 except for the ads and the intrusive spyware installed. This is why I stopped being a .NET developer and went all in on open source stuff. Switched to Ubuntu and Fedora and today they are so good there is really no reason to use Windows for most folks.

My dad now uses Ubuntu, he doesn't seem to really notice any big difference since he mostly use the web browser anyway. My grandma uses Ubuntu and my mother used to but now have a Macbook.

The only negative thing with running linux is that some hardware has much worse support still to this day.

</comment><comment><USER21> I know this is three years old, but my question remains the same (for lack of data) – Is this localized to non-Pro or Enterprise editions of Windiws 10?

I haven't seen this behavior anywhere on my machine. Then again, I don't use any of the default applications, and I've spent many an hour going through every tiny setting wrt privacy/analytics settings.

The only place I've seen this crop up is a relative's computer which is the Home edition.

</comment><comment><USER22> I admit you need to uninstall a bunch of crap when you first install Windows 10. That sure sucks but its not a Windows thing. You get default apps on every platform and the more of an "advanced" user you are the more likely you will need to replace them. For a majority of people these apps are however what they will use so kinda makes sense to have them preinstalled. Even for games, people would find it weird if no game was present. Every windows they can remember had games preinstalled. Anyway simply remove what you don't need including OneDrive and you will not get ads or notification. Lock screen and stat menu can be configured to not show tips or recommended apps. The store itself can even be de-installed (if you don't need it). Obviously everything is opt-out but that has been the case since ever.

PS: There are powershell scripts to automate cleanup if you have to do this regularly its just a github search away.

<comment><USER23> >You get default apps on every platform and the more of an >"advanced" user you are the more likely you will need to >replace them.

This is not true for me with Debian.

<comment><USER22> It certainly is if you can find any platform that comes with Debian.

You may pick your distro and even pick predefined software collections you want to have installed or simply install only the core. But really thats not the point. You can build your personal windows 10 image an replace the default apps too.

<comment><USER23> You can not compare the debian software repository with a windows 10 image. I do not need to buy new hardware often because Debian runs nice even on very old hardware. I type this on a computer 14 years old, that just got apt-get dist-upgrade since then. You can not do that with Windows.

<comment><USER22> You completely an intentionally missing the point or my post. And on top of that your "Facts" are simply wrong

-There are software repository for windows wit GUI or CLI -I have a T60 it's about 14 years old it runs the last version of Windows 10 just fine. -There is no special hardware necessarily at all. Some super old CPUs may lack NX, PAE or SSE2 and thus would not run anything after Win7. but that's irrelevant machines with such old CPUs can not even render a modern website in a useful time no matter what OS is running underneath.

</comment></comment></comment></comment></comment><comment><USER24> Why the main picture of the article contains a depiction of upside down person behind two bars?

<comment><USER25> It's a medal icon like kind of thing

</comment></comment><comment><USER26> Countdown to free, ad-monetized Windows has started.

<comment><USER27> It already is essentially free. I did a full install the other day on a new computer build and didn't need a key. All it does is put an always on, fairly innocuous message in the lower right corner of the screen.

<comment><USER28> Businesses and governments get their licenses audited though. That's where the bulk of the money is.

</comment></comment></comment><comment><USER29> In other news: sky blue, water wet.

</comment><comment><USER28> Switch to Linux. No telemetry, no forced updates, no ads.

</comment><comment><USER30> 2017.

</comment><comment><USER31> (laughs in LTSC)

</comment><comment><USER32> It's almost like humanity is too stupid to understand when you buy criminally coded stolen software as a service, you will get screwed.

The fact that parts of the OS functionality are living on some remote server is a sign of idiocracy.

Steam, origin, uplay, epic games store, Windows 10, are all signs humanity is stupid.

Watching the entire tech community steal software from the public beginning in 1997 with ultima online was enlightening.

No one should complain about windows 10 ads, you literally bought an OS that is fraudulently coded, there is no reason for any OS to be client-server. It's exactly the same as buying windows 95 or XP with missing files and a missing CD/DVD that they didn't give you which is sitting in some remote servers drive.

<comment><USER33> I must be too stupid to understand why you think Windows is "fraudulently coded" or why communicating with a server is stupid…

<comment><USER34> A survivor from the M$ days I guess.</comment></comment></comment>