Is Private Browsing Really Private? - <AUTHOR> https://spreadprivacy.com/private-browsing-9276d6d16ea4#.vmexmv7rb <comment><USER2> "DuckDuckGo is the search engine that doesn't track you." so obviously this article has marketing lean.

While private browsing is not actually private I feel going so far as to say it does not stop websites from collecting info on you is maybe a bit too far.

The site can still collect information about you, yes. But unless you sign in while in private browsing or the site is using some sort of user-agent / IP trickery it won't be automatically tied to your accounts. None of the cookies or local storage are shared across private/non private browsing.

Personally, I use it mostly to see what websites look like when I'm not logged in or if I want to access something that can only be accessed while logged out without actually logging out which is surprisingly common.

<comment><USER3> There are plenty of things a browser can see without being logged in.

Consider checking this page: [http://webkay.robinlinus.com/](http://webkay.robinlinus.com/)

Private Browsing simply prevents cookies and nothing else, and for the average person we find that is not what's expected from something defined as "private" browsing.

<comment><USER4> > Private Browsing simply prevents cookies and nothing else

Not true, at least for Firefox. In Private Browsing mode, Firefox will avoid saving temporary files and other data to disk, keeping everything in RAM instead, which is wiped when Private Browsing mode is exited. This includes history, cookies, and cache data. I believe localStorage behaves differently as well.

Firefox also makes an effort to block tracking scripts/servers in Private Browsing mode, using Disconnect's filter list.

The Private Browsing new tab page explains this all pretty succinctly: [https://i.imgur.com/MGp53eP.png](https://i.imgur.com/MGp53eP.png)

<comment><USER3> You're right there. In this whitepaper we had different questions for each of the browsers to make sure this distinction was noted.

However, users still in general think that private browsing modes do things like prevent their IP address from being seen, or prevent a search engine from recording their searches. So there is still a gap in their expectations.

</comment></comment></comment></comment><comment><USER5> Not really private, just keeps your local machine clean. Despite TeMPOraL's labeling it "porn mode" my most common use case is if I need to log into my Google account from my wife's laptop I'll use an Incognito mode window in Chrome so that I don't have to log her out of her Google account.

<comment><USER6> Is there a reason you don't use the people switcher? [https://support.google.com/chrome/answer/2364824?co=GENIE.Pl...](https://support.google.com/chrome/answer/2364824?co=GENIE.Platform%3DDesktop&hl=en)

<comment><USER7> I don't use it because it requires that I switch back. My wife won't be bothered to deal with learning the people-switcher (there's no reason she should, it's really her laptop in question), so using incognito means that once I close the window, it's clean again. It's a lot easier to remember to close the window than it is to remember to switch back to her account.

The option I finally chose to go with, is to install firefox on her computer as well. Firefox is for me, Chrome is for her. I'm an FF guy anyway. The main UX problem stands, though, it's too easy to be the wrong person.

<comment><USER8> I'm in the same boat, well aware of chrome option to switch accounts, but the simplicity of dual browsers wins when two people use the same login regularly.

Also I get to keep up to date with changes in firefox.

</comment></comment></comment></comment><comment><USER9> Probably relevant: "Google removes secret agent warning from Chrome's incognito mode" [https://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/...](https://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/generated_resources.grd?r1=239201&r2=239282)

        "Pages you view in this tab won't appear in your browser history
        or search history, and they won't leave other traces, like cookies,
        on your device after you close all incognito tabs.
        Any files you download or bookmarks you create will be preserved,
        however. Going incognito doesn't affect the behavior of other people,
        servers, or software. Be wary of surveillance by secret agents
        or people standing behind you."

The new version is:

        Pages you view in incognito tabs won't stick around in your browser's
        history, cookie store, or search history after you've closed all of your
        incognito tabs. Any files you download or bookmarks you create will be kept.
        Going incognito doesn't affect the behavior of other people, servers, software,
        or people standing behind you.

<comment><USER10> _sigh_ nobody has a sense of humor anymore.

<comment><USER11> It's not humor. Secret agents are a real problem.

<comment><USER12> So are people standing behind you.

</comment></comment></comment></comment><comment><USER13> Personally I always believed the porn mode browsing gives two benefits:

\- sites don't get recorded in browser history

\- by not exposing your regular browsing cookies, it significantly reduces the likelihood an "embarrassing" site will somehow end up on your Facebook wall

I hope I'm not wrong about the second one.

<comment><USER14> This is correct at least for Firefox.

The new Container Tabs feature works similarly: it splits cookies.

</comment></comment><comment><USER15> I really don't understand why anyone would expect private browsing to be completely anonymous. I suppose they could change the name to something better but seeing as how I only use it to browse _khm_ websites which I don't want in my browsing history and I know other people use it only for the same reason as whell. In any case I suppose that anyone who really needs anonymity is aware what browsers mean by "private browsing". I even have to block Firefoxes tracking protection to browse my favorite "website"

<comment><USER16> Of course you understand, you know as well as any of us that the average user knows next to nothing about how the Internet, their computer, or their browser works, either physically or conceptually.

It's not unreasonable for a user to take Google or Mozilla or whoever at their word when they call the feature "incognito mode", or "private browsing" etc. They don't know the first thing about how their privacy is breached in the first place, so why would they know how their browser mitigates potential breaches?

</comment></comment><comment><USER14> The "Most common misconceptions about Private Browsing" part is actually misleading for Firefox users, because that _does_ apply Tracking Protection in private browsing mode. So some of the top misconceptions aren't, at least not if you use Firefox.

(Yes, yes, it can never be perfect, but I don't believe that invalidates the point)

<comment><USER3> DuckDuckGo employee here - I ran the survey we used in this.

We had a separate question for users who noted that they used Firefox that spoke to the specific cases for that browser.

The final whitepaper is browser agnostic, and these are the top misconceptions overall, but results were split out in the research phase to account for this.

</comment></comment><comment> awinter-py FF tracking protection helps.

Disabling JS from iffy marketing companies mostly solves the problem. (From a legal standpoint, not a security standpoint). It's illegal under wiretapping rules to share communication with a third party. (but if the user's browser hits a third-party data collection endpoint, that's somehow okay. See 'in re doubleclick'). Firefox tracking protection uses the disconnect.me list [https://disconnect.me/trackerprotection/blocked](https://disconnect.me/trackerprotection/blocked) to get rid of all of these it can.

If the adversary isn't a marketing firm that has to comply with the law, ignore the above. Then you're looking at browser flaws (canvas fingerprinting) and session inference (using client IP, URL, browser-agent, & timestamps to reconstruct identity from behavior).

</comment><comment><USER17> Is it actually a misconception that private browsing prevents search engines from knowing my searches?

I do search for some nasty stuff in private mode and it never pops up in ads for my main account.

I do understand there might be conspiracy in Google to gather that data and link it to my account but never use it in the way I notice, but that looks like conspiracy theory to me.

<comment><USER18> > Is it actually a misconception that private browsing prevents search engines > from knowing my searches?

Of course the search engine knows what you searched for! You sent the search string from your computer to one of their servers.

You'd need a way to prevent the search engine from knowing your IP address, like a proxy or Tor, in order to hide your identity.

</comment></comment><comment><USER19> Title is a little misleading but a good article.

"Surveys done on users perceptions of private browsing" or at they titled the paper "A Study on Private Browsing: Consumer Usage, Knowledge, and Thoughts"

</comment><comment><USER20> This all seems likely to be true, but the source being Duck Duck Go calls the results & methodology into question. I'd love to see an independent researcher confirm these findings.

<comment><USER3> Hey there, DuckDuckGo employee here.

Would love to know why you feel our affiliation calls that into question?

In the the whitepaper we disclose the full methodology, and each statistic has a margin of error calculated and added in. Feel free to review it - we're happy to answer questions!

<comment><USER20> I have to confess I didn't see the link to the whitepaper in my first read through - shame on me for commenting before I did :) I think you all did a pretty good job putting this together overall after reading through it, and I applaud the effort. That said, the critical HNer in me sees some bias in the questions and answers. Specifics:

* The results on page 17 jumped out at me the most. There are 4 specific options for negative emotional reactions, and one generic positive option. It's easy to underestimate the powerful effect this has on pushing the responder to a specific answer. Imagine if your answer options were only "content, secure, informed, protected, neutral, misled" and how different your results might be.

* The question for the above, specifically the tone of "[...] does not offer any additional protection [...]" is also a form of leading the responder to an answer. While the statement is mostly true, there's some contention on the point esp. regarding cookies (see the other comments on this thread). Either way, you'd get a more honest answer if you strictly list the things private browsing does, and the things it does not do in a way that's as objective and incontrovertible as possible.

* It would be useful to see the benefits underlying the "correctly identified" category on page 13. I couldn't find those anywhere which was a bit suspicious.

In consulting, I used to survey users on their personal security practices (password strength, adherence to policies, secure disposal, etc.) and gained a huge appreciation for how powerful bias and misinterpretation can be in surveys, and how hard it is to control. But to reiterate, I think this is overall pretty well done and has some really interesting results, esp. the usage data in the first few sections.

<comment><USER3> Great questions and valid points. Every bit of data should be taken with a great of salt as no study is perfect. We've done the best possible to be statistically sound and disclose anything that may bias that.

Initially we started this survey out of our own interest so a few of those decisions are rooted from there.

1) Agreed, however we've already divided out the people who previously learned about private browsing. This leaves us with a cohort of users who have used private browsing, thought it protected them more and learned that it was wrong. It's very unlikely in any case that there would be positive emotions experienced. In our background research before the final survey we were only focusing on if users had a positive or negative experience. In this final major survey we wanted to get a better understanding of what those negative emotions were and so teased it out more.

I agree that a skewed set of options can bias a question but it is case-by- case. Example if I ask "how do you feel when your ice cream falls on the floor?" and the options are "Happy, Joyful, Amazing, Wonderful, Excited, Sad" you'll still likely pick sad.

2) A good point. This question is one that is linguistically challenging. We want to use phrases like "it _only_ does X" to stress limits, but those can be misinterpreted. I agree you may see some shift if you ask the question as a feature list, but I think in the question we're looking at it would still fall well within the margin of error. I'm curious to run some tests on it either way!

3) We didn't release those in the whitepaper as they were broken down by browser since each browser has different feature sets. We wanted to keep this report agnostic of browser. We're not looking to shame anyone, we're trying to support the conversation around the education gap for the average non- technical internet user. They are telling us they want more privacy, and don't feel that it is being provided or explained well enough.

Overall, I really appreciate the feedback - it is more important than ever to question and discuss the things we see online. Hope this sheds some light on why we made the various decisions we did! :)

