Tips on improving communication with your remote team - <AUTHOR> https://blog.clubhouse.io/fostering-communication-in-remote-work-an-interview-with-megan-berry-961ef96a8a13 <comment><USER3> This article focuses on 100% remote teams, but I'd also love tips on working on partially remote teams. Here's some things that have helped my team and others are my company, which is spread across a few timezones:

\- If anyone is remote for scrum, everyone is remote. Having one group of people in a room together with a few people video conferencing in is terrible for the remote folks. Instead, have everyone call in from their computers. It helps keep people from excluding those who are behind the screen.

\- Get an occasional virtual coffee/tea with your workmates. Getting to know each other as people makes small conflicts and friction far less likely to turn into grudges.

\- Pay attention to timezones. Even if the main office has more people, share the pain of bad timing across the team. Don't make the same person stay up late or get up early every scrum.

\- The little things really matter during video calls. Don't eat near the microphone, circle back around to people who may have been interrupted, make sure everyone can hear clearly.

\- Make an extra effort to get feedback and input from people. Especially for less outgoing or assertive folks, it's harder to break in to conversation on Slack or calls than in face to face interactions. Asking "[name], what are your thoughts?" a few times a call goes a long way.

<comment><AUTHOR> That's a great suggestion for a blog post, we have something similar that describes how we became a (partially) remote team: [https://blog.clubhouse.io/how-clubhouse-became-remote- friend...](https://blog.clubhouse.io/how-clubhouse-became-remote- friendly-36e1f3fe4404)

We have someone working in Australia, so it mentions how we were able to make that work, and how we had to start being mindful of timezones.

It discusses some of the challenges that we used to face and how we overcame it — including audio/video difficulties (which we still haven't fully perfected) We're also going to be writing something about working remotely next week.

I do like the virtual coffee/tea idea, I'll probably pitch it to the squad and see what they think.

<comment><USER3> The virtual teas are fantastic is you make a habit of them! We just started using DonutAI to link people up across the company. It's also a great way to build cross-team empathy, since it's easy to forget how much everyone contributes when you don't see their work every day.

<comment><AUTHOR> Nice! I heard about you guys on a producthunt newsletter (I believe) on neat remote working tools!

<comment><USER3> "we just started using" not we just started ;)

</comment></comment></comment></comment></comment><comment><USER4> Working remotely, I've learned it's essential to ask more questions. Things get lost in translation through Slack messages and Trello card.

When in doubt, ask a million questions!

<comment><AUTHOR> Yeah, I tend to just poke people on video chats if it's something that needs to be addressed.

Sometimes the back and forward comms in Slack or any other project management tool (I use Clubhouse) can be a bit slow, so it's best to just get the person(s) and ask.

</comment></comment><comment><USER5> Was hoping for better coverage from an employee-perspective. You can't reasonably expect to have 1 on 1 meetings each week with your coworkers, but you can be expected to have to rely on them for making new features - <USER2> when remoteness makes communication slow enough to delay your work.

OT: Holy heck, did every other sentence need some kind of emphasis? Block quote, bold text, related image, tall header spacing - is this disruption in reading, because it certainly felt like it.</comment>


I'm No Longer at Mattermark, So on to the Next Adventure - <AUTHOR> <comment><USER2> Wish you the best on your next adventure!

</comment><comment><USER3> Great</comment>


The Best Way to Encourage U.S. Innovation - <AUTHOR> http://holono.tumblr.com/post/4928071065/the-best-way-to-encourage-american-innovation

<comment><USER2> Govt is not smart enough to monitor day-to-day illegal/immoral activities of big corporations. It is better to breakup big corporations into smaller entities to promote competition, innovation and to create jobs in the economy.

</comment><comment><USER3> TL;DR = "Innovate elsewhere, which will spur the U.S. to innovate."

<comment><USER3> Who is supposed to get motivated by foreign innovation American business people who want to help the US innovate? In that case, they are already motivated without being outcompeted.

Foreigners? Why do they care about the US innovating?

The US Government? OK, so imagine that it works. Now they want to encourage innovation: how do they do it?

Ooops, I thought this article was going to answer that question, not pose it.

<comment><AUTHOR> Several remedies have been brought up already. Every day there's a blog post about what America must do to become "more innovative", and none of the recommendations are taken. While the details are important, I believe that the first thing is getting America as a nation to consider the issue to be incredibly urgent. Only then will the government (starting from the citizens) attempt any kind of overhaul.

<comment><USER4> _I believe that the first thing is getting America as a nation to consider the issue to be incredibly urgent._

That's a rather hard sell, because frankly, it ain't. America still leads the world in damn near every field. For a nation of a mere 300 million people or so, the number of new inventions, scientific discoveries, and bleeding-edge technology companies being generated by the US is way out of whack with the rest of the world. There's no point in trying to sell your solutions with some kind of false urgency, people will see through it.</comment></comment></comment></comment>


Fosscad-Repo: Defense Distributed CAD Repository - <AUTHOR> https://github.com/maduce/fosscad-repo <comment><USER2> FOSSCAD use to be called DEFCAD but they changed their name to let defcad.com become a for profit website. FOSSCAD has been releasing the Megapack for years. This is not a Defense Distributed repository.

</comment><comment><USER3> The FOSSCAD Library is by FOSSCAD. FOSSCAD use to be called DEFCAD but they changed their name to let defcad.com become a for profit website. This repo is not by defense distributed.</comment>


Seeking asylum in Sweden - <AUTHOR>

