Signs that you are a bad programmer - <AUTHOR> http://www.yacoset.com/Home/signs-that-you-re-a-bad-programmer <comment><USER3> I wish articles like this would namespace their assertions by telling us what they mean by "good" or "bad", so we could avoid the perennial echo chamber debate that goes like this:

        A: GOOD MEANS SHIPPING AND PLEASING YOUR CUSTOMERS
        B: NO YOU FOOL! GOOD MEANS WRITING CLEAR CODE THAT OTHER HACKERS CAN READ
        C: NO YOU FOOLS! GOOD IS A HAPPY MEDIUM BETWEEN BOTH OF THOSE THINGS
        D: DEBATE IS HARD, LET'S GO SHOPPING!

God forbid we agree on what words mean before we talk about them...

<comment><USER4> "Good" already has a meaning, you can't arbitrarily redefine it. You have to actually figure out what the most "good" tradeoff is between shipping and writing maintainable code.

<comment><USER5> "Good" is also arguably subjective and relative to the subject's perceptions of "bad"(and vice-versa).

So of course that "good" tradeoff to one programmer might be a "bad" one to another.

<comment><USER4> That's a "good" point.

<comment><USER3> I laughed, you bastard.

</comment></comment></comment></comment></comment><comment><USER6> The opposite approach is much simpler. There's only one sign that you are a great programmer:

 _Clients and fellow programmers are still happy with your work two years after you've delivered it._

(Of course: "still" implies that they we're happy at delivery, which includes actually shipping working software in a timely fashion.)

<comment><USER7> "Clients and fellow programmers are still happy with your work two years after you've delivered it."

Disagree. The first system I wrote kept the client happy for years. It was a mess, but it was literally millions of dollars better than not having any system.

If what you mean is something like "focus on doing work of long-term value, and consider programming skill as such an input", then I'd agree with that.

<comment><USER4> "and fellow programmers"

Did your client ever hire programmers to maintain and improve the first system you wrote? Were those programmers happy with your work?

I guess if no one is ever going to maintain your code it doesn't matter as much. I wouldn't ever be so bold as to predict ahead of time whether that's going to be the case.

<comment><USER8> It also assumes those fellow programmers are also good programmers.

Can a mediocre programmer tell the difference between mediocre code and good code?

To the original point, the happiness of the client and other developers is a good indicator, but not the only.

<comment><USER9>
      Can a mediocre programmer tell the difference between mediocre code and good code?

Maybe not directly, but they can probably tell how well they understand the code and how hard it is to change. Not as well as a good programmer, since they'll have more trouble with both regardless, but somewhat.

<comment><USER7> My bad; thanks to philwelch and saraid for flagging the error. The resulting discussion is interesting, as is 13 upvotes for a post based on a misreading :-). FWIW, my favorite bit on programmer's understanding each other's work is Yegge's Done and Gets Things Smart.

</comment></comment></comment></comment></comment></comment><comment><USER10> I suspect that people who don't "get" pointers (#4 in the article) actually have a much harder time with the pointer declaration and manipulation syntax in C than actually understanding how pointers work and what they let you do.

For instance, in C the * character is used both to declare a pointer and to dereference one and they can be stacked to dereference nested structures. Then & references a variable memory location but is also used in method signatures to change the semantics of calling a function into pass-by-reference. To complicate & further, & is often seen alongside const declarations, which are a whole other thing that people have to keep in their heads.

On top of all of this, * and & have their own operator precedences and associativities that you have to memorize, which is a whole discussion about binary versus unary operators and precedence tables. And I didn't even mention [].

I really don't think that people fail to comprehend pointers because their mental models need updating nearly as often as they just haven't fully internalized all the hoops that C makes you jump through to mess with pointers.

<comment><USER11> > _For instance, in C the_ * _character is used both to declare a pointer and > to dereference one and they can be stacked to dereference nested > structures._

This problem can be solved by thinking of * as _always_ dereferencing a pointer. So:

      int *a; /* "*a" is an int, thus a is a pointer to one */
      int *b, *c; /* *b and *c are both ints */

This also has the nice side effect of explaining why good C programmers write the * next to the variable name and why multiple variables declared on the same line all require a * next to the variable name.

> _Then & references a variable memory location but is also used in method > signatures to change the semantics of calling a function into pass-by- > reference. To complicate & further, & is often seen alongside const > declarations, which are a whole other thing that people have to keep in > their heads._

Now it sounds like you're talking about C++ moreso than C. In C, & is pretty much always the "address-of" operator (except in contexts where it's clearly logical- or bitwise-AND).

From your post, it seems that the problem is more one of poor teaching, poor explanations (metaphors), or poorly-designed extensions (C++) as opposed to shortcomings of C.

<comment> loup-vaillant I second the remarks about poor teaching (though C type syntax does sucks hard). The main problem probably comes from the fact that _ordinary variables_ are themselves an indirection of sorts, and programming courses do not make that clear (we tend to confuse the variable and the value it holds). Excerpt from my article on assignment[1]:

[The pervasive use of the assignment statement] influenced many programming languages and programming courses. This resulted in a confusion akin to the classic confusion of the map and the territory.

Compare these two programs:

      (* Ocaml *)        │    # most imperative languages
      let x = ref 1      │    int x = 1
      and y = ref 42     │    int y = 42
      in x := !y;        │    x := y
         print_int !x    │    print(x)

In Ocaml, the assignment statement is discouraged. We can only use it on "references" (variables). By using the "ref" keyword, the Ocaml program makes explicit that x is a variable, which holds an integer. Likewise, the "!" operator explicitly access the value of a variable. The indirection is explicit.

Imperative languages don't discourage the use of the assignment statement. For the sake of brevity, they don't explicitly distinguish values and variables. Disambiguation is made from context: at the left hand side of assignment statements, "x" refer to the variable itself. Elsewhere, it refers to its value. The indirection is implicit.

Having this indirection implicit leads to many language abuses. Here, we might say "x is equal to 1, then changed to be equal to y". Taking this sentence literally would be making three mistakes:

(1) x is a variable. It can't be equal to 1, which is a value (an integer, here). A variable is not the value it contains.

(2) x and y are not equal, and will never be. They are distinct variables. They can hold the same value, though.

(3) x itself doesn't change. Ever. The value it holds is just replaced by another.

The gap between language abuse and actual misconception is small. Experts can easily tell a variable from a value, but non-specialists often don't. That's probably why C pointers are so hard. They introduce an extra level of indirection. An int* in C is roughly equivalent to an int ref ref in Ocaml (plus pointer arithmetic). If variables themselves aren't understood, no wonder pointers look like pure magic.

[1]: <http://www.loup-vaillant.fr/articles/assignment>

<comment><USER11> Thanks for the informative reply and the excellent blog post!

</comment></comment></comment></comment><comment><USER12> I found the "Alternative careers" hilarious.

My version:

      Your code sucks.
      Alternative careers: "Do you want fries with that?"

OP's version:

      1. Inability to determine the order of program execution
      Alternative careers: Electrician, Plumber, Architect, Civil engineer

      2. Insufficient ability to think abstractly
      Alternative careers: Contract negotiator, Method actor

      3. Collyer Brothers syndrome
      Alternative careers: Antique dealer, Bag lady

      4. Dysfunctional sense of causality
      Alternative careers: Playing the slot machines in Vegas

      5. Indifference to outcomes
      Alternative careers: Debt collection, Telemarketing

So the real test of a good programmer is one who can write a routine that crawls the source code of a bad programmer and tells them what they should really be doing.

<comment><USER13> I have to wonder if someone who can't determine order of execution should be an electrician or plumber either -- those aren't static systems!

<comment><USER14> I guess the point is that there's no "privileged" position in these systems which changes with time, like the point of execution in programming.

What is the proper name for the bit of code that's currently being executed? I've suddenly realised that its a concept you think about constantly when coding, but its so much a part of the scenery so to speak that you never consciously consider it.

<comment><USER15> At the hardware level it's called the program counter, which is a register containing the address of the current operation the processor is running. After the operation is finished, it increments itself and moves to the next step in the program.

Edit: just realized I didn't really answer the question, I believe what your actually talking about is a statement.

I usually jump at the chance to talk about stuff from my old EE days :)

<comment><USER16> The program counter isn't the only element of that "what the program is doing now" state though. The context in which the current instruction is being executed makes a world of difference.

<comment><USER17> And the ability to save all of that into a variable so that you can pass it around to other parts of your program means that your programming language supports Continuations.

</comment></comment></comment></comment></comment></comment><comment><USER18> What a condescending piece of junk. It serves absolutely no other purpose than to make programmers who _do_ grok everything mentioned feel good about themselves.