</comment></comment></comment></comment><comment><USER21> As an attorney who does digital forensics, it's most certainly not

</comment><comment><USER22> Can the use of private browsing + a 3rd-party VPN at the same time be considered reasonably private?

</comment><comment><USER23> Sad that a DDG blog is on medium.com :/

<comment><USER24> What's wrong with Medium? I used to run my own blog software. I don't recommend it unless you really need to micromanage the implementation. Most people do not. This is why I let Medium handle all the intricacies of publishing my blog so I can just write.</comment></comment>


Things to use in Python 3 - <AUTHOR> https://datawhatnow.com/things-you-are-probably-not-using-in-python-3-but-should/ <comment><USER2> > __Type hinting (3.5+) __

> Static vs dynamic typing is a spicy topic in software engineering and almost > everyone has an opinion on it. I will let the reader decide when they should > write types, but I think you should at least know that Python 3 supports > type hints.

I think this gives readers the impression that type hints have anything to do with dynamic vs. static type systems, which isn't true. These are merely annotations that are attached to values. In fact, it's legal to use full strings as type annotations — they have no inherent semantic value.

You can _gain_ semantic value by using a tool like MyPy or an IDE like PyCharm, but the type annotations do not in themselves _do_ anything. I think it could be worth clarifying this for readers who are unaware.

<comment><USER3> The most underrated part of type annotations are so-called stub files [0], which allow you to keep your annotations separate from the actual code, thus reducing its size while still benefiting from the static analysis with mypy.

Unfortunately the IDE support for those files (.pyi extension) is quite limited -- I have even suggested to the PyCharm team to implement an option to automatically save all annotations to stub files, while still displaying them alongside the code in the editor.

