Brazil's President Bolsonaro tests positive for coronavirus - <AUTHOR> https://www.france24.com/en/20200707-brazil-s-president-bolsonaro-tests-positive-for-coronavirus <comment><USER3> Brazilian here: Given the insane number of venues and public events that he was attending or hosting I am actually surprised it took this far for him to get the virus.

<comment><USER4> i wonder if he nows thinks is a "little flu"

<comment><USER5> He definitely seems to be handling it quite alright. [https://www.youtube.com/watch?v=mG0WaCmO56E](https://www.youtube.com/watch?v=mG0WaCmO56E)

<comment><USER6> So did Boris Johnson, who announced his positive test on March 27 in a Twitter video which showed him perfectly lucid and without noticeable symptoms [1]. He posted regular video updates, appearing quite healthy in all of them, but his condition suddenly worsened on April 6, a full 10 days after his initial announcement video [2].

This is anecdata, of course, but Bolsonaro is 65, a full 9 years older than Johnson, so he's by no means in the clear.

[1] [https://twitter.com/BorisJohnson/status/1243496858095411200](https://twitter.com/BorisJohnson/status/1243496858095411200)

[2] [https://www.theguardian.com/world/2020/apr/05/timeline- boris...](https://www.theguardian.com/world/2020/apr/05/timeline-boris- johnson-and-coronavirus)

<comment><USER7> Boris Johnson is 9 years younger than Bolsonaro? He sure looks rough.

</comment></comment></comment></comment></comment><comment><USER8> Given how Bolsonaro was ignoring the pandemic, I believe that if we used contact tracing, we would probably find that Bolsonaro is the biggest single spreader of COVID-19 in Brazil.

<comment><USER9> He was one of the first to bring COVID-19 to Brazil in a visit to the US in March. So one can truly say that he has spread the virus to millions.

<comment><USER10> wouldn't it mean a 3+ month incubation period?

When the government is AWOL, M16 as a tool to "encourage" people to wear masks :

[https://www.cnn.com/2020/06/13/americas/brazil-rio-favela- co...](https://www.cnn.com/2020/06/13/americas/brazil-rio-favela-coronavirus- care/index.html)

"Young dealers, not state medical personnel, are the ones encouraging measures against coronavirus in the favela."

It is quite notable that the 3 worst hit countries - US, Brazil, Russia - <USER2> lead by the populist regimes, ie. governments using propaganda as the main tool which is naturally not an effective tool against an infectious virus. As the saying goes "these days in Russia when people die it is from pneumonia, and when people recover it is from coronavirus" (in Russia there is a criminal penalty specifically for coronavirus misinformation, which basically means any mismatch with the official info)

<comment><USER11> I believe they're referring to his aides that contracted the virus in March, not the President himself.

</comment></comment></comment></comment><comment><USER12> There's no possible way this is going to lead to a good discussion when any sensible person will say "Hope he dies" or similar, which is unfortunate because it's such an interesting thing.

My only thought that has much public value is that the timing of the US President's sudden and strange willingness to wear a mask after mocking them for so long looks suspicious under this light.

<comment><USER13> there's almost no intellectual curiosity and open-mindedness exhibited in any of these covid-related threads, so they should be flagged according to the site guidelines.

fear manifests irrationally when control is beyond reach, including wishing the death of someone they don't know other than via press snippets (which is not to say bolsonaro is a saint, but most of us in the US know next to nothing about him except "bad").

driven by fear and the resultant impulse to control, _a priori_ arguments are made for all sorts of interventions, because it's so hard to accept that the most effective, balanced measure is simply to distance a bit from the less- acquainted, and when we can't, wear a mask.

<comment><USER12> _fear manifests irrationally when control is beyond reach, including wishing the death of someone they don 't know other than via press snippets (which is not to say bolsonaro is a saint, but most of us in the US know next to nothing about him except "bad")._

This is a terrible viewpoint: it's not difficult _at all_ to find out Bolsonaro's viewpoints and actions. We don't live in the 1950s any longer: politicians broadcast their every move over the network, and through every light you can look at him, Bolsonaro has been terrible for his country; under any sensible light, he's also a terrible human being. Just look at the things he's said, you don't need to restrict what you know to "press snippets."

<comment><USER13> yes, but that requires some level of interest in, and active search for, information about bolsonaro. how many americans other than folks with connections to brazil (or thereabouts) would that be? relatively few, i'd wager.

wishing death without understanding is itself terrible, tyrannical actually. most americans don't have, or wish to seek, the context to make any definitive claims about a stranger, especially concerning death.

<comment><USER14> > yes, but that requires some level of interest in, and active search for, > information about bolsonaro. how many americans other than folks with > connections to brazil (or thereabouts) would that be? relatively few, i'd > wager.

Sure, but I'd wager most of the HN crowd knows enough to know that he's a piece of shit. I most certainly feel like it'd be wonderful and poetic if he died to Covid!

Also what's the point of your comment other than expressing some weird kind of arrogance?

</comment></comment></comment></comment></comment><comment><USER15> He will probably (according to mortality rates) survive, and prove himself right that he could shrug it off. If he doesn't, it doesn't matter that he was wrong, because he won't be in a position to care.

<comment><USER16> Which will be our fate following such leaders.

</comment></comment><comment><USER17> It is news, but as other have noted it is not surprising given Bolsanaro's public stance. Frankly, I am more surprised US upper echelon seems largely unscathed at the moment.

<comment><USER18> Trump gets tested every day. Every person he is in contact with is testing before being given an audience. He knows how it works but it seems like he just DGAF about everyone else.

<comment><USER14> Yeah, Trump strikes me as the kind of person who would protect himself diligently regardless of what his public stance might be.

I might be wrong about this, but isn't he also known to be somewhat of a 'clean freak'?

<comment><USER13> yes, trump's moral compass only points one way, and that's toward himself.

it's dismaying that supporters fervently listen to what he says, not what he does.

</comment></comment></comment></comment><comment><USER19> Reuters source: [https://www.reuters.com/article/us-health-coronavirus- brazil...](https://www.reuters.com/article/us-health-coronavirus- brazil/brazil-president-bolsonaro-tests-positive-for-coronavirus- idUSKBN2481EK)

</comment><comment><USER20> I'm surprised he even got tested considering he called it the "little flu"

</comment><comment> anonms-coward What would happen if Bolsanaro doesn't survive? How does succession works in Brazil. Is the next person in line more or less rational than Bolsanaro. Also can it end up leading Brazil further to the right due to sympathy votes? Or will it make people realise his incompetence if something happens to him.

<comment><USER21> The vice-president takes office. He's a retired Army General as crazy as Bolsonaro regarding social values etc but in multiple times he talked much more reasonably than the actual president about sensitive topics and he seems actually smarter, at least. He almost makes us believe he's better than the president but I think it's just a "vice-president" façade. If he also dies testing positive, then the president of the chamber of deputies takes office. If he dies, the president of the senate takes office. If he dies then the president of the supreme court takes office. I said all that assuming they are males because they are as of today (we had female supreme court presidents in the past though).

<comment><USER18> Super interesting that a member of the supreme court is in line for succession. It's not the worst idea. Say what you want about various members of the SCOTUS and their individual values -- but every single one of them at least has a sense of logic and rationality by nature of their work.

<comment><USER21> Not only that but the president of the supreme court changes every 2 years and it's always a very predictable election with the oldest member taking office unless the person has always done so in the past (and the whole process restarts after the last one, if they ever live enough as we have 10+1 justices and they are also required to retire after they are 75).

</comment></comment></comment></comment><comment><USER22> Not to be insensitive, but what's the death rate for healthy individuals in his age range? Next to zero? Italy reported that 99% of those who died from Corona had other health issues.[1] In my county (county, not country) it was reported that 99.4% of our Covid cases have recovered, and that was just the cases that were tracked. Yes, the vulnerable should be taken care of, but legitimately asking - why is there still hysteria over this?

[1]: [https://www.bloomberg.com/news/articles/2020-03-18/99-of- tho...](https://www.bloomberg.com/news/articles/2020-03-18/99-of-those-who- died-from-virus-had-other-illness-italy-says)

<comment><USER23> Because that 1% of people are lives that still matter??? WTF... I can't believe this.

<comment><USER24> We didn't lock down for the Hong Kong flu or similar pandemics, because the damage caused by a lockdown is immense. Health damage caused by delayed cancer screenings and organ transplants. Psychological damage caused by lockdown and unemployment. Unbelievable economic damage. How to respond to a pandemic is a trade-off.

People die in traffic accidents every day. Do we set a nation-wide speed limit of 5 MPH? No. Of course not. We accept that the benefit of travel are worth it, and we strive to make travel safer because every death is a tragedy. That's a balanced approach. For mild pandemics we should also seek such a balanced approach where we protect the old and the vulnerable and let everybody else live life as normal.

<comment><USER25> Hong Kong flu was significantly less deadly than Covid in United states, perhaps 3 to 10 times. NYC death rate is at least .2% which would translate to 600 000 death across the US, and that is a very rough estimate. Even more importantly without lockdowns you'd get even worse clusterhell in the hospitals, which would have to do triage between neverneding stream of Covid patients and "normal" patients, who need an urgent surgery, and that would lead to enormous death rate rise so your argument is backwards actually.

<comment><USER24> At least a million people died of the Hong Kong flu. Much more as a percentage of the world population. And Covid19 doesn't seem to take hold anywhere in the pacific rim, regardless of policy. Lockdown or not, masks or not, good or bad hospitals, it doesn't matter. None of the countries in the rim got hit hard. This tells us it's all about herd immunity, and about getting there with as few casualties as possible.

NYC locked down after peak infection; completely pointless. If you're going to lock down you have to do it way early, before the virus has spread everywhere. Sweden didn't lock down. Did we see uncontrolled spread there? Nope. The virus came and petered out after infecting a critical mass of people.

The NYC death rate would never hold over the entire US because a large part of it was the result of disastrous policy of sending covid patients to care homes, and an aggressive venting policy that killed many. Bear in mind that covid19 is a hotspot disease and some parts of the world are always going to get hit much worse than other parts of the world. Extrapolating from outlier hotspots is bad science.

<comment><USER25> I am not talking about whole world; I was talking in particular about US. It is still unclear about the final death tall of Covid, but it clearly is going to be close to a million, perhaps 2 or so. You operate with a very odd definition of Pacfifc Rim btw, USA, Canada, Mexico, Equador were all hit badly - all of them are countries of pacific rim.

Sweden is actually an excellent example of a bad policy. Economically doing as bad as their neighbors, and had enormous death toll compared to Norway, Germany, Iceland, Denmark and Finland, countries (esp. Norway) with similar culture and attitudes. Also we are in summer now, and the virus may well come back and hit Sweden with a lot bigger force, just because so much more of it there.

Not locking down during the Hong Kong flu was by the way a terrible decision. Had they introduced at least some measures, such masks and limited lockdowns the number of dead would have been much lower.

I by the way divided NY rate by 3, I counted as if all of NYC had acquired the disease. So no, .2% is reasonable expectaion, and .1% of total population of will clearly be reached within several months, it is already halfway there.

<comment><USER24> Pacific Rim definition I use: [https://www.yourdictionary.com/pacific- rim](https://www.yourdictionary.com/pacific-rim). I'm not talking about the Americas.

Sweden did a lot better in Q1. It was the only western European country with positive growth, and it vastly outperformed everybody else. I expect they'll also outperform the rest of Europe in subsequent quarters, but this will remain to be seen. The death toll in Sweden is completely in line with its neighbors. This is evident when you look at All Cause Mortality. Their definition of "with covid" deaths is far more generous than their neighbors, so comparing the numbers from worldometers is not apples-to-apples.

My analysis suggests Sweden is very close to herd immunity, and they won't have a second wave. The countries that haven't reached herd immunity yet can choose between locking down in perpetuity or dragging out the process for no gain. There is no vaccin and the virus can't be contained or exterminated. People in the west won't put up with a totalitarian China style lockdown.

The research on mask effectiveness is still very contradictory. The health organizations of Sweden, Norway, Denmark, and Finland all claims masks don't work, as did the CDC and WHO. Research clearly indicates some viral load is blocked by masks, but there aren't any studies that connect mask use with actual infection rates. We don't even know to what degree asymptomatic infections are a thing. I suspect a large percentage of infections happen because symptomatic people refuse to stay home, and anecdotal evidence from superspreading events supports this.

Deaths in the US are trending down and will continue to trend down in 95% of counties. There will be hotspots here and there in places that didn't get hit in the last few months, but there won't be a second wave. You see deaths doubling from here, I think that's exceedingly unlikely.

<comment><USER25> I do not operate with "all cause mortality". I look at the excess death in April May, and in Sweden is so much higher it is not a serious conversation to even dispute that.

<comment><USER24> Epidemiologists look at annual deaths cumulative from the start of the flu season, exactly because we care about total mortality and not about noisy spikes in the data. And that picture looks completely different: [https://pbs.twimg.com/media/EcTV1OmWsAE3kAs?format=jpg&name=...](https://pbs.twimg.com/media/EcTV1OmWsAE3kAs?format=jpg&name=large)

Remember that 2018 and 2019 were unusually mild flu seasons, so many people had already outlived their actuarial life expectancy when covid hit.

<comment><USER25> I do not play in creative accounting. There is a visible by naked eye large bulge of excess death in April and May in Sweden, which exctly equal to number of counted covid deaths, and same for Norway - a much smaller bulge, exactly equal to number of death from Covid. What you are engaging in is exactly kind of accounting caused credit crunch in 2008.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


1980 Atari 800 ad: "It will never become obsolete" - <AUTHOR> https://www.bookofjoe.com/2014/07/1980-atari-800-ad-it-will-never-become-obsolete.html <comment><USER2> Quick rant, downvote away but I thought I'd share something that's really going to be important to the future of tech: Obsolescence in technology is a completely broken mental model. As a communications tool it mainly serves the purpose of justifying new development and economic growth. The obsolescence model is based on a breadth-first estimation of technology (what's out there, what's going on, how have things changed out in the tech world, what else is available) rather than a depth-first estimation (what's in here, what can this baby do, wow what a miracle in this way or that one).

By using the word "obsolete," the communicator is being--intentionally or unintentionally--intellectually shallow. Even if the word serves their purpose, they are also wrong in a big way.

The fact is, this machine still does what it started out to do, technically speaking. If you look up the dictionary definition of obsolescence though, you'll find some really terrible news: "no longer useful." An Atari 800 is no longer useful? That's arguable, to say the very least.

The best way to communicate obsolescence with accuracy, precision, and rationality is with a reference point, like a market: "This tool no longer serves its original target market with the efficacy that it once did." This is much more precise. However, it opens the door to another depth question: Which markets or sub-markets might it _still_ serve, and even speak to rather loudly?

IMO the discourse of obsolescence is a curse on modern civilization. We are missing out on some huge _qualitative growth_ lessons until we learn to think in a more nuanced way about how technology serves us all.

<comment><USER3> If an old computer can be 100% emulated by a new computer using 1/1000th of the electricity then the old computer should be archived as software and physically recycled/eliminated.

<comment><USER4> Your laptop probably draws, what, 15W. Your old computer probably does _not_ draw 15KW! - yes, I'm sure there will be old computers that do, and more, but since this article is about the Atari 800, I'm going to assume the discussion is about that sort of old computer, rather than something the size of a room that required a reinforced floor and your own personal account manager at the electricity company.

Modern hardware that I've got:

1\. Mid-2015 13" Macbook Pro, mostly idle, battery charged, screen fully dimmed: 11W (16W with screen at full brightness)

2\. My 2011 i7-2600K desktop: ~100W idle (packed away right now - but it's about that)

I happen to have my old Acorn junk set up right now, so here's some measurements from that:

1\. BBC Master 128: 12W

2\. BBC Micro model B: 25W

And some other Acorn peripherals. Add these figures to either of the above:

1\. Acorn 6502 second processor: 5W

2\. 5.25" disc drive: 2W (when in use)

3\. Ancient early-80s monitor of unknown provenance: 50W

4\. Acorn-branded CM8833: 85W

Looks like my favourite Acorn-branded monitor is actually pretty bad :( - however it's not actually drawing a huge amount more than the 2 x 27" monitor setup I have with my Macbook Pro, even though the pixels per watt isn't quite as good.

In fact: the overall power draw for BBC Master 128 setup vs Macbook Pro setup, both period-authentic, both (if not cutting edge for the time) up to the task of a good range of period-authentic workloads, is about the same! - and even if I was certain 1000x was an overestimate, this is still a bit of a surprise...

<comment><USER5> If you factor in that your MBP could probably comfortably emulate 100 6502s in real time, 1000x isn't quite as severe an overestimate. Get the GPU in the game and, even with terrible warp utilization and cache efficiency, you still might be able to hit that 1000x for purely academic purposes on a desktop card with HBM (maybe 2500 real-time-emulated 6502s on a 250w system).

Move to the microcontroller world, though, and 1000x is a vast underestimate. The main core in a current project of mine runs at 24 MHz and draws around 1.2 mW without even entering sleep. This system could probably emulate a Master 128 just fine in real time, for about 1/10,000x the power.

<comment><USER4> My MBP can probably comfortably emulate 150 x 1 MHz 6502s in real time, but your average 6502-based system is a system, not just a 6502, and the Acorn stuff is no exception. There's a lot more to emulating it than just dealing with the CPU.

The Master 128 runs at 2MHz. For each emulated microsecond you need to (broadly speaking) do at least 2 CPU updates, 2 VIA updates, and 16 bitmap bits/1 teletext glyph. 24MHz = 24 cycles per emulated µsec :( - good luck even squeezing the video output into that, let alone the other stuff. Rather you than me!

(This also ignores handling the FDC, ADC, and ACIA. The devices accessed via the VIA will also take a bit of time to emulate...)

</comment></comment></comment></comment></comment><comment><USER6> Meanwhile, yesterday one of the top HN articles was on a brand new port of Super Mario Brothers to the Commodore 64. There's more new good software coming out for 8-bit machines today than there was in 1986 when I bought mine.

Depends on what your definition of "obsolete" is, I suppose.

<comment><USER7> > _Depends on what your definition of "obsolete" is, I suppose._

I mean, the paintings at Altamira are still admired today, 36 thousand years after they were made.

<comment><USER8> I agree. It's pretty rich that engineers are mocking cultural products for obsolescence.

<comment><USER9> Rather, mocking products that claim they're immune to it.

</comment></comment></comment></comment><comment><USER10> On the other hand, I don't know about other people, but I tire of the constant change of things that don't need to be changed. We in society have a large number of issues we need to confront, some that are vital to continued survival of our species. Instead of that, we still find our tools degrading by means that people like Apple claim are not planned obsolescence or software bloat for every update of Android that a once working phone moves to a crawl, etc, etc.

There is entropy, then there are social actors whose material interest clash with a life of sustainability adding to the drama we already must face in society.

<comment><USER11> I liked the opening of "The Gods Must Be Crazy", in particular when they say _" But he didn't know when to stop."_

Here's the part of the script comparing the simple lives of the native bushmen of the Kalahari desert to "civilized man":

        These Bushmen have never seen a stone or a rock in their lives.
        The hardest things they know are wood and bone.
        They live in a gentle world, where nothing is as hard as rock, steel or concrete.

        Only miles to the south, there's a vast city.
        And here you find civilized man.
        Civilized man refused to adapt himself to his environment.
        Instead he adapted his environment to suit him.
        So he built cities, roads, vehicles, machinery.
        And he put up power lines to run his labour-saving devices.

        But he didn't know when to stop.

        The more he improved his surroundings to make life easier...
        ...the more complicated he made it.
        Now his children are sentenced to years of school, to learn...
        ...how to survive in this complex and hazardous habitat.
        And civilized man, who refused to adapt to his surroundings...
        ...now finds he has to adapt and re-adapt...
        ...every hour of the day to his self-created environment.

<comment><USER12> This largely relies on the idea that pre-civilized life was preferable. And, for some groups, it was. All the women enjoying close to 0 sexual freedom and dying in child birth might disagree, though.

<comment><USER11> wait, hold up.

The point was "knowing when to stop".

Civilization creates these juggernauts that start moving and when they reach their goals their momentum carries them past need and reason.

How many laws do we need? Do we need more roads (or lanes)? Should taxes increase? in percentage!? Do we need to "add value" to every product ever? Do kids need more homework? Do you need another iPhone?

<comment><USER13> I never bought my first iPhone. I am however, not at the point at which I feel like the world should stop turning. I'm more like "ok, I am capable of selecting the good things from the bad, and letting go of the novel tech I don't like". Perhaps that is a product of being middle aged and I will feel differently when I am 80.

Douglas Adams wrote: "I've come up with a set of rules that describe our reactions to technologies: 1\. Anything that is in the world when you're born is normal and ordinary and is just a natural part of the way the world works. 2\. Anything that's invented between when you're fifteen and thirty-five is new and exciting and revolutionary and you can probably get a career in it. 3\. Anything invented after you're thirty-five is against the natural order of things."

I like to look at classic car ads, and I saw one for a car from the 60s or whatever, and I forget the exact phrasing, but it said it had had a modern type of stereo installed, which had AM/FM and a CD player. Which I thought was funny, because that kind of pinpoints the assumed age/generation of a buyer. Going by Adams, someone who thinks car CDs are new, but good, could have been up to 35 in 1985 when the first car CD players came out. Which is exactly the age to remember mid to late 60s cars as desirable as a teenager. But now they are close to 70 years old, and that's why the prices of such cars are trending down.

I'm not sure that it's inevitable that you hate new things as you get older. Maybe it's more that people feel insecure about their ability to choose which new things they like, because it becomes a disorienting flood.

</comment></comment></comment></comment></comment><comment><USER14> Our Atari 800 is still hooked up and operational. My kids (now all in their 20s) came home with college friends and showed them some of their favorite games on it (like JumpMan! and M.U.L.E.).

<comment><USER15> OMG.. M.U.L.E. still might be my favorite video game.

<comment><USER16> M.U.L.E. might be the most well-conceived and well-executed game for replay- ability and enduring enjoyment given the hardware limitations of the 8-bit era. It had/has the advantage of allowing up to 4 human players to participate, which keeps it fresh even today in the same way board games from 40 years ago can remain fresh. Yes, the AI players are easily defeated, but human opponents made M.U.L.E. a true delight.

</comment></comment></comment><comment><USER17> It's 2019 and 1979's Star Raiders is still an amazing game.

</comment><comment><USER18> I still use my 800. Not every day, but probably three times a week. It's a great personal e-rolodex. I also like to paint with it. The games are just as fun as anything current, and the power usage is low.

</comment><comment><USER19> I remember an episode of Computer Chronicles where a man claimed 8-bit computers should be as relevant today as they were when just released, because "every program is a turing machine, essentially."

His main argument was that the memory and CPU limitations helped curtail software feature bloat. When asked about the possibility of advanced Multimedia features becoming more desired among consumers, he shrugged it off, saying an expansion peripheral would do the job just as well as buying a new machine, without having to learn a new machine entirely.

Now that we have cartridges for the C64 that allow for massive data storage and 32+ Megs of RAM, maybe he was right. We could have all been using C64s or Amigas with a ton of expansion cards/carts installed.

<comment><USER20> > His main argument was that the memory and CPU limitations helped curtail > software feature bloat

I think there's some truth to this - if you have a limited amount of RAM, you can't just throw RAM away and do the easy thing. You have to be careful with it. The flip side of that is of course one man's feature bloat is another man's valuable feature, and some things just _won't_ fit in the limited amount of RAM.

<comment><USER19> Seems to be the "Usable, Extendable, Efficient - pick two" scenario at its core. I remember very well a word processor on C64 (GeOS Writer I think?) that would use its own disk as swap to get around memory limits. I eventually bought a memory expansion just to get around this, which wasn't cheap in the slightest.

And that's just for text! It's stunning to me how inefficient text can be when every byte counts.

</comment></comment></comment><comment><USER21> I really like the designs of the old computers. They are so interesting. That's why I'm making a libretro frontend that loads 3D models [http://vintagesimulator.com](http://vintagesimulator.com)

</comment><comment><USER22> I love the quality of the keyboards in these old machines. Is there anyone out there building all-in-one keyboard computers w/ Model M-quality keyboards?

<comment><USER23> A friend and I were speaking of this recently. The current trend for "all-in- ones" is to have "monitor computers", however practically speaking it would be better to have a "keyboard computer" that you can change every few years and keep the investment in your nice 2k monitor.

<comment><USER24> but then if you spill your drink you've ruined a $2000 computer instead of a $50 keyboard...

<comment><USER25> Then stop drinking near your computer.

<comment><USER24> "just stop using your PC the way you're accustomed to so that you can use my new product", what a winning sales pitch. It's like if instead of making his phone not suck, Steve Jobs had told people to just stop carrying their keys around in their pockets.

I mean, drinking soda and gaming is practically a meme at this point, so goodbye to all those customers. And anyone else who wants a beverage while they edit photos or do their taxes.

<comment><USER25> I was talking specifically to _you_ , not all people who drink beverages at their computer.

I'm not trying to sell anything. I'm just concerned for the longevity of your computing hardware.

</comment></comment></comment></comment></comment></comment><comment><USER26> There's an absolutely fantastic podcast called "ANTIC The Atari 8-bit Podcast" [1] I listen to. The show started off a bit slow, a normal old-guys-talking- about-old-hardware. But somewhere along the way they started hunting down people involved with Atari or Atari products back in those days and have started amassing an impressive collection of sometimes incredible interviews. It's a treasure trove of oral history of the late 70s and early-to-mid 80s computing movement.

I don't know how they find these folks, but the interviews can be absolutely awesome. Sometimes people who's names I never knew, but who's companies or products I absolutely remember give detailed background on the goings on of early computing in a way that's just really amazing. There's hundreds of interviews now.

Their non-interview shows are mostly about the three hosts talking about the _modern_ Atari 8-bit scene. New hardware, new software and so on. Devices for using the internet, SD cards and such on these ancient machines.

I never had one of these boxes, and only ever saw one a couple times, but I've grown to deeply respect the thought and engineering that went into these machines.

1 - [https://ataripodcast.libsyn.com/](https://ataripodcast.libsyn.com/)

</comment><comment><USER27> Still have mine. And what I learned from it hasn't become obsolete yet. Those were the days of writing everything in assembly language, trying to cram your program into what now seems like a tiny amount of memory. I recall that memory was so tight that I'd use one byte to hold two different variables. Multi- tasking? Yep. We had vertical and horizontal blank interrupts that you could use. Magic times making that machine "sing"!

</comment><comment><USER28> Pictured with a cassette recorder and some sort of dot matrix toaster oven

<comment><USER29> yes i see it and i remember long sessions of group geeking and gaming.

[https://bookofjoe.typepad.com/.a/6a00d8341c5dea53ef01a73dea5...](https://bookofjoe.typepad.com/.a/6a00d8341c5dea53ef01a73dea5917970d-pi) [IMG]

I recalled the MAME thing and the idea of installing a modern PC platform in a retro arcade cabinet, i think and old borked atari cabinet with a harddrive dock in place of the rom port would be a cool looking place for a gaming[mame- ing] PC.

</comment></comment><comment><USER30> If I am correct, the 6502 in the Atari 800 was also used in the BBC Micro.

The BBC Micro itself was used to design the first ARM, and the 6502 was a strong influence on that RISC design.

[https://www.theregister.co.uk/2012/05/03/unsung_heroes_of_te...](https://www.theregister.co.uk/2012/05/03/unsung_heroes_of_tech_arm_creators_sophie_wilson_and_steve_furber/)

The Atari 800 is in some ways an ancestor of the ARM platform, realizing that ARM itself adapts wildly in efforts to maintain a dominant position in mobile computing (i.e. the Thumb variable-length "RISC" instruction set, massive 64-bit architecture changes).

<comment><USER31> > the 6502 was a strong influence on that RISC design.

How do you figure that? The 6502 was itself based on the Motorola 6800, and is a pretty typical accumulator architecture. It could hardly be any more different from the ARM.

The _development_ of the ARM architecture was carried out on 6502-based systems -- but only because they were conveniently available, not because there was anything special about that processor that guided development.

<comment><USER4> The 6502 accesses memory on every cycle, predictably, so you can have memory that's clocked at the same rate and you're getting 100% utilization. Compare to Z80 and 68000, for example, which access memory only intermittently, and not reliably at any N-cycle boundary. There's a couple of bits about this in this interview with Sophie Wilson, one of the ARM designers: [https://www.computerhistory.org/collections/catalog/10274619...](https://www.computerhistory.org/collections/catalog/102746190) (a good read)

I'm sure I read somewhere that the 6502's low interrupt latency was also an influence (the 8-bit Acorn stuff was IRQ-heavy, no DMA), but clearly it wasn't in the above PDF, so I've no idea where this came from :( - but this might not be 6502 influence necessarily, as the Z80's IRQ latency looks OK, maybe just a desire not to fuck it up like the 68000.

ARM SBC is like 6502 SBC, just an ADD with inverted input... so... maybe that counts?!

The 6502 influence is indeed not all that visible in the programming model or instruction set, but I don't think this is a bad thing.

<comment><USER31> > The 6502 accesses memory on every cycle, predictably, so you can have memory > that's clocked at the same rate and you're getting 100% utilization.

On the flip side: it also means that the processor can't run any faster than memory, which is not great.

Anyways, the 6502 uses a rather narrow 8-bit data bus with no cache, so instruction fetch takes up the majority of memory accesses -- in fact, I'm not sure you can get _under_ 50% of memory accesses used for instruction fetch without pathological instruction sequences. It's incredibly inefficient by modern standards; even 68000 was an improvement in this regard.

</comment></comment></comment></comment><comment><USER32> I miss the closeness to the machine that programming an 8-bit computer embodies. There was a brief explosion of Flash games that might have been similar but at a higher level. Now we have JavaScript+HTML+CSS which seems so abstracted. I feel a bit sorry for newer generations that do not get the chance to learn not just software but hardware to go with it. Even the PC up to SVGA cards still had that. Everything's more powerful now, including the tools to make software which is better for making larger works but something was lost. At least indie game dev's have kept aesthetics and focus on gameplay alive.

</comment><comment><USER33> LOGO on an Atari 800xl at elementary school was my first coding language. I mainly typed in stuff out of a sprial bound book of cool patterns you could make. I can only assume the title of that book was "Stack Overflow"

<comment><USER34> LOGO (which is really Lisp) on a TI 99/4A changed my life. It was where I had that first epiphany that software is just "castles in the sky." It can be anything you want.

</comment></comment><comment><USER35> I seem to remember a similar sticker on an E-machines PC that I had as a kid in the mid 90's.

<comment><USER36> Considering they got busted for using refurbished parts in new machines, a lawyer might argue that the sticker was telling the truth! After all, what is already obsolete may never become obsolete.

</comment></comment><comment><USER37> I suppose that's true if you keep adapting it's purpose. Probably provides a decent experience as a keyboard attached to a modern desktop.

</comment><comment><USER38> I once saw a TV commercial for a non-name-brand PC with one of the first x86-64 CPUs. It seemed decent enough but it wasn't _that_ much faster than 32-bit machines of the day, and I doubt it had enough RAM slots to break 4GB, anyway. They repeatedly claimed that 64 bits meant it was "the last computer you would ever need to buy".

<comment><USER39> Back in those days, claims that a system will never become obsolete were pretty common as marketing nonsense.

I think that particular lie (and it was always a lie) came up so often because technology was advancing at an incredible rate, and it made people reluctant to buy computers because they knew that it was going to be obsolete in less than a year. The old "joke" \-- funny because it was true -- was that a computer was obsolete the minute you took it out of the box.

The pace of hardware change has slowed considerably since then -- now advances are more along the lines of "the same thing, but faster and/or smaller". Worthy advances, to be sure, but nothing that makes last year's machines garbage.

</comment></comment><comment><USER40> That Atari 800 probably works fine today.

Since it's not always (ever?) connected to the internet, malware is much less of a problem.

Games probably work fine as well, as they are stored on rugged cartridges and don't depend on cloud services, internet-connected DRM, or game servers which tend to be shut down after a year or two.

</comment><comment><USER41> Dad bought an Atari 800 for me when I was 16. Became a master pirate, with a collection of over 1000+ games and programs. Modified my Atari 810 with a Happy Archiver chip to copy protected disks and then 'free' them by modifying the bad sector disk protection code and releasing them.

</comment><comment><USER42> Obsolete for what?

I really like the aesthetics of the Atari 400/800 and not for the logo or the case design but just for the colours. The browns/yellows/oranges are quite inspiring for a bit of modern day UX.

I know they didn't sell these machines for people to steal the colour scheme from 40 years later, but I really like lots of aspects of the design including the colour or the units.

The retro tech scene I find a little weird. It is surprisingly strong and there are Youtube videos of someone changing the capacitors on these things and getting views in the millions. It is as if retro computing is the new model railway hobby or 'Airfix' of our times.

</comment><comment><USER43> I couldn't afford the ATARI 800 but my 400 still works today. Just played some missile command, star raiders, and Miner 2049 on it a few months ago. I learned BASIC and 6502 on mine so will always have a soft spot for them.

<comment><USER44> You could have picked one up after the video game crash. I think the XL machines wound up selling around $100 in the mid 1980s.

</comment></comment><comment><USER45> So let me think... Things I've used to store data in my lifetime: Punch cards, Cassette, Whatever that big, open, orange multi-platter with a plastic, removable cover I think on a VAX in ~1985 (anyone know?), 8" floppy, 5.25 floppy, Spinning hard disk, SSD, Flash drives (many types), 3.5" 'floppy' or hard? SONY, more I'm sure...

<comment><USER46> I think they were just called Dick Packs.

[https://en.wikipedia.org/wiki/Disk_pack](https://en.wikipedia.org/wiki/Disk_pack)

<comment><USER46> I promise that was a real typo, and it's too late to edit.

</comment></comment></comment><comment><USER47> A friend had one of these and his dad tried to convince my dad to buy one. I honestly don't know what my friend did with this thing other than play a few games. I wonder what kind of analysis of the stock market they could even do on this old computer.

<comment><USER48> Well, it's where I taught myself a good portion of my early programming skills. That's got some value.

</comment></comment><comment><USER49> Not the same computer, but, with a serial cable and USB adapter, a RAM module, a flash EPROM and a bit of software, a Cambridge Z88 from the same era is a nice ultra-long-battery-life laptop for taking notes or writing uninterrupted.

</comment><comment><USER50> Commodore 64 > Atari 800

<comment><USER51> The Commodore 64 has better sound and the graphics are more flexible in putting colors in more places and more larger sprites. This is great for games and the C64 would have been just as successful as a game console, and perhaps more successful as one.

The Atari 800 is better in virtually every other respect. It has an actual OS instead of a KERNAL, the SIO bus is what modern USB was based on and is better than the IEC bus as it is not crippled to tape speed like the IEC bus is and supports a tape drive and modem in addition to floppy drives and printers. It has a 256 color palette and more video modes. The 6502 CPU is faster. The DOS is easier to use with a menu instead of arcane commands. The BASIC is friendlier with sound and graphic commands, although slower. It can autoboot from tape and disk.

I had a C64 as a teen but today I appreciate the Atari 800 much more. It's an amazing system and the designers went on to design the Amiga, which was effectively a 16-bit version of the Atari 800 utilizing the same 3 custom chip design.

The C64 was more popular because it was less expensive and better for playing games, but it wasn't a better computer.

<comment><USER32> Good tech summary. I grew up on Atari 8-bit and loved the technical details that got out. The C64 owners I met tended to hack less. I pretty much learned to code disassembling ROM and AtariDOS and making custom patched versions (and of course games). I would get into the zone with the macro assembler editor like I was meditating and say "I'm in medit" if anyone interrupted me.

Bill Budge's Pinball Construction Set blew my mind and I probably became a programming tool developer because of it.

</comment></comment></comment><comment><USER52> This marketing blunder does not touch the best of all time: Harvey's (a Canadian fast food chain) had a bold advertisement stating they only use "100% real processed cheese". But, at least Harvey's was not lying ;)

</comment><comment><USER53> I still have mine. So yeah, pretty accurate.

</comment><comment><USER54> i remember getting an apple II+ and my neighbor had this...u could see the envy in his eyes!

<comment><USER51> LOL! There is no way an Atari 800 owner would be envious of an Apple II owner. The Atari 800 is superior in so many ways.

</comment></comment><comment><USER55> I really miss keyboard like that

</comment><comment><USER56> Christ ... that brings back memories ...

<comment><USER51> It sounds like you haven't used an 8-bit computer for a long time. You're missing out. They're all the rage now. There are new games coming out for them every week now.

<comment><USER56> I did a google with fair results - but point me in a decent direction for my re-introduction? Thanks</comment></comment></comment>


Lisp as a Vehicle for Rapid Prototyping (1997) - <AUTHOR> http://www.nhplace.com/kent/PS/Hindsight.html <comment><USER2> I've starting building my personal backends in Clojure and I am amazed at how easy and fast it is to get things going. The difference is even more remarkable for frontend code. I get my program into a state that displays some unfinished component and iterate until it's done. ZERO reloading is a huge time saver.

Now if I could only get my React Native programs running with Clojurescript...

<comment><USER3> re-natal does this and it works as advertised. Zero reloading, full repl connection to running program. There is no competition, and won't be.

<comment><USER2> I know what I'm doing tonight....rewriting my RN project

</comment></comment></comment><comment><USER4> While I love lisp and use it for my projects, one should note that a lot has changed in the past 22 years. Python was far more primitive when this was written and ruby didn't exist.

The tooling around lisp is still a distinguishing factor though. I haven't found a free development environment for python that has even a small fraction of the power of SLIME (I don't use python quite enough to investigate commercial offerings, though the one time I used pycharm it was fairly nice, it didn't feel as dynamic as SLIME), and it still has a fairly strong edge against most dynamic languages in terms of optimizing compilers. For some reason, outside of smalltalk/lisp, AOT compilation never caught on with dynamic languages, where you see either an interpreter or a JIT.

<comment><USER5> Which part relevant to this article has changed? Python/Ruby still don't have a condition system. They don't have macros. Python added optional declarations recently but the compiler doesn't use them for optimization (or anything else). Generic functions are available as an add-on library, but aren't terribly well integrated. They both have separate debuggers which don't use their own language for debugging.

Python/Ruby do have dynamic redefinition and higher-order functions and a couple other nifty features, but most of the features I see on this page are still unique to Lisp.

<comment><USER4> \- It is comprehensive.

\- It supports modular design.

\- It supports interactive development, debugging, and update.

These things are true of Ruby and Python in a way that they are not for C, C++, or to a lesser extent TCL.

</comment></comment></comment><comment><USER6> I started learning a bit of Common Lisp a few weeks ago. It seems quite nice in many areas, but for rapid prototyping I feel like it cannot compete with Python. Maybe it's just because I'm more used to Python and imperative code in general, but so far I used no other language where I managed to get something working just as quickly and painlessly.

<comment><USER7> I switched from Python to Clojure. And I used handful of other PLs before that. I can say the same thing: "so far I used no other language [but Clojure] where I managed to get something working just as quickly and painlessly". I liked Python. But I love Clojure.

</comment></comment><comment><USER8> I have an on again off again relationship with LISP. I _loved_ scheme in college. I went to a college where java was predominately taught, but after my second year I rolled my dice with every professor to let me do assignments in scheme. A few went for it. It just clicked, and I felt like I could build anything.

After college, I didn't use any Lisps for a long time. I tried to get back to it. I tried installing common lisp. I remember the installation process being kind of insane. It felt like I was installing an operating system. The dev ergonomics were weird. I couldn't get it to click again like it did in college.

I messed with (fluxus) for a while. I LOVE live coding stuff, and it treating oGL as a first class standard library is so cool. It seemed like a single guy's passion project. It lacked some facilities that made it click as a daily driver. Also, installing it on my mac was a colossal pain in the ass due to pulse audio issues.

Not too long ago I installed racket. The installation process was painless, and I wrote enough with it that I started to feel that magic again... but then.. I .. wrote too much?

DrRacket was nice when I started, I like images appearing in the REPL. It quickly revealed itself to be hot steaming garbage. SCROLLING is so slow and flickery in a 225~ line source I wrote that it's beyond distracting.

I tried to play around with perlin noise, and generating an image of regular sizes required me to click this alert doubling Dr.Racket's ram allowance like 3 times. I'm sure that's my code's fault, but I'm probably not sticking with it long enough to find out..

I'll try again in a few years I guess.

<comment><USER9> Have you given Clojure a try?

<comment><USER8> I haven't. I've been prejudiced against the jvm for most of my career (mostly because of how heinously Oracle has treated Sun's corpse). I'm over it now.

Thanks for reminding me to consider it.

I'll look at it today.

<comment><USER10> It reminds me of a real world Scheme. Not identical, but similar.

</comment></comment></comment></comment><comment><USER11> Any interpreted and most weakly typed langauges are great for prototyping.

lisp, clojure, python, php, ruby, javascript, prolog, smalltalk, basic, lua. I would say clojure & javascript lead the pack due to their support for concurrency.

<comment><USER12> Lisp is not interpreted or weakly typed. It is dynamically typed, but also strongly typed. And Common Lisp is typically compiled.</comment></comment>


Rock Star vs Rock Solid [programmers, and the difference] - <AUTHOR> http://www.jeremyhutchings.com/2009/12/rock-star-vs-rock-solid.html

<comment><USER2> For me, this is the key phrase:

"A joy to manage as they typically do 99% of the job for you"

I don't doubt that managers prefer employees that are easier to manage. But is it really in the _organization's_ best interest?

I don't know thte author, but I've learned not to underestimate what a good boss can do for an employee. I'm inclined to believe that maybe if the author gave "rock stars" a bit more attention, he might be surprised at what they can do.

<comment><AUTHOR> Typically I've found that the best employees don't need "managing" in the classic sense, they need facilitation and protecting from the usual distractions.

<comment><USER3> Which is why my (a CEO) business card for my new startups says: "chief janitor". :)

</comment></comment></comment><comment><USER4> I suspect that one source of the "Rock Star" meme is an inside joke about rubies being a type of rock.

</comment><comment><USER5> Just because some people refer to themselves as 'rock stars' doesn't mean that they -are-. 'Rock star' isn't defined like that, and so the whole argument falls flat. And if those people start calling themselves 'rock solid', this argument still falls flat.

<comment><AUTHOR> As said in the post, when people call _themselves_ rock stars there are problems.

</comment></comment><comment><USER6> Rock stars are great when your team is small and tightly-knit. As a rule, they don't scale. Still often worth making accommodations for them as you grow, though.

</comment><comment><USER7> What this guy describes is just like the actual music business as well.</comment>


Canada obsoletes CAN-SPAM and replaces with an Opt-In system - mike-cardwell http://www.returnpath.net/blog/intheknow/2010/12/canada-has-an-opt-in-regime-and-a-new-anti-spam-law/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ReturnPath+%28Return+Path%27s+IN+The+Know+Blog%29

<comment><AUTHOR> Summary: Canada passed an email law[1] with teeth. It applies to anyone sending email to a Canadian and takes effect in September.

(Still too long? Let's just call the Canadian law _CAN'T SPAM_.)

There are three tests, any of which will allow unsolicited commercial email.

• Existing relationship between sender and recipient. (purchase, contract, donor, volunteer, member)

• The recipient prominently publishes their email address and the mail is related to the recipient's professional capacity.

• Recipient signed up for it.

The law and its enforcement will begin to be explained in January.

[1] [http://www2.parl.gc.ca/HousePublications/Publication.aspx?La...](http://www2.parl.gc.ca/HousePublications/Publication.aspx?Language=E&Parl=40&Ses=3&Mode=1&Pub=Bill&Doc=C-28_3&File=47) the meat is in section 6, but notice it is written in an "exception" model. It seems a little insane until you get to the end of the section and catch the exceptions.

<comment><USER2> What happens if someone else signs someone up for commercial email? Who gets in trouble? Based on this, it seems like the company would.

<comment><USER3> Somebody else can't, short of hacking into their account. In Canada, you are forced to do double opt-in newsletter sign ups.

</comment></comment></comment><comment><USER4> In similar news today: Telemarketer hit with $500,000 CRTC fine. Good to see that they are pursuing these major cases and forcing fixes. Still, I didn't sign up for the Do Not Call specifically because I believed it would increase my junk mail calls - never can trust the bad guys.

[http://www.cbc.ca/money/story/2010/12/17/crtc-xentel-do- not-...](http://www.cbc.ca/money/story/2010/12/17/crtc-xentel-do-not-call- penalty.html)

</comment><comment><USER5> So, what's the over-under for the percentage change in the quantity of spam Canadians see due to this act of politicians? I'd wager about 0%.

<comment> mike-cardwell It wont have an immediate affect. What it will do is enable people to sue spammers that they couldn't previously sue. This may have a good long term affect. Not just for Canada but for the World in general.

</comment></comment><comment><USER6> Maybe I just skimmed wrong, but I didn't see anything in the whole bill about what they'll do if they find you breaking those rules...

<comment><USER7> Administrative monetary penalties can be as high as $1 million per violation for individuals, and $10 million per violation for organizations. FISA also includes provisions for a private right of action that allows any person to seek damages in court resulting from a violation of the law.

Out of this guide [http://www.thindata.com/aboutus/resourcecenter/fisa/pdf/The_...](http://www.thindata.com/aboutus/resourcecenter/fisa/pdf/The_Marketers_Guide_to_Applying_FISA.pdf)

<comment><USER6> Ah, thanks.</comment></comment></comment>


Why Operators Are Useful - <AUTHOR> https://neopythonic.blogspot.com/2019/03/why-operators-are-useful.html?m=1 <comment><USER2> Wow, he's still got it. I read the whole thing, without realizing it was Guido Rossum, thinking "hey, that's a really good point". Then got to the end and realized it was the inventor of the Python language. So, I wasn't impressed as I was reading it because of who it was, I was impressed because he was making a really good point.

Obviously, the fact that he made my favorite programming language was no fluke.

<comment><USER3> Ramblings through technology, politics, culture and philosophy by the creator of the Python programming language.

This was literally the first thing I read when I hit the link. Don't mean to sound rude but how did you miss that ? Does it render differently on web? I saw this on the mobile version of the site on my Android.

<comment><USER4> For me that was covered up by some popover I didn't read. Besides the tagline of a blog is the sort of thing I for one gloss over. I've had decades of training how to skip straight to the content.

<comment><USER3> That's what I thought, usually even I am trained to skip those few lines under titles (like opinion articles have a blurb about the author )

</comment></comment></comment></comment><comment><USER5> Seems like it's more an argument and prefix notation vs infix.

z = Add(x,y) is just a form of prefix notation in my opinion. I would say that z = x + y feels better because that's how we are taught in school. But in English at least, it's reasonable to say the following:

Z is X plus Y.

To get Z, Add X and Y.

\---

It's also an argument about inconsistent syntax. For example there is not a big gap in lisp for (+ a b) and (add a b). It's a bigger difference in python.

\---

I find infix for math easier to read because it's how I learned it. But I also use lisp, and appreciate being able to say (+ x y) and (+ x y z a b c) where plus might be more accurately read as sum.

That and in college I used an RPN calculator, and going from postfix to prefix isn't as odd as infix to prefix.

<comment><USER6> It'd come down to context for me. If it's 2 or maybe 3 items then I'd prefer x + y, but if it's any more than that I'd definitely use Add().

</comment></comment><comment><USER7> Smalltalk also doesn't have this problem. Since all message-sends are essentially infix, operators ( _binary message sends_ ) are simply special keyword messages.

       1 add: 2.
       1 + 2.

This is helpful when you have "operators" that aren't quite as obvious, for example raising to a power.

       2 raisedTo:3.

Since there are no operators, there is no operator precedence. However, there is precedence between different message types: unary binds tightest, then binary, keyword last. Otherwise evaluation is uniformly left to right.

While this is a question on Smalltalk job interviews ( What is 2 + 3 * 5. ?), that's only useful for filtering out people who simply have never seen Smalltalk before (in case they claim knowledge). It doesn't seem to be an issue in practice, because the evaluation rules are otherwise so simple and uniform.

The other surprising effect is that binary message sends don't seem to have the same tendency to be confusing that operator overloading does. I don't really understand this effect, because the mechanism has effectively the same power.

</comment><comment><USER8> The mnemonic value of "operators" as reminders of properties such as associativity or commutativity interestingly extends to diagrammatic reasoning. A diagram is really just a generalized expression, and this becomes quite useful when one has to deal with more than one "type" or "domain" of operation, but in a consistent way that preserves the compositionality-like properties OP talks about. A recent book exploring this topic is "Seven Sketches in Compositionality; An Invitation to Applied Category Theory" [https://arxiv.org/abs/1803.05316](https://arxiv.org/abs/1803.05316) . (Despite the obvious reference to CT in the title, the work is quite accessible and the math involved is not much more complicated than that found in the linked blogpost. Importantly, and perhaps unlike some people in _other_ programming-language communities, the author does _not_ assume any pre- existing knowledge; the work is rather about using concrete, real-world examples to gently guide the reader's intuition.)

</comment><comment><USER9> A "dict" operator would be vague because there is _more than one way_ to combine dictionaries. Why should I have to guess whether duplicate keys are being skipped or replaced by a symbol, when two different well-named functions will always make it clear?

<comment><USER10> Same with lists and strings, and it doesn't bother anybody: even for dict, it's just a matter or reading from the left to the right.

<comment><USER9> Of course it's not the same. There is _one_ sensible result expected when adding two lists or strings together (since they're linear, it would not make sense to encourage inefficient search/replace operations with an operator; and also, the containers do not require unique keys, you can simply extend them). A dict _must_ deal with conflicting keys, and arguably each situation requires different treatment of those keys.

<comment><USER11> The sensible thing is to throw on conflicting keys.

<comment><USER12> What? Have you never had two dicts and wanted vals from one dict override the other?

<comment><USER13> If a+b != b+a that breaks the commutativity property of addition.

<comment><USER14> Commutatitivity does not need to always hold. Multiplication is not commutative on matrices, but we still use it often and write it as a product nonetheless

<comment><USER15> In mathematics, the 'multiplication' operation is not assumed to be commutative, whereas the 'addition' operator is used specifically to indicate commutativity. So, for example, using the plus sign for string concatenation goes against this tradition.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> JavaScript deals with this well. The equivalent of the proposed

        d3 = d1 + d2

is

        let d3 = {...d1, ...d2};

In fact, it seems like you can already do this in python:

        d3 = {**d1, **d2}

This seems to have most of the benefits of being a dedicated syntax (rather than just a function call), without the downsides of breaking the commutativity of the + operator.

<comment><USER17> Requires Python3

<comment><USER16> Surely any new syntax (like +) would also require python3, so that's a bit of a moot point...

<comment><USER17> Yeah, but I didn't know it was new syntax. And presumably some others didn't either.

</comment></comment></comment></comment><comment><USER18> See also: Notation as a tool of thought, the paper introducing APL: [http://www.eecg.toronto.edu/~jzhu/csc326/readings/iverson.pd...](http://www.eecg.toronto.edu/~jzhu/csc326/readings/iverson.pdf)

</comment><comment><USER19> Operators can certainly be nice. And I do like allowing the programmer to create new ones too, though I'd tend to prefer the Haskell approach of creating new ones out of existing symbols like >< or such rather than the C++ approach of letting the programmer redefine an existing operator for a new use, << in the streams library being one of the worst common examples.

<comment><USER20> Python discourages using operators for things that don't have anything to do with their original use. If you try to be too clever with it, you run into issues. For instance, comparison operators are chained, so that `x > y > z` is equivalent to `x > y and y > z`, not `(x > y) > z`.

The most radical use of operators in the standard library that I know of is in pathlib, where `Path('/usr') / 'lib' == Path('/usr/lib')`, and I think that got a lot of pushback. It's certainly an outlier.

It fits well with Python's overall approach to readability. If the meaning of your operator isn't immediately apparent from its existing meanings, then it should probably just be a regular old named function or method instead. Python doesn't like DSLs very much.

Programmer-defined operators are certainly useful, but Python went in the other direction, which has its own advantages. C++'s choice to have a fixed set of operators but overload them in a lot of arbitrary ways is probably the worst of both worlds.

<comment><USER21> You should look at the Construct library, which overloads the '/' operator as syntactic sugar to make s-expressions in it's DSL less paren-heavy. I'm not saying I agree, but it was wild when I first saw it.

        Struct(
            "foo" / byte,
            "bar" / Struct(
                "spam" / int16ul,
                "bacon" / int64sb, ),
            "viking" / int32sl, )

</comment></comment></comment><comment><USER22> > formulas written using operators are more easily processed _visually_ has > something to do with it: they engage the brain's visual processing > machinery, which operates largely subconsciously, and tells the conscious > part what it sees (e.g. "chair" rather than "pieces of wood joined > together").

This is why I prefer ML-style syntax over Algol-style syntax.

ML-style syntax (with sugar for pattern matching) engages my visual process machinery better, such that I can scan over function definitions more at a glance, than the "literary" style of Algol syntax

</comment><comment><USER23> But, this argument defeats itself. At least, in practice.

If I look at how 'operator overloading' is used in practice, _rarely_ do you get commutativity, or even anticommutativity, associativity, or distributivity.

Take list addition, where operator overloading often shows up:

        someList += someElement

is shorthand for:

        someList.add(someElement)

add is not commutative; the elements used in the operation aren't even the same type.

The point being, the manipulation and simplification that is, according to GvR, much easier to spot if operators are used aren't even relevant here.

If we're talking about, say, introducing a class 'Complex', representing complex numbers, and wishing that the language is such that one can add the ability to use mathematical operators here, observing that it is both [A] common in the domain of complex numbers to use, say, the symbol `+` to indicate addition, and [B] these properties of operations such as commutativity apply to many mathematical operations one might want to perform on complex numbers, I'd agree: Yeah, the language kinda sucks if you can't write `Complex(a, b) + Complex(c, d)`.

But how often does that actually occur?

Separately, if you go down this route, the abstraction should be as complete as it can be. Therefore, this:

        `Complex(2, 3) + 5`

Should work, and should evaluate to `Complex(7, 3)`. But.. this:

        `5 + Complex(2, 3)`

should also work. Which requires either scala's `implicit` system or python's take on this, involving `__rplus__`. These operations introduce their own complications.

Thus, the debate on operator overloading boils down, as language feature debates usually do, as a cost v. benefits analysis. The costs are heavy: There is a lot of proof out there that even experienced coders just insist on abusing operator overloading (or, to be a bit less judgemental: That opinions are rather divided on how they ought to be used, given the amount of complaints about `cout << somestring` and the like). Also, the language complexity is considerable, given that you need to solve the `5 + Complex(2, 3)` problem.

Are the benefits worth it? Possibly.

But I don't think GvR's article takes the cost side seriously, and the benefits stated, at least in my experience, tend not to apply at all there where op overloading tends to end up.

<comment><USER24> In my opinion, requiring commutativity from a +-operator is maybe too much. Associativity and a neutral element seem to be enough (i.e. forming a monoid).

<comment><USER25> It seems like + normally connotes a commutative operator; for general monoid operators are normally notated as if they were multiplications.

</comment></comment></comment><comment><USER26> The dict example given is exactly why operators wouldn't be useful to me.

Presumably d1 + d2 != d2 + d1 for some d1, d2.

If you're going to use the + operator then it should behave like it does in other contexts.

<comment><USER27> this is equally untrue true for strings, of course.

      "foo"+"bar" != "bar" + "foo"

there are valid non-commutative additions.

<comment><USER28> An interesting example is C's pointer-integer addition. p + n == n + p, true, but this is a purely syntactic fact. The actual semantic question of commutativity, whether switching the order of the arguments leaves the value unchanged, cannot even be asked of pointer-integer addition since the arguments, having differing types, cannot be switched.

<comment><USER29> Indeed in C even array[index] is equivalent to index[array], just in case you want to be confusing.

</comment></comment></comment></comment><comment> phoe-krk _This is much less confusing than (2), and leads to the observation that the parentheses are redundant, so now we can write "x + y + z"_

This is a non-problem if you're using Lisp. (+ x y z) accepts an arbitary number of arguments and the operator precedence problem does not exist since there is no operator precedence.

<comment><USER30> If this is so obviously preferable, why have mathematicians so obdurately not adopted this style?

Mathematical notation is not an archaic practice that is followed out of a respect for tradition, or a doctrine that has been developed from first principles, it is something that has evolved (and continues to do so) because it has been useful.

<comment><USER31> 1\. Mathematicians have different priorities than programmers, and they use different tools. Working with an equation on a whiteboard, it's easier to write "a+b+c" and then cancel terms as needed. When writing a formula on my computer, cancelling terms is something I almost never do, so it would be silly to use a notation that's been optimized for that.

When I _am_ doing algebra on my computer, I hope I have a tool like Graphing Calculator (not "Grapher"!) that lets me simply drag a term from here to there, and automatically figures out what needs to happen to keep the equation balanced.

2\. They have, except they use Σ for the prefix version. When it's more than a couple terms, and there's a pattern to it, Σ (prefix notation) is _far_ more convenient than + (infix notation).

If programming languages look like they do because they're taking the useful notations from mathematics, why doesn't your favorite programming language have a Σ function? Who's being stubborn here?

<comment><USER32> Most programming languages do have some variant of `sum(seqence)`. Python certainly does. Or, like, loops, which do the same thing.

But they're optimized for different things. Using the same tool for infinite length sequences and fixed length sequences doesn't make a whole lot of sense. We often have different types for them (tuple/record vs. list/array) too.

<comment><USER31> Having done addition in both infix and prefix varieties on my computer, over the past few decades, I don't understand why prefix notation is considered 'optimized' for indefinite (not 'infinite') sequences and infix notation is considered optimized for definite length sequences.

What exactly "doesn't make a whole lot of sense" about (+ a b)? (It doesn't look the same as you wrote it in school? Neither does "3+4j", or "math.sqrt".)

Being able to use the same tool for different types of data is precisely what makes high-level programming so powerful. As Alan Perlis said, "It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures." Having only one way to add numbers (in languages that do that) is a great feature.

Python's insistence on these pre-selected groupings of functionality has always made it frustrating for me to work with. The two ways to add numbers look and work nothing alike. Does "TOOWTDI" not apply to math?

(Yes, I'm also frustrated and confused that Python has built-in complex numbers, and a standard 'math' module with trigonometric functions, but math.cos(3+4j) is a TypeError. What possible benefit is there of having a full set of complex-compatible functionality, but hiding it in a different math module, with all the same method names?)

<comment><USER32> The zen never says TOOWTDO, it says TO(APOO) _O_ WTDI. (That's "there's one, and preferably only one, _obvious_ way to do it.)

`reduce(op.add, [x, y])` works. Python could remove it's infix ops and use only prefix ones. But prefix ones aren't obvious. And as Guido says, readability matters.

</comment></comment></comment></comment></comment></comment><comment><USER33> Python already has an 'operator' for combining dicts.

d = { __d1, __d2}

<comment><USER34> just have to avoid HN italic syntax thing, but yes:

        d = {**d1, **d2}

<comment><USER33> Heh, thanks :)

</comment></comment></comment><comment><USER35> he doesn't make any coherent argument as to why one is more clear or preferred than the other. he simply states it and moves on with this bias. for example, when he compares 2 to 2a, i feel he doesn't really address anything and just states his preference as the more clear one.

plus, he of course seems to know nothing about lisp (or just ignores it) where you might have:

      (+ a (+ b c)) = (+ (+ a b) c) = (+ a b c)

all three are valid lisp syntax and represent associativity of addition well, including "dropping the parentheses". the thing is, procedure notation as opposed to infix operators actually make it more explicit by what is meant by associativity. this is because it makes explicit about what comes first because of how procedures are evaluated. this is much more explicit than conventions of what parentheses mean in infix operator expressions. even his python procedure example in (2) demonstrates this property.

the distributive law is:

(* a (+ b c)) = (+ (* a b) (* a c))

that seems pretty clear to me. and with this, you can of course extend the language such that the +, _, etc. procedures operate on new data types or heterogeneous data types like (_ c v) where c is a constant and v is a vector and you get scalar multiplication.

it is also funny to me that he considers readability over performance. well, i do too, but you can have both. see lisps, schemes, and sml dialects, all languages he seems to ignore the existence of.

another thought is that i recall gerald sussman saying in a talk that mathematical notation is impressionistic, and in general, i think he is right. his point was that procedure notation is much more explicit. he also mentions that prefix notation is inconvient for small expressions versus infix notation but is much more preferred when you have very large expressions with many, many terms.

<comment><USER36> Isn't "...once you've learned this simple notation, equations written using them are easier to _manipulate_ than equations written using functional notation..." his argument why operators are more clear?

I don't necessarily agree with that, but I haven't made a world class programming language, either. I just assume he knows something I don't.

<comment><USER35> but programming isn't about manipulating equations. if you want programs to manipulate equations, then again, the procedure notation, in particular lisp notation, wins out.

</comment></comment></comment><comment><USER37> I have to admit... I half expected an article on why Phone Operators are useful, say as opposed to annoying IVR systems.

</comment><comment><USER38> Non-mobile link: [https://neopythonic.blogspot.com/2019/03/why-operators- are-u...](https://neopythonic.blogspot.com/2019/03/why-operators-are- useful.html)

</comment><comment><USER39> I've grown to dislike _operator overloading_ quite a bit, and thus developed a general skepticism with regard to operators in general, and I think this article actually reveals why partially.

First off, I'm surprised this article doesn't touch at all on the fact that operators are usually the only "blessed" functions in languages to be able to be written in infix form, as I think that's actually where many of the "benefits" being described here come from. For example, I believe the first example about how operators highlight the lack of ambiguity in the expression "x + y + z" has little to do with operators and more to do with prefix vs. infix notation. Notice that this is not apparent if we use operators but also require prefix notation instead: "\+ + x y z" vs "\+ x + y z". Here too you may never realize how the binding order doesn't matter, because binding order is non-existent and unnecessary. The fact that in most languages non-operator function calls must be in prefix form shows the true concern here. If you for example imagine working in Haskell, where you can apply the opposite experiment, non-operator functions in infix form, this discovery could also arguably have been highlighted: "x `add` y `add` z". All this to say, I do not see _this_ particular point as a great defense of operators.

But the real problem in my mind comes from the eventual overloaded meaning. This is actually displayed in this very blog post. Near the end, the author mentions how * is not always commutative, but _in math_ , + is. And yet, in the simplest non-math example use of operators, string concatenation, we already find that + is not commutative. So what we're really doing is creating very terse function names that "often" imply a set of rules, but also often don't. In other words, in one specific domain they have a specific meaning, but when put into a general purpose programming language, they actually are just... "un-user-friendly one letter names".

And this gets to the heart of the issue. I agree that operators probably trigger a different part of the brain, but I think they do so simply because we use a reserved part of the character set to express them that we don't use for anything else. So they _stand out_. If "+" was replaced with "a", I don't think that "b a b" would really be that visually more helpful than "a(b,b)" \-- so its not the magic "operator-ness" of the function, its not even the infixness, its the fact that we're basically putting a weird character in there, the same as how a smiley face emoji would stick out, or perhaps how "bolding" text would stand out (if that were possible in your programming language).

The problem is that these magic special limited-set characters are very attractive, and once you have a concept you firmly understand, you want to map them onto the closest version of the standard math forms. Case in point, string concatenation. But these new applications very rarely map exactly, and soon we end up with incredibly terse names that trick you into thinking they behave like something familiar. Most people would agree that "add" isn't the best name for a string concatenation function, and would hold a lot of weird meaning baggage, but the abstractness of the "+" operator (and the fact that we read it allowed as "plus") fools us into using it.

<comment><USER25> The best part is that string concatenation is a perfectly cromulent "multiplication", forms a free monoid, and in line with some notations for concatenation of tuples.

Funny the associations we make...

<comment><USER40> Well that's exactly why string concat in Julia is _

<comment><USER25> Indeed, Julia has the most well-thought-out commentary on strings in their docs I've seen from a non-toy language:

[https://docs.julialang.org/en/v1/manual/strings/#man- concate...](https://docs.julialang.org/en/v1/manual/strings/#man- concatenation-1)

<comment><USER40> Elixir's string module documentation isn't half bad, but there is more practical Unicode thinking and less mathematical thinking (which makes sense, given their domains).

[https://hexdocs.pm/elixir/String.html](https://hexdocs.pm/elixir/String.html)

<comment><USER25> I happen to think baking unicode into your concept of a string is fundamentally misguided, so that all string operations following from that premise are inherently wrong. The very first example, constrasting encoded byte length with String.length("é")=1, calling the latter the "proper length" walks into a shibboleth which puts Elixir on the side of String.length("ﷺ")=1, even with the grapheme clusters concept, for which the only salvation is integrated font rendering.

It's practical and informative, but I can't consider it well-thought-out.

ed: to clarify, ﷺ is an Arabic ligature which represents many more than one (linguistic) characters. A more accessible example might be "ffi".

<comment><USER40> I could be wrong, but I think the reason why String.length is one is to have a consistent idea of what happens when you have monospaced console output. Things in the elixir standard library exist "when you need them for elixir itself", and monospaced console output formatting working is needed in a few parts of elixir. If you care about bytes only, you can use byte_size, as indicated in the docs.

<comment><USER25> No, codepoint length is totally useless for monospaced console output, see the third example. Grapheme clusters are closer, but still wrong in the presence of wide characters.

<comment><USER40> I've written a fuzzing library that tests random Unicode inputs and the width of the output was sensible on three platforms (Linux, Mac, and powershell).

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER41> > Of course, it's definitely possible to overdo this -- then you get Perl.

100% agree. I actually really like Perl, but in practice this makes Perl programs more difficult to maintain than they should be.

Also: seems like this XKCD is appropriate here: [https://xkcd.com/224/](https://xkcd.com/224/)

<comment><USER42> Forgive me as I use similarly extreme language. I 100% disagree. Imo Guido's throwaway comment uses the same rhetorical form as hate speech. Your use of "100% agree" and "I actually really like Perl" are mutually contradictory.

Now let me unpack that. I'm curious to see if you reply and whether we arrive at middle ground.

</comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>=

> in practice [Perl's use of operators] makes Perl programs more difficult to > maintain than they should be

This is an old saw but do you agree that it is a misstatement of what's actually going on:

* Some Perl programmers, especially experienced ones, have made and continue to make Perl programs, including large ones, EASIER to maintain than they could be and would be if written by a similarly strong programmer using the deliberately dumbed down language Python.

* Some Perl programmers, especially beginners, have made and/or continue to make Perl programs, mostly small ones, more difficult to maintain than they should be and would be if written by a similarly weak programmer using a deliberately dumbed down language like Python.

Perhaps your response to that is something like "Oh sure, I just meant most programs I see because they're mostly small and written by inexperienced programmers."

If not, how modern are the Perl programs of which you speak? Much has changed since 2000 and especially in the 2010s: Perl 5 has stabilized around a wise view of the language, interpreter, and how to be respectful of each others' failings; Perl 6 has radically dialed back the complicated built in availability of terribly cryptic symbol aliases as part of a complete rethink of what it means to be a Perl language.

</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>

As for the "hate speech" aspect:

>> Of course, it's definitely possible to overdo this -- then you get Perl.

> That's the Guido we know and love.

The above was the entirety of by far the highest voted comment in the python reddit post about this article.

I posted the following in sardonic response, which also got upvoted:

Guido:

> Once you've internalized the simple properties which operators tend to have, > using + for string or list concatenation becomes more readable than a pure > OO notation, and (2) and (3) above explain (in part) why that is.

Larry:

> But it contradicts property (1). That's (in part) why I did not use + for > string and list concatenation in Perls. Then again I used it for adding > floats, even though that contradicts property (1) too. And changed my mind > about what symbol to use between Perl 5 and Perl 6. Heck, who cares about > consistency?

Guido:

> I care. I consistently hate on Perl and Python users consistently love me > doing so.

I generally find Guido's and the Python community's intolerant attitude consistent with the above and with this exchange about the same article on twitter:

> Random nit: you've got a "font-size: 85%" in the CSS for your posts. Mind > removing that, so those of us with our default font-size set deliberately > don't have to squint?

Guido:

> I'm sorry, I have no interest in CSS hacking. The template is what it is. > Deal with it.

Guido's riposte also got lots of hearts (presumably to soothe or applaud their beloved ex-BDFL).

I note the follow up got nothing from Guido:

> It's a single-line deletion, and would improve the accessibility of your > blog, but sure ok.

There's zero chance Larry would have thought and spoken as Guido did and he absolutely would have made that single line deletion out of respect for the person whose eyesight wasn't as good as others'. The same attitude applies to improving the language and culture.

</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>==

How familiar are you with current Perl activity?

I see a new Perl emerging, one that will unfold throughout the 2020s. I see a well entrenched self-reinforcing tolerant attitude in Perl culture, even of those who like to use too many operators for my liking.

<comment><USER41> I appreciate the lengths you went to attempt to articulate your position, but I don't think we'll arrive at a good spot in comments on HN. The "hate speech" analogy is very incendiary.

The only comment I would add is clarification on your comment about 'Your use of "100% agree" and "I actually really like Perl" are mutually contradictory.'

Someone can really like a languages, but not agree with all the language designer's choices. A language designer needs to make tradeoffs, and I hope we can agree that not every choice needs to be universally accepted. Tolerance != uniformity and bind acceptance.

Beyond that: I'm very familiar with Perl 5, Perl 6, and the direction the community is taking the languages, and the Perl culture. I just disagree with some of the language choices.

<comment><USER42> Thanks for replying.

> Someone can really like a languages, but not agree with all the language > designer's choices.

Yes, of course.

When writing about `+`, Guido might have chosen to gently chide himself for deciding to break the very first principle he wrote about in his article.

Instead he arbitrarily focused on a couple later principles he didn't break -- and then rudely dissed Perl which deliberately did _not_ break any of the principles he listed in his article.

I really like Python but I do not agree with all Guido's choices in human language and that inappropriate cheap shot at Perl was an example.

> A language designer needs to make tradeoffs

Yes, of course.

As I wrote, Guido chose to write "The template is what it is. Deal with it." in response to someone with poor eyesight requesting he make a one line change.

Twitter is a constrained medium so he presumably felt he needed to tradeoff civility for making his point clear. But:

> I hope we can agree that not every choice needs to be universally accepted. > Tolerance != uniformity and bind acceptance.

That was the point of my first reply to you.

I was curious to see if you would agree that Guido's decision to be rude toward Perl in the very context in which he'd just described a flaw in Python according to his own stated principles did not warrant the essentially universal acceptance it got in the reddit python thread.

And, likewise, his rudely dismissive twitter response to a random innocent person reading his article which received far more hearts than those sympathizing with the tweeter with less than perfect eyesight.

> Beyond that: I'm very familiar with Perl 5, Perl 6, and the direction the > community is taking the languages, and the Perl culture. I just disagree > with some of the language choices.

To recap, I wasn't speaking about disagreement. And not really about Perl either. I was speaking of agreement with Guido's rudeness.

</comment></comment></comment><comment><USER43> I'm amazed (and horrified) how come such an intelligent mathematician and designer of a beautiful programming language made such an obvious fuckup of using a commutative operator for string concatenation. Really, I hate python just for this single idiotic notation.

I mean, it's right there in front of your eyes. He talks about the convenience of using a visually commutative operator like "+" for commutative operations, and then a few lines later he says that it is a convenient notation for string concatenation. What. The. Fuck.

<comment><USER44> I understand the confusion it may cause to a new Python developer who comes from the mathematical background.

Does it cause any problems beyond that? For example, does it interfere with some elegant patterns, or result in some bug prone code, etc?

FWIW, the single main annoyance I've had with python was its treatment of strings as iterables of single character strings. While not wrong in any obvious theoretical sense, it conflicts with the mental model of many developers (both new and experienced) and has probably caused more bugs than any other feature of Python (and even more ugly type checks to avoid such bugs). When people realized it was a problem and discussed removing this feature, Guido said he had tried but (a) it was too much work and (b) he felt the benefits are too great to give up ([https://mail.python.org/pipermail/python-3000/2006-April/000...](https://mail.python.org/pipermail/python-3000/2006-April/000824.html)).

<comment><USER43> > I understand the confusion it may cause to a new Python developer who comes > from the mathematical background.

I'm confused mainly because a person with a mathematical background created a language with such an obvious blunder. When I have to use the language (and I do often) I am not confused about string concatenation, I am ashamed of having to use this ridiculous notation.</comment></comment></comment>


Thousands of ICE detainees claim they were forced into labor - <AUTHOR> https://www.washingtonpost.com/news/post-nation/wp/2017/03/05/thousands-of-ice-detainees-claim-they-were-forced-into-labor-a-violation-of-anti-slavery-laws/?utm_term=.c2554371c93b <comment><USER2> The thirteenth amendment, as it is written, is a blight upon civilized society.

For all the wailing and gnashing of teeth made about the GULAG program, the US correctional system suffers from all the same moral hazards.</comment>


User got error but I can't replicate -see comments for notes - <AUTHOR> http://www.cruiselt.com

<comment><AUTHOR> OP HERE>> Have a pre-launch site up and everything seems to test well here (currently in Mexico). People are able to sign up and are getting added to DB, receive trans e-mail, etc. But I got an e-mail from a colleague the other day that said she is unable to sign up. She is not very technical and I can't replicate any issues.

Wanted to see if I could get people to test it out on a bunch of different devices and send me the details if you run into any issues. Open the transactional e-mail on the same device you tested the site with and then just un-sub at the bottom of the e-mail to get off the list. By opening the e-mail on the same device, I will know the OS and device, browser, etc. and can rule out any problems.

Thanks for your help and comment with any errors.

</comment><comment><USER2> Please do not put "Show HN" in the title unless the story meets the Show HN guidelines: [https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html).

<comment><AUTHOR> I got hooked on the "HN users can try it out, give you feedback, and ask questions in the thread." and totally missed the e-mail signups at the bottom. (even though I'm not trying to get e-mail signups...just trying to figure out if something on e-mail signups is broken or not since I can't replicate.</comment></comment>


How to find the right sponsor for your open source project - <AUTHOR> https://dev.to/netanelmohoni/how-to-find-the-right-sponsor-for-your-opensource-project-1did <comment><USER2> "Continue to full blogpost here". In such case it's better to submit the original source, not a teaser

[https://blog.xscode.com/736/the-right-sponsor-for-your- open-...](https://blog.xscode.com/736/the-right-sponsor-for-your-open-source- project/)

</comment><comment><USER3> If you need sponsors, you should sell your project as a business. I don't think we should expect sponsors for hobby projects that may grow large.

Always a tricky thing when your project gets traction and then others start to use it and expect to "hire" you for free.</comment>


What's Your Biggest Problem With Email? - <AUTHOR> http://www.simplybusiness.co.uk/microsites/productivity/email-guide/

<comment><USER2> I keep getting it. Seriously people, STOP sending me email.</comment>


Ask HN: Does it make sense to keep working at my currency devaluated job? - <AUTHOR> I'm Software Engineer with a focus on AI from Buenos Aires, Argentina. I've been working locally for many years earning something like $3k or $4k usd per month but since last year our currency (Argentine pesos) has devaluated a lot against us dollar.
I'm now earning something like 1k usd per month. That money is enough to live comfortably (I don't rent) but lately I've been thinking that's not worth it to keep working for that amount anymore. I've enough savings to live without income for at least ten years (120k USD).
My idea is to resign and start focusing on three points: investing my savings, look for jobs/contracting/freelancing overseas and have a try at the startup game.
My biggest doubts are the current world  crisis like situation and that I'm going to be a dad next month, so it's scary to be without a secure salary.
How does that sound? What would you do? <comment><USER2> Hi from Argentina too!

Congratulations for the kid. Remember to sleep now, the next 18 years are more difficult.

Never invest more than you can afford to lose. It's difficult to invest unless you understand how the market work and there are no zero risk, high gain investment. Perhaps invest a small part like 10% or 20%, assuming there is a real chance you will loose it.

For my situation, I prefer an stable job, but I don't have too much savings. Each one has it's own bias.

I think a startup may cause family problems. You will be at home during the quarantine drinking mate and chatting with your friends, and not taking care of the baby. I think your SO will understand that this is your work, but after a few night of sleep deprivation and changing too many diapers ...

The advantage of a consulting/freelancing job is that you will get a paycheck and that makes your job real. With some luck you can get the same dollars with less work time. I'd recommend to read whatever patio11 wrote about consulting like [https://www.kalzumeus.com/2012/09/17/ramit-sethi-and- patrick...](https://www.kalzumeus.com/2012/09/17/ramit-sethi-and-patrick- mckenzie-on-getting-your-first-consulting-client/) or [https://www.kalzumeus.com/2012/09/21/ramit-sethi-and- patrick...](https://www.kalzumeus.com/2012/09/21/ramit-sethi-and-patrick- mckenzie-on-why-your-customers-would-be-happier-if-you-charged-more/) . Also, there is a monthly freelance thread here [https://news.ycombinator.com/item?id=23379195](https://news.ycombinator.com/item?id=23379195)</comment>