Worse yet, programmers who could _actually_ benefit from an article like this (i.e. programmers who shouldn't be programmers) won't understand it. E.g. "(Functional) Creating multiple versions of the same algorithm to handle different types or operators, rather than passing high-level functions to a generic implementation" - a bad programmer won't understand what is meant here, so he will simply skip over it and not get the hint.

Finally, I find the notion that you can't be a good programmer if you've never really used Lisp laughable.

<comment> loup-vaillant The actual quote about lisp is: _"5. Lisp is opaque to you"_. I don't think the criterion isn't whether you used Lisp or not. He probably meant: "could you understand Lisp if you tried? If you can't, then that is a red flag".

</comment></comment><comment><USER19> I paused for a bit when I read, "A programmer can't acquire this kind of knowledge without slowing down." It seems that many businesses that rely on programmers are unwilling to give them the time to be better.

I have seen coders with CS degrees from top-tier schools believe that they couldn't code anymore when placed in environments that do not mentor them, that treat them as horses to be run until their backs break.

If you feel this way, take a part-time job and focus on becoming a better coder. If you are a business that does this... no wonder you waste money on recruiters.

<comment><USER20> I'm in this position now. I'm not a great developer, and I love learning new tricks, but because I'm billed hourly, am constantly interrupted, and get brought in to useless meetings, I'm left with zero time to learn.

<comment><USER21> The other problem with this is that you never have the opportunity to improve the business, either. Often, management wants the rank and file to improve processes ("because they know them best") but it's hard to find the time for that when you're already working full time (and more) on your deliverables.

<comment><USER20> No doubt. In fact, this is exactly what happened to me today. I'm supposed to have great ideas, but when trying to implement them, told that I need to focus on paying the bills. I don't know how people manage this long-term.

<comment><USER22> By jumping ship and landing at a less-dysfunctional workplace.

If their business plan doesn't include time for improvements of the processes it's a failure. Leave now. Don't try to make up for their mistakes. They won't see it (positively), let alone reward you for it.

Do good for your old co-workers by recruiting the good ones into the more- functional company.

<comment><USER23> Depends on what process you are talking about. If you are trying to improve a process which will hurt the time to deliver of a major project costing a company money, then is it really right to call the company a failure?

Every company/division/organization has priorities and while there maybe inefficiencies in their processes, they maybe a minor cost in relation to the other priorities. (I can't believe I actually just played devils advocate/defended this).

<comment><USER22> No, I stand by it. If a company doesn't include time for process improvement they have failed. Maybe they haven't tanked yet but the first bend in the road will finish them.

This doesn't mean they have to stop and fix every non-problem, but if there's no time budgeted to fix what comes up the first real problem will ruin everything.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> I wrote this years ago to get it out of my system, and after Infogami went to the big web host in the sky I ported it and my other nonsense to Google Sites. The slightly updated version of the same article is now here:

[http://www.yacoset.com/Home/signs-that-you-re-a-bad- programm...](http://www.yacoset.com/Home/signs-that-you-re-a-bad-programmer)

<comment><USER3> Just FYI, I love your articles. I routinely forget who wrote them and where to find them again, then fail to find the link in my bookmarks, so I spend a half hour Googling phrases I vaguely remember being included in the essays ("how to deliver without everything getting fucked up", nope. "how to write code without shit exploding", nope. "how to..."). I think they reside in some kind of cognitive null zone in my brain. So, thanks for linking them again!

</comment></comment><comment><USER25> The problems described by the article are certainly real problems I've seen and seem like an indications of someone who indeed hasn't taken the time to deeply understand the programming process. But the term "bad programmer" and the general attitude of the article seems deeply mean-spirited,

I would rather work with an actual "bad programmer" than with the kind of person who'd spend their time thinking up "alternative careers" for these people.

<comment><USER26> In my experience just about everybody fancies themselves a great programmer and considers anybody who doesn't know (insert semi-random list of skills) to be a shitty programmer.

I kinda think it's like the Roth test for obscenity. I can't really explain what makes a shitty programmer, but "I know it when I see it."

<comment><USER27> I don't know about that.

Most people I've worked with over the years have understood their limitations and would never consider themselves great, with the possible exception of half a dozen or so folks, who truly are great.

There have, of course, been exceptions, too.

<comment><USER26> My opinion is probably tainted by my own working experiences. I've run into various mediocre IT pros who have been at it for a while and possibly are trying to appear smart for purposes of job security.

I've only had the pleasure of working with a handful of what I considered truly great programmers. I don't think a single one of them considered themselves to be "great" even though I thought they were.

</comment></comment></comment></comment><comment><USER28> "You're not reading this article."

But seriously, it probably never occurs to bad programmers that they should be finding articles like this.

Perhaps a better title/approach would be "A Bad Programmer Taxonomy, And How You Can Help."

</comment><comment><USER29> Sounds quite arrogant to me. And didn't get the biggest problem: Not finishing stuff.

<comment><USER30> I must admit I'm bad at this. However, in my defense it comes down to: bad management.

I'm forever being told to work on the next MOST IMPORTANT THING EVER only to be told after a few days that I need to work ON THE NEXT MOST IMPORTANT THING and that the MOST IMPORTANT THING EVER that I was working on is no longer important at all.

le sigh

<comment><USER5> "Hey, FuzzyDulop, we're a day before deadline but I've been thinking, we could do _SUPER BRILLIANT IDEA THAT CHANGES EVERYTHING_ and it'd be amazing! What do you think?"

...

"You can forget about your deadline if you want that in, boss."

* skip forward a week *

"Hey, FuzzyDunlop, we're a day before deadline but..."

<comment><USER31> And then getting chewed out for missing the original deadline. Usually from the boss who just drop the SUPER BRILLIANT IDEA THAT CHANGES EVERYTHING in your lab.

<comment><USER5> We get the sort of unsure, passive aggressive criticism, full of ifs and maybes. The sort that actually makes you feel worse because the boss appears to be personally disappointed.

Get chewed out proper and at least you know it's just because jobs have to be done.

</comment></comment></comment></comment></comment><comment><USER32> > "Bulldozer code" that gives the appearance of refactoring by breaking out > chunks into subroutines, but that are impossible to reuse in another context > (very high cohesion)

I feel like this might give people the wrong idea. Surely some amount of cohesion is desirable. Also, I'm not quite sure how one "gives the appearance of refactoring" without actually refactoring. Whether it's useful or not may enter into it, but I would usually consider the breaking out of chunks into subroutines refactoring.

<comment><USER33> Not only that, the purpose of refactoring isn't simply for reuse, but also for readability. If you break out chuncks that aren't reusable, but enhance the readability of the code then you've likely improved the code.

Given the choice between reusability and readability I'd say that readability should usually win (although it is a false choice).

<comment><USER34> I would contend that if you're having code readability issues, it'd be better to fix it by sprucing up your whitespace and comments, instead of saying "Well, let's chunk it into more functions" and have method(), which returns method1(), which returns method2(), which returns method3()...

Chunking for the sake of itself doesn't seem like a viable strategy to me.

<comment><USER35> When you add a new-line or two into a section of code, you're usually saying:

"These two blocks of code do something different"

Thats what is normally called a method. If it's only for one class then by all means make it private and name it well, so the caller remains readable.

</comment></comment></comment></comment><comment><USER36> Interestingly, his enumerated set in the "Bad Programmer" list is almost exactly what I was grilling for when I asked people to implement stupid algorithms on a whiteboard and then step through them, debug them, etc.

I somewhat disagree with:

> 6\. Cannot fathom the Church-Turing Thesis

Truly understanding the Church-Turing thesis probably requires more computability theory than the two-week overview even top CS students and otherwise great programmers get in their ABET-required Discrete Math course. It would be great for more people to have an understanding of what a computable function is and isn't, because it would make it easier to explain why we don't have more fancy-pants type systems around,\footnote{Inference is undecidable for most interesting ones.} but it certainly isn't a requirement for great or even good programmers.

<comment><USER29> > Truly understanding the Church-Turing thesis probably requires more > computability theory than the two-week overview even top CS students and > otherwise great programmers get in their ABET-required Discrete Math course.

Mathematicians may have more luck in their training. But that depends on your chosen speciality.

</comment></comment><comment><USER37> A lot of these make sense, but I would caution against being discouraged if you show any of these symptoms. Like another front page article that says IQ is not static, I think this also definitely applies to programming ability.

I hope this isn't used by some to push the mantra that 'not everybody can code'.

<comment><USER38> Yeah, I think the title should have been "Signs that you are a mediocre programmer", which would have been less discouraging. I'm sure most good programmers have started out making many of these mistakes. At least it has a "Remedies" section, so it's not a total downer.

<comment><USER39> I completely agree. Several of the mistakes listed, particularly thinking in sets, were things I had issues with until that "aha" moment when the paradigm shift in my thinking about the problem occurred.

On the other hand, I doubt the author was trying to discourage bad programmers, but rather bring common deficiencies or mistakes up to help programmers avoid them. To me, many of these are signs that you are a new or inexperienced programmer, not a bad one (although if you've been a programmer for a decade and are still making them, you may have something to worry about).

</comment></comment></comment><comment><USER40> My first thought was, "wow, infogami is still up?" I guess I left it in a good state. :)

<comment><USER41> Looking at the homepage, it says that the most popular pages were converted into static form, and now they're trying to sell the domain.

<comment><USER40> Yeah, we did that a long time ago. I'm just surprised it is still running! I don't think I even told the other reddit guys about infogami or where it runs or anything.

<comment><USER24> I guess I can't log-in and add a link to its new home, eh?

<comment><USER40> Nope, it's static only. But if you ask the reddit guys real nice, they might be willing to edit the file manually for you.

</comment></comment></comment></comment></comment><comment><USER42> To me, everything in that article can be addressed with a little experience.

My one indicator that someone is going to be a bad programmer actually has little to do with technical skill sets, but rather personality. As my sanity check, I make sure to examine the open-mindedness (willingness to research and use unfamiliar tools) of programmers. More often than not, you find programmers who are very comfortable in given languages, environments, tools etc, but once you take away their comfort blanket, they keep reaching back for it.

An extreme example would be a scenario such that a programmer who knows C very well decides to do a decent amount of parsing in C instead of researching better languages for the job such as python or perl.

</comment><comment><USER43> "You seriously consider malice to be a reason why the compiler rejects your program"

Of course it's malice.

<comment><USER44> the compiler in many simple cases could have tried to repair the program, like attempting to insert(remove) missing(extra) ';' or '}' for example. While it may be not a malice, it is definitely an absence of a good will.

Note: i did work on a real product which had parser inside that had such style of repair implemented, and such approach is also quickly mentioned in the dragon book as well

<comment><USER45> It's possible that such automatic repair would create a bug. Much safer to have a human check and ensure that the ; goes in the right place.

A better point is that the error messages from many compilers can be very obscure. This was particularly true 10-15 years ago.

<comment><USER4> Yeah, if a compiler only compiles the code you actually wrote, it's still your fault. If a compiler tries to infer what you meant and compiles that instead, then it might genuinely be the compiler's fault when something breaks. Plus, the original code should still be fixed instead of relying on the compiler to compile the same broken code the same "right" way each time. We spent the last 20 years trying to convince web developers of that idea.

Clang does something like this. If it notices a simple enough syntax error that it can correct, it still generates the error message but it makes the correction internally and continues the compilation far enough to generate useful error messages about the rest of the code. But it doesn't output anything or change the code.

</comment></comment></comment></comment><comment><USER46> I don't need an article to tell me I'm a bad programmer.

</comment><comment><USER47> The OP may be being ironic/sarcastic to a certain degree but I'm always wary of these types of articles.

"You are a bad programmer". How would it make you feel to hear that? Probably not open to further suggestions on how to improve.

While I agree that as programmers we should always strive to be getting better, these types of put-downs and belitting don't foster a culture of communication and trust.

Personally, I'm most receptive to hearing that I could improve when it's coming from someone I trust and respect. If a random person or poster on the Internet sent me this article and rubbed it in my face, I'd probably write them off as a major a-hole. And, I might miss out on a great opportunity to learn.

It reminds me of this post: <http://news.ycombinator.com/item?id=2322696> \- I read it and at the time thought it was great. But, sadly, not much has changed and this post is sad evidence of that fact.

<comment><USER48> I saw at least a half-dozen habits that have cost me I-don't-want-to-think- how-much time. And at least a half dozen I'm still doing. I was dimly aware of them as repeated frustrations, but identifying them makes it a lot easier to target them for deletion.

I'm going to mark this thing up, add "haven't crossed any of these off in the past year", and postpone my judgment until next fall.

</comment></comment><comment><USER49> Why is "Performing atomic operations on the elements of a collection within a for or foreach loop" a symptom of mediocre programmer "inability to think in sets"?

How should one do that if your "thinking is sets"?

<comment><USER50> That particular symptom is built under the assumption that your language supports map/filter/reduce or some equivalent functionality. These are generally preferred when available because there are fewer places to make mistakes.

</comment></comment><comment><USER51> my ruleset is much more liberal

signs that you are a good coder: you enjoy coding, you enjoy a good piece of code

signs that you are a bad coder: you don't enjoy coding, you can not appreciate beautiful code

if you enjoy coding it jut doesnt matter if anyone else thinks that your code sucks. you will get better. if you hate your job (programming) then you code stinks and will get worse.

in my careere i went from good to great to bad to i dont code anymore to good

<comment><USER52> How long have you worked as a professional software developer? Have you ever worked at a large company? There are plenty of people with a decade of experience who enjoy writing code who are just bad at it. Some of these people work on software that is much more important than Facebook.

</comment></comment><comment><USER53> I suspect that #1 sign is that you go trolling for self-assurance in articles like this, or worse, by writing smug, random articles like this.

The best possible signs either way will be in your career so far.

</comment><comment><USER54> A sign that I found missing from the list: you are totally devoted to a particular programming language and believe it's a silver bullet. All good programmers that I know understand that languages are just tools and all have tradeoffs of some sort.

<comment><USER55> I'm pretty sure I saw the "everything is a nail" type listed, which might well cover the folks that think Technology A is the be-all and end-all.

</comment></comment><comment><USER56> I'm a student in the third year of my CS degree and I constantly worry about not being a good programmer. There's things on that list I need to work on.

</comment><comment><USER57> I'm presently repairing a project that violates nearly every one of these principles. Literally, it's like they had a checklist made from this post and went down it to ensure they did everything wrong.

</comment><comment><USER58> I think this stuff comes from someone who has a colleague with these "symptoms", and is either frustrated because they can't educate them into better techniques, or is a subordinate with no power.

In any case it's pretty unforgiving.

I have had a colleague who fits the bill here, but actually I just let them get on with their work and I got on with mine. Sure, it was hard when he delivered something that was excruciatingly poorly conceived and executed and I had the task of taking it to the the next stage. But you know this isn't a life and death business, he was a really nice guy, and I wasn't going to rock the boat. The next project, I was working with someone else and everyone was happy.

Contrast that with making an issue of it, and you might find yourself being labelled as a trouble maker, even if you did have the best intentions for the development.

If you run the show however, don't stand for it, because it's your business, and it calls for the best at all times.

</comment><comment><USER59> Is it odd that any tense of the word "ship" does not appear in this article?

<comment><USER60> Believe it or not, sometimes we code for purposes other than selling stuff.

<comment><USER61> But you still have something to ship, even if it's just to your buddies on github.

<comment><USER62> What you give to someone else may not be code -- it might just be the code's output.

<comment><USER63> That is still called shipping.

</comment></comment></comment></comment></comment><comment><USER8> Hilarious, but some of the alternative careers I don't agree with. Particularly the first example of order of execution.

If you can't grasp that and decide to be an architect, I wouldn't want to drive on your bridge, work in your building, or live in your home. Same for the options!

<comment><USER24> You may be able to grasp the instantaneous distribution of forces in a building or charges in a circuit without needing to know the order that they deploy. While a computer itself is an example of a circuit where the order of execution matters, a radio is not.

Order-of-execution is not perceived the same way as cause-and-effect, even though they're both the same thing. It's a damn weird thing that I've seen people do. A little bit like how artists can comprehend how the position of an arm has an effect on the way bones, fat and muscle are distributed over the rest of the body, but can't understand why they got smacked with an overdraft fee when their _average_ daily balance would have covered it easily.

</comment></comment><comment><USER64> How do I know that list is a little off? Using it as a metric, I am mediocre- to-good, when I know for a fact I haven't yet reached mediocre.

For example, I grokk pointers, but I use them so infrequently I make foolish errors and have to stop and block everything out.

<comment><USER65> In my experience you have nothing to fear: such thinking and self understanding makes you a better programmer than many I have worked with. The worst usually think they are way better than they are, and the better ones usually know where they can improve.

I have worked with people who do some or most of these, and let me tell you, the experience is not pleasant -- frequently turning into "Oh you changed that code, I can't maintain it anymore, object are too tricky" (when refactoring bulldozer functions and dicts of lists of dicts of tuples (some of which contained dicts) into a few classes in python) or "My code was working, why would you change that? I can't be responsible for looking at it anymore!" (When the spec changed and we needed to check for extra error conditions.)

Basically what I'm suggesting here, is bad programmer is less a function of skill at any particular moment, but of attitude and approach. Skills that don't change, continued lack of understanding, and laziness, are all symptoms of a bad programmer, who won't improve. I'd rather work with a neophyte who wants to improve over a veteran who is static any day.

<comment><USER58> " I'd rather work with a neophyte who wants to improve over a veteran who is static any day."

So true.

</comment></comment></comment><comment><USER66> > eg: the "Delete Database" button is next to "Save", just as big, has no > confirmation step and no undo

That was common practice all over the Web for over a decade, it only stopped recently (on most sites). [Submit] [Reset] Argh!

</comment><comment><USER67> If you are reading this article, you are not a bad programmer; you are a programmer learning to master your craft.

<comment><USER68> I'm starting to think that the majority of errors listed here are simply phases of the learning process we all go through.

</comment></comment><comment><USER69> I'll admit, when I was a C programmer, I was victim to "Dysfunctional sense of causality."

I remember taking a C class in my undergrad, nailing the code to perfection, and getting an F because I had written the code in under different architecture and compiled with a different compiler (not specified in the prompt by any means). It ran well on my computer (and I proved it), but since it wouldn't run on my professors computer or TAs computer, I still received an F.

So yes, I still maintain strong malice towards C :-)

</comment><comment><USER70> Whooops... One of the symptoms is:

"(Functional) Manually caching the results of a deterministic function on platforms that do it automatically (such as SQL and Haskell)"

Isn't that what memcached is doing?

</comment><comment><USER71> This article is ignorant bullshit. Speaking as someone who's been a professional programmer for a long time, and for a series of good companies. What's present may be technically correct ( _may_ ), but most of the important stuff is absent. And as for alternative careers for people who are too dumb to progam. Oh please.

</comment><comment><USER72> I think one of the biggest errors a bad programmer makes is seeing 'bad' code everywhere. Sure, some code stinks but just because some code doesn't do something the way you would have done it doesn't make it bad.

If you do have to complain about some piece of code then do so in concrete terms:

\- Presense of bugs

\- Lack of error handling

\- Preformance issues (real ones, that cause real problems)

\- Security issues

\- Poor robustness

\- Redundancy

<comment><USER57> Your username doesn't aid in your argument against criticism of bad code. Just sayin.

<comment><USER72> Actually, that was a username I've used for 13 years. Currently I'm mainly developing in TCL professionally and Python personally.

<comment><USER57> It's in jest. There's something funny about the username "VBProgrammer" in a discussion about identifying bad developers, from the stereotypical POV.

Disclaimer: I started as a VB guy myself. Now I fall in the C# and Python camps.

</comment></comment></comment></comment><comment><USER73> > (OOP) Writing lots of "xxxxxManager" classes that contain all of the methods > for manipulating the fields of objects that have little or no methods of > their own

How about writing lots of xxxxController classes that manipulate objects that have little methods of their own.

</comment><comment><USER74> This article is mean spirited, too serious and not well written.

Bad programmers I have known generally:

\- Are oblivious and clueless. They just lack cleverness.

\- They lack problem solving abilities and willingness to solve problems.

\- They are usually slow witted.

\- They are very conventional-minded - external approval means a lot to them.

\- They are willing and ready to work too hard at programming for a result.

\- They lack abstract reasoning skills.

And most bad programmers don't like Star Trek or science fiction, but I can't figure out why other than simple correlation with the mindset of a programmer.

The first set of six "real" causes pretty much encapsulate 99% of the mediocrity I've witnessed in industry in this field. Bad programmers usually have two or more of these problems. Even one of them is a serious problem if you are looking for a great developer.

All other badness, such as "meal ticket" thinking, usually radiates outward from these things.

I say this because if you lack the quickness and the desire to seek simple and elegant solutions, the work becomes like drudgery and your work reflects the other deficiencies that the article described.

A specific example: if you care too much what non programmers think (including your managers) and if you are a bit of a toady, you will not take the time to learn what is going on in-depth, and you will look for quick solutions. So it's important to strategically ignore your bosses from time to time and if you are trying to be politically popular, software development isn't a good place for this.

Another example: if you "want" to work very, very hard, you will not seek ways to simplify the code. You will instead cope with growing complexity and spaghetti.

I question the article writer's programmer instincts because he did not figure out a much more efficient and concise way of expressing the same things. Above all else, a real programmer figures out how to say it just once - <USER2> repeatedly cast in different ways.

</comment><comment><USER75> Where does the "gets shit done" programmer fit into all of this though? I'll admit that some of my code is confusing and not always "clean" but it does what it's supposed to do, and I'm able to get more "shit done" when I focus on the end goal vision rather than the cleanliness of my code... which in a prototyping phase of product development is really rather meaningless anyway, since you don't even know yet if there's a market for your product/service offering

</comment><comment><USER76> > "Yo-Yo code" that converts a value into a different representation, then > converts it back to where it started (eg: converting a decimal into a string > and then back into a decimal, or padding a string and then trimming it)

The other day I was at a hack night and some guys were working on something written in Node. They were having all kinds of problems with an object, so they serialized it to JSON and loaded it back, and somehow it magically started working.

</comment><comment><USER77> It's easier to fix the technology than to fix the users. I don't think in my wildest dreams I could walk away from a program I created and say the user of said program is bad. I would find a way of fixing it. Programs should serve users, not the other way around. Likewise, Programming Languages should serve Programmers. Clearly, we aren't properly being serviced if programming makes us constantly look bad.

</comment><comment><USER78> Signs you're a bad writer:

\- Your blog post only consisting of lists

\- Using only -ing verb forms in your lists

\- Not having an introduction in your article

\- Not having a conclusion either

\- Having only short 2-line paragraphs

\- Lack of any style

</comment><comment><USER79> The best part is at the very bottom... if you think it's TL;DR, you could have missed a lot of points.

</comment><comment><USER80> I think the bad programmer won't see this post as they don't check Hacker News on a daily basis... :P

</comment><comment><USER81> I wonder who wrote this article originally? Google finds about 9 identical copies:

[https://encrypted.google.com/search?q=%22deficiency+a+progra...](https://encrypted.google.com/search?q=%22deficiency+a+programmer+can+practice+by+using+the+IDE%22)

<comment><USER82> Hacker News user clawrencewenham

<http://news.ycombinator.com/item?id=3132533>

</comment></comment><comment><USER83> Signs that you are a mediocre programmer

Adding columns to tables for tangential data (eg: putting a "# cars owned" column on your address-book table)

I thought this is actually good for performance in different cases? Why is this considered mediocre?

</comment><comment> buff-a Another sign: not reading this article because you couldn't possibly be a bad programmer and therefor this article can't have anything to offer.

</comment><comment><USER84> There are no bad programmers. Just bad programs.

</comment><comment><USER85> There is one surefire sign you're a bad programmer: faced with a problem, your reaction is "pshaw, I see how I can solve this..."

Whereas a good programmer has the reaction, "uh-oh. I see how I can solve this..." And knows that this is just half the battle, and what he's getting himself into.

<comment><USER86> Oy, I used to do this all the time... till I stared sitting down to solve some of those problems. That was about the time I started saying "uh-oh". I (think) I have moved on from this phase fortunately.

</comment></comment><comment><USER87> oh my! I love when you recommend specific career base on specific issues. You made my day! I can't stop laughing. "Bag Lady" seriously looool

<comment><USER88> I agree with joe_the_user. I found the article snide and condescending. I suggest alternative careers for the author:

\- Leader of a high school clique \- Movie reviewer who concentrates on who's "in" \- Coiner of demeaning nicknames

I wouldn't want to work with this person.

<comment><USER31> I agree too. I found it arrogant and very condescending.

But his alternative career section is humorous.</comment></comment></comment>


Why Do Developers Hate Meetings? - <AUTHOR> http://www.quora.com/Who-do-people-hate-meetings

<comment><USER2> 10 minute "What did you do yesterday, what are you doing today, and do you have any roadblocks?" meeting first thing in the morning = good

2 hour "We need to figure out how to monetize our shelf space and maximize user engagement" meeting right after lunch = bad

Developers hold productive micro-meetings all throughout the day via IM or Campfire.

</comment><comment><USER3> In my experience it's not that developers hate meetings, but they hate meetings that don't produce anything. You'll developers working out a spec on a white board for hours on end — they do that because they love to do that. On the other hand bring them to a meeting about project management and they feel that you're cutting into code writing time.

<comment><AUTHOR> That's an interesting insight. In my experience, very few meetings produce anything. If a company wants to keep its developers happy but needs to have a few of them in meetings (e.g., to answer questions, comment on process), what to do???

<comment><USER4> The net results of many meetings could be summed up in E-mail threads or things like wiki documents. So often the first step is to prefer those mechanisms. (Bonus points if people in the organization can be trained to be brief, so that threads and documents are focused.)

The net contributions of many people in a one hour meeting could often be summed up in 30 seconds, and it's even worse when those people _had no relation to anything else that was discussed_ (and therefore had no other reason to be there). So step 2 is to realize that either the meeting was meant for fewer people, or should have allowed attendees to speak for 30 seconds and then leave.

The very worst possible meeting is one that is at preset intervals, for preset lengths, with no agenda (e.g. weekly one-hour meetings with 20 people), that starts late with phone and projector problems. That is essentially telling your employees that you don't care about their time.

</comment></comment></comment><comment><USER5> pg wrote what may well be the definitive work on this subject:

<http://www.paulgraham.com/makersschedule.html>

</comment><comment><USER6> I'm a UX manager at a software company, and I am definitely NOT a fan of meetings (most people think that managers like meetings). My team is comprised of writers, designers, and developers... all valuable employees whose time I respect, and they all say the same thing about meetings... that they're an interruption to their productivity and creative "flow". I try to shield them from as many meetings as possible and they often thank me for it.

</comment><comment><USER7> I think everybody hates meetings that are not focused. From my own experience, the worse meetings are when it's not relevant to my projects, workload or interests.

</comment><comment><USER8> PG described the worst thing about meetings in the makerschedule essay. Two other meeting evils:

\- Meetings that expand to fill the time scheduled for them

\- Meetings with more people than required to solve the problem at hand</comment>


Echo Chamber Incites Online Mob to Attack Math Profs - <AUTHOR> https://andrewgelman.com/2018/09/14/echo-chamber-incites-online-mob-to-attack-math-profs/ <comment><USER2> It's an interesting episode. I just left a comment there on the article, but it hasn't made it through the spam filter yet. Or perhaps he's turned off comments already? I'll repost here so it's not lost completely.

\---

Andrew --

1) Your sentiment that "It should be possible to have a legitimate difference of opinion regarding the value of that paper, without making someone into the bad guy" is wonderful, and mostly lacking elsewhere. Thanks for this. Your response to D Kane that the "attacks don't retroactively justify all of Cuddy's earlier actions, but they do cast new light to me on the consequences of my own actions" is equally enheartening.

2) A refrain in your comments is that "Wilkinson suggested the journal publish a rebuttal, the journal editor instead decided to remove the paper." From what I can tell, the evidence that she made no suggestion of removal is almost exclusively Wilkinson's self-description. Even if this is the email that Wilkinson intended to write, perhaps the wording didn't make it clear that she was not suggesting removal? Is it fair to wonder why Wilkinson has not offered that email if it's as exonerating as she describes?

3) Did you happen to notice that you are explicitly mentioned in the newly released email from Lee Wilkinson as a suggested author of a rebuttal to accompany the article: "And if you do decide to go with the article plus commentaries, I would suggest that you consult with people like Donald Rubin at Harvard or John Hartigan at Yale (emeritus) or Steven Sigler at Chicago or Andrew Gelman at Columbia, all of whom have far more experience with the statistical and mathematical issues underlying this hypothesis than Hill and Tabachnik[ov]."