[0] [https://www.python.org/dev/peps/pep-0484/#stub- files](https://www.python.org/dev/peps/pep-0484/#stub-files)

<comment><USER4> I'm sort of sad that Python has reinvented .h files.

<comment><USER5> Same here. Fortunately those files are entirely optional and apparently seldomly used, judging by the limited IDE support after 5 years.

</comment></comment></comment></comment><comment><USER6> F strings have been amazing in my everyday programming. I have been programming in Python for about 8 years now. I'd say some additions to this list are

      Conda for managing environments and Deep Learning builds such as Cuda on Ubuntu

      Jupyter notebooks for quick prototyping

      IPython if you have never seen it before.

      Requests Library

<comment><USER7> They just added a brand new feature in 3.8 that let's you just append = at the end for quick debugging:

>>> f'{5+5=}'

'5+5=10'

>>> foo = 5

>>> f'{foo=}'

'foo=5'

[https://docs.python.org/dev/whatsnew/3.8.html#f-strings- now-...](https://docs.python.org/dev/whatsnew/3.8.html#f-strings-now-support- for-quick-and-easy-debugging)

<comment><USER8> This just feels like another example of Python slowly creeping more esoteric syntax into the language, making it harder for beginners to approach the language.

<comment><USER9> Beginners don't have to know or touch any of this though. They can keep using normal strings until at some point they learn about f strings and see a need for them. You don't need to stop adding features to a language just because a beginner won't be able to learn everything. They don't need to.

<comment><USER10> I think the point is, a beginner coming across some code using such esoteric features is going to be a bit lost as to what's going on. With most of Python you can see what it's doing even if you didn't know the syntax before. That's true of basic f-strings, but not so much with some of this stuff.

<comment><USER11> Yeah languages are meant to be read even by beginners. I think a language like python shines by being small (in design) yet powerful (by capability). Having myriads of "nice for one use case" feature in the language is not the way forward. I long for the time where % format and .format are removed from the language spec. Even if they still work on the implementation for compatibility. Please remove things.

<comment><USER12> > Please remove things.

We're not done with Python 2 yet. This would be a Python 4 for sure. That's not according the philosophy of backward compatibility of Python (even if I agree with you).

<comment><USER11> Yes backward compatibility is not an option (lets avoid redoing python3 trauma ) and simply delegating coexistence of old and new features to implementation is a bit lazy. However documenting one way as the current one and other features as old ways, for backward compatibility can simplify things.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> I just want to thank the author for not using Medium.

Far too many tech blog posts use that platform now and I don't like it very at all as it feels really bloated and I can never be sure if what I'm about to click is a 'premium' Medium post or not.

<comment><USER14> I like that the article doesn't have generic meme images separating each paragraph.

<comment><USER15> A few years ago complaining about that would get you flagged. Now it gets upvoted.

<comment><USER16> I talked about not using it years ago on my YouTube channel and got a rash of shit. I've shown how to replicate that site in minutes as well.

</comment></comment></comment></comment><comment><USER17> In case anyone is stuck on older versions of Python for any reason, here are some backports of some of the listed features:

* f-strings: [https://github.com/asottile/future-fstrings](https://github.com/asottile/future-fstrings) (this is a pretty crazy hack, all the way to Python 2)

* pathlib: [https://pypi.org/project/pathlib2/](https://pypi.org/project/pathlib2/)

* typing: [https://pypi.org/project/typing/](https://pypi.org/project/typing/)

* enum: [https://pypi.org/project/enum34/](https://pypi.org/project/enum34/) (doesn't include any additions in 3.5+)

* functools.lru_cache: [https://github.com/jaraco/backports.functools_lru_cache](https://github.com/jaraco/backports.functools_lru_cache)

* dataclasses: [https://github.com/ericvsmith/dataclasses](https://github.com/ericvsmith/dataclasses) (3.6 only, requires ordered class __annotations__)

I'm half-expecting someone to come along with a hacked-up Python 2 backport for implicit namespace packages :)

<comment><USER18> With that in mind, the end for Python 2 is less than 8 months away.

Something fun to help people feel the "impending doom" and port their projects:

[https://pythonclock.org/](https://pythonclock.org/)

<comment><USER19> Python 2 is free software. Nobody and no proper subset of people can unilaterally end it. It ends when people stop using it, writing patches for it, and sharing those patches. There might be a lacuna of coordination when the current maintainers step down in 8 months, but the leftover stubborn Python 2 users will come up with some way to share their patches for, probably, decades.

</comment></comment></comment><comment><USER20> SimpleNamespace[0] is pretty handy too. It essentially lets you wrap a dictionary and access its keys as member properties.

Also, it's kind of weird that the article would mention type annotations and then not mention mypy[1].

[0] [https://docs.python.org/3/library/types.html?highlight=types...](https://docs.python.org/3/library/types.html?highlight=types#types.SimpleNamespace)

[1] [http://mypy-lang.org/](http://mypy-lang.org/)

<comment><USER21> Curious to see a small code sample illustrating typical usage of SimpleNamespace if you care to share? Docs didn't include one.

<comment><USER20> Here's one case I've used it for:

        foo = json.dumps({'a': 1, 'b': {'c': 2}}) # Pretend you've downloaded some JSON...
        bar = json.loads(foo, object_hook=lambda x: types.SimpleNamespace(**x))
        print(bar.a)
        print(bar.b.c)
        print(bar.b.d) # Error
        bar.b.d = 3
        print(bar.b.d) # Works now

I mean, you could pretty much do the same sort of thing with namedtuple, except this is mutable and doesn't require a pre-declaration of the keys. It's easier to write off the cuff.

<comment><USER21> Cool, thanks!

</comment></comment></comment></comment><comment><USER22> Originally small dynamic languages like Python and Javascript are constantly growing new language/stdlib features but rarely taking anything away. I wonder how this affects learnability, how long will it take for a programming newbie to be able to jump into an existing project or read other people's code. I guess this could be measured and studied, I wonder if someone has done it.

I think Python was probably at a pretty good local sweet spot in the complexity:power ratio around the 2.0 version.

<comment><USER23> Python is definitely heading down that dark path.

I wonder how many pythonistas are fully across all of the new syntax coming, like positional-only args or even the infamous assignment expression.

<comment><USER24> Yes! Python is getting less pythonic with each new version.

<comment><USER25> i prefer to see it the glass half-full way: the definition of pythonic continuosly evolves.

</comment></comment></comment></comment><comment><USER26> I'm training people in Python regularly and my classroom experience is: ALWAYS USE __INIT__.PY EVERYWHERE. Don't use this namespace feature. You think you understand how it works, but you don't. It will bite you.

<comment><USER27> Amen. Much as I wish python importing was as powerful as js, that ship has sailed and we're nowhere close to getting rid of the dunder-init file.

Also pathlib is .. urgh. This is one of those that shouldn't be in the stdlib. I don't get why it is, but requests isn't.

<comment><USER28> > Much as I wish python importing was as powerful as js

In what way is python importing less powerful than JS? My experience is very much the opposite (to the extent that JS even has an import _system_ ).

> I don't get why it is, but requests isn't.

Because pathlib was proposed (PEP 428), considered useful and self-contained.

The requests project does not want it to be included (this was discussed at length back in 2015), and it would require merging chardet and urllib3 into the stdlib first.

<comment><USER27> My post was unclear, it's fair that base JS doesn't have an import system; I was talking about ES6 imports.

And yes I'm aware _why_ requests isn't in the stdlib, but that doesn't make it "correct". And chardet should definitely be in the stdlib. I mean, ffs, `mimetypes` is in the stdlib. urllib3 is more contentious but honestly? It probably should be as well.

</comment></comment></comment></comment><comment><USER29> Beware lru_cache and mutable objects. I'm on a phone so this will probably contain an error but:

        @lru_cache
        def slow():
            return {"result": "immutable?}

        answer = slow()
        answer["result"] = "no"
        print(slow())

<comment><USER29> Can't edit now, but here's a runnable gist [https://gist.github.com/IanCal/d703106344e876728d2aaef67800d...](https://gist.github.com/IanCal/d703106344e876728d2aaef67800dfb8)

</comment></comment><comment><USER30> The "Implicit namespace packages" item is not correct. Those are for a a specific packaging scenario which doesn't come up in normal usage. Packages should have an __init__.py file in general.

<comment><USER31> If the file is going to be empty I fail to justify the effort. It is implicitly a package. Is there a case where an empty init file makes sense in Python 3?

<comment><USER32> Its absence distinguishes a non-package from a package.

</comment></comment></comment><comment><USER33> The example of f-string in the article is quite unfortunate, it suggests using it for logging messages. F-strings shouldn't be used in loggers, because they aren't lazy evaluated.

<comment><USER28> TBF for the vast majority of logging it doesn't really matter. Not to mention the laziness is only the (usually cheap) formatting itself. If you're logging the result of non-trivial expressions (which would otherwise not be computed at all) you have to handroll it.

f-strings are mostly unusable for translatable contexts. And format-strings also don't work then (they're a security issue).

<comment><USER33> I already experienced performance issue, just because log messages (millions/s) were evaluated, for logger in debug mode, so it really depends on the system.

</comment></comment></comment><comment><USER34> Wow, today I learned about f strings. That will make my code so much more readable! And no more annoying bugs because I skipped one of the seven references in the string!

<comment><USER35> It reads like sarcasm, but then you drop a real benefit. _((Confusion by New Order playing in the background))_

<comment><USER34> No it's true enthusiasm. The internet has just ruined ! For everyone. :)

<comment><USER35> Glad to hear you like it. As a fun fact (and self-back patting), it was I who braved the gauntlet at the python-ideas mailing list to get the idea accepted. Eric Smith did everything else so deserves the credit.

Background: turns out that the string prefix was the only ASCII syntax left in Python3, that's why it was chosen. The name "eff string" makes me cringe, but once it stuck there was no stopping it.

<comment><USER2> > it was I who braved the gauntlet at the python-ideas mailing list to get the > idea accepted

That explains why you're all over this post ;)

Fantastic feature, though. Really. Thanks!

Out of curiosity, what name would you have preferred over "f-strings"? "Format strings"? "Interpolation strings"? "I-will-evaluate-expressions-in-curly- braces strings"?

<comment><USER35> Well, I usually participate in Python threads. This post had only one part on f-strings.

What to call it? Anything I guess. String interpolation is what it is called elsewhere. But the f prefix is what everyone sees, though as mentioned, it is only an implementation detail because other forms of syntax were already spoken for. I personally chose f for "format."

Early on Guido changed the scope to include expressions as well. People were already starting to say "eff string" so I changed my proposal to "e-string" for "expression." I also like the sound of it better, sounds like email, etc. But Guido (and Eric) decided to stick with f. Maybe because Guido learned English later he doesn't realize how unfortunate it sounds. But, years later we use the "iPad" and forget it sounds like a feminine napkin. So, no big deal in the end.

</comment></comment></comment></comment></comment></comment><comment><USER36> Don't forget @singledispatch! Every once and a while this tool is glorious for a polymorphic handler. Ie, `process_entity` that will fan-out to `process_movie` or `process_tv_show` etc...

I miss it in a Python 2.7 project I am on right now.

Link to the docs: [https://docs.python.org/3/library/functools.html#functools.s...](https://docs.python.org/3/library/functools.html#functools.singledispatch)

It's the same concept as clojure's defmethod.

</comment><comment><USER37> Another useful feature of 3.7+ (also available as a backport by the same name) I've not seen mentioned is: ContextVars

The gist is you get a single interface for any type of threadlocal storage that also works with coroutines (asyncio). I use it pretty consistently for context logging of long running processes in our systems. However it has implications on other concurrency paradigms usages as well.

[https://docs.python.org/3/library/contextvars.html](https://docs.python.org/3/library/contextvars.html)

</comment><comment><USER38> >f-strings

What happened to "explicit is better than implicit"? "Only one way to do stuff"? One of the more baffling Python features if you ask me.

<comment><USER39> Exactly, the f-string syntax looks so close to PHP's way of handling strings that I'm really amazed that it managed to pass and be implemented. I mean, I don't see that much of a difference between

> name = 'Jane'

> print(f"Hello, {name}")

and PHP's:

> $name = "Jane";

> echo "Hello, $name";

<comment><USER40> PHP has many problems, but I always considered string handling one of PHP's strengths. Considering how PHP's string interpolation has gone mainstream I don't seem to be the only one:

PHP:

        print("Hello, $name")
        print("Hello, ${getName()})

Python:

        print(f"Hello, {name}")

C#

        Console.WriteLine($"Hello, {name}")

Javascript

        Console.Log(`Hello, ${name}`)

Ruby

        puts "Hello, #{name}"

etc.

<comment><USER41> Is that really PHP's, though? It's been in shell scripts and perl for quite a while...

<comment><USER40> That's an interesting question. I couldn't find any summary of the history of string interpolation. The first version of PHP in '94 had it. Bash predates that by 5 years and Perl by another 2, but I'm not sure about the initial feature set of either of those. The first POSIX standard for command interpreters is from 1992. I suspect the feature comes from early versions of csh in the early 80s.

However I think it's fair to credit PHP with introducing generations of programers to the idea.

<comment><USER42> Bourne shells as early as Version 7 Unix (1979, [1]) had rather elaborate interpolation of variables into strings (i.e., not just ${foo} but ${foo?bar}, etc.).

I'm reasonably sure that earlier versions of _sh_ had some facility for this as well.

So, it's not really a PHP innovation, although some people might have seen it first there.

[1] [https://www.in-ulm.de/~mascheck/bourne/v7/](https://www.in- ulm.de/~mascheck/bourne/v7/) -> "Parameter substitution"

<comment><USER40> Apparently Unix Version 6 (1975) used Thompson Shell which (provided the manuals are correct [1][2]) didn't support arbitrary variables (and even environment variables were not a thing back then). However for use in scripts $0, $1, etc were replaces with the script name and the arguments.

1: [https://www.in-ulm.de/~mascheck/bourne/v6/](https://www.in- ulm.de/~mascheck/bourne/v6/)

2: [https://etsh.nl/man/_tsh.1.html](https://etsh.nl/man/_tsh.1.html)

</comment></comment></comment></comment></comment></comment></comment><comment><USER43> 1\. f-string and extended-iterable-unpacking reminds ruby. i was really missing them.

2\. pathlib is cool. will come pretty handy.

3\. Data classes sounds good but there should be only one way to do things, even you end up writing few more lines.

4\. type-hints are ok for very very big projects.

5\. No comment on implicit-namespace-packages yet as still trying to understand solid use-case.

<comment><USER2> > Data classes sounds good but there should be only one way to do things

Dataclasses greatly simplify generation of simple classes which are unnecessarily filled with boilerplate. I'd argue that they _are_ the one way to do this, and that choosing to manually implement the same naive `__init__` function for every _simple_ class you write is the "wrong" way.

(Here I take "simple class" to mean a class which takes in some values during initialization and stores them without anything terribly interesting going on during that initialization. A simple class can have methods defined on it, though.)

> type-hints are ok for very very big projects.

D:

> No comment on implicit-namespace-packages yet as still trying to understand > solid use-case.

I think it's just... trying to keep your directories "clean"? I also don't really understand the use of this haha.

<comment><USER43> > Dataclasses greatly simplify generation of simple classes which are > unnecessarily filled with boilerplate

I would love to solve these boilerplate kinds of problems using plugging like emmets. Magic like this feels good when writing but troubles during debugging and customizing.

Additionally naive programmers always use such features in wrong situation if they don't get use-case. I really feel sad after seeing so much bad-django- code in production.

</comment></comment></comment><comment><USER44> importlib.resources is an excellent replacement for pkg_resources.

with importlib.resources.open_binary('my.package', 'foo.png') as f: ...

Avoids the overhead of importing pkg_resources, and hassle of having to call cleanup_resources before the interpreter shuts down. Backports are available for Python <= 3.6 too!

</comment><comment><USER45> I'm by no means a hardcore python dev but I feel like these are all pretty basic, common things. No?

<comment><USER34> They're basic but also things you'd never look up, especially if you've been doing python a long time.

For example, I just learned about f strings, because why would I need to ever look up if there is a replacement for .format()?

And the LRU cache. I've been hand rolling that for years, but I never thought to see if they had added it to the standard library, because why would I look?

<comment><USER35> It pays to look thru the stdlib every so often, there is just so much there, and plenty of dark corners (in the Warcraft sense) to look in.

I hand rolled stuff in itertools/functools for years before discovering them.... collections Counter, etc.

Or how about str.partition instead of try: str.split() ?

<comment><USER46> On a related note, every couple of years I make an effort to man page every cli tool I use, and re-read the man page, just in case. Most times I discover there is some argument that I've missed before in a tool (or has been added in the intervening time)

<comment><USER34> When my dad sold cars he'd always tell his customers to read the car manual again after six months for the same reason.

</comment></comment></comment></comment></comment><comment><USER47> TIL - Enum, auto(), @dataclass, and that classes don't need (object) anymore. Neat!

<comment><USER2> EDIT: nope, nope, this is all wrong. My mistake. Ignore everything else here.

> classes don't need (object) anymore

My friend, old-style classes became unnecessary with the release of Python 2.2 — almost 20 years ago now [0]. I'm afraid you've been living in the past. :)

[0] [https://wiki.python.org/moin/NewClassVsClassicClass](https://wiki.python.org/moin/NewClassVsClassicClass)

<comment><USER37> Extending `object` was necessary until 2.7 when it became the default and old style classes were removed entirely in 3. So I think while the GP comment recently learned they don't need to extend `object` anymore, they are/were familiar with new style vs old style classes.

<comment><USER17> New-style classes never became the default in Python 2:

        Python 2.7.15 (default, Jun 27 2018, 13:05:28)
        [GCC 8.1.1 20180531] on linux2
        Type "help", "copyright", "credits" or "license" for more information.
        >>> class Foo:
        ...   pass
        ...
        >>> Foo
        <class __main__.Foo at 0x6218e384ee88>
        >>> class Bar(object):
        ...   pass
        ...
        >>> Bar
        <class '__main__.Bar'>
        >>> isinstance(Bar, type)
        True
        >>> isinstance(Foo, type)
        False

<comment><USER37> Thank you for the correction! I've not used Py2 in 6 or so years.

</comment></comment></comment></comment></comment><comment><USER16> You can now use Python Scrapy with the latest versions of Python 3 for web scraping. Here's an example [https://youtu.be/qj6H38Xwvu0](https://youtu.be/qj6H38Xwvu0)

It even works on Windows.

</comment><comment><USER48> I would add to this list:

      * generators
      * defaultdict
      * generators
      * sets

<comment><USER49> Generators and sets have been around for a long time I think.

They were there in 2.X version like 9-10 years ago when I first used Python anyway and aren't 3 specific.

<comment><USER50> Generators were added in Python 2.2: [https://docs.python.org/2/whatsnew/2.2.html#pep-255-simple-g...](https://docs.python.org/2/whatsnew/2.2.html#pep-255-simple- generators)

Built-in set objects were added in Python 2.4: [https://docs.python.org/2/whatsnew/2.4.html#pep-218-built- in...](https://docs.python.org/2/whatsnew/2.4.html#pep-218-built-in-set- objects)

defaultdict was added in Python 2.5: [https://docs.python.org/2/library/collections.html#collectio...](https://docs.python.org/2/library/collections.html#collections.defaultdict)

</comment></comment></comment><comment><USER51> Is type hinting being adopted by Pythonistas today? I've been aware of the feature but haven't used it. To be a modern Python programmer, should I start using it?

<comment><USER2> I use it everywhere because it vastly improves code readability/usability in my IDE (PyCharm). But I don't know if I'm representative of the general Python population.

</comment></comment><comment><USER52> I was curious to see how asyncio has matured into such a list.. but it was missing the list. Is it common enough for people to use in scripts to speed up concurrent work yet?

<comment><USER53> Anecdotally, no. From where I sit, the multiprocessing and threading modules still seem to be the main way to to concurrency in python.

<comment><USER54> From where I sit (I've been soloing python projects for a few months now) For IO-blocking tasks, asyncio is the way to go and threading is very rarely needed if any. It is very simple to place a bunch of tasks into a list and do asyncio.gather on them, or add timeouts to async methods.

For CPU intensive tasks, asyncio actually provides it's own syntax for process pools which are easily interchangeable with thread pools (just change an import alias)

<comment><USER55> We actually tried switching to asyncio in production, but got worse cpu utilisation and worse latency (vs greenlet). After some benchmarking and tuning, we got a bit better latency, but CPU utilisation was still worse, so we actually ended up swithcing back to just using greenlet :(

<comment><USER54> I would not recommend using asyncio for cpu-intensive tasks. Processing pools are much better for that.

</comment></comment></comment></comment></comment><comment><USER56> Not sure anyone will see this but this article is partly trash. When your post is titled "things you are not using in python3 but probably should" and the first section is on f-strings... I was tempted to close the tab then , but i followed thru and did find some interesting things.

But seriously f-strings? people have been talking about these for years now, it's not new is it?

<comment><USER2> If you look through the other comments here, you'll find plenty of people who didn't know about f-strings prior to this article.

</comment></comment><comment><USER57> I didn't start using python til 3, but list comprehensions and f-strings are great. I've really been enjoying the coding style.

</comment><comment><USER58> Here is another short guide on many useful features of Python 3: [https://github.com/arogozhnikov/python3_with_pleasure](https://github.com/arogozhnikov/python3_with_pleasure)

</comment><comment><USER59> I really hate that __init__.py thing about modules it confuses the F out of teachers and students. Using files without a "program" on the command line is a massive leap as it is.

</comment><comment><USER60> I read quite some things about the data class... in short: If I use a lot of pandas.DataFrames, is this something I should learn about?

<comment><USER61> No. Data classes are a mutable replacement for collections.namedtuple.

<comment><USER60> Thanx!

</comment></comment></comment><comment><USER62> How do you define class variable in a data class?

<comment><USER63> typing.ClassVar. See [https://docs.python.org/3/library/dataclasses.html#class- var...](https://docs.python.org/3/library/dataclasses.html#class-variables)

</comment></comment><comment><USER64> Thanks for all these.

</comment><comment><USER65> There's no reason why Python 2 can't have the vast majority of these features. It's a shame that the Python continues to ignore the reality of the mess they made with Python 3, and failing to question what was an originally bad idea.

<comment><USER66> This question is done and dusted. There's literally no point in discussing it any more. CPython 2.7 support ends in 7 months. It's time to move on.

<comment><USER65> > There's literally no point in discussing it any more. CPython 2.7 support > ends in 7 months. It's time to move on.

Ah, the classic "nothing to see here, keep moving on" argument. The lack of admission of a bad idea is itself a problem. What happens in a few years when Python 4 renders all Python 3 code incompatible?

<comment><USER2> > What happens in a few years when Python 4 renders all Python 3 code > incompatible?

Ah, the classic "they did it once so they'll definitely do it every single time from now on" argument.

Nick Coghlan, one of the Python core developers, said "Python 4.0 will merely be "the release that comes after Python 3.9"" [0], so I think your concerns are ill-based.

[0] [https://www.curiousefficiency.org/posts/2014/08/python-4000....](https://www.curiousefficiency.org/posts/2014/08/python-4000.html)

<comment><USER35> Not to mention some of us are glad lots of things got fixed and not sore in the slightest.

<comment><USER65> > Not to mention some of us are glad lots of things got fixed and not sore in > the slightest.

The people who are not "sore in the slightest" probably don't have to deal with large Python 2 codebases that rely on libraries that have no plan to move to Python 3. They are typically people who are writing code from scratch.

Rendering a huge codebase obsolete in order to upgrade print statements, import statements, and internationalization (i.e., unicode) was not a fair trade for many existing projects.

<comment><USER35> Been writing Python since roughly 2000.

My stuff was not overly concerned with encodings, that part was luck. I moved to the logging module early, avoiding print problems, that was smart. Other changes were trivial mechanical fixes, that was easy.

For the unlucky, obtuse, or resource challenged, you've had an extra ten years of support. That's sufficient IMHO. It is time to suck it up and port, or retire the app. Constant bitching just gets old.

Meanwhile, I'm using a great language that will be relevant for years.</comment></comment></comment></comment></comment></comment></comment>


Adobe CS3 Configurator: Should your product lineup really require something like this? - <AUTHOR> http://blog.thebigreason.com/cs3-configurator/index.php <comment><AUTHOR> No offense to John Nack (Photoshop PM), but seriously, what were they thinking?</comment>


Why Scientific Fraud is on the Rise - <AUTHOR> http://thefastertimes.com/healthinvestigations/2009/12/04/why-scientific-fraud-is-on-the-rise/

<comment><USER2> >a fourth reason is an appalling lack of enforcement by federal and state agencies that are supposed to monitoring scientific misconduct. According to The New York Times, a new Congressional report shows that the FDA takes years to investigate researchers accused of scientific fraud, which means that many of these scientists remain eligible to conduct research

Riiight. Like the gov't's witch-hunt against a researcher, Thereza Imanishi- Kari, [http://en.wikipedia.org/wiki/David_Baltimore#Imanishi- Kari_c...](http://en.wikipedia.org/wiki/David_Baltimore#Imanishi-Kari_case) , and documented more extensively in Kevles book, "The Baltimore Case".

</comment><comment><USER3> This article is a complete waste of time. It follows the same pattern as the exploitative "Violence is on the rise!" articles we see in the mainstream news.

There's no examination of the fact that the number of scientists has exploded, or that information sharing and public access to research are going through a revolution, and absolutely no consideration of the wider problem of the public's lack of understanding of science and the dismal state of science journalism.

</comment><comment><USER4> > ... research shows an increase in the incidence of data manipulation in > published papers ....

This does not necessarily mean that scientific fraud is on the rise, only that a particular kind of fraud is on the rise. Is it possible that dishonest scientists are simply turning more to data manipulation than to other kinds of fraud? (And how would one tell?)

</comment><comment><USER5> Maybe because more??? people draw bold conclusions from insufficient data sources (one expert interview + own reasoning) just to get that damn (blog) article published?

<comment><USER6> The presence of one expert + reasoning would put this in the top .01% of all blog posts, by my reckoning.

</comment></comment><comment><USER7> _A third reason Garner didn't mention is the increasing commercialization of science and medicine, which has spawned an army of researchers on the take from health product companies._

Science is a method of discovering truth about the natural world despite human imperfections, misperceptions, and (more rarely) malevolence and fraud. It's a process-- a system, if you will-- and one that few human cultures have been able to implement.

Science requires a certain outcome-indifference. This is why it's hard-to- impossible to study questions such as life after death (a universal concern where everyone cares deeply about the answer) or whether there's a God. On the other hand, one can scientifically study the mechanics of how the body dies, because for most people, having the correct answer is more important than what the answer (e.g. the precise biological processes through which it happens) is.

The problem is that science, as a system, is under attack from commercial pressures as well as the rapid pace of technological society. Technology and industry continue to advance, but the regulation and verification of knowledge (e.g. science) is being backlogged a bit, which allows a lot of fraud to get through. Tack on the pressures on the individual to remain employed or get tenure, and you get scientific fraud.

<comment><USER8> The reason why God and the afterlife are impossible to study scientifically is because they are unfalsifiable hypotheses, not because of anyone's attitude toward them.

<comment><USER7> Also true, and more correct than my claim from a philosophy-of-science perspective. I am taking the science-as-process perspective.</comment></comment></comment>


Edgy, Yet Still Aerodynamic - <AUTHOR> http://www.nytimes.com/2008/12/21/automobiles/21AERO.html?8dpc=&_r=1&pagewanted=all <comment><USER2> Hard edges release flow, soft edges hold flow. Surfboard builders have known this for 30 years. Why are car designers so far behind?</comment>


EveryDNS sold to Dyn Inc. - <AUTHOR> http://www.dyn.com/everydns-aquisition

<comment><USER2> I've been using EveryDNS for over five years now. Great service. Frankly I'm torn because David deserves lots of credit and to do with the service whatever he wants. I just hope this isn't a quick buy and turn for DynDns.

They are obviously a for-profit company, did an ROI calculation, and there are probably limited options for monetizing their acquisition without charging customers for things they used to get for free.

As Dharmesh would say, if I were a betting man, and I am, I'd give two to one odds they start charging for services that are currently free in the next eighteen months.

This, of course, would open up the opportunity for someone to fly in underneath them. They probably expect that, but of course in the short term there will be a win because it will take time for that person to get the word out.

So I whipped up a quick weebly site: <http://everydnsforever.weebly.com/>

Submit your email address there if you'd like to get one email if and only if (a) EveryDNS becomes less free than it is today, and (b) a credible, great, free service is created in EveryDNS's place.

(By making this site I am hoping to do my part to increase the cost to Dyn Inc. of changing EveryDNS. Thanks!)

(Edit: grammar.)

<comment><USER2> Update: thanks to rbritton it seems like <http://freedns.afraid.org> is a good alternative.

So, if you sign up you'll probably just get a link to <http://freedns.afraid.org> if/when EveryDNS changes some or all of its services to paid only.

<comment><USER3> while there are many such free services I have found, I've still not managed to find one that supports the addition of reverse dns lookups. anyone aware of such as sevice?

</comment></comment></comment><comment><USER4> I think Dyn will make a good parent. We started using their "enterprise" DNS service Dynect recently and it's very good. Highly reliable, great UI, polished product. I've been using EveryDNS for personal stuff for years and am happy to see it get more attention.

</comment><comment><USER5> Congrats davidu!

<comment><USER6> Thanks. 9 years is a long time to run a service, and I'm happy to fully focus my efforts at OpenDNS and some non-DNS related interests I have (yes, I have them).

</comment></comment><comment><USER7> David,

Am I supposed to move my 15 domains now? What's gonna happen?

<comment><USER8> From <http://www.everydns.com/acquisition.php>:

 _1) Will my DNS service be interrupted?

Absolutely not. While we're working to transition services over to the Dyn infrastructure, we will do everything possible to ensure it's a seamless and painless transition for you.

2) Do I have to do anything or make any changes?

Nope. You will be given plenty of notice if you have to do anything. But in the short term, nothing is changing.

3) Will the service remain free?

While we don't 100% have the answer to that yet, we will not be making any changes to the service you are currently receiving for the foreseeable future. We will be discontinuing signups in the near future but existing accounts will remain active and fully functional._

<comment><USER9> Discontinuing signups = first step in migrating to paid-only.

If they're admitting they'll be discontinuing signups _now_ , then paid-only service is, at most, 6-12 months away.

</comment></comment></comment><comment><USER10> Are there any alternatives?

I highly doubt DynDNS would let EveryDNS remain free when it would cannibalize their own $30 a year/domain business model,

<comment><USER11> <http://freedns.afraid.org>

<comment><USER12> fyi, freedns won't allow you to set mx records pointing away from your domain, so (for instance) you can't use google apps for your domain.

<comment><USER12> belay that, it was just a confusing error message. fyi, don't leave a trailing '.' on the mx records (even though google explicitly instructs you to).

</comment></comment></comment></comment><comment><AUTHOR> I learned about this from E-mail sent to me from EveryDNS; I have several domains managed there. The mail said that the creators of EveryDNS were familiar with Dyn and thought of well of them, so I'm trying to be optimistic.

</comment><comment><USER11> DynDNS is my registrar of choice, and they do a very good job of making management easy. However, their DNS services are most definitely NOT free as is EveryDNS. It'll be interesting to see if that changes or not.

</comment><comment><USER13> I hope EveryDNS keeps it's dead simple interface and doesn't get integrated with Dyn...

Some more info <http://www.everydns.com/acquisition.php>

</comment><comment><USER14> I might be missing something here, but isn't David Ulevitch affiliated with OpenDNS which should be more than capable of running everydns? Its maybe not their primary function, but its pretty close.

<comment><USER6> I'm CEO of OpenDNS and wanted to put the overly neglected EveryDNS service in more capable hands.

Simply adopting it into OpenDNS didn't make sense for all kinds of strategic and positioning reasons, amongst others.

</comment></comment><comment><USER15> Now somebody will actually respond to support requests for the first time in years!

<comment><USER16> That doesn't jive with my experiences with EveryDNS. Only recently based on a random tweet (not directed at him) David contacted me offering to bulk change the master for a stack of zones.</comment></comment>


France Is Still Cleaning Up Marie Curie's Nuclear Waste - <AUTHOR> https://www.bloomberg.com/news/articles/2019-08-28/france-is-still-cleaning-up-marie-curie-s-nuclear-waste <comment><USER2> > says Yannick Rousselet, a Greenpeace campaign leader.

Respectable publications should stop quoting Greenpeace. In my mind, Greenpeace is really close to anti-vaxxers through their opposition of nuclear power and especially GMO foods such as Golden Rice which would save thousands of children's lives every year. In regards to nuclear power, it it had not been for the stringent opposition to nuclear power over the years, a much larger percentage of our power generation would be carbon free.

[https://slate.com/technology/2013/08/golden-rice-attack- in-p...](https://slate.com/technology/2013/08/golden-rice-attack-in- philippines-anti-gmo-activists-lie-about-protest-and-safety.html)

<comment><USER3> I grew up near Chernobyl and my parents still work there. A lot of what people see in the media about nuclear is fear mongering lies. The recent "documentaries" on this topic further delays any progress on fighting global warming.

<comment><USER4> Opposition to carbon tax is the real blocker to rapid progress, more nuclear power ranks in the "nice to have" list.

<comment><USER3> carbon tax is a great idea. But we still need to get clean energy from somewhere. Reducing (energy) consumption is not a long term answer

<comment><USER4> The sun is a more logical source if you talk long term, the sun is likely to destroy the earth before it stops being a viable source of energy.

Meanwhile nuclear uses up finite stores of fuel and exotic materials for the containment and control systems.

<comment><USER5> It's not quite that simple, to harvest the sun you need machines, and those machines take a lot of resources to built.

You need to calculate the trade-offs of those resources vs resources used for other types of energy. The "sun" part of the question is the least interesting part.

<comment><USER6> The CO2 in the production, transport and installation of solar panels leads to an equivalent CO2 output of 50g per kWh. This compares to 975g per kWh for coal. Solar still wins.

[https://www.mnn.com/green-tech/research- innovations/blogs/ho...](https://www.mnn.com/green-tech/research- innovations/blogs/how-much-co2-does-one-solar-panel-create)

I'm currently building a house quite north at 55N. I plan to install a solar PV system that will make the house a net-zero energy consumer (everything is electric, no fossil fuels).

It should pay for itself in around 10 years and then continue producing electricity for another 15 before warranties run out. After that the electrical equipment may need to be replaced, but the panels themselves should be fine. If it makes sense here, it can make sense almost anywhere.

<comment><USER5> > leads to an equivalent CO2 output of 50g per kWh

Like I said, it's not so simple, nuclear is 66 g/kWh, and does not have intermittency issues.

> that will make the house a net-zero energy consumer (everything is electric, > no fossil fuels).

Are you heating with electricity as well? Because that's really bad for the environment, even with PV. (Because if you heated with natural gas, you could send your PV electricity to another grid consumer and avoid more hydrocarbon fuel being burned.)

If yes, are you at least using a ground-source heat pump? (Although even there natural gas is better - install a "gas absorption heat pump" if you really want to minimize your emissions.)

> If it makes sense here, it can make sense almost anywhere.

In small quantities yes, but if everyone did that you need something to generate electricity at night.

To me nuclear wins easily.

<comment><USER6> Oops I somehow read your comment as advocating for continued fossil fuel for electricity generation. Yes if the choice is between solar or nuclear, then yes nuclear is definately the better option.

We are going for an air source heat pump. A ground source heat pump will need bore holes to be drilled as there isn't enough space for ground loops, and the extra cost of that doesn't offset the decreased efficiency of the air source heat pump over the life of the system. The heat pump will primarily run when PV is generating more power than the rest of the house is consuming, and store heated water in a tank for consumption at night.

We are building to Passive House standards. Space heating from the heat pump will use a maximum 1000kWh of electriciy per year (worst case assuming we get a long stretch of cold days below the operating temperature of the heat pump, and it has to fall back to resistance heating), while the PV should output around 9000kWh. We'll also have a wood stove as backup, but that will generate too much heat for primary heating.

Net-zero isn't perfect as you say, but for the few winter months when we probably won't generate enough electricity to cover heating consumption I don't think it's that bad. Electricity generation in my country has an average of 300g CO2/kWh.

I'd prefer not to use gas as our country imports gas from Russia, and I'd rather not depend on them. Plus gas leakage has a massive impact on ghg.

We are in the late planning stages, so if you have any suggestions of further reading material please let me know :-)

<comment><USER5> Only suggestions I have is reconsider not running a natural gas line. Cooking on electricity is not great, and wood is really bad for pollution.

I understand the Russia situation, but geopolitics changes all the time, and the house is likely to stand for a long time.

Since you seem to be in Europe, and you want an air source heat pump, I would suggest this product for your heating: Lochinvar LCGHPi-40HT.

Then instead of using your electricity to (inefficiently) run a heat pump, send the electricity back out on the grid, while using more efficient natural gas. And then you help CO2 emissions in a more globally way, rather than just by your house. CO2 acts globally after all.

Even with the gas leakage, natural gas is still worth it over heating with electricity. I think you have something like 1/5 the emissions of electricity (and remember your PV going back on the grid reduces fuel consumption elsewhere).

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> It's interesting that the lab is so radioactive and such, but it feels like this article's main goal is to increase anti-nuclear sentiment.

</comment><comment><USER8> Maybe this is a dumb question, but why can't nuclear waste be diluted? You get U-235 though enrichment of naturally occurring uranium. Why is there no way to reverse this process?

<comment><USER5> You can dilute uranium that way. The issue is the radioactive material is all other place, not concentrated. You need to dilute cements and wood, and paper, and glass, and other materials the lab is made from.

<comment><USER9> Also, this is _Marie Curie 's workshop_.

I hope to god the goal of any remediation is in the service of conserving the site and the artifacts for their historical value. If Marie Curie's notebooks eventually end up encased in concrete somewhere "because they're contaminated"\--

<comment><USER5> > If Marie Curie's notebooks eventually end up encased in concrete somewhere > "because they're contaminated"

They are in fact contaminated, so they are kept in lead lined boxes:

[https://www.csmonitor.com/Technology/Horizons/2011/1107/Mari...](https://www.csmonitor.com/Technology/Horizons/2011/1107/Marie- Curie-Why-her-papers-are-still-radioactive)

</comment></comment></comment></comment><comment><USER10> Article seems long on fearmongering and short on objectively measured facts.

> _" But radium has a half-life of 1,600 years, and there are traces of a > uranium isotope at the Curie annex with a half-life of 4.5 billion years."_

This is the extent of the numeric data. Probably from Wikipedia. There are traces of uranium isotope in the asphalt of your parking lot.

> _" A 1997 study concluded that pedestrians and residents of apartments just > a few feet from the perimeter wall aren't at risk of radiation poisoning, > but officials say the place remains a hazard."_

In other words, the site is completely safe, as long as no one goes inside, kicks up dust, and breathes it in.

<comment><USER11> What if there's a fire?

<comment><USER10> Keep the firefighters out. Let it burn. Evacuate a radius plus the downwind plume. Test for radiation before allowing people back in.

What if the whole facility is broken down and packed into drums, and the truck shipping some of them overturns on the highway?

The known flaw has a simple, well-known workaround. It's "don't do that". Attempting a fix has the potential to introduce additional unknown flaws.

The fact that France is doing a site cleaning now is perhaps a testament to the dwindling size of their low-level nuclear waste site cleaning backlog? AFAIK, their Hague processing facility only uses half its capacity on waste from their ~95 energy reactors, and takes waste from other countries to pick up some of the slack. A cleanup like this can keep it operating without having to mothball excess capacity.

</comment></comment></comment><comment><USER5> > There's no lasting solution for the most dangerous refuse from the country's > 906 nuclear waste sites

That is simply untrue.

If you combine [https://en.wikipedia.org/wiki/Nuclear_reprocessing](https://en.wikipedia.org/wiki/Nuclear_reprocessing) with a [https://en.wikipedia.org/wiki/Breeder_reactor](https://en.wikipedia.org/wiki/Breeder_reactor) you can burn up all the dangerous isotopes and safely use their energy.

You only need to store it for around 100 years, after which the radioactivity is very low.

It's an economics problem, not a physics one.

<comment><USER12> A political problem. The economics isn't even really an issue since it makes more sense logically on a long term investment schedule.

</comment></comment><comment><USER13> Can't they not put some of the waste into containment barrels and stow them somewhere?

<comment><USER14> Where do you stow those barrels safely? Permanent storage of nuclear waste is a tricky situation. You essentially need a very geologically inactive area away from people but can also be properly secured against thieves.

<comment><USER15> Fling them into space I guess... ;)

<comment><USER16> It wouldn't be nice if in an human exploration on outer space we find a container full of unknown harmful waste from another civilization. That shouldn't be our first option.

<comment><USER17> > It wouldn't be nice if in an human exploration on outer space we find a > container full of unknown harmful waste from another civilization.

The unshielded fusion reactor which we orbit around is likely to be a bigger problem.

</comment></comment></comment></comment></comment><comment><USER18> >But it's brimming with radioactivity that will be a health threat for millennia

Millennia is a stretch to say the least... I figure we'll have a solution long before then, as long as science is being done.

<comment><USER19> Meanwhile, coal-burning plants are still pumping toxic heavy metals into the atmosphere (to say nothing of the CO2), which will be a health threat for eternity. But for some reason nobody mentions how long chemical waste lasts for.

<comment><USER20> Coal generates appreciable amounts of radioactive waste as well:

 _In fact, the fly ash emitted by a power plant—a by-product from burning coal for electricity—carries into the surrounding environment 100 times more radiation than a nuclear power plant producing the same amount of energy... (As a general clarification, ounce for ounce, coal ash released from a power plant delivers more radiation than nuclear waste shielded via water or dry cask storage.)_

[https://www.scientificamerican.com/article/coal-ash-is- more-...](https://www.scientificamerican.com/article/coal-ash-is-more- radioactive-than-nuclear-waste/)

I'm not a huge proponent of nuclear power generation—I'd much rather we focus on renewables (especially solar) and storage technology—but if we're going to have radioactive pollution from power generation, I'd much rather it also be carbon neutral. That's ignoring coal's many other environmental deficiencies (mountaintop removal comes immediately to mind).

</comment></comment></comment><comment><USER21> The article seems full of FUD to me.

Today, nuclear power plants are _so_ much more advanced, safer and can even recycle their used nuclear fuel. See the PRISM[1] reactor, for example.

[1] [https://nuclear.gepower.com/build-a- plant/products/nuclear-p...](https://nuclear.gepower.com/build-a- plant/products/nuclear-power-plants-overview/prism1)

<comment><USER22> Not 100% is recycled and some of the leftovers will be dangerous for thousands of years.

It is 2019 and neither the U.S., the U.K., France nor Switzerland have started to dispose (= bury) their waste.

<comment><USER23> And yet people don't freak out over dumping radioactive materials _into the atmosphere_ , which is what coal power plants do.

</comment></comment></comment><comment><USER24> I dislike the practice of overselling historical figures because they happen to have been female or other downtrodden du jour, but this seems to be the opposite phenomenon. Why blame just Marie?</comment>


Yandex, Google's Russian Rival, Is Twitter's New Real-Time Search Partner - <AUTHOR> http://techcrunch.com/2012/02/20/yandex-googles-russian-rival-is-twitters-newest-real-time-search-partner/ <comment><USER2> Nice to see that there are still markets where Google doesn't have a monopoly.

<comment><USER3> If you're interested in more info, here's Ilya Segalovich's talk about the journey of Yandex: [http://www.seedcamp.com/resources/the-yandex-story-with- ilya...](http://www.seedcamp.com/resources/the-yandex-story-with-ilya- segalovich-seedcamp-week-2011)

(Ilya is the co-founder and CTO of Yandex, and a very nice person).

</comment></comment><comment><USER4> Nice to see that a web.py site will be Twitter's search partner. Looking forward on how they will scale it. webpy.org

<comment><USER5> I'm sure this service is not a web.py project. Yandex uses its own home-grown technologies for projects like this.

Web.py is probably used mostly for intranet services.

</comment></comment><comment><USER6> Can someone explain why TC labeled this story with "EU" ?

<comment><USER7> Well, the majority of Russia's population does reside on the European continent.

<comment><USER3> Equating EU with Europe is a common fallacy.

EU is a political entity (recent), Europe a geographical entity (ancient). There is an overlap of people who live within both, but that's not the case with Russia.

<comment><USER7> I simply understood the EU label on that TechCrunch page to refer to Europe, not the political entity. I don't think that's an unreasonable way to read it in a journalistic context. There is no other readily available shorthand for referring to the continent, particularly since EUR refers to the currency.

</comment></comment></comment></comment><comment><USER8> Yandex = FSB (former KGB)

why?

An oversimplification, yes, but people should be more careful. Current security services in Russia haven't really changed much since the Soviet times, except they are more "capitalistic" in their motivations. Actually, the top people are all former officers of the Soviet apparatus, except now they have a bigger taste not only for power, but for money too.

There is no big company in Russia that wouldn't need "protection" from the services and in result wouldn't share its profits and wouldn't do the services' bidding. For instance, if Yandex has any preferential access to Twitter servers or data, you can be sure the FSB has it too. And Russian security services are no benevolent protector of Russian citizens. They are effectively an organized crime network, acting with impunity at home and with state resources abroad.

For further research, I encourage everyone to google: russia mafia state. And only go to credible sources, like The Economist and The Guardian.

<comment><USER9> > Yandex = FSB (former KGB)

Can you show us some evidence?

<comment><USER8> Can you please read my comment in full?

Evidence of what? I've said immediately below that it's an oversimplification, as you must obviously realize, intended to catch peoples' attention?

Or do you want me to provide evidence that:

\- Yandex is a significant Russian firm (possibly biggest in terms of foreign investments in IT)

\- Russian state, and security services in particular, can easily exercise almost any kind of control on any Russian business (and put those who resist in jail on made up accusations)

\- Russian security services are highly corrupt, interlinked with organized crime, and pursuant of their own self interests.

For that you just need to read a bit on the topics. And again, not some conspiracy hallucinations, but the most credible sources of journalism.

(Or perhaps you're one of those people, who think that Litvinenko died from food poisoning? ;)

<comment><USER9> Saying "Yandex = FSB (former KGB)" is different from saying that "Yandex is a Russian company. Russian companies rely on the Russian State. The Russian State is corrupt and linked to Russian security services."

> (Or perhaps you're one of those people, who think that Litvinenko died from > food poisoning? ;)

 _Yawn_.</comment></comment></comment></comment>


A new approach to making airplane parts, minus the infrastructure - <AUTHOR> http://news.mit.edu/2020/carbon-nanotubes-making-airplane-aerospace-parts-1013 <comment><USER2> If it eventually makes into production, this is going to be BIG. It should drastically reduce cost of manufacture of composite parts. Albeit it seems like new approach will not be applicable for entusiast use since it requires custom setup for particular part.

> "Instead of placing layers of material inside an oven to cure, the > researchers essentially wrapped them in an ultrathin film of carbon > nanotubes (CNTs). When they applied an electric current to the film, the > CNTs, like a nanoscale electric blanket, quickly generated heat, causing the > materials within to cure and fuse together.

With this out-of-oven, or OoO, technique, the team was able to produce composites as strong as the materials made in conventional airplane manufacturing ovens, using only 1 percent of the energy."

<comment><USER3> I hope that isn't a case of "we managed to avoid using a little bit of cheap energy by the application of a lot of expensive exotic carbon nanotubes."

<comment><USER4> The lower energy consumption is a fringe benefit. The main benefit they're pursuing is drastically reduced equipment size/cost:

 _"If you're making a primary structure like a fuselage or wing, you need to build a pressure vessel, or autoclave, the size of a two- or three-story building, which itself requires time and money to pressurize," says Brian Wardle, professor of aeronautics and astronautics at MIT. "These things are massive pieces of infrastructure. Now we can make primary structure materials without autoclave pressure, so we can get rid of all that infrastructure."_

<comment><USER5> If you're building a fuselage or wing, you need big infrastructure anyway. Boeing's composite wing factory is 1.2 million square feet.</comment></comment></comment></comment>


Is Facebook attacked earlier than Anonymous said? - <AUTHOR>

<comment><AUTHOR> Loads quite slow...</comment>


A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services [pdf] - <AUTHOR> http://research.microsoft.com/pubs/212001/Catapult_ISCA_2014.pdf

<comment><USER2> This looks really interesting from a quick skim. Also, it appears that their initial prototypes were built using Xilinx's Virtex FPGAs but the final model was built on Altera's Stratix V D5. I wonder what prompted the change - speed/power/amount of available logic? They seemed not to explain the switch in the paper (or if they did, it escaped my notice).

<comment><USER3> I asked some of the authors about this---it sounded like the primary reason was that, in the FPGAs they were considering, the Altera PCIe endpoint was much better behaved than the Xilinx one (due to excessive link training time, IIRC).</comment></comment>


Ask HN: What would Steve Jobs say about Facebook's IPO - <AUTHOR>

Facebook closed at $27, taking a pretty big hit. I'd like you all to think like Steve Jobs and say what you'd think his suggestion would be to Facebook about what they've done with their IPO and how to fix the situation. What would he ask them to change about the way the company operates to create value for it's new stock holders? <comment><USER2> When asked, he would divert the issue to Apple products. Always back to Apple.</comment>


Ask HN: Laptop coders, your setup? - <AUTHOR>

Anyone here using a wireless keyboard + mouse instead of their laptop keyboard/touchpad? And for monitor: Laptop monitor + external? External only? Laptop screen only?
Logitech has a really nice solar powered bluetooth keyboard: http://www.logitech.com/en-us/keyboards/keyboards/Wireless-Solar-Keyboard-K760-for-Mac
Wondering what the ergonomics and productivity benefits are.
Thanks <comment><USER2> 11-inch MacBook Air. People are always amazed I code on an 11-inch but honestly it works just fine--> (screenshot of eclipse) <http://i.imgur.com/84TlU.png>

The resolution is actually fairly generous. And if you're hacking in the terminal it's more than sufficient.

I find the 11 inch keyboard is just a lot easier to type on. You don't have this huge plane of plastic sticking out under your wrists.

And I generally lay down on the couch. I can't handle desk+chair. Too hard on my wrists and back. If I have to work at my desk I usually try to prop my feet up somewhere.

</comment><comment><USER3> I have a Thinkpad E420 which is my main computer. Occasionally I'll work at my kitchen table, but usually I work at my "command center" desk. I have a 25" LCD monitor that helps supplement the horrible 1366x768 screen on my laptop.

For peripherals, I have a basic Dell optical mouse [1] and an ancient Microsoft Trackball Explorer [2]. I use a Logitech Ultrathin keyboard [3] as my main keyboard, but also utilize the laptop's keys too since they are very nice.

Basically, by having two sets of each peripheral, I can swap between them to keep from feeling sore. If my hand starts to get cramped from the mouse, switch over to the trackball for a while. If my wrists are getting tired with one keyboard, close the tray and switch to the laptop itself.

[1] [http://www.amazon.com/gp/product/B000VBZWZ6/ref=as_li_tf_tl?...](http://www.amazon.com/gp/product/B000VBZWZ6/ref=as_li_tf_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B000VBZWZ6&linkCode=as2&tag=mctr03-20)

[2] [http://www.amazon.com/gp/product/B00005853Z/ref=as_li_tf_tl?...](http://www.amazon.com/gp/product/B00005853Z/ref=as_li_tf_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B00005853Z&linkCode=as2&tag=mctr03-20)

[3] [http://www.amazon.com/gp/product/B001F51G16/ref=as_li_tf_tl?...](http://www.amazon.com/gp/product/B001F51G16/ref=as_li_tf_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B001F51G16&linkCode=as2&tag=mctr03-20)

</comment><comment><USER4> At work, it's a 14" Macbook Pro (probably a 2011 model, not quite sure) with two external monitors. I use an external apple keyboard, because having a 10-key is really helpful, but I use the trackpad since I have to span 3 screens with the cursor, it's a pain to use a mouse sometimes.

At home, I have a 13" Macbook Air, the previous generation. I prefer using this to be honest than my 3 monitor setup at work since it's light weight, and I am more portable. I don't use any accessories for it, except I did buy a Microsoft Bluetooth mouse that I may use occasionally, but it's primarily for when I'm doing presentations.

</comment><comment> benji-york I was starting to get wrist and neck pain from using a laptop on a desk that was too high for my wrists and too low for my neck. I didn't want an external monitor but still wanted my laptop display higher. After investigating laptop arms, etc. I stumbled upon a large platter display stand at a home decor place.

Adding a keyboard tray, a USB keyboard and mouse, and a USB hub so I only have one cable to unplug when I want to move to the couch.

Fuzzy picture: <http://benjiyork.com/pictures/laptop-setup.jpg>

</comment><comment><USER5> My home setup is my MBA plus my couch. The ergonomics are terrible but my productivity is pretty decent and I dont use it this way for very many hours a day.

</comment><comment><USER6> I sit on the floor and put a laptop on a coffee table that has open space for my legs underneath. The ergonomics for my arms aren't very nice but everything else seems to be fine.

I do move around every hour. I use a wireless mouse but I don't end up using a mouse that much. Sometimes I will hook up a keyboard and use the keyboard on my lap under the coffee table but not that often.

</comment><comment><USER7> I've got a similar keyboard from logitech for my pc: [http://www.logitech.com/en- us/keyboards/keyboards/k750-keybo...](http://www.logitech.com/en- us/keyboards/keyboards/k750-keyboard)

They keys are good, similar to Mac keyboard.

Thinking about get a laptop myself just so I don't have to sit at this desk to do anything.

</comment><comment><USER8> I have my Lenovo Thinkpad docking station on my desk with the living room's 50" plasma plugged into it along with USB cables for my phones and the Lenovo's mini mouse.

I tend to always work at the desk and during the day (when the fiancee is at work) I use the plasma as a second screen - mainly running an Android emulator in it or Spotify.

</comment><comment><USER9> My desk has two levels. 5 inches of height difference.

\- Upper Level: 13" Laptop + 24" external display (Use both displays) \- Lower Level: Wireless keyboard + mouse

Pros: Very comfortable. Have enough space for a notebook to write stuff. Cons: Getting tired of changing mouse batteries, every 2-3 months.

</comment><comment><USER10> I sit at a desk or the kitchen counter for long periods. Most likely sitting with my prod laptop.

For a quick hack my netbook works very nicely, on the couch.

</comment><comment><USER11> 13-in 2009 Unibody Mac with a Magic Mouse and wireless Apple Keyboard.

I normally just sit at the kitchen table.</comment>


Links in body of YC application - <AUTHOR> Can we put links in the body of our YC application to take the reader to more details/examples regarding the point being mentioned? <comment><USER2> You should send the question to email@example.com .

<comment><AUTHOR> ok noted. will do.</comment></comment>


I cannot wrap my head around bit-ops in C, anyone want to give me a guide? - <AUTHOR>

I have a problem understanding Binary bitwise operations in C, I tried to do the k&r exercises with no help, and got no where, after trying for days.
Can anyone out there recommend a tutorial/guide or give some assistance please, I really would like to understand how this works.
Is it me, or is it ordinary to be confused about this?
Thanks <comment><USER2> What is your confusion? Do you understand binary representation of numbers? Can you given us the binary representation of 11? 12? 25? -9?

Do you know what the logical operations are? AND? OR? XOR? NOT? What are the answers to these:

      1 AND 1
      1 AND 0
      1 OR x (where x is 0 or 1)

Without that knowledge you have a problem. With that knowledge the problem lies elsewhere and we can explore that. If you can work on this is slow time then I'd be happy to get an email asking questions.

ADDED IN EDIT: Can you give an example of a case or calculation you don't understand?

<comment><AUTHOR> Well, the problem is: Write a program setbits(x, p, n, y); which returns x with the n bits that begin at position p set to the rightmost n bits in y, leaving the other bits unchanged.

I've tried to solve it.

To answer your questions; Yes, I understand binary representation, 11 is 1011 12 is 1100 25 is 11001 -9 is 1001010 (where the leftmost bit is set to 1)

<comment><USER2> Well, -9 isn't 1001010, but we can explore that another time.

The real help would be if you showed what you've tried. However:

How can you extract the rightmost (least significant) 3 bits of a number _x_?

How can you move the bits in a number to the left (make them more significant)?

How can you turn off some bits in a number?

Can you puzzle out how these questions/answers can be glued together to do what you want?

Have you tried doing it by hand on paper?

Here:

       x = 1010101010101
       p = 4
       n = 5
       y = 11111111

Show us what you actually need to do, step by step.

PS: This probably isn't the forum to have a tutorial on such questions, and I'm going off line in a few minutes. If no one else answers your questions, email me.

PPS: Where does this question come from? What resources do you have?</comment></comment></comment>