I am a Yemeni woman who want to seek asylum in Sweden, I can go through a Shengen visa can I apply for asylum after going into the country. <comment><USER2> Migrationsverket is the Swedish Immigration authority. They say at [http://www.migrationsverket.se/English/Private- individuals/P...](http://www.migrationsverket.se/English/Private- individuals/Protection-and-asylum-in-Sweden/Adults-seeking-asylum/You-cannot- choose-the-country-where-your-application-for-asylum-is-examined-the-Dublin- Regulation.html) :

> You cannot choose the country where your application for asylum is examined > (the Dublin Regulation)

> According to the Dublin Regulation, a person who flees to Europe must seek > protection in the first safe country that he or she comes to.

> When you apply for asylum in Sweden, the Swedish Migration Agency begins by > investigating whether it is Sweden or another EU country that is responsible > for handling your application for asylum. If you have received a visa to > enter another EU country, have certain types of residence permit in another > EU country, or have applied for international protection (asylum) in another > EU country on your way to Sweden, you may need to go back to that EU > country. These rules can be found in the Dublin Regulation.

as well as:

> You should apply for asylum at Sweden's border. If you have already entered > Sweden, you may apply at one of the Swedish Migration Agency's application > units located in Gävle, Göteborg, Malmö, Märsta, Norrköping and Stockholm.

Do note that this question is very off-topic for this site.

</comment><comment><USER3> I don't know, but the immigration attorney I used to obtain a Canadian work permit would likely be able to refer you to someone who can help you. He specializes in human rights cases, that are financed by regular visa applications such as my own.

To be clear, he would not know Swedish law but I expect he would know a Swedish attorney who may be able to help you without monetary charge. I cannot be sure but I expect this is the case.

M. Lee Cohen's website is [http://www.mleecohen.com/](http://www.mleecohen.com/) and his email is email@example.com

Tell him I sent you.

I wish you well.</comment>


Python as a declarative programming language (2017) - <AUTHOR> https://www.benfrederickson.com/python-as-a-declarative-programming-language/ <comment><USER2> I was sad that Cython was only given a fleeting nod at the end and numba wasn't even mentioned. I might even go so far as to say that Cython is the most user-friendly way to write new _pure C programs_ that there is. If you're about to write some greenfield project in C, seriously consider using Cython, even if you have no desire for any Python entrypoints in the final product. Numba as well is quite impressive: between jitclass, deferred_type, and facilities to target GPUs, it's crazy how much speedup you can get with little extra code.

Overall I think people don't clearly state the speed trade-off Python presents. Everyone focuses on the "40 times slower" part and nobody points out that "equivalent program in C++" is a glib false equivalence, because a truly equivalent program would have to offer all the same run-time dynamic type manipulation and nearly arbitrarily modifiable object instances involved.

What Python really proposes is this: "I'll give you 100x more flexibility in exchange for 40x worse performance for certain classes of operations."

Don't want the 40x slowdown? Das cool. Code around it by using extension modules that let you specify homogeneously typed contiguous memory arrays (or bare metal structs like with ctypes or numba's jitclass), or let you bypass CPython overhead because e.g. you know you don't need the flexibility offered by the data model looking up a generic python function to call for an __add__ operation, and instead you can arrange for a GIL-releasing call to a pure C function. And so on.

I guess my point is that the story should be "look what Python gives you" and then "this flexibility had a cost."

But instead it always feels more like, "this C pseudocode for this tight algorithm looks superficially similar to Python syntax for that algorithm ... but oh boy look how much slower Python is!" —- which, apart from a possible surprise when you have never looked into Python before, should be of interest to badically no one.

<comment><USER3> > a truly equivalent program would have to offer all the same run-time dynamic > type manipulation and nearly arbitrarily modifiable object instances > involved.

In actual production code, I rarely need this though. I mean, sure, for framework code, but in C++ I can do quite a lot with the standard library and templates. Sure it's not so runtime flexible as Python, but for normal production code, I've rarely found it necessary. Don't get me wrong, I absolutely prefer Python for most of the use cases that it's conmonly used for, but I don't agree quite agree that the quoted text above matters for most uses.

> What Python really proposes is this: "I'll give you 100x more flexibility in > exchange for 40x worse performance for certain classes of operations."

Have you used a recent version of C++? I think the 100x might have been true 15 years ago, but, while Python has a lot, lot more runtime flexibility, modern C++ is a pretty productive environment, without sacrificing performance.

I'm not arguing that Python isn't more flexible, especially at runtime, or that it's not more productive. Of course it is. But you're paying a performance premium for it and I don't think the productivity gap is as large as the performance gap anymore.

With all that said, I do agree with your overall message. Python gives you productivity and flexibility and it's important to focus on that rather than performance and, as you say, Cython gives you options when you do need performance. But the difference between Python and C++ nowadays, for normal production code, isn't that huge anymore in my opinion.

Of course, there are plenty of reasons to prefer Python though: fantastic web frameworks and batteries included libraries, fantastic community, fantastic documentation to name a few.

<comment><USER2> I won't be able to address all the points. But in my experience, C++ has been going in the wrong direction in terms of simplicity or productivity. Modern C++ is drastically more complicated and riddled with deep esoterica. The flexibility benefit modern Python gives is probably more like 1000x, further mitigating many cases when there are concerns about the flexibility/performance trade-off.