<comment><USER3> Can you clarify point #2? Removing an accepted paper from a journal is a very serious and relatively uncommon step. I don't know why you'd think Wilkinson suggested it, unless someone had read the email and said "it sounds like she's recommending the paper be pulled." Based on my reading, no one who has seen the email has described it as such.

<comment><USER2> To start, I don't know what the email said, nor do I have any certainty that it said something like "pull the paper". But equally, I don't have any certainty that it did not. I'm suggesting that without the email it is impossible to be sure either way. Given this unprovability, and given that Gelman is a brilliant statistician, I'm surprised that he's willing to make this a foundation of his argument --- unless he's talked personally with Wilkinson, or unless he's actually read the email.

1) The outcome. It's uncommon to remove a paper, but it happened. Senechal, explaining her decision to rescind, says "I have received concerned messages from several colleagues, warning of extremely strong reactions to the accepted version of your paper.... Their concerns include the very real possibility that right-wing media may pick this up and hype it internationally. There could be a massive fallout that may harm the magazine, the publisher, the editor(s) and, of course, the authors." Since we know that Wilkinson was one of the colleagues that wrote her, this makes me think that Senechal considered her a vote on the side of "do not publish".

2) In Wilkinson's Facebook messages, she says: "When I found out (a few weeks ago), I wrote to the editor-in-chief (Marjorie Senechal) complaining, as many others did, apparently. She ended up rescinding the acceptance (good, although why did she accept in the first place) and revealing my identity to the authors without my consent (bad). I received an obnoxious email from one of the authors, which is how I found out. No apology from the editor. Shabby." She is clearly happy that the acceptance was rescinded, and implies that this resolves her complaint (good). She does not mention that Senechal went above and beyond her suggestion of publishing with rebuttal.

3) Leland Wilkinson, in his email to Senechal (which he graciously allowed to be forwarded to Hill) says "I'm afraid I have to agree with Amie that a mathematical journal could risk harming its reputation by publishing an article like this." By contrast, when he says "if you do decide to go with this article plus commentaries", he does not attribute this to his daughter. I think this makes it likely that Amie Wilkinson's preference is that the article not be published at all, and that publishing with rebuttal would have been her second choice.

4) The lack of a clearly exonerating email. Wilkinson made a public response, but consciously chose not to release the actual contents of her email. If the email made her look good, I think should would have produced it by now. I don't mean this as a personal attack on her integrity, just an observation about common human behavior. I thought most of the people in the released email chains came off looking quite professional. The conspicuous absence of this email makes me want to see how it compares, and see whether it matches Wilkinson's self-description.

 _Based on my reading, no one who has seen the email has described it as such._

Other than Wilkinson and Senechal, does any one else claim to have seen this email? The only description I have seen from Senechal is that the emails (as a group) "concerned not the substance of your article but the very real possibility of extremely damaging fallout", without any specific commentary on Wilkinson's email. I think everyone else is relying on Wilkinson's summary of what it said, rather than the email itself.

If I can turn the question around, what makes you confident (if indeed you are) that Senechal could not have interpreted Wilkinson's email as a request that the paper should not be published?