Just for one example about what I mean with modern C++: < [https://bitbashing.io/std-visit.html](https://bitbashing.io/std-visit.html) >.

This example is relevant because you mentioned you feel you never need Python's flexibility in the day to day. But in Python (much like in many functional languages), the entire idea of the visitor pattern can be boiled down to map() —- just one function call! If you want to specialize this for your own data type, you can very easily implement the iterator protocol, often simple __iter__, __getitem__, and __next__, which themselves could use e.g. numba to iterate some homogeneously typed tree class with pure C performance characteristics, or a sum type (like with Cython fused types) as in the std::visit example, etc.

The point is that the data model's flexibility makes this trivial, rather than convoluted. In the cases when I'd care about this pattern, it would be no contest that Python offers hugely improved productivity.

So it's not just naive flexibilty of modifying object instances, but the bigger picture of flexibility in the data model overall.

<comment><USER4> > The flexibility benefit modern Python gives is probably more like 1000x

If true, that would mean that a 1 year C++ project could be done in 2 hours, and a 10 year project in half a week.

<comment><USER2> Development time is not the same as flexibility, particularly because, as others have pointed out in comments, the lack of flexibility in C++ usually manifests itself by the choice to exclude huge swaths of feature sets.

I see this Python advantage meaning in C++ I have to give up more possibilities if I want to restrict myself to a subset whose complexity can be reasonably managed.

Just think of how often people even suggest C++ without exceptions. This is a mark of inflexibility that people view the complexity cost of these techniques as too high, and so must write code that intentionally cannot use them (and so you have to contort even more to imitate their intended behaviors).

This is a much more important thing than mere developer time, which is a shallow way to look at it.

</comment></comment></comment></comment></comment><comment><USER5> I've always been a fan of Django's "Declarative for most stuff. Procedural when you need it" approach. Models and forms are a good example but it permeates the whole framework. It's largely an case of favouring composition over inheritance combined with sensible defaults but it feels declarative for the common cases.

<comment><USER3> I agree, I think this is a good approach. Common things should be super quick and easy, but when you need to go further, it should get out of the way.

</comment></comment><comment><USER6> Python is a great language for this kind of super-glue code. The pure tensorflow snippets are rarely run in isolation, and python makes retrieving, loading and munging data pretty simple when you tap into its rich ecosystem of scientific and utility packages.

Python has always been about dipping down to C when needed - just look at the various stdlib features like namedtuple and lru_cache that had optimized C versions introduced once the python versions were deemed useful and performance critical.

A commenter below seems outraged about the torch->pytorch change, but really the GitHub contributions and adoptions for each speak for themselves

</comment><comment><USER7> Where's the "declarative" part here? It's common to do number crunching in NumPy with Python as the control layer. But the Python code is imperative.

<comment><USER8> Numpy is declarative in the sense that it is vectorized.

<comment><USER7> ?

<comment><USER8> Instead of explicitly writing loops, you decalre an operation like add, and it is looped over a vector for you.

<comment><USER7> That's just application. "Do this to all that stuff". Imperative, but possibly parallel.

</comment></comment></comment></comment></comment><comment><USER9> For faster Python, try PyPy. It's very compatible, very fast for many workloads, and has been constantly receiving interesting new work for over a decade.

</comment><comment><USER10> First I saw of this was about 9 years ago, with [https://fenicsproject.org/](https://fenicsproject.org/)

The Python "front-end" allows you to write something which looks very much like the math you're trying to solve. When evaluated, the Python code generates specialized C++ code for a Python module which is in turn compiled and linked back in, and then the C++ code is executed producing the results.

Guess this is old news now but I was pretty blown away by it back then.

</comment><comment><USER11> tldr: Vectorize your code. Good advice not just for Python but other interpreted languages like MATLAB and R.</comment>


Did Australia Poke a Hole in Your Phone's Security? - <AUTHOR> https://www.nytimes.com/2019/01/22/technology/australia-cellphone-encryption-security.html <comment><USER2> I doubt that Apple will build a significant backdoor. Most likely they will figure out some symbolic way to accommodate this law, exploiting the vague wording.

The nuclear option is probably to just stop selling their products in Australia. The population of Australia is only 25 million people. It would be a huge hit but not insurmountable, and then the Australian politicians would face significant backlash and probably walk back the law.

<comment><USER3> > The nuclear option is probably to just stop selling their products in > Australia.

Someone needs to. With EU laws, Australian laws, US laws, and more and more every day, the internet is rapidly becoming a tool of the least common denominator. In other words, whatever country has the toughest laws will govern the planetary internet system as all others will have to follow by extension. Apple, for example, can't make an iphone for every country to comply with that countries individual laws that differ from every other country, which also change with a regular basis.

Of course though, there will always be hackers skating on top relatively free. We're becoming a two-tiered internet. The relatively few who know how to get around the restrictions, and everybody else.

All Apple has to do is float the possibility they may not sell their products in Australia anymore, and point out why. The rest would take care of itself.

<comment><USER4> Apple is required by law in Japan to make iPhones make a sound when taking a photo, and they complied.

These new voyuer laws in Australia are obviously much more severe, but there is precedent for a company to customise phones by jurisdiction.

<comment><USER2> Camera shutter sounds aren't a moral issue apple has staked a position on.

<comment><USER4> Wouldn't it be nice, as a courtesy from Apple, if your phone emitted a sound everytime the government attempted to access private data off your phone

</comment></comment></comment></comment></comment><comment><USER5> This sort of thing happens because the tech industry doesn't bother with lobbying or really any political fighting other than the occasional angry letter.

Meanwhile, the mining industry successfully countered a law they didn't like a few years ago by spending a few million on tv advertising demonising the government. The gambling industry got rid of a law by suing the government. The banking industry managed to convince the regulator to not use their powers through a combination of making it extremely costly and basically infiltrating them.

Only the tech industry is like children when it comes to lobbying and politics.

Ideally, every industry would be like the tech industry and not manipulate the government. But if they want to get rid of this particular law then there is plenty of examples to learn from.

<comment><USER6> You mean by offering some future payback whether a cushy overpaid consulting or lobbying job or an industry recognition award like Barnaby Joyce got from Gina?

I think witholding future products or services and running ad campaigns to say they wont be offering them in Australia due to the law would be the way to do it. If we could collectively get our act together, boycotting Federal Government for IT services would get the message across - chance of that happening is probably <1%.

<comment><USER5> All of it.

Basically what I am saying is that if the tech industry doesn't want the risk of future laws ruining their fun then they will have to engage in lobbying just like everyone else.

Sitting back and relying on the politicians to not do anything stupid is, well stupid... Stupid is the default.

In this particular case an advertising campaign is probably the only thing that is going to work, but with an election in the not too distant future, it should be pretty efficient in scaring the politicians into getting rid of the law.

<comment><USER6> I'm coming around to the opinion that anything the Government does (particularly if they think it's a clever policy) triggers the Law of Unintended Consequences.

Except for some situations where they correct or curtail market excesses, most programs seem to end up causing more damage than they try to solve and worse outcomes long term.

One of the few exceptions was Rudd simply handing out cash to the general population in the middle of the GFC to keep the economy turning over. Generally most incentives don't have the desired effect.

</comment></comment></comment></comment><comment><USER7> Some of previous discussions regarding this law:

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

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

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

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

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

</comment><comment><USER8> "The law says the Australian authorities cannot ask a company to build universal decryption capabilities or introduce systemwide weaknesses."

I've seen this proposed as an enormous loophole, since every backdoor is a "systemwide weakness", and the lawmakers just don't understand that fact.

<comment><USER9> What counts as a systemwide weakness"? For example, if it allows the Australian government to decrypt things, but does not make it any easier for anyone else to decrypt things unless they do so by going through the Australian government (either with Australia's cooperation, or by hacking them, or by the Australian government leaking private keys), would that be a systemwide weakness?

<comment><USER8> You either store the keys centrally, or use a weaker encryption strategy. Those are the only ways to decrypt something. Either one makes it easier for anybody to hack.

The classic metaphor is that of a castle wall. If you put a gate in it, no matter how well your fortify that gate, it remains a weak point compared to the rest of the wall.

<comment><USER9> > You either store the keys centrally, or use a weaker encryption strategy. > Those are the only ways to decrypt something. Either one makes it easier for > anybody to hack.

That was right before 1973. The development of public key cryptography in 1973 adds another option. Take the symmetrical key the device uses to encrypt user data and encrypt a copy of that key using a public key of the entity that the back door is for.

The authorized back door user can decrypt that copy using their private key. If the public key system parameters are chosen correctly anyone else trying to get in who does not have a copy of that private key faces a problem at least as hard as brute forcing the underlying device encryption.

<comment><USER8> They still hold a copy of their own private key somewhere, you're just punting the issue a little bit. Plus, there would have to be a single key for all users, or you'd have to give every user's key to the institution as well. That means more travel over the wire, that means central storage of skeleton keys, etc. Each of these factors introduces another vector of possible attack. If there's a gate, there's a way to get in, and no matter how many keys are required or where they're kept, they'll always be more vulnerable than a wall with no gate.

</comment></comment></comment></comment></comment><comment><USER10> > _"We never thought it would pass," said Alan Jones, chief executive of M8 > Ventures, a tech investment firm in Sydney. "We all just figured that > Australia's political leaders would consider the expert advice that told > them this was nuts."_

This is a counter-argument to all the comments I see on HN about "waiting and see if the proposal goes anywhere".

It's usually too late to stop it if you do that and allow most if not all of the negotiation between parties to take place by the time you wake up and react.

<comment><USER11> This time there actually was a big ground-swell of opposition. In the consultation period there were hundreds of submissions, all of them negative (except one from some random church in Tasmania). These were a mix of letters from technical groups, business groups, law groups, human rights groups, civil society groups, and individuals (both developers/specialists and regular concerned citizens).

When the bill was being considered by the Parliamentary Joint Committee for Intelligence and Security, some of these groups were called up. I read the Hansard (transcript) of the hearing - the testimony was impeccable. Clear, concise, and absolutely demolished the bill. Unfortunately, to give you the level some of the senators were working at, a lot of the questions came back to "but don't you think we need to stop terrorists?" when going through how it's technically impossible to do what the law enforcement wants without creating systemic weaknesses/vulnerabilities, and you can't just define that away like the bill tried to...

Coming up to it being passed, there was a huge amount of calls, emails and letters to the members of parliament and senators. Several mentioned the unusual volume in Parliament, and also many in the opposition mentioned multiple times how many problems there was with the bill. They illogically passed it in mid-December to "keep Australia safe over Christmas" (despite the fact that nothing in the bill could be put into effect for _months_ and Australian law enforcement and intelligence services already have far more over-reaching powers to do all sorts of stuff that would be illegal in the US and Europe).

Opposition to the bill was way better organised, and way bigger than anything previous for the tech industry. We are getting better at the politics, but given the irrational actions of the opposition in voting for it (who had the numbers in the Senate to block the bill) I can only conclude that there must have been some dirty dealing going on either between the parties, or between the intelligence services and the parliamentarians.

<comment><USER12> Could you provide a link to that transcript?

<comment><USER11> Here is the PDF transcript:

[https://parlinfo.aph.gov.au/parlInfo/download/committees/com...](https://parlinfo.aph.gov.au/parlInfo/download/committees/commjnt/b9247c77-dfa4-44bb-8aa3-ce6bc01d20ca/toc_pdf/Parliamentary%20Joint%20Committee%20on%20Intelligence%20and%20Security_2018_11_30_6818_Official.pdf;fileType=application/pdf)

The testimony from the experts was great, and the questions and responses from our senators was embarrassing. Just search 'terror' for some of them like the ones I paraphrased.

<comment><USER13> The transcript mentions a couple of times interference in the process by Peter Dutton and Scott Morrison, the PM, does anyone know what this is referring to?

</comment></comment></comment></comment></comment><comment> brian-armstrong What's the defense to this? For starters I think you'd want to close your Australian offices and lay off any Australian-born personnel, but what else?

<comment><USER14> I think the defense is to absolutely not do business in Australia, and to mark your products as not for sale there.

<comment><USER15> Which, I'd like to point out, isn't a big loss: it's population 24 million, about the size of Taiwan. If you're making a physical product, shipping and taxes will make it criminally expensive to sell there, and if you're making a digital product, there's this and the considerations of slow internet and a different time zone.

I think it's actually quite reasonable and doable for companies to boycott Australia over this, and I hope we see some. It'd be free press for the company and cost relatively little - I'd imagine the press would pay for any missed Australian sales. And it'd put some pressure on the Australian government for this idiocy.

<comment><USER16> Australians are quite accustomed to bypassing geoblocks and import restrictions, in any case.

But that's not really the problem here -- it's more that Australian products and employees may be tainted by unknown government interference.

</comment></comment></comment></comment><comment><USER17> I want Amazon, Apple, Microsoft and Facebook to make clear statements as to whether or not their systems have been compromised by Australia's security laws.

Is my phone now compromised?

Is the Amazon AWS Sydney data centre now backdoored?

Without clarity, it appears the big tech companies plan to comply with the legislation, which means they might be backdoored.

<comment><USER18> > _I want Amazon, Apple, Microsoft and Facebook to make clear statements as to > whether or not their systems have been compromised by Australia 's security > laws._

The A&A bill specifically prohibits this. You can't answer yes or no to the question of whether you have been served a notice. Warrant canaries are not effective -- they're not even _allowed_ , on my reading.

</comment></comment><comment><USER19> "Australia does not have a strong tech industry..."

I'm sorry - what?

Having moved to Australia from the UK I am continually amazed at the tech industry here, sure in comparison to the US ours is small but that is because there is a vast difference between our populations. America only sees size as a measure of strength

</comment><comment><USER20> Literally no one understands this bill. The best resource I've found so far is this: [https://github.com/alfiedotwtf/AABillFAQ](https://github.com/alfiedotwtf/AABillFAQ)

<comment><USER11> A big criticism of the bill by people like the Law Council (apart from it being irresponsibly rushed through with way too little oversight) was that it was intentionally vague and broad in a lot of it's definitions. So you have a lot of people saying it's incredibly bad, and a lot of others saying, "no, it's not quite that bad - only really, really bad" but nobody really knows until you get a notice. It's all up to how the law enforcement and intelligence services interpret it, and there's insufficient judicial oversight and almost no recourse if they are telling you to do something that you think goes beyond what the law allows, and you have to keep it secret, so it will be hard to tell how far they take it or if it's being abused.

</comment></comment><comment><USER21> * Honest Government Ad | Anti Encryption Law - YouTube || [https://www.youtube.com/watch?v=eW-OMR-iWOE](https://www.youtube.com/watch?v=eW-OMR-iWOE)

This law is a bad law.

</comment><comment><USER22> Australia always tries these types of laws, they tried a Great Wall of China- like firewall a few years ago it didn't go anywhere. I suspect this will be the same.

<comment><USER23> Do you mean the "ISP-only" DNS restrictions of 2016? That was just a lame attempt to appease the film and media companies. Unfortunately for Aus Gov, DNS registries are not solely operated by Australia.

<comment><USER24> What's particularly strange to me is that devices such as Google WiFi come preconfigured to point at Google's DNS, so a layman in Australia will be bypassing these blocks without deliberately doing so.

<comment><USER23> It did have some interesting effects though. I know of several of my old school acquaintances who were very technologically challenged that managed to navigate their network settings far enough to change DNS.

</comment></comment></comment></comment><comment><USER25> How are the data pipes to EU? HTTPS + no device caching

Complying would violate EU law where the data is stored or compromise the entire system and all devices.

</comment><comment><USER26> They haven't considered the negative repercussions, like any oppressive government asking for the same tool and using to quell any dissidence. Fuck those people, amiright!? /s

</comment><comment> a-dub could be interesting if the process involved publishing a txn to the bitcoin blockchain. that is, every unlock were made publicly and immutably visible thus putting the government in the hot seat to later justify all uses of the facility.

<comment><USER27> That does literally nothing because the government can just say "Push an update to this device to not do that" which is what the whole law is about.

<comment> a-dub the idea is that if there's a _late_ auditable solution, then today's methods of doing it on the down low become distasteful.

they're gonna do it regardless, but the politicians may agree to forcing them down a process that is publicly auditable in the long run...

basically if late auditability makes it possible for them to do their jobs, then the basis for today's sketchy down low approach is ameliorated.

<comment> dane-pgp Right, this is basically Binary Transparency, with the same sort of social mechanisms in place as Certificate Transparency has for dealing with misbehaving CAs.

The idea of storing release hashes (or public keys) in a distributed, permissionless, append-only log actually makes a lot of sense, and there are several serious proposals for how to do this, such as EthIKS:

[http://www.jbonneau.com/doc/B16b-BITCOIN- ethiks.pdf](http://www.jbonneau.com/doc/B16b-BITCOIN-ethiks.pdf)

and Contour:

[https://arxiv.org/pdf/1712.08427.pdf](https://arxiv.org/pdf/1712.08427.pdf)

</comment></comment></comment></comment><comment> murph-almighty >Prime Minister Malcolm Turnbull of Australia said in July, "The laws of mathematics are very commendable, but the only law that applies in Australia is the law of Australia."

Does math not apply in Australia? Is this where "new math" comes from?

<comment><USER28> Finally, somewhere I can go without being bound by the law of gravity.

<comment><USER29> Better respect gravity. It's the law.

<comment><USER30> We will decide whether things should fall in this country, and the direction in which they fall!</comment></comment></comment></comment>


Human Terrain: visualizing the world's population in 3D (2015) - <AUTHOR> https://pudding.cool/2018/10/city_3d/ <comment><USER2> I don't know how they got that data and how many shortcuts they had to take, but getting this to run smoothly (with load times) on a mobile device is already a serious feat of engineering. It does make the population densities very obvious, when you compare france to India for example.</comment>


Ask HN: What was the first significant program you wrote? - <AUTHOR> <comment><AUTHOR> Sometimes it's good perspective to be able to see where you started to compare to where you're at now. It helps a bit with the imposter syndrome I struggle with time to time.

I dug up a crappy, incomplete text adventure I made almost 6 years ago today. It was meant to be Fallout-like. I look at the main "Class" and chuckled at the overly procedural/non-reusable style of it. It makes me feel a little more confident in my current skills.

If you wanted to see the code: [https://github.com/ryanml/PostApocalypticArizona](https://github.com/ryanml/PostApocalypticArizona)</comment>


Sergey Brin on User Generated Content & Local - <AUTHOR>

I was at the Google Instant Launch and Sergey Brin answered my question.<p>"Less than 1% of the users generate content that is consumed by the rest of the 99%. Google does an extremely good job of serving this 99% with the content already generated. What is Google doing to help with changing this ration to more like 5% of the people generating content?" He replied that "Ad sense was the first product that helped with increasing content generation as more people saw that their content can be monitized. Similarly we have Blogger and a bunch of publishing tools."I replied back " What about with local & recommendations where Yelp and Quora etc are doing a great job. Google can use its reach to collect more data in local. So when some one is browsing a map for restaurants they can also quickly add ratings and stars for a few restaurants." He said " We partner with other people in areas where they are good. We do recommendations but it's buried. You will see a lot of innovation from us in local soon." <comment><AUTHOR> [http://www.youtube.com/watch?v=i0eMHRxlJ2c&feature=chann...](http://www.youtube.com/watch?v=i0eMHRxlJ2c&feature=channel) Segment starts at 1hr 15min 45secs</comment>


Quickstart Resource for Learning Keyword Research for SEO - <AUTHOR> http://www.seonick.net/master-keyword-research

<comment><USER2> I am new to SEO and thought that I could just pick my keywords out of thin air and then everything would be alright. Come to find out there is a science to it, and Nick's course has the formula. It worked great for me and I was even able to find lower competitive keywords that are easier to rank for and will be bringing me in extra cash flow. Thanks again Nick.</comment>


Y Combinator's firms mostly heed 'go West' advice - <AUTHOR> http://www.masshightech.com/stories/2008/09/08/weekly7-Y-Combinators-firms-mostly-heed-go-West-advice.html

<comment><AUTHOR> What's hilarious is how puzzled many of the VCs I meet with are over the fact that everyone leaves Boston. They constantly ask what they can do to get more startups to stay in Boston.

It's simple; invest in more companies. IMHO Boston is an ideal place for a startup: great city with lots to do, solid public transportation, very reasonable living costs (more like Chicago than DC, NYC or SF), tons of talent (oh hai MIT and Harvard) and very close to other metropolitan areas (NYC, DC). But all of this doesn't matter - people follow the money.

Also, as big as the discrepancy is between the amount of VCs in the SF area vs. the Boston area, the discrepancy between SF area Angels and Boston area Angels is even bigger.

<comment><USER2> _very reasonable living costs_

[http://www.boston.com/business/articles/2005/09/08/report_ra...](http://www.boston.com/business/articles/2005/09/08/report_rates_boston_most_expensive_city/)

Have rental prices collapsed in the past 3 years? When I moved to Boston my apartment cost more than the one I had in NYC and when I left the apartment I moved to in SF cost less.

<comment><USER3> Around Harvard Square, it's pretty expensive, but I found a 4br apartment for $2460/month 5 minutes' bike (downhill) from Davis, so it's pretty reasonable if you're willing to live with people. If you need something closer to Boston proper, that's more expensive, but Davis is cute and homey, and people smile at you in the streets.

<comment><AUTHOR> And most importantly the bars and restaurants in Davis are excellent. Email me if you ever want to grab drinks in Davis.

</comment></comment></comment></comment><comment><USER4> This could also be one of those "if you were on the other side" arguments. As much as I am annoyed by the Boston investors' skittshness (not to excuse other investors from being skittish), I wonder if I too would be a pansy when it came down to investing in 21 year olds with startups who have practically no business model or revenue stream. I guess I hope not to be that way one day but maybe I understand why these guys are like that. It's clear, though, they do miss out on huge portfolio gains by passing on a lot of these startups that end up just remaining on the west coast.

</comment><comment><USER5> Screw going west, go east .. I'm out on Cape Cod and loving it.

</comment><comment><USER6> I wonder what the minimum # of companies you need to get the critical mass for people staying. By which I mean numerous companies staying in the same area where you can stand in the middle of a street and point to 30 different buildings and say which company stays there</comment>


Building a Crystal Clear Whiteboard - <AUTHOR> http://hackaday.com/2013/11/22/building-a-crystal-clear-whiteboard/ <comment><USER2> Example of the board in action @ [http://peshkin.mech.northwestern.edu/233/056_RCcircuits2.htm...](http://peshkin.mech.northwestern.edu/233/056_RCcircuits2.html)

Lightboard: construction, electronics, lighting, parts list, and improvements @ [https://sites.google.com/site/northwesternlightboard/home](https://sites.google.com/site/northwesternlightboard/home)

The setup will cost about $10-15k along with some elbow grease, which probably isn't that much in this type of setting, especially if you are creating high quality videos which are timeless.

</comment><comment><USER3> _Everything he's writing is backwards. That's not actually a problem in this case as [Michael] uses flip teaching._

But flip teaching is nothing to do with writing backwards, or at least not according to the linked Wikipedia article. So he is actually writing backwards?

Edit: Ah I see, _the whole scene_ is mirrored, including him. I guess that could work, although then diagrams really have to be drawn backwards (assuming western L->R convention), and any computer generated text will have to be projected backwards on the whiteboard.

<comment><USER4> There are a couple of factors coming together here that require some explanation in order for the individual parts to make sense.

Everything he writes appears backwards because he's facing us as he writes. Hence, someone standing in the room would see everything in reverse.

This isn't a problem because he uses flip teaching, where students view a video of the lecture at home. This only becomes clear if you read the details. The camera he uses to record his lecture does so through a mirror, so the image is reversed by the mirror, not by software.

Also, overlays need not be reversed, because they aren't projected anywhere. They're composited in to the video stream by a switcher.

All of this becomes clear if you read the creator's write up on how to build one. I'd highly recommend it:

[https://sites.google.com/site/northwesternlightboard/home](https://sites.google.com/site/northwesternlightboard/home)

</comment></comment><comment><USER5> This is so cool. I realize that it doesn't look quite that cool in person but am definitely interested in seeing about building one.

I'm now wondering if we could add LED lighting to the top of our sliding glass door by drilling holes down to the edge of the glass and installing 1W LEDs.

<comment><USER6> I suspect your sliding door will be made of multi pane glass filled with argon. that probably won't work too well. in order for total internal reflection to work well the glass needs to be pretty homogeneous, so that the wave fronts are all parallel. that requires a nice straight, flat, unscratched surface and uniform refractive index. hence sapphire.

also, he uses thick glass so as to catch the led light. since power leds don't distribute their power very narrowly, it will be tricky to get a large fraction to start transmitting down a thin plate of glass.

it could be made to work but it just will be harder / not as good.

</comment></comment><comment><USER7> " In order to get the text to read the correct way he just bounces the camera off of a mirror. "

... couldn't he simply flip the output?

<comment><USER8> Using a mirror allows him to live stream without processing.

<comment><USER9> Sure, though "flip the incoming image" isn't a lot of processing and can certainly be done "live".

<comment><USER10> He is also merging images together, so he'd need to run the raw (unflipped) feed through a video processing program, and then back out (flipped) to his video switcher, and then capture that stream back. The switcher is how he adds video or powerpoint slides to the talk. It's really the video switcher that makes this whole thing a minimal post-production affair. So instead of adding another computer to the mix, he solves the problem with a $25 mirror that isn't very difficult to troubleshoot.

<comment><USER11> This could all be done in software like Max/MSP very easily, no hardware necessary except for capture cards, assuming the video cameras don't already stream over USB.

<comment><USER12> Yes, but mirrors crash a lot less often than software.

<comment><USER9> 7 years bad luck when they do, though.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> There's also the classic DIY whiteboard recipe for those of us who are very cheap/not yet funded:

Get a 4x8 sheet of shower board from Home Depot. It's basically just a thin piece of melamine, and should be like 8 bucks.

Get a 4x8 sheet of really low grade 3/8" or 1/2" cedar chipboard (like that used in flooring), again maybe 3-4 bucks.

Glue the former onto the latter with Liquid Nails, probably 2-3 bucks a tube.

Works great, erases, and when it finally gets too gross to use (in about a year), you replace it for another fifteen bucks.

<comment><USER14> Slightly more expensive, an IKEA hack for a glass whiteboard:

[http://www.ikeahackers.net/2012/01/not-expensive-glass- white...](http://www.ikeahackers.net/2012/01/not-expensive-glass- whiteboard.html)

More expensive than showerboard, but it's glass -- so it erases forever and looks great. The % savings compared with commercial glass whiteboards is astronomical.

<comment><USER15> If anyone considers this, please us tempered glass. This says 'tabletop' so I assume it is. It's not a whole lot more expensive but it's much less deadly.

</comment></comment></comment><comment><USER16> Many example videos of this Lightboard in use by its creator.

[http://peshkin.mech.northwestern.edu/233/](http://peshkin.mech.northwestern.edu/233/)

</comment><comment><USER17> wait... did anyone catch how he superimposed the powerpoint slide onto the screen/glass/whatever? it's not in the video or the page text.

<comment><USER18> > wait... did anyone catch how he superimposed the powerpoint slide onto the > screen/glass/whatever? it's not in the video or the page text.

Yeah, in his construction page, he explains that he uses a video switcher. It's way more complex than it sounds - he's combining feeds from the camera plus a computer into the final output, which is easy enough, but then he needs to be able to see where he's drawing - because that projected image doesn't actually show up on his light board. So he has a monitor on the other side of the light board that he CAN see, but then it produces reflections on the light board, so he starts in with polarizing filters.

[https://sites.google.com/site/northwesternlightboard/home/el...](https://sites.google.com/site/northwesternlightboard/home/electronics)

<comment><USER10> And he uses a black background on the Powerpoint slides so that they are superimposed properly and look like they are in the same space as the board. Plus, he can then still use the fluorescent markers to "draw" on his slides from the glass-board.

</comment></comment></comment><comment><USER19> totally one of my favorite profs in school - made the synthesis of cs/electronics/mechanics seamless in students heads

</comment><comment><USER20> I did this with an Ikea tabletop and some shelf hangers while I was at GaTech. The shelf hangers framed the glass tabletop on a concrete wall. Albeit not a standalone board, it also had the ikea led strip. It worked well for me to map out ideas on, and fit nicely on my wall at home.

I think I came out of the project at around 150 bucks.

</comment><comment><USER21> Some silliness going on here. OK, it's clear, he can look through it and see his students reactions as he writes, OK. The writing is backwards so no one can read it direct, it is shown by camera flipped. Then there's no point in all the extra stuff to make the lines fluoresce since it is unreadable unaltered anyway. He just needed a clear touch surface, which is common anyway since we slap them on top of LCDs in countless products. Making the unreadable lines bright is actually a disadvantage, since they are unreadable and they are blocking the sight between the parties.

<comment><USER22> From TFA, this is just a means to produce nice looking videos to teach his lessons.

His students watch the videos at home, then the classroom time is for doing the homework with the teacher available for firsthand assistance. That is the _flip teaching_ described in the article, which is being confused with the reversed-screen being shown in the picture.

</comment></comment><comment><USER23> I hate writing on glass whiteboards. If the markers are not strong enough, you can't see what you are writing over the glare of the lights.

</comment><comment><USER24> I made one for myself, just spent 45$, 40$ for a desk protector from ikea, and some mirror mounts, and mounted it to my wall.

</comment><comment><USER25> Just add a kinect and you have your minority report interface!</comment>


Comprehensive Python Cheatsheet (2018) - <AUTHOR> https://gto76.github.io/python-cheatsheet/ <comment><USER2> I like the basic script template that the author provides.

However, when I start development of new code I always use a script that starts off with traceback and pdb, something like this:

        #!/usr/bin/env python

        import traceback
        import pdb
        import sys

        def main():
            # some WIP code that maybe raises an exception
            raise BaseException("oh no, exception!")
            return 0

        if __name__ == "__main__":
            try:
                ret = main()
            except:
                traceback.print_exc()
                pdb.post_mortem()
            sys.exit(ret)

This means that whenever an uncaught exception gets raised, I immediately get told what happened (full backtrace) plus I get dumped into the debugger, from where I can inspect why this happened. I liberally sprinkle assert()s through my code, so this gives me a good edit-run-debug cycle to work with.

<comment><USER3> This is pretty smart. When I'm making one-off scripts I use the interactive flag

python -i script.py

I've programmed Python for years and never knew this. I'm not sure how well this handles errors. Tab complete works, only thing that is missing is needing to wrap help(<func>) to see signatures. I'm enjoying the standard lib interpreter.

<comment><USER4> I use ipython for similar task. It has wrapper for 'help' function ('?' symbol after function name), tab completion and syntax highlighting. Also it has special %hist command for easy copy-paste code.

<comment><USER3> I like IPython unless working with large arrays, because of weird memory issues I experienced (maybe they're fixed?). I miss the %run, !<cd, ls, pip>, %timeit magic and the IPython.terminal.debugger.set_trace().

If you're on linux it's not _that_ bad without it since the shell sort of acts like the notebook (with an equally horrible markup language). The help() and tab-complete and _ __ ___ for last 3 values works, time python <file>.py can benchmark, -i or pdb.set_trace does the debugging. It doesn't keep a persistent history though so the workflow is sort of different.

So I use both, particularly for plots and images knowing IPython is very helpful for working with the notebooks.

</comment></comment></comment></comment><comment> basil-rash Is it just me or is dict#setdefualt a terribly named function? I just learned of it here, and I was excited that it would set the default value for the dictionary, when instead it performs something like:

      (self, key, default) => self[key] = (key in self ? self[key] : default)

I'd prefer something like "dict#createifnotexists", but better.

<comment><USER5> Are you maybe looking for a defaultdict? [https://docs.python.org/3.7/library/collections.html#collect...](https://docs.python.org/3.7/library/collections.html#collections.defaultdict)

<comment> basil-rash I'm aware of defaultdict, but when I saw that method on dict I got excited because I thought it meant I didn't need defaultdict anymore.

</comment></comment></comment><comment><USER6> There are several items that are dubious at best. Why would you use

        no_duplicates    = list(dict.fromkeys(<list>))

instead of

        no_duplicates = list(set(<list>))

    ?

<comment><AUTHOR>
       >>> list(dict.fromkeys([3, 2, 1]))
       [3, 2, 1]
       >>> list(set([3, 2, 1]))
       [1, 2, 3]

<comment><USER7> Dictionaries should not be assumed to keep their orderings anyway.

That's why there's OrderredDict.

Unless the language explicitly says that dicts hold their order, even if they do, it's an implementation detail, and it should not be relied upon.

<comment><USER8> As of 3.7 (3.6 for cpython), dictionaries have a deterministic order.

<comment><USER9> What's the best way to write code that relies on this deterministic order and prevent it from running incorrectly with older python versions?

<comment><USER10> Import collections.OrderedDict as you would have done beforehand. There are still some differences between them.

(Dicts in 3.7 and ordered dicts)

[https://stackoverflow.com/questions/50872498/will- ordereddic...](https://stackoverflow.com/questions/50872498/will-ordereddict- become-redundant-in-python-3-7)

</comment></comment></comment></comment></comment></comment><comment><USER11> Can we please change the current clickbait title (Best Python Cheatsheet Ever!) to the original one (Comprehensive Python Cheatsheet)?

<comment><USER12> Agreed, although I'll note here that this was posted to /r/python under the clickbait version of the title, so the HN submitter was likely just passing it on from there.

</comment></comment><comment><USER13>
        if __name__ == '__main__':
            main()

is better as

        if __name__ == '__main__':
            sys.exit( main() )

<comment><USER14> For those wondering why, like I did, here's why: [https://stackoverflow.com/questions/5280203/what-does- this-m...](https://stackoverflow.com/questions/5280203/what-does-this-mean- exit-main)

</comment></comment><comment><USER15> Very good page. But the best python cheat sheet is _help(the_thing)_. python has the second best ever help and discoverability (after Matlab of course!)

<comment><USER16> But. to do `help(thing)` you need to know what the _thing_ is.

With Python, many times I vaguely know something but dunno what it is exactly. This cheatsheet solves that!

<comment><USER17> Is there some way to list all modules available for importing? Some times you don't know which modules are available to ask the help for it.

<comment><USER15> >>> help('modules')

<comment><USER18> Related post on my blog:

Get names and types of a Python module's attributes:

[https://jugad2.blogspot.com/2016/10/get-names-and-types- of-p...](https://jugad2.blogspot.com/2016/10/get-names-and-types-of-python- modules.html)

and the same recipe on ActiveState Code (from where you can download the Python code for the recipe):

[https://code.activestate.com/recipes/580705-get-names-and- ty...](https://code.activestate.com/recipes/580705-get-names-and-types-of-all- attributes-of-a-python-/?in=user-4173351)

</comment></comment></comment></comment></comment><comment><USER19> Seems to me that perhaps this should be a Show HN since it's submitted by the creator.

Also, for me the main link won't actually display and I can't be bothered to track down why, but the Github source ([https://github.com/gto76/python- cheatsheet](https://github.com/gto76/python-cheatsheet)) displays just fine.

</comment><comment><USER20> Nice, but why does this needs JS to be rendered ?

<comment><AUTHOR> Because it's rendered directly from README.md. That way it's easier for me, because I don't have to render it every time I make a change (I make a lot of little edits all the time), and project's Github page ([https://github.com/gto76/python-cheatsheet](https://github.com/gto76/python- cheatsheet)) always has the same content as webpage.

<comment><USER21> It's quite annoying to have to enable JS for 3 different domains just to see something other than a blank page. It also prevents non-JS browsers and retrievers from seeing content.

If you were to use e.g. org-mode for the source document, you could easily export to HTML automatically when the file is saved.

You could also easily use a git hook to run e.g. pandoc to convert md to HTML automatically.

There are many ways of automatically exporting HTML when you save the md source file. Please use one.

<comment><AUTHOR> Will look into it, thanks for info.

<comment><USER21> Thanks for being open to the idea (unlike the downvoters). HN is so tiresome.

</comment></comment></comment></comment></comment><comment><USER22> Now, this I understand. I have to sit down and translate it to Rust :-)

</comment><comment><USER23> Something magical happens when you have a one page reference for a language or tool. I just end up learning it much faster.

For me this is the best quick reference for Python (2.7 unfortunately): [http://rgruet.free.fr/PQR27/PQR2.7.html](http://rgruet.free.fr/PQR27/PQR2.7.html)

</comment><comment><USER24> So to get a list of unique values you suggest I convert to a dictionary and then convert back to a list? Is this the Python way? I dunno it seems like acrobatics

      no_duplicates = list(dict.fromkeys(<list>))

<comment><USER25> Easier:

      no_duplicates = set(<list>)

<comment><USER26> Except that won't return a list. You need list(set(<list>)). Also using set means you lose list ordering, which isn't the case when using dict (assuming python 3.6 or higher).

That being said, and not that it should ever make a difference, list(set(<list>)) is 2-3 times faster than list(dict.fromkeys(<list>))

</comment></comment></comment><comment><USER27> I like the clean look and the overall way it is presented. The examples using angle brackets (eg.: <list>.append(<el>) ) is highly legible and the one column format is faster to scan.

<comment><USER28> I came here to say exactly the opposite. The angle brackets mean that every single example is a syntax error.

If you are going to write a cheatsheet with samples of Python code, why not write it in valid Python?

This is clearly aimed at beginners as the samples are or very basic things, yet this is going to be confusing to them as they will think that `<list>` is syntax.

Have a look at the Python docs for much better ways of doing this

<comment><USER29> I think the author of this document is trying to differentiate between types (broad notions of course -- there's no type called 'num' in Python).

The Python docs (example here[1]) on the other hand limit themselves to {}, [] and () to differentiate between dicts, lists and tuples, but doesn't really differentiate between these and the more generalized notions of collections/iterators/element, etc.

As someone who codes in statically typed languages and has an intuitive sense of upcasting / downcasting / contravariance / covariance, this level of precision makes sense to me and enhances my appreciation for Python types.

That said, I've also been writing Python professionally since 2005 so I'm comfortable with not worrying too much about types in Python -- with dynamic typing things just work as long as they have the right shape and behavior.

[1] [https://docs.python.org/3/library/threading.html#threading.T...](https://docs.python.org/3/library/threading.html#threading.Thread)

<comment><USER28> But he could achieve exactly the same thing by using descriptive variable names without the angle brackets. Admittedly he can't use `list` as it's a built-in but `a_list` or `list_` would be much better than `<list>`.

<comment><AUTHOR> My personal opinion is that `list_` is among the worst possible variable names (together with `bar` and `foo`). It's non-descriptive, ugly, hard to recognize, looks scary to beginners and maybe worst of all it's easy to forget the underscore when typing.

<comment><USER28> That's exactly what he's used, but with angle brackets around it. What do you think he should have done instead.

</comment></comment></comment></comment></comment></comment><comment><USER18> In the section "Inline -> Comprehension", isn't this:

        <iter> = (i+5 for i in range(10))         # (5, 6, ..., 14)

really a generator expression?

<comment><AUTHOR> Yes, although there is a saying that "every generator is an iterator, but not every iterator is a generator". But then again generator has a bunch of methods (close, gi_frame, gi_yieldfrom, throw, gi_code, gi_running, send) that iterators don't have... I really don't know if <iter> is correct enough here, or should I use <genr> (that I don't use anywhere else and could be confusing).

<comment><USER30> I would've written:

<iter> = ( f(i) for i in <gen>)

where f() is some function of i.

</comment></comment></comment><comment><USER31> This is quite useful as I don't always remember syntax.

Are there any available for Ruby or Linux?

<comment><USER32> For Linux, from the same author: [https://gto76.github.io/linux- cheatsheet/](https://gto76.github.io/linux-cheatsheet/)

</comment></comment><comment><USER33> Empty set literal: {*()}

<comment><USER34> Considering it has the same number of characters as the idiomatic set(), its only value is in curiosity as a special case of collection unpacking.

</comment></comment><comment><USER35> I like your linux cheat sheet too. Thanks for sharing!

</comment><comment><USER36> Is there a cheatsheet for cython to go with this ?</comment>