edit: I should probably add that I have no particular problem with Wilkinson (or others) lobbying an editor to rescind acceptance of a paper that they feel is harmful. In this case, I think it's better to publish and discuss, but people should act their conscience. But I would be bothered if Wilkinson was shown to be privately lobbying against publication while publicly claiming to have advocated only for publishing with rebuttal.

<comment><USER3> The other three points don't strike me as significant evidence (1 cites "several colleagues" any of whom could have been the one, 3 strikes me as indeterminate between someone being vague about attribution and your reading, 4 seems like guilty until proven innocent), but 2 is interesting. There is some gap between approving of the paper being pulled, and advocating it, but the comment makes the story more plausible.

I am inclined to believe that Wilkinson is either making a bald-faced lie or telling the truth. I don't have grounds to accuse her of a direct lie, so I lean towards telling the truth. Because revoking acceptance is serious, I do not think it makes sense to suggest it was just a misunderstanding.

Analogy: I'm invited to a party, and the host discusses inviting someone I'm not on great terms with. I'm noncommittal. They might guess that they should not invite that person to make me happy, because that's a relatively small step. However, it's unlikely they'll invite that person and then assault them on my behalf, because that would be an extreme measure--merely being noncommittal wouldn't suggest that.

I think revoking acceptance is less severe than assaulting someone, but much much more severe than failing to invite them to a party. I believe a journal editor would only revoke an acceptance either 1) in the face of direct requests that they do so, or 2) as their own decision based on what they thought was necessary.

</comment></comment></comment></comment><comment><USER4> This is meta but...

The author was wondering why _this_ specific instance kicked something off because it isn't obvious why it would when better tinder exists out there. It's a good question.

Scott Alexander has a brilliant explanation of why this occurs, part III rings true to me.

[http://slatestarcodex.com/2014/12/17/the-toxoplasma-of- rage/](http://slatestarcodex.com/2014/12/17/the-toxoplasma-of-rage/)</comment>


Newton Mail app shutting down September 25 - <AUTHOR> https://9to5mac.com/2018/08/07/rip-newton-mail/ <comment><USER2> Nooo! Newton is my favorite! This is a sad day for me, and of course even more sad for the team.

Alright, what is everyone's favorite cross-platform mail client these days then?</comment>


Stripe Acquires Index PoS - <AUTHOR> http://www.businessinsider.com/stripe-buys-payments-startup-index-point-of-sale-processing-analysis-2018-3?IR=T <comment><AUTHOR> If there's a pay wall, kill all scripts on the page</comment>


Reading the Puppet Source - Or, How I Lost My Sanity - <AUTHOR> http://somethingsinistral.net/blog/reading-the-puppet-source-or-how-i-lost-my-sanity/

<comment><USER2> Well, I didn't expect to see my own blog hit hacker news. This is exciting! (Read: a bit terrifying.)

I wrote this blog post about a year and a half ago when Puppet 2.7.17 was freshly released, and I was doing operations at Puppet Labs and was trying to do some gnarly stuff with Puppet internals. I have a pretty bad memory, and blogging about things I read was the only way to keep everything in my head.

Since I wrote this post, a number of things have changed. For one we've prioritized clear documentation and we work hard to make sure that the code itself is clear and understandable. Since I've been the one whining about poor inline documentation, I've taken a swing at improving things myself ([https://github.com/puppetlabs/puppet/commit/447d24403f461743...](https://github.com/puppetlabs/puppet/commit/447d24403f461743c02ab58a11aed57a9b110082)), because if I'm going to whine I better put up and make a change myself. In addition Nan Liu/Dan Bode released the Types and Providers book ([http://goo.gl/DEJoAd](http://goo.gl/DEJoAd)) which does a great job of explaining that layer of Puppet; if you're interested in extending that layer of Puppet I would highly recommend it.

If anyone has questions I would be very happy to answer, and always if anyone is interested on developing on Puppet I and the rest of the platform team would be very happy to help out. We have #puppet-dev on irc.freenode.net; you can ping me directly (nick is finch) and the rest of the devs are also very helpful!

<comment><USER3> Welcome back Adrien! Which is to say, if this comment appears beneath yours, this is evidence you are no longer unfairly hellbanned. Unless of course the administrators (in a pique of particular deviance) have taken to posting fake reassuring responses to banned comments to further your sense of complacency.

</comment></comment><comment><USER4> Use an IDE.

I don't mean to trivialise a very real and hard problem, but the world being what it is, cut yourself a break here and let an IDE do the heavy lifting of allowing you to navigate and help understand a code base.

You'll NEVER be able to guarantee all APIs you'll ever work with are adequately documented. That path leads to madness!

<comment><USER5> What IDE would you recommend for a ruby code base?

<comment><USER4> Jetbrains Ruby mine. E.g.

        > Guys, I don't have the FAINTEST FUCKING
        > IDEA why that string is being returned.
        > I don't even know if the return value
        > for destroy is used at all, in which
        > case the last line is meaningless.

One way could be find usages: [http://www.jetbrains.com/ruby/webhelp/finding- usages-in-proj...](http://www.jetbrains.com/ruby/webhelp/finding-usages-in- project.html)

</comment></comment></comment><comment><USER6> For anyone looking to learn about Puppet (via a Vagrant virtual machine), I have created a screencast about it @ [http://sysadmincasts.com/episodes/8-learning-puppet-with- vag...](http://sysadmincasts.com/episodes/8-learning-puppet-with-vagrant)

</comment><comment><USER7> _> As I'm going through all of this code, I'm hoping to start documenting the classes I go through here and explain what's going on._

YES.

One of my biggest productivity boosters when dealing with understanding code written by others was to use Evernote to document all my ideas, theories of how the code worked, tests to see if it really did work that way and final result. By documenting everything, I can at least rule out theories that don't work; I think this is at least part of what is known as the scientific method.

I hope this becomes a trend and many more people start documenting their findings. Let google loose on all that data and you save thousands of man- hours spent understanding code

<comment><USER8> Comments in code is a start. URLs to documentation in comments is better.

<comment><USER9> depends. when the code changes, how do you enforce that the documentation changes, and that they change in sync? depending on how you're storing the documentation off to the side, do you have two versioning schemes to reconcile when trying to look at code history? does you documentation even ha e versioning?

if you keep the docs in the repo, during code review you can say "hey, update the doc while you're at it" or "this doc change doesn't agree with this code change, can you take another look at it?"

</comment></comment></comment><comment><USER10> adrienthebo's account is < 30 minutes old and already hellbanned.

<comment><USER11> Ridiculous. Absolutely ridiculous. And clearly evidence of a poorly designed automated process running amok, because his comment is very informative.

</comment></comment><comment><USER12> Mostly unrelated but kinda funny, this title looks like it was generated by that random HN title generator posted a little bit ago.

<comment><USER13> While an unfortunate coincidence I got to admit, it does look like it.

</comment></comment><comment><USER14> puppet isn't how things are supposed to be. for starters the initial learning curve is steep. salt is more powerful and easier to get started.

</comment><comment><USER15> Hi adrienthebo, your comment is dead for some reason. I guess your new account might have trigger a spam false positive and got hell banned (so it may appear to be non-dead to you when you're logged in).</comment>


After yesterdays huge sell off the stock market is pointing down again today  - <AUTHOR>

<comment><AUTHOR> Yesterday the Dow was -1.63%, Nasdaq -3.10%, S&P 500 -2.09%. Pre-Market Indications point right now to around -0.5% for all three. I am glad I sold all my stocks when the Crimea crises started.</comment>


Gilt CEO: How Gilt Will Go Local - <AUTHOR> http://techcrunch.com/2010/06/01/gilt-ceo-how-gilt-will-go-local/ <comment><USER2> The reason this is a natural move is deal curation (2:15). Groupon and similar sites lack the credibility that Gilt has established. When Gilt recommends a deal, users will assume that it has been thoroughly researched and vetted. I can't say the same for some of the deals I've purchased on Groupon.</comment>


Microsoft backs Epic in court filing - <AUTHOR> https://www.bbc.com/news/technology-53888087 <comment><USER2> Dupe of:

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

</comment><comment><USER3> For those who missed it this is the quote that matters here:

> In an escalation, Apple then said it would pull Epic's access to developer > tools on iOS and Mac.

> But Microsoft said this would damage a "critical technology" for many third- > party game creators.

> That is because Epic also owns the Unreal Engine - a tool widely used by > developers from other studios to build games, virtual-reality VR experiences > and special effects in major television shows and films.

> Microsoft uses the technology itself.

YIKES, how much longer is this going to go on?

<comment><USER4> I may be missing the point, but does this imply that no games based on the Unreal engine could be developed for Mac anymore, as Epic themselves will be unable to develop for it / support it?

<comment><USER5> It means they cannot fix breakages before a new version of iOS/macOS is generally available, and they won't have access to the new ARM CPU devkit that's critical to port their engine to ARM based macOS.

<comment><USER3> This is what I'm taking it as. They probably have special access in order to get their engine ready for the latest iOS updates. This move on Apple's part is very abusive. People elsewhere in the thread are comparing Microsoft, but Microsoft wouldn't cripple developer tools because an app from a vendor abused its guidelines. Any store willing to do this has gone too far.

<comment><USER6> This does seems like an abusive move by Apple.

I note that Epic continues to provide a version of Fortnite that violates the rules and provides the ability to buy in-game currency at a lower price through their own store, and has filed legal papers requesting that Apple be forced to support this while the court case proceeds.

This seems like an abusive move by Epic.

Two wrong don't make a right, but it's tough to see how this isn't a direct result of Epic's actions, and more to the point, something Epic could fix in less than an hour by turning off their violating store.

Turn it back when/if you win the court case, Epic. Right now it seems like you bet that Apple wouldn't call your bluff, and you lost. They did.

<comment> john-shaffer Epic had a lawsuit and an advertisement already prepared. They were not bluffing, and they were very confident that Apple would "call" them.

<comment><USER6> About Fortnite, sure. About their entire account, that seems to have surprised them.

Fortunately for Epic, last night the court agreed that is likely a step too far.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> This is pretty funny because Xbox has the same store restrictions (impossible to install from another source, all games approved by them, takes a revenue percentage) Apple does.

<comment><USER8> I know this is a popular rebuttal, but are video games consoles really comparable to phones, which are nothing but general purpose computers?

<comment><USER9> What is the difference between the capabilities of the console hardware and the phone hardware? The console hardware is actually more powerful. PS3's were used as general purpose computers until Sony removed OtherOS functionality.

This is nothing but defensive "don't sue us next" posturing by Microsoft. Consoles are just as general purpose as a phone. The only difference is the software veneer running on top.

<comment><USER10> Those game systems allows purchasing from physical stores. Does Apple allow that?

<comment><USER9> It's an unimportant distinction.

It doesn't matter that you got your Microsoft-store approved copy of Gears of War from Gamestop instead of the Microsoft app store. MS still gets their cut, and that application still had to be approved by them.

The core similarity to iOS and Apple's app store is: Third party applications cannot run on the Xbox without Microsoft review, approval, and fee. It doesn't matter that it's a physical copy or not. You, an independent developer, can't just create an Xbox game and get it running without MS approval, no matter whether you wanted to sell it on the app store _or_ as a physical copy.

<comment><USER10> How does this compare to Google? You can develop your own app and side load it. And you can have third part app stores.

<comment><USER9> Yep, I'd say Google's closer to doing the right thing here comparatively, having at least a non-terrible path to running unsigned APKs.

I would put Apple, Microsoft, Sony, Nintendo in the same bucket of "makes hardware that can run software, but only software they approve." Whether this is something we as a society should allow, I won't comment on, but I will say that Epic should either have a grievance with all of them or none of them. Microsoft and Epic are strange bedfellows and I can't see this headline as anything other than a nervous preemption on Microsoft's part.

<comment><USER11> I against to put smartphone platform and game console in the same bucket on antitrust perspective because there's only two viable players in smartphone platform market (on gaming, 3 major platforms + open PC platform + smartphone platforms) and it's mandatory device for modern life.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> For context, the Microsoft Store platform takes a 5% fee compared to Apple's 30%. [https://blogs.windows.com/windowsdeveloper/2018/05/07/a-new-...](https://blogs.windows.com/windowsdeveloper/2018/05/07/a-new- microsoft-store-revenue-share-is-coming/)

This isn't super surprising. Microsoft is desperate to get people to develop for the Windows platform and this obviously an incentive that developers will find attractive.

<comment><USER13> Are Windows PC gaming and the XBOX line in such a decline that they could be described as desperate? I really doubt it, but I'm having trouble finding data to back up either argument.

<comment><USER14> I believe he was referring to the Store on Windows platforms, not Xbox platforms. The Windows Store has games but Microsoft never made a fight against Steam the way Epic has.

<comment><USER15> What's the difference between the Windows store and XBox store? Is the revenue split different? Are there different requirements for selling on Windows and XBox?

<comment><USER14> The Windows Store is exclusively for Windows devices and the Xbox store is for Xbox devices.

<comment><USER15> Is the XBox Store available for anybody to sell in, or do you have to have a relationship with Microsoft?

<comment><USER14> I mean if you're selling in either store you have a relationship with Microsoft.

They have completely different ToS.

<comment><USER15> I was under the impression that the XBox store was much more difficult to get into. Thanks for the clarification.

<comment><USER14> I'm not versed in the finer details. Initially it was difficult to get into the Xbox store but then Microsoft started catering to Indie developers and smaller games.

They've rebranded the Xbox Store and Windows Store to both just be the Microsoft Store and content you purchase them (e.g. Movies, Music, TV) is shared between the two. Some Games are "Xbox Play Anywhere" which means you can play them on Windows 10 or Xbox (e.g. Forza Horizon 4) but others are exclusive to either platform (e.g. Flight Simulator). Some games can be purchased for either platform individually (e.g. Halo).

Then you have the weirdness that Microsoft Flight Simulator 2020 is published by Xbox Game Studios but only available on Windows 10.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> I wonder what car manufacturing companies think about all of this?

In my state and I think in much of the US, we're not allowed to buy directly from the car manufacturer. I never liked that law because I don't like car dealerships, but now I'm beginning to see why those laws that keep car dealerships in business might have passed.

<comment><USER4> > In my state and I think in much of the US, we're not allowed to buy directly > from the car manufacturer.

Huh, what, in what way is that law a good thing?

<comment><USER17> If you're a dealership, it's an amazing thing.

This is why you cannot buy a Tesla in TX.

</comment></comment></comment><comment><USER18> Microsoft seems to be doing everything they can to push everyone to writing platform agnostic software:

1\. Game streaming, which opens the doors to app streaming

2\. Progressive Web Apps, teaming with google to create a tool to publish them directly to the Android Play Store

3\. At one point, they created tools to port iOS and Android apps to windows mobile

4\. Investing in React Native and Xamarin

Personally, I am not a fan since today, the quality of these apps are really bad and give developers too much power. But seems Microsoft is trying to get a foothold to relaunch Windows Mobile again once more apps switch over

</comment><comment><USER19> Epic needs to offer a 30% discount for anyone who gets their content from their website.

And while I'm not sure if you can side load on Apple products, if you can't, don't offer your services on Apple products. Customers will move as they wakeup to their horrible business practices.

<comment><USER20> \- Apple forbids people from buying content on their website.

\- Apple forbids developers from mentioning that the content might be cheaper elsewhere.

So that won't work.

<comment><USER21> > \- Apple forbids people from buying content on their website.

Not quite. Apple forbids directing users to a web site from within your app to sidestep in-app purchases. If you offer any digital purchases through your app, they must use IAP.

</comment></comment></comment><comment><USER22> Full support for Msft and Epic! Time to bring the dictator (Apple) down. And when that day arrives, it will be a tragedy on HN since tears will be shed by Apple fanboys. Hint: You cannot support anti-competitive practices because you like your Mac :)

</comment><comment><USER23> Part of me wonders if this is Microsoft just trying to align with Epic, in the cast that the courts do side with Epic, who in turn use that ruling against Sony/Microsoft/Nintendo.

<comment><USER24> I wonder if it is because they believe that their cloud gaming platform will be more lucrative than XBox in a few years and think that not having to pay apple the 30% and still have access to the iOS userbase will be more profitable.

I for one wouldn't mind if this case ended up forcing Apple to loosen their restrictions in regards to sideloading and other app stores on the device.

A pipe dream, but one can hope.

</comment></comment><comment><USER25> Does Microsoft allow any other stores on the Xbox?

What % do they take from game sales?

<comment><USER26> Yup - physical stores such as GameStop, Bestbuy, Target, etc have been selling Xbox media for quite sometime.

<comment><USER15> That's not a very meaningful distinction. Microsoft still gets their cut and till approves every title. An independent XBox store would remove Microsoft from the loop.

If Epic wins in court (and I hope they do), then the consoles are next in line to be forced open.

<comment><USER27> Consoles have a very different purpose from phones. Niche gaming-focused item vs general purpose computer (that was apple's ipad marketing at least)

<comment><USER15> Does it really matter how it's marketed? We know that an XBox is mostly a Windows PC. There's all kinds of software I'd like to load onto an XBox-like device. A PC in the living room connected to a large TV has a lot of potential. I'd like to write software for it and I'm sure I'm not alone.

</comment></comment></comment></comment></comment><comment><USER28> I hope we can also get rid of VAT. I dont want to pay the 20% on everything because my government cant manage things more efficiently.

You say I should just move to a country with a lower VAT? Yeah not that easy.

I dont condone apple on what they are doing with their platform but you need to understand that Apple sets a standard and that standard costs money.</comment>


John Cleese on Creativity - <AUTHOR> http://www.youtube.com/watch?feature=player_embedded&v=VShmtsLhkQg#! <comment><USER2> Cleese is a genius - "Solemnity - it serves pomposity, and the self-important always know at some level of their consciousness that their egotism is going to be punctured by humour.That's why they see it as a threat and so dishonestly pretend that their deficiency makes their views more substantial, when it only makes them feel bigger. _Fart_.".</comment>


Jaspy – A Python VM written in JavaScript - <AUTHOR> https://github.com/koehlma/jaspy/blob/master/README.rst <comment><USER2> People often look at things like this like 'why would you...' But it is an interesting experiment that might make web programming more accessible. I think of my physicist cousin who uses python for data analysis. An option like this might lower the barrier to sharing data on the web - less JavaScript ecosystem knowledge required. JavaScript frontendy land moves so fast it can be overwhelming to outsiders, even if JavaScript itself is "easy."

<comment><USER3> You need exactly zero knowledge of Javascript to share data on the web. Plain server generated HTML + some CSS framework is more than enough for most cases. Even if you want some more interactive stuff you don't need to know the "Javascript ecosystem". It's still possible to link a couple pf JS files in script tags, you know. It's even possible to link XSLT 1.0 stylesheet for some non-interactive clientside processing.

<comment><USER4> If you want interactive stuff, there are plenty of Python plotting libraries that can produce interactive visualizations, e.g. Bokeh, MPLD3, or Plotly.

<comment><USER5> And IPython notebooks allow you to not only share the results but an interactive copy of the process as well.

</comment></comment></comment></comment><comment><USER6> I actually embarked on a similar Python VM called Ninia [1] awhile back, but shelved it as other projects became more important. Ninia supports multiple threads and preempts execution to give the browser breathing space, just like my JVM in JavaScript, DoppioJVM [2].

One of the challenges of Python is its objects are quite complex/ad-hoc, and can be overridden by the user. I mapped out [3] how I wanted to map Python objects to JavaScript objects, but never had the time to implement it fully. (That document covers Python 2.7; I'm sure there are differences for 3.) It looks like this project has a lot of work to do if it wants to have parity with a native Python VM! But that's part of the fun of writing these things.

Best of luck on the VM! If you need a file system to plug into the VM for loading modules/implementing the FS API, do check out my BrowserFS library [4], which is currently in use at the Internet Archive [5] and is also used in Ninia/DoppioJVM. You can also cop things from Ninia, as it is MIT licensed.

Oh yeah, and if you need a Python compiler/parser, you can simply run the PyPy interpreter's parser+compiler [6] in your intepreter once it is reasonably complete. It is written in 100% Python!

[1] [https://github.com/plasma-umass/ninia](https://github.com/plasma- umass/ninia)

[2] [https://github.com/plasma-umass/doppio](https://github.com/plasma- umass/doppio)

[3] [https://github.com/plasma-umass/Ninia/wiki/Mapping-Python- Ob...](https://github.com/plasma-umass/Ninia/wiki/Mapping-Python-Objects-to- JavaScript-Objects)

[4] [https://github.com/jvilk/browserfs](https://github.com/jvilk/browserfs)

[5] [http://ascii.textfiles.com/archives/4924](http://ascii.textfiles.com/archives/4924)

[6] [https://pypy.readthedocs.org/en/latest/interpreter.html](https://pypy.readthedocs.org/en/latest/interpreter.html)

<comment><USER7> Cool, I will have a look through your code and BrowserFS seems especially useful to me.

</comment></comment><comment><USER8> I often see this wish expressed (also in here by somebody):

> _JS engines in browsers should evolve to more general VMs, for which you can > implement /port other languages._

You do understand that when this happens (and is spread enough to use in production), the web framework and tooling fatigue will be 2-3 times worse.

It's not just that everybody and their dog will write their own framework (as now), they'll split even more and do it for 10 languages... And expect the same dilution of effort for libs too...

I'd actually prefer a better JS replacement, that is, a new, single, language that draws from it and gets rid of all the caveats fixed (lack of ints, coercion rules, small std lib, optional types, even better designed for high speed JITing etc), than seeing Python, Clojure, Ruby, Lua, PHP and 200 others re-implemented in web assembly...

<comment><USER9> Where is this "dilution" in the java world? I don't see it.

<comment><USER8> The Java world has 1/10 the programmers Javascript has (which is basically everyone doing web work).

The Java world also historically had a parent company giving strong guidance.

The Java world also has strong standard libs and tended to include everything and the kitchen sink in them (including full blown servers, XML/XSLT parsers) in the SDK (and EE SDK). Heck, it even has a full JS interpreter there.

Even so, there was huge fragmentation of effort for things like web frameworks (Struts, WebWork, Spring, Cocoon, Turbine, Tapestry, and many many more). Actually, if you were doing Java in 2000-2010 it was a running joke how everybody would write their own framework.

And I would argue that all the resources diverted to numerous Java-derivative languages (like Kotlin, Ceylon, Xtend, etc) would be better of in making Java better, or creating a single, community driven, Java successor, if there was a process (and access) for that.

As it is, they are all doomed to remain niche players, and ultimately fail, while languages like C# and Swift march on.

</comment></comment></comment><comment><USER10> As a general trend with reimplementing stuff in JS, I don't quite know whether this is exciting or horrifying...

<comment><USER11> JavaScript may very well have the doubtful honor of being the language that people have spent most resources to avoid writing in.

<comment><USER12> It's probably 2nd place. I imagine avoiding writing in C gets the top honor.

<comment><USER13> Nope, every single programming language and computing interface is an attempt to avoid writing machine code. :)

<comment><USER11> Maybe, but the step away from assembly has been more about portability than avoiding the language.

</comment></comment></comment></comment></comment><comment><USER14> I wish people would take time to actually learn javascript. I used to see it as a shitty toy language up until 2012. It opened me up to a completely different style of programming.

<comment> awinter-py I saw it as a shitty language until I worked with it full time in 2016 after which I forgot all about clunky syntax and focused on the too-small standard library and web standards nuttiness.

<comment><USER15> Don't forget the confusing ADHD garbage tooling!

<comment><USER16> I feel like TypeScript could make JS a decent language if Microsoft starts going more ambitious with it - they really need to do a Dart style integration - official package manager, build system, full es5 transpiler, std lib polyfill included.

So far they have been conservative and focused only on typing but they could offer insane value if they started offering a full language expirience like Dart

<comment><USER17> It's an excellent tool. It does make JS a decent language.

A package manager is not necessary, it can work with npm.

A build system is not necessary, existing build systems support it.

I believe they will eventually do full polyfill. However, the compiler is very high quality and that doesn't happen by accident. They have to make hard design decisions to keep releasing features so regularly (they release features faster than I can keep up with sometimes).

For now, you can target es6 and chain with babel.

<comment><USER18> It's better than javascript but it's still poor. You still run into wierd this scoping issues, the JS it actually produces is pretty fugly, there's still no standard libraries like decent languages have, every property accessor has to be prefixed with 'this.', etc. etc.

And, ultimately, your code still ends up being a load of garbage boilerplate code like you're writing oldschool Java from the early 2000s.

It's a nasty language written on top of a nastier one, lipstick on a pig.

<comment><USER17> The extent to which all your points matter really depends, but I find myself able to use types just for some logic, and code in a functional style far removed from oldschool Java with lots of destructuring / structuring. I'm not denying it's a lipstick pig, but the improving-JavaScript situation is what it is, and it does a good job at doing it in an unopinionated way (which is why it's succeeding)

<comment><USER18> It all matters a lot. There are great languages available today and typescript isn't one of them. Why should we be forced to choose sub par languages?

I don't see it as a long term solution. It's just the next coffeescript. It's part of the problem rather than a solution, the problem being the massive churn in the JS ecosystem as we desperately hunt for a way of writing JS code that isn't awful.

The actual solution is to give us other languages in the browser. We need Python or Ruby or Go or C# or PHP or whatever. We need real choice, not javascript 2.0.

If Firefox wanted to stay relevant today it could stop dogmatically promoting a broken language and _that 's_ what they'd be working on right now. They're too rigidly fixated on the past though.

<comment><USER15> How did PHP end up in that list?

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> I think the most salient application for client-side Python (or Ruby) are for companies already entrenched in server side frameworks like Django and Ruby on Rails. For all Django provides, developing in it still feels constrained to a server heavy mid-2000's web development paradigm. While frameworks like React and Ember are pushing the envelope on web applications by allowing you to render HTML apps on the server and on the client, to do something similar in Python means duplicating rendering logic between a server-side template language and a front-end framework like Angular, React, or Backbone/Marionette.

Some technologies tackle a part of this problem, like pybars, which allows using Handlebars templates in both a python and javascript process. But it would remove a mountain of mental overhead and code duplication, if feasible, to write an entire web application in Python.

<comment><USER20> I prefer the web to still be the place where people share HTML documents and do simple data input/retrieval. Rather than shoving a square peg in a round hole. I'm rather happy with the state of Django as a result. I suspect Django Channels will provide all the stateful connectivity most people will need without tossing the baby out with the bathwater.

And it's not all roses on the other side either, I've looked into the fullstack solutions that are all JS and promise the world and best future possible but ended up being lackluster in things like SEO.

</comment></comment><comment><USER7> Oh wow, thanks for the great feedback to all of you!

</comment><comment><USER21> This will be interesting for codeschool.com and elearning projects, now they can have everything without requiring the backend at all to evaluate the commands that the user sends.

</comment><comment><USER22> I'd be interested to see how threading support was implemented, seems difficult to do in a browser environment.

<comment><USER23> It's easy: you could just run n instructions of thread one, then n instructions of thread two, and so on in a loop. To not freeze up the browser, you could periodically yield to it and set a timeout to start running the next thread again.

<comment><USER22> I guess so. I think I was thinking about concurrently running multiple threads.

<comment><USER23> That is already concurrent. Do you mean in parallel? Yeah not easy to do that, you'd have to set up web workers and I think sort of manually recreate the shared state with your own coherence protocol!

</comment></comment></comment></comment><comment><USER24> are we limited to certain libraries for now? I am guessing we can't do pip install, but maybe this version of Python can interact with other javascrupt (e.g. JQuery)?

<comment><USER7> Most of the builtin types and functions are not fully implemented yet, but if they are, you may use any library that is implemented in pure Python.

There is already support for threading and I am also planing to implement a filesystem as well as multiprocessing using WebWorkers. Even sockets will be possible with node.js.

Then yes, you can do "pip install".

There is also a module that allows you to use native JS libraries like JQuery.

</comment></comment><comment><USER25> Going through the code and finding new unknown stuffs already!

</comment><comment><USER26> But why?</comment>


DNA Is a Fractal Antenna in Electromagnetic Fields (2011) - <AUTHOR> https://www.ncbi.nlm.nih.gov/pubmed/21457072 <comment><USER2> So the authors observed increased markers of damage after exposing DNA to a range of non ionizing EM frequencies.

Are the authors implying that even non-ionizing electromagnetic radiation can damage DNA because of resonance accross a wide range of frequencies? Is there truth to danger from cell phones?

<comment><USER3> That is certainly a popular conspiracy theory.

It's hard to believe, though. Cellphones have been around for a generation. The early ones had higher output power than modern ones. If there was any risk of harm, we would see it by now.

<comment><USER4> > If there was any risk of harm, we would see it by now

That statement feels a little problematic to me. Who's to say that possible effects aren't cumulative, maybe more exposure time is needed for big problems to appear, and maybe it's been contributing to smaller problems so far. Truth is, we don't really know enough to say that for sure.

Think asbestos and mesothelioma. The onset of that can be _forty years_ after exposure to asbestos. That's roughly two generations. And a one off event can be enough.

<comment><USER5> > Think asbestos and mesothelioma. The onset of that can be forty years after > exposure to asbestos. That's roughly two generations. And a one off event > can be enough.

Except that mesothelioma _can_ onset at 15 years and is less rare at 25. And it is one of the longest because of the particular mechanism of encapsulation and migration. DNA disruption has no such reason to be slow.

There are almost always _some_ people with a fast response to a biologically active agent. DNA damage would almost certainly show up quite quickly in some subgroup.

While you can't prove a negative, absence of evidence certainly moves the Bayesian priors.

<comment><USER6> Mesothelioma has a specific and distinctive set of symptoms, so people took notice and look for a root cause.

Hypothetically, _if_ EMF radiation were to cause a wide range of low-level effects such that common diseases had increasing prevalence rates over time, how would we be able to link that back? Cell towers are ubiquitous, there's no non-exposed control group that epidemiologists can easily compare to.

<comment><USER7> The Amish. Their water and soil is no less contaminated by other factors, so the only thing left is far reduced EMF exposure.

<comment><USER8> Nah, most amish communities are surrounded by normal folks and have pretty good cell coverage. A better control group would be communities around radio telescopes where cell towers can't be built for fear of interference with research.

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

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> This is old news. Electromagnetic waves have all kind of effects on cells. There is also a ton of very old literature out there (also, quite a bunch from China). Stuff like this and older: [https://www.ncbi.nlm.nih.gov/pubmed/3729999](https://www.ncbi.nlm.nih.gov/pubmed/3729999)

In fact, a former friend had some good ideas regarding this and I wrote a patent for a start-up but then he pussied out.

<comment><USER10> What were the ideas behind the start-up? Very fascinated/curious

<comment><USER9> This is long time ago. I may not be bound by any NDA but I am still bound by my word. But I am sure any guy with a biotech background would get some ideas.

The main specific ("high value") target would not be of so much interest anymore today since this problem has been solved.

</comment></comment></comment><comment><USER11> This idea is a plot device in Greg Bear's 'Darwin's Radio'. Good yarn and it dates OK.

[https://www.goodreads.com/book/show/64923.Darwin_s_Radio](https://www.goodreads.com/book/show/64923.Darwin_s_Radio)

</comment><comment><USER12> What's up with light having a helical shape and dna as well?

<comment><USER13> A shot in the dark: it's characteristic of a complex exponential function ergo the trigonometrical nature of waveforms in time. (Euler's Formula and all that Jazz)

I am inclined to think of both as communication signals.

<comment><USER12> I believe that that is the case, yes.

A helix is a quaternion.

<comment><USER14> >A helix is a quaternion.

Thanks for that observation. You have given me yet another way to look at quaternions. If you take the axis vector and the rotation and consider them combined, yep, is a helix.

<comment><USER12> Yup. They are quite a beast. The next step is dual quaternions which correspond to screws.

<comment><USER14> In that case, I could really do with a dual quaternion.

</comment></comment></comment></comment></comment></comment><comment><USER15> It's very obvious why it works like an antenna. It is unlikely that it should not

</comment><comment><USER16> I used to have no issues at all with EMF; not that I was very healthy, but I didn't feel any effects. Then I stopped entirely for six months while I lived in an ashram out in nowhere doing Yoga all day.

And sure enough, after coming back I could barely do 10 minutes with my laptop on a wireless network before feeling sick for hours. These days, I don't even use a cell phone unless I absolutely have to; and I only use wired technology at home. Working in an office or spending a lot of time in cities is not even on the radar.

I don't know whether to laugh or cry when I see people raving about their AirPods online, walking around all day with wireless antennas in your ears looks like suicide from here.

So; there goes the karma, I guess. I am painfully aware this is not a very popular perspective, but it's my authentic experience and this is my Internet as much as anyone else's.

Edit: See, I told you. Keep chasing your tails then, I don't care. It's evolution in action.

<comment><USER17> Did you do anything to confirm it was EMF/Wifi?

Like moving further away because E/M strength falls off with the square of the distance.

Perhaps your laptop screen has developed a flicker, which gives you a headache from long use? Perhaps your eyesight or room lighting has changed so the contrast now strains your eyes?

Perhaps your study room now has a bunch of cars parking outside, and is filling with fumes, or there's a gas leak in your house, or a bit of heating/melting plastic somewhere releasing fumes?

Perhaps you're returning with a lot of apprehension, and getting a bunch of stress just sitting down to rejoin "work" and getting a lot of stress-related muscle / skeletal tension and gut upset? Perhaps it's a correlation - you make coffee and sit down to work, but it's the coffee you're not adjusted to anymore?

The world is an electric place - homes run mains electric cables all around, the atmosphere is filled with radio and TV and satellite transmissions, things like streetlights are quite electrically noisy, neighbours with wifi is common. A "good" signal strength might be in the region of -30 to -65dbm, or 0.000001 Watts to 0.0000000003 Watts at the receiver. Compare that one way with a 1KW electric heater - this is a lot weaker. Compare it another way to the way you can turn a radio or TV on and pick up strong signals which are always around and going through you - but I have no idea how the signal strength compares.

<comment><USER18> I appreciate your analysis. To contrast this, simply to bring everything into a larger perspective: we developed in a natural world without all of this electrical pollution. And as your questions suggest, it is very difficult to pinpoint what any one cause may be, including what state of health a person is currently in - and whether that is perhaps making them hypersensitive, likewise it could be a 'skill' or sensitivity they developed and can feel only in specific contexts which would further make testing it difficult.

<comment><USER14> >we developed in a natural world without all of this electrical pollution.

That big glowy thing in the sky might disagree.

<comment><USER18> It's clear that people's understanding of EMFs is low overall based on comments like this - where the presence of the sun and other natural levels of EMFs that make it through our atmosphere at different quantities, at different times, etc is being compared as equal to say electrical power lines, screens/monitors, CPUs, etc; it's naive.

<comment><USER14> Do you think that there is something qualitatively different between electromagnetic fields based on whether the source is produced by humans? Of course they can be directly compared, the field doesn't give a shit what made it.

<comment><USER18> There are lots of factors that make it different. The most all-or-nothing version of it would be to realize biologic material will burn up if you're right next to the sun, and you won't be impact by the sun "at all" if you're in a lead container that's thick enough (a faraday cage blocking EMFs).</comment></comment></comment></comment></comment></comment></comment>


Tell HN: Palo Alto Hacker House has an opening - <AUTHOR>

Rent: $450/month. You will be sharing the room with another person.
Within walking distance of: University Ave (numerous bars, coffee shops, stores) Palo Alto Caltrain, Stanford University (long walk - you'd probably want to bike)
Plenty of parking (private driveway & street parking). Internet: 30mb down / 9mb up Gigabit wired network / Wireless B/G/N, desks (there's space for at least 6 in the main area)
If you're entrepreneurially minded, then you'll fit right in!
Email email@example.com if you're interested and tell a little about yourself. <comment><USER2> You know it's a hacker house when internet connection is given and not the sq. ft., number of rooms/roommates or bathrooms :)

</comment><comment><AUTHOR> Some old photos <http://hackerhouse.bluwiki.com/go/HH/Photos></comment>


A new way to accurately estimate Covid-19 death toll - <AUTHOR> https://phys.org/news/2020-04-accurately-covid-death-toll.html <comment><USER2> It's amazing how often death toll related to COVID-19 is taken in a vacuum. From all the little evidence we get ([https://www.nytimes.com/2020/04/06/well/live/coronavirus- doc...](https://www.nytimes.com/2020/04/06/well/live/coronavirus-doctors- hospitals-emergency-care-heart-attack-stroke.html)), it seems that heart disease related deaths are reduced, or rather "swallowed" by the coronavirus deaths (in US alone, 650k people die of heart-related diseases every year, or more than 50k a month).

To me, the explanation is logical — some who would have died of a heart disease anyway are now dying of COVID19.

I do not want to dispute that it is having an effect — I just want to know what that effect is. Is it 20% more deaths? Or 4x (300%) more?

Considering heart related diseases have been mostly linked to COVID19 deaths, I am surprised nobody is looking at aggregated data yet, which would help more "accurately" estimate the death toll.

<comment><USER2> FWIW, I look at US data as a good proxy for what happens if you do not institute a full lockdown or strict social distancing rules only for the first full month with roughly 50k deaths. Assuming there was no decrease in heart- related deaths (up to 55k), that suggests that the effect is at worst 100% increase (doubling).

I suspect that it's lower than that since there's bound to be an overlap, but that's still a big range (though it can also be negative since at-risk patients might get early care due to the panic, but that would be surprising).

</comment></comment><comment><AUTHOR> > "... there was high confidence (99 percent) the expected [US] death toll > would be between 66,055 and 70,304."

<comment><USER3> Nah. There are so many possible unknown events, like patient 31 in Korea, if people will go to the beach when there is a sunny day, if people will crow in front of the banks in case of a bank run [1], when will the class start, will planes keep flying, ...

Note that the paper says:

> _The new model predicts that the maximum total number of deaths will be > approximately 62,100 across the United States due to the Covid-19 virus, and > with a 95% confidence that the expected total death toll will be between > 60,951 and 63,249 deaths based on the data until 22 April, 2020._

When the intervals calculated with a high confidence at different day don't overlap, it's a huge red flag.

For a more realistic interval, the paper also says:

> _On 17 April, the University of Washington's Institute for Health Metrics > Evaluation (IHME) projected that there would be 60,308 Covid-19 deaths with > an estimated range between 34,063 and 140,381 deaths by 4 August, which is > down from 68,841 as predicted earlier on 13 April._

[1] we have something like this in Argentina, not a bank run, but something similar.</comment></comment>