Astrophysicists detect the strongest magnetic field in the universe - <AUTHOR> https://www.nanowerk.com/news2/space/newsid=56092.php <comment><USER2> Magnetars are even more mindblowing than blackholes, in my opinion.

Here is an excerpt from the Wikipedia article on Magnetars, to blow _your_ mind as well:

 _" X-ray photons readily split in two or merge. The vacuum itself is polarized, becoming strongly birefringent, like a calcite crystal. Atoms are deformed into long cylinders thinner than the quantum-relativistic de Broglie wavelength of an electron." In a field of about 10^5 Tesla atomic orbitals deform into rod shapes. At 10^10 Tesla, a hydrogen atom becomes a spindle 200 times narrower than its normal diameter._, from [https://en.wikipedia.org/wiki/Magnetar](https://en.wikipedia.org/wiki/Magnetar)

Edit:

 _" Die Massendichte, die einem derartigen Magnetfeld über seine Energiedichte in Kombination mit der Äquivalenz von Masse und Energie gemäß E = m c^2 zugeordnet werden kann, liegt im Bereich einiger Dutzend Kilogramm pro Kubikmillimeter (kg/mm3)"_, from german Wikipedia, [https://de.wikipedia.org/wiki/Magnetar#Entstehung](https://de.wikipedia.org/wiki/Magnetar#Entstehung)

says that the mass density (via energy-mass equivalence) of such strong magnetic fields might be dozens of kilograms per cubic millimeter (kg/mm^3).

 _Mind. Blown._

<comment><USER3> How do those rod-shaped atoms, like hydrogen, interact with other hydrogens or other atoms? Can chemical reactions still even happen in the traditional sense?

<comment><USER4> The temperature is expected to remain above plasma temperatures even if a neutron star could cool for a billion years, so presumably normal chemistry couldn't occur.

[https://astronomy.stackexchange.com/questions/14387/what- hap...](https://astronomy.stackexchange.com/questions/14387/what-happens-over- time-as-a-neutron-star-cools)

The coldest neutron star detected "T < 42,000 Kelvin" : [https://arxiv.org/abs/1901.07998](https://arxiv.org/abs/1901.07998)

Disclaimer: I am not an astrophysicist.

</comment></comment></comment><comment><USER4> "a significance level of > 20σ"

Insane! Clearly that doesn't include the uncertainty in our understanding of physics or neutron stars.

Edit: I tried to work out the % that 20σ is, but it is so mind bogglingly small that there should be a law against using such an insane number in any serious context.

<comment><USER5> Each tail is bounded above by e^(x^2/2) / (x sqrt(2 pi)). Take logs and you get (x^2 / 2) - log(x) - log(2 pi)/2\. Calculate that out and you get to about 1.44 * 10^85. You can double that for 2 tails. But it is still an impressively small number.

</comment></comment><comment><USER6> This is almost certainly not the strongest in the uninverse based on the sample size of our observations right?

This is the strongest we have observed. Still really fascinating.

<comment><USER7> In cosmology, "in the _known_ universe" is always implicit. If the universe turns out to be flat and infinite, then whatever unlikely thing you can think of happens an infinite number of times in any infinitely small time period you care to mention.

Somewhere, in the field of infinity, a whale materialized above a Three Stooges convention and landed on a newly sentient petunia, an infinite number of times since you started reading this sentence.

Perhaps not in the _known_ universe, sure, but somewhere. So "known" is _always_ the implicit qualifier, but it'd be a pain in the neck to diligently write "known universe" every single time when the people familiar enough with the material to note the distinction also understand that's what you meant anyway.

<comment><USER6> For one, I appreciate this perspective, I was not aware of that.

On the other hand this feels unconvincing to me. The language of science and physics is already obtuse and overly wordy, that's what seperates it from the noise of everyone else talking, because it trades precision for brevity and so it feels reliable . So there are infinite places to draw that line in the sand. Why do we stop right there? Why don't we just say what we mean instead of piling up a bunch of words into a statement which is objectively false without all the context.

<comment><USER7> Well, it's because the more precise words don't really provide more information. And honestly, we do this exact thing constantly in everyday life without thinking of it as confusing.

For example, "Usain Bolt is the fastest man alive". Sure, _that we know of_. There might be some kid in Chile that's .05s faster, but we'll never know because his life circumstances don't bring him to our attention. "The Bugatti Chiron is the fastest car anywhere"... except for that speed demon tearing up the tracks in orbit around Alpha Centauri. "Stephen Hawking is the smartest guy", if it weren't for that absolute genius herding goats in Siberia who didn't get to go to school and has the local reputation as the weird kid arranging the livestock in novel patterns. "Tuna is the most delicious fish" because no one's thought to make sashimi of that weird looking thing we dragged up from the Mariana Trench.

In all of those cases, there's an unspoken "...that we know of". Even if you believe that each of those cases is the fastest, smartest, or otherwise best, you have to concede that there may be another faster, smarter, or better elsewhere that we haven't discovered yet.

So why pick on cosmologists? It's literally impossible to declare _anything_ to be "the most $X in the universe", first because the universe has an infinite amount of stuff we'll never be able to see, and second because we haven't even remotely finished cataloging a zillionth of the stuff we can actually look at. Picking on them for not inserting a redundant "known" in every sentence, when it doesn't add information to their statement and would just be adding filler, isn't fair.

<comment><USER6> If you define man as human and we have open events to let people determine who's fastest, it's totaly reasonable to assume he is actuality the fastest man alive. On the other hand this isn't packaged as some sort of scientific claim and has a lower burden of proof.

I don't think anyone beyond an anecdotal context is explicitly claiming hawking was the smartest and either way, it's not measurable and so is inherently subjective.

Delicious, subjective opinion.

All of these are reasonable statements, it's clear up front that they are subjective statements of opinion or their scopes keep them within validity.

Saying a magnetic field is the strongest in the universe based on a measurement in defined units is drastically different type of claim than the ones you mentioned. In this case it's an invalid claim so we should probably stop saying it.

</comment></comment></comment></comment></comment><comment><USER8> > ~1 billion Tesla

Magnetars supposedly have up to 10¹¹ tesla. But I guess the evidence for that is more indirect.

</comment><comment><USER9> I assumed it'd be on earth like the hottest temperature in the Universe.

> which is tens of millions of times stronger than what can be generated in > Earth laboratories.

How hard is this to achieve? Billion $ or impossible?

Not sure, but Wiki says labs get higher?

[https://en.wikipedia.org/wiki/Orders_of_magnitude_(magnetic_...](https://en.wikipedia.org/wiki/Orders_of_magnitude_\(magnetic_field\))

<comment><USER10> Probably impossible without damaging the earth. The article talks about the magnetic force crushing particles electron fields to be flat or spindle; I would imagine generating a field like that anywhere on Earth would have a chance of flattening the magnetic core of our planet into a disk.

On the funny side, the flat earthers would finally be right.

</comment></comment><comment><USER11> OK, ELI5: Why should a neutron star have a strong magnetic field?

<comment><USER8> The same reason earth or the sun have a magnetic field. But the collapse of the star's core compresses the dynamo into a much smaller volume and speeds up the rotation due to conservation of angular momentum, thus making it more powerful.

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

<comment><USER11> But that requires an electrically conducting fluid. Neutrons aren't electrically conducting, are they?

<comment><USER12> At pressures neutron stars deal with, the laws of know physics are more like vague suggestions.

<comment><USER11> Meaning that, for example, the neutrons could dissolve into just a sea of quarks, and then it's a charged fluid? OK, I could see that.

</comment></comment></comment></comment></comment><comment><USER13> Sort of related—Tom Scott did a survey to determine "The Best Thing": [https://youtu.be/ALy6e7GbDRQ](https://youtu.be/ALy6e7GbDRQ)

The second runner up is the Earth's magnetic field.

He makes fun of his audience for ranking it that high, but planetary magnetic fields are no joke.

</comment><comment><USER14> hell of a MRI they got over there. The jealously is real.

</comment><comment><USER15> interesting

</comment><comment><USER16> Let's not forget that this neutron star is measured at 5.8 kiloparsec distance from earth which is 18,917.1 light years.

Even if observable electromagnetic radiation was traveling at the speed of light, which most is not, we are looking at ancient history, because once this EM reaches earth we are studying phenomena that occurred >189 centuries ago.

We don't have a way to know if this star is even still there.

Everything studied in astronomy at significant light years distance is ancient phenomena, we are just seeing it/sensing it/evaluating it now.

<comment><USER17> The concept of "still there" in time is not very meaningful for cosmology. All of our observations are in ~space-time~ not just space or time.</comment></comment>


Google, HP, Oracle Join RISC-V – Open-source processor core gains traction - <AUTHOR> http://www.eetimes.com/document.asp?doc_id=1328561& <comment><USER3> Hi, I'm a Ph.D. student at UC Berkeley on the RISC-V team. Happy to answer any questions about the RISC-V ISA or Rocket, our open-source reference implementation.

Since there's always confusion about it, I'll start off by clarifying the difference between the two. RISC-V is an open-source ISA standard. Rocket is an implementation of this ISA which also happens to be open source. We do not intend for the ISA to be tied to a single reference implementation. The intention for RISC-V is to enable many different implementations (whether open-source or proprietary). These different implementations can all run an open-source software ecosystem, which currently consists of a GNU toolchain, LLVM, and Linux kernel port.

<comment><USER4> What operating systems have been ported to RISC-V so far?

I would assume GNU/Linux, Android, Solaris because of the companies involved. Am I correct?

<comment><USER5> If anyone has a RISC-V processor that will run Solaris, let alone a port of Solaris, they haven't announced it.

It really would be interesting to know why Oracle got involved, though, since their involvement is not the universal sign of pending success for an open source project.

<comment><USER6> To be a cynic, one of the best ways to kill a project is to get involved and make a mess from the inside.

<comment><USER7> Wasn't that in the CIA operations manual that surfaced some time ago?

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

</comment></comment></comment></comment></comment><comment><USER8> There's been a fair bit of discussion about this over on reddit:

[https://www.reddit.com/r/linux/comments/3z9t7k/open_source_p...](https://www.reddit.com/r/linux/comments/3z9t7k/open_source_processor_core_gains_traction_google/)

[https://www.reddit.com/r/opensource/comments/3z5ue8/open_sou...](https://www.reddit.com/r/opensource/comments/3z5ue8/open_source_processor_core_gains_traction_google/)

I'm a cofounder of lowRISC, a not-for-profit working to produce a fully open source SoC implementing the RISC-V ISA, in volume silicon. If you have questions then fire away.

<comment><USER9> Not a question really, but a comment for anyone involved: please push to add integer overflow traps. No processor adds support because C doesn't require them, and as a result no language detects integer overflow by default because the processors make it slow. We need to break this cycle and it's not often that a new processor architecture comes around.

[http://blog.regehr.org/archives/1154](http://blog.regehr.org/archives/1154)

<comment><USER10> MIPS has arithmetic instructions which trap on overflow. And guess what - <USER2> & clang use variants which _DO NOT_ trap on overflow.

<comment><USER11> Why? If I had to guess, it's because there's more than a little C code out in the wild that relies on "typical" signed overflow behavior.

<comment><USER12> I don't know: both compilers are trying to use 'undefined use' to optimize code (and too bad for you if this create problems for your application), so your explanation isn't coherent.. My explanation is: lack of interest/money: security is the thing that is always ignored, see the lack of funding of OpenSSL until recently..

</comment></comment></comment></comment></comment><comment><USER13> Microsemi (the names "Actel" and "ProASIC" might be better-known) and Lattice are also mentioned as sponsors in the article itself. These are FPGA vendors, which suggests that they might be interested in shipping RISC-V soft cores in their design tools or possibly even shipping chips with RISC-V hard cores (similar to the Xilinx Zynq and Altera SoC families).

Notably, Lattice manufactures the only FPGA for which a full open source design flow currently exists (albeit unsupported by Lattice themselves) [1], and has its own set of open source soft processor cores [2] [3].

[1] [http://www.clifford.at/icestorm/](http://www.clifford.at/icestorm/)

[2] [http://www.latticesemi.com/en/Products/DesignSoftwareAndIP/I...](http://www.latticesemi.com/en/Products/DesignSoftwareAndIP/IntellectualProperty/IPCore/IPCores02/LatticeMico32.aspx)

[3] [http://www.latticesemi.com/en/Products/DesignSoftwareAndIP/I...](http://www.latticesemi.com/en/Products/DesignSoftwareAndIP/IntellectualProperty/IPCore/IPCores02/Mico8.aspx)

<comment><USER14> I think the main reason the fpga companies aren't offering a low-cost , hard core mcu+fpga chip is that they are afraid about competing against the mcu companies.They can certainly reach the prices (Lattice claims a 50 cents fpga).And it's very affordable to license from ARM.

So i don't see this sector changing with an open-source core.

<comment><USER15> As sanddancer said, there are already high end parts from both of the top FPGA companies that include hard MCUs. Xilinx has been doing this for a really long time going back to embedded PPC. They wouldn't be competing against MCU companies, they are already competing against other programmable logic companies with the same features. The difficult part is the engineering and marketing in a way that doesn't cut into the profit margin of those low cost FPGAs. And RISCV provides a zero to low cost path to working netlists and toolchains. MCU+FPGA hybrids are absolutely the future in programmable logic it is only a matter of time before _all_ shipping fpgas have built in hard programmable control logic.

<comment><USER14> >> MCU+FPGA hybrids are absolutely the future

If so , it will probably come from china - they're building all the parts, are hungry(even at the state level) to achieve dominance , and don't care much about legacies, and have the market (probably backed by government) to support such strategy.

</comment></comment></comment></comment><comment><USER16> I wonder what Google, HP, and Oracle are planning to do with RISC-V. Will RISC-V-based chips be able to compete with Intel in the server market?

Incidentally, I think the first consumer devices to adopt RISC-V will be home wireless routers, because the stock firmwares for those are closed, so they'll just need to be recompiled with a new toolchain. And those devices don't need a GPU.

<comment><USER3> We do expect embedded systems to be the main use of RISC-V processors at the outset. In fact, I believe there is a consumer product out now - some kind of camera - which uses a RISC-V processor.

I don't think we'll be able to compete with Intel's x86 chips for a while. Mostly because Intel's silicon processes are more advanced than those offered by other foundries.

<comment><USER17> The AXIOM, a 4K camera uses a RISC-V

[http://riscv.org/workshop-jan2016.html](http://riscv.org/workshop- jan2016.html)

</comment></comment></comment><comment><USER18> I wonder what the copyright license terms on Oracle's proprietary ISA extensions will be...

</comment><comment><USER19> Obligatory: ¨RISC architecture is going to change everything¨ - [https://arikia.files.wordpress.com/2013/02/test2.gif?w=625](https://arikia.files.wordpress.com/2013/02/test2.gif?w=625)

</comment><comment><USER20> Has any one created a verification infrastructure with any of RISC-V implementations? The git repository does have a set of tests and benchmarks but could not find any thing more than that.

<comment><USER21> Check out : [https://github.com/ucb-bar/rocket-chip](https://github.com/ucb- bar/rocket-chip)

Last time I complained here about the verification infrastructure of this project, someone gave that link.

I didn't like much of what I could find there.

What exactly are you trying to do?

<comment><USER20> I want to at the minimum compare the architectural state of the implementation on every retire with the ISA simulator (Spike).

In addition it would be good to have a set of assertions to maintain the sanity (read functional correctness) while experimenting with the design.

How are these implementations verified right now ? All I see are few assertions in chisel and small set of tests.

<comment><USER22> You can get a commit log (PC, inst, write-back address, write-back data) from Rocket to compare against Spike's commit log. It's not documented because the verification story is still in flux, and the commit log is fairly manual (since there will be many false positives).

Comparing a real CPU against an ISA simulator is VERY HARD. There's counter instructions, there's interrupts, timers will differ, multi-core will exhibit different (correct) answers, Rocket has out-of-order write-back+early commit, floating point registers are 65-bit recoded values, some (required) ambiguity in the spec that can't be reconciled easily (e.g., storing single-precision FP values using FSD puts undefined values in memory, the only requirement being that the value is properly restored by a corresponding FLD).

We also use a torture tester that we'll open source Soon (tm).

<comment><USER20> Thanks for the information. I understand its a hard problem but an essential one that needs a solution. It needs to be supported both in Chisel and with appropriate infrastructure to test and compare with the golden ISA model. Is there any one in the community who is actively working on the verification story ?

<comment><USER22> > Is there any one in the community who is actively working on the > verification story ?

Not sure. I'd look out for videos to show up at the RISC-V workshop that's ongoing ([http://riscv.org/workshop-jan2016.html](http://riscv.org/workshop- jan2016.html)).

The problem is verification is where the $$$ is, so even amongst people sharing their CPU source code, they're less willing to share the true value- provided of their efforts. A debug spec is being developed and will be added to Rocket-chip to make this problem easier.

With that said, MIT gave a good talk at the RISC-V workshop about their works on verification, and we open sourced our torture tester at ([http://riscv.org/workshop-jan2016.html](http://riscv.org/workshop- jan2016.html)).

<comment><USER22> [https://github.com/ucb-bar/riscv-torture](https://github.com/ucb-bar/riscv- torture), stupid copy/paste.

</comment></comment></comment></comment></comment></comment></comment><comment><USER23> How does RISC-V compare with the J2 core based on the SuperH architecture by the Open Processor Foundation[1]?

1: [http://0pf.org/](http://0pf.org/)

<comment><USER8> I answered a similar (but slightly different) question here: [https://lobste.rs/s/jmgsyl/untethered_lowrisc_release/commen...](https://lobste.rs/s/jmgsyl/untethered_lowrisc_release/comments/ng761j#c_ng761j), comparing lowRISC and the Open Processor Foundation.

</comment></comment><comment><USER24> Can someone explain the advantage of RISC-V vs. other open source architectures (e.g. OpenSPARC?).

Are there legal issues that make it more favourable?

<comment><USER25> Well, I think the fact it's LGPL vs. GPLv2 is one point in favor of RISC-V. The other major factor I believe is that the RISC-V architecture is better suited for embedded type applications. I don't think you could (easily) scale down the OpenSPARC design enough to make it a suitable architecture.

<comment><USER3> The RISC-V ISA and Berkeley's open source reference implementations are BSD- licensed, not LGPL.

And yes, the RISC-V ISA is simpler than the SPARC ISA. We also have clearly separated the base integer ISA from the various extensions, such as floating- point, atomics, supervisor, etc.

<comment><USER25> Thank you for the correction, I was thinking OpenRISC (which is LGPL), vs. RISC-V (which is BSD).

</comment></comment></comment></comment><comment><USER26> I wonder if HP are looking at RISC-V/lowRISC for their "The Machine" project.

</comment><comment> Const-me I wonder how are they going to compete with Intel?

I don't see how they're going to match raw performance against those 1tflops+ 20-cores xeons. I don't see how they're going to match performance/watt against 7w quad-core C2338. I don't see how they're going to match price against $20 x5-Z8300. If none of the above, then why should Google/HP/Oracle/anyone else buy that?

<comment><USER27> I don't think they need to compete with Intel.

The numbers I've seen suggests Intel ships around 300-400 Million processors per year[1]. In 2014, 12 Billon (with a B) devices with ARM cores shipped[2]. In 2011, around 500 Million MIPS based cores shipped[3].

These are obviously very different businesses. But it's clear there is an enormous market for licensable low-end IP cores that are used in everything from cars, cable boxes, TVs, cellphones (many phones have multiple cores internally to operate functions like the cellular baseband), etc. Most of the licensees are just gluing together licensed cores and contracting foundries like TSMC or Global Foundries to build them. The margins tend to be pretty thin (we're talking chips that are in the single digits for cost), so saving a little money on IP licensing is attractive. Since these are often custom applications, binary compatibility is less of an issue.

That seems like a more interesting market for an open ISA and open core processors.

[1] [http://www.ft.com/cms/s/0/beff6e56-53ed-11e4-80db-00144feab7...](http://www.ft.com/cms/s/0/beff6e56-53ed-11e4-80db-00144feab7de.html#axzz3wFGbKjgu) [2] [https://atlas.qz.com/charts/Ek18VmbP](https://atlas.qz.com/charts/Ek18VmbP) [3] [http://www.forbes.com/forbes/2011/0509/technology-mips- sande...](http://www.forbes.com/forbes/2011/0509/technology-mips-sandeep-vij- dvd-micro-chips-less-more.html)

<comment> Const-me Thanks, that sounds reasonable.</comment></comment></comment>


Eagles fly to Iran, rack up roaming charges - <AUTHOR> https://arstechnica.com/tech-policy/2019/10/eagles-fly-to-iran-rack-up-huge-roaming-charges/ <comment><USER2> This is amazing</comment>


Ask HN: How easily can I obtain a US Visa? Anyone got experience? - <AUTHOR>

I'm hoping at some point in the next year or two to move from the UK to the US. I am young (I'll be 20 next week) and I currently work as a programmer for a reasonably sized digital agency. I have experience, I am skilled and I could provide value working for a company in the US.
I have no ties to the US in particular, though some of my relatives live over there I think (let's ignore that though, I don't really know them and I'm not certain).
So, where do I go from here? Do I approach companies first and then try and get them to sponsor me for a visa? How likely is it that I will be approved for a visa? Does anyone have any experience in this area?
Also, does location in the US matter? There are a few places that I would like to move in particular. Any ideas what effect the particular state I'm planning on moving to will have on the chances of obtaining a visa? <comment><USER2> I am a Turkish citizen working in Germany with a residence permit. It was very easy to get it after doing my master study in Germany (So I had a student visa before the residence permit, which allowed very limited working hours). I had a "Business Administration / Economics" degree before and I studied a similar topic here. Now I'm working in a German software company.

I have no idea how this works in the states but maybe you can try the same. However, I heard that the education is too expensive there (Didn't even Google once, so, take this with a grain of salt).

</comment><comment><USER3> Do you have a degree? If not, good luck.

<comment><USER4> This is true, unfortunately - at my last company two of us (me a Kiwi, the other guy was British) were being sponsored for an H1B. I got one and sadly he didn't. The major differences between the two of us was that I had a comp sci degree, while his was in design and 3d animation, which weren't considered to be highly skilled / in demand enough.

But if you don't have a degree you will definitely struggle for an H1B, as it's part of validating your visa-worthiness - my degree was certified as US equivalent by a professor at US university.

Also, you need a lawyer who specialises in this stuff - the application is labyrinthine.

</comment></comment><comment><USER5> My general/anecdotal understanding is that those long lost relatives (if they do exist) are probably a better bet than an employer for getting sponsored. Other common avenues for getting to the U.S. include marriage and going to college here. All of those seem to generally be easier to pull off than sponsorship by an employer.

At least that's my impression.

</comment><comment><USER6> "Any ideas what effect the particular state I'm planning on moving to will have on the chances of obtaining a visa?"

Not really. State of residence has nothing to do the ability of obtaining a visa. But you got far bigger things to worry about. You have to consider many factors before you can get an answer. For example, do you have at least a Bachelors degree ? Guessing by your age, I would assume not yet ? Without the degree, you probably cannot get the H1B visa (work visa) You can try to work for a company in the UK first who have offices in the US. They might be able to send you on L1 visa but then again, not having a degree might restrict you. There are other visas tied to extraordinary ability but I have always wondered who qualifies for those other than inventors, researchers etc. If you create a startup in the UK and that a very successful one, may be you will qualify for those. Another option is to get married to a US Citizen (fastest way btw) and apply for permanent residency. I am not suggesting doing it in any way but just letting you know the option. If you happen to find true love who happens to be a US citizen, good for you. Dont fall for any immigration scams though. last option which may not be applicable in your case again is through investments in the US. If you have like a million dollars and you can create 10 jobs for US citizens, you might be eligible for a conditional permanent residency.

<comment><USER7> L1 would be the best bet. Three conditions, it has to be a UK co owning a branch in the States, not a US co with a UK office. You have to work there for at least a year (keep your pay stubs, they are required proof). They have to demonstrate they could not find the talent locally, newspaper ad and a couple interviews...

For investments, I don't know if 1M USD is required, but, I saw in the news some gov or cities considering to use foreign investors to finance local projects and they'll be able to obtain green cards (Tampa Bay Rays new stadium for example) but I don't think they are doing it yet, or maybe it was just more politicians blabbering in the medias...

[update] decide wisely, a visa tied to a company means you can't work anywhere else... You quit, your arse is back on a plane... Which means it is often used to secure cheaper talents that are stuck w the company, of course there are ways (h1B transfer to another company) but they are difficult to achieve...

Good luck!

<comment><USER8> The following line is not correct: "it has to be a UK co owning a branch in the States, not a US co with a UK office"

It can be either way around. But your general point is true: the L1 visa is great. I moved over on an L1A visa (the US company is the parent, with branch in UK). I just got a 2 year extension after the first year. Now in the process of getting an expedited green card.</comment></comment></comment>


Zero Downtime with HAProxy - <AUTHOR> https://medium.com/@Drew_Stokes/actual-zero-downtime-with-haproxy-18318578fde6

<comment><USER2> I think this is why some techniques for doing rolling deploys set up a health check for the node which is configurable by the deploy process. That way, otherwise healthy nodes report their status as "down" while still accepting and finishing requests, but then get taken out of the HAProxy rotation without having to re-load the configuration. The new code is rolled out on that node, and the toggle is set to report "healthy" again, so HAProxy brings the node back into rotation.

<comment><USER3> This is what I've done in the past, not sure why we need to "hack TCP" to get zero downtime.

As an additional thing I do rolling deploys where I just create an entirely new VM and add it before removing the old one. This just means that I don't have to recycle a node that might potentially have some state on it.

<comment><USER4> The article is about restarting HAProxy without any downtime. HAProxy restarts are needed when adding new service instances or adjusting configuration options. This is a different and much harder problem than gracefully restarting load balanced service instances.

<comment><USER5> Why shouldn't HAProxy have an API for updating its configuration while running?

<comment><USER6> It should, and it allows you to do some changes over a socket, but allowing complete updates with the current haproxy architecture is a lot of work and isn't there yet.

</comment></comment></comment></comment></comment><comment><USER7> Relevant blog post: [http://engineeringblog.yelp.com/2015/04/true-zero- downtime-h...](http://engineeringblog.yelp.com/2015/04/true-zero-downtime- haproxy-reloads.html)

</comment><comment><USER8> The downtime "gap" between step 1 and step 2 is probably way less than 500ms right? If being down for 500ms, is unacceptable, you probably should have multiple HAProxy instances running, and just do a rolling deploy. Seems like a bit of over-optimization.

<comment><USER9> Exactly, with these "high uptime" requirements, isn't it usual to have 2+ HAProxy instances running on different servers bound to the same IP? At least that's how I do it. When you update the config, first update the backup HAProxy, then update the main one. Any requests that take place during the main proxy restart would go to the backup.

<comment><USER10> Could you please describe how can I bind 2 different servers to the same IP with automatic request balancing (so when one server is down, another one will serve all requests)? I understand how to do it with another server with HAProxy, but your solution seems to be without HAProxy.

<comment><USER9> Apologies for the delay. We do use HAProxy.

To have 2 servers with the same IP, we use VRRP (Virtual Router Redundancy Protocol) and keepalived. HAProxy is setup on 2 separate servers/instances, and using VRRP/keepalive they both share an IP address (which HAProxy binds to). The servers also have their own unique IP address(es) (on top of the shared one), so the shared address doesn't really "belong" to any machine.

If one server goes down, VRRP gives the IP to the other server and that HAProxy takes over.

</comment></comment></comment></comment><comment><USER11> Played around rolling deployments a little using Ansible and tagged github releases. Here's a screencast with some pics for anyone who's interested @ [https://sysadmincasts.com/episodes/47-zero-downtime- deployme...](https://sysadmincasts.com/episodes/47-zero-downtime-deployments- with-ansible-part-4-4)

Workflow is to just mark the node down for maintenance via socket cat, upgrade it, then mark it back on-line.

      # mark node off-line
      echo "disable server episode46/web1" | socat stdio /var/lib/haproxy/stats

      # update app code
      git pull tagged release version

      # mark node on-line
      echo "enable server episode46/web1" | socat stdio /var/lib/haproxy/stats

<comment><USER6> That's the easy part - the tricky part is when you need to reload the haproxy config to do any of the many things you can't do over the socket.

<comment><USER12> If you have a few HA proxy nodes with DNS load balancing, wouldn't the client auto move on to another HA proxy? It is a tiny lag but shouldn't be an error.

<comment><USER6> That might have been the case if you could expect clients to be well behaved, but you can't. In my experience, hardly no network clients handle that kind of thing properly.

</comment></comment></comment></comment><comment><USER13> This way is even better, as it queues up the SYN packets until HAProxy is ready, leading to no faster responses than waiting 1s until the client retries with another SYN: [http://engineeringblog.yelp.com/2015/04/true-zero- downtime-h...](http://engineeringblog.yelp.com/2015/04/true-zero-downtime- haproxy-reloads.html)

<comment><USER6> It's also a lot more complex. It mainly makes a difference if you're reloading haproxy configs frequently, which most of us don't do.

<comment><USER14> I've been a little confused by the claims of how complex the SYN delay solution is. Is it actually all that more complex?

The original blog post wraps a restart command in two iptables invocations (and relies on a hacky sleep interval which may or may not work sometimes). The SYN delay method wraps a restart command in two tc invocations. The concepts are more or less identical in complexity as one is telling the kernel "drop SYNs now please" and the other is saying "delay SYNs for a bit please".

All the complexity in the qdisc solution is in the one time setup of the queuing disciplines. I think the largest drawback of the delaying SYN solution is not complexity but that getting it to work with external load balancers is more tricky than getting it to work with internal load balancers. Honestly, you're right that if an org doesn't have to restart HAProxy a ton, then it doesn't make a lot of sense to invest in solving this problem; although if it were me I'd just make sure I was on the latest Linux kernel so that the period during which HAProxy can cause RSTs is as small as possible and not bother with either the iptables or tc solutions.

</comment></comment></comment><comment><USER15> Does nginx has the same problem of "small time window" downtime? I was guessing reloading would be more gracefully handled by having a single process binding on http/s ports and child processes which contact upstream servers. That way there is no "small time window" while reloading.

<comment><USER14> No, nginx should not have this problem as it uses fd passing to gracefully handoff connections.

HAProxy only has this issue on Linux because Linux's SO_REUSEPORT implementation unfortunately introduces a race condition between accept and close. While I haven't personally tested it, HAProxy on one of the BSDs should not have this small window of downtime.

</comment></comment><comment><USER16> I was, and am, of the opinion that any solution involving sleep isn't a real solution

<comment><USER17> Why is that?

<comment><USER18> Without being dogmatic about it, I feel similarly about fixing things by inserting sleeps.

At a high level, you often see programmers sprinkle sleeps into their code to "fix" race conditions or deadlocks. That doesn't really fix the problem, it just moves it around and it's usually done because they don't know how to reason about the underlying problem and fix it properly.

You need to sleep long enough that whatever you're waiting for will definitely have finished. Most of the time you have no exact guarantee of that, so you have to pick some N that is relatively large. Inevitably, no matter what N you pick, sooner or later, the thing you're waiting for will take N + 1 and things break. To make it worse, the N + 1 situation often happens because you're getting an unusually large amount of traffic or because something else in the system is already in a failure state. So the breakage tends to come at the worst possible time and exacerbate things.

Meanwhile, if you sleep for N ms somewhere, one thing you can guarantee is that whatever you're doing will take at least N ms. There's no way to make it faster, even if it may have been unnecessary to wait that long. Often not a big deal, but the more developers sprinkle sleeps into their code, the more often you run into bizarre performance bottlenecks as a result.

Network timeouts and similar are kind of a fact of life, so there's no perfect solution. But if you find yourself trying to solve a problem by sleeping for some arbitrary period of time, a little alarm should go off in your head telling you that there's probably a better solution.

<comment><USER19> Sometimes sleep is the only viable solution when dealing with an external system. I have such a problem with one of my programs that has to access a hardware device. The problem is the load the hardware can handle varies. To get maximum throughput I have to pound the hardware as fast as possible and when it fails sleep for a random but increasing time. If anyone knows of a more elegant solution please post.

<comment><USER18> Yeah, that's why I'm not dogmatic about it. With network timeouts, external systems that you can't control, and low level hardware access, sometimes it's the best you can do. The better solution would be for the hardware/system you are interacting with to publish an event or otherwise signal when it is or isn't able to handle more load. If it wasn't designed with back pressure in mind though, you do the best you can, and in your case, exponential backoff is probably it.

Adding jitter to avoid dogpiling is another case where sleeping is perfectly reasonable.

What I get wary about is the common pattern of: Make a call to some external service. Sleep for some amount of time (to "let it finish"). Then continue under the assumption that it has completed.

<comment><USER19> I think we are in massive agreement here. Sleep can be used as crutch inappropriately, but when you have a broken leg a crutch is exactly what you need.

<comment><USER16> Agree that we're in agreement ;-)

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> Not only is this from 2014 and not labeled as such, but the shortened title is linkbait. No system gets 100% uptime. This article is about eliminating one small source of downtime for HAProxy systems. Nice, but not exactly a revolution.

</comment><comment><USER21> Why does HAProxy need reloading of config change, can't it load the new config do a diff and apply only that? Or alternative ways of having a web frontend for HAProxy to make changes to the config piecemeal without restarting?

<comment><USER22> There's a few small things you can do over the unix socket, but in general you need to restart haproxy to change it's config.

</comment></comment><comment><AUTHOR> Also interesting: [http://inside.unbounce.com/product-dev/haproxy- reloads/](http://inside.unbounce.com/product-dev/haproxy-reloads/)

</comment><comment><USER23> [2014] , posted here before.</comment>


Reference Checks Can Go Wrong - <AUTHOR> https://www.holloway.com/s/trh-jose-guardado-reference-checking <comment><USER2> If you can't give a 100% positive reference, tell the person before they include you as a reference. Then when giving a reference, make sure it is 100% positive.

Google (and in fact, most companies) only want to hire candidates who appear flawless. To me, "appears flawless" is a red flag itself, but I think hiring committees see any potential negative as possibly the tip of a terrible iceberg. So even though we all want to be honest and provide nuanced feedback about what it was like to work with a person for years, when giving a reference you just need to censor all of that and pretend like they are the best person you ever worked with and the only downside is that you're not working together anymore (but you'd hire them back in a heartbeat).

It's like talking with a reporter or the police. Stop trying to be helpful to anyone but the people you already know. Strangers are not to be trusted with your inside information, about anything.

<comment><USER3> What about when they ask "what is this person's biggest weakness"?

<comment><USER4> They're too nice and they work too hard.

</comment></comment></comment><comment><USER5> Wow, a single offhand comment could doom a candidate from ever being hired?

I wish the same high standard applied to companies interacting with candidates. I've had a Google engineer literally scream at me in an interview. I've also had their recruiters reach out to _me_ for a role, schedule an interview that seemed to go well, then completely ghost me.

I do not judge a company that doesn't hire me, even if they don't give feedback - that is understandable given the legal climate in the states. But it is unacceptable to simply disappear, and actions have consequences.

(In my case, I do not take Google recruiter comms, along with any other company that engages in abusive behavior during the interview process)

<comment><USER6> It does apply to companies. Its called people just won't apply there. However, those people don't make blog posts about it.

For example, if I look for a new job, there is no way I will apply to Google (I say if because I see no reason to look for a new job).

</comment></comment><comment><USER7> This is an extremely fucked up process. Can it possibly still work this way at Google, where a reference collected years ago remains on file and a live part of qualification today?

To everyone else: talk to your references about what you want them to say! Don't just ask for a reference and leave it at that. Treat explicit reference checks like the formality that they are; you have no special obligation to present a super true, clear picture of your experience with your reference. Just make sure the reference gets you to "yes".

Serious reference checks usually aren't explicit (like, "give us a list of 3 people for references"), precisely because everyone with career skills knows to coach their references. In fact, because so many references are coached, negative feedback looks especially bad in them.

My favorite part of this story is that a major lesson this hiring manager learned from the process was to groom reference feedback for the offer committee, just further exposing what a farce explicit reference checks are in reality.

Hiring managers: the other big lesson here is, don't do things the way Google does them. It works for Google because there's so much cachet and stability associated with Google that they can afford to randomly turn down qualified applicants. You're unlikely to be in the same situation.

</comment><comment><USER8> Many years ago, I was approached by a Google recruiter for a position. After a couple of phone screens and a brief onsite, I returned for a ~4 hour set of interviews. After the last interview, with someone who would have been my peer if hired, she starts asking me about my background: where I'm from, what I studied in college, and __if I was Jewish __(!?).

I believe she was Jewish and she said this in a fairly congenial way, but nonetheless I was somewhat shocked. I then thought "well gee, guess I'm going to get an offer". Nope -- more recruiter BS about headcount, whether they had the budget, etc. and the finally a "not a good fit at this time" call with no other feedback.

Their interview process is terrible for candidates and seems nearly _designed_ to make the 90% of people they jerk around before saying no to believe all the stereotypes that Googlers are all self-entitled, aloof, 1%-ers. (I have a number of close friends @ Google, but geez the organization seems to practically revel in opportunities to make itself look bad and the hiring process makes it look sooo bad).

<comment><USER5> Just so you know, something like that would possibly lead to a settlement or something (not a lawyer).

It's my understanding you take findings of fact to juries - which costs companies money to send lawyers to.

The woman would be put under oath (deposed), and probably admit it (I'd hope). But regardless it might still go to trial, and thus they might deem it logical to give a fraction of that as a settlement.

</comment></comment><comment><USER9> > Google was his number one choice, but he had to decide whether it was safe > to reject the other offers he had. He started to press me more, "Jose, I > need certainty. I need to know that I'm going to get this offer." So I said, > "Look, I'm sure you're going to get the offer. My recommendation is that you > wait."

The candidate learned a very valuable lesson: Never believe any assurances that the recruiter gives you about how likely you are to get the job.

The candidate likely lost hundreds of thousands of dollars due to their believing the recruiter (going from being hired by large Silicon Valley companies, to finding a startup at the last minute).

<comment><USER10> Just so folks know you can sign an offer and later retract if another position comes up. It's relatively common.

<comment><USER11> Only assholes do it though.

Because when my preferred candidate signs, I tell other candidates no.

If you have any respect for people, you don't do this stuff.

</comment></comment></comment><comment><USER11> Jose... wow.

Reading between the lines, he committed to this candidate that the candidate was getting an offer; the candidate declined other offers on that basis, and did not actually get that offer.

The candidate should have retained a lawyer.

For anyone reading this and starting their careers, just know everything a recruiter says is bullshit until the docusign lands in your inbox.

</comment><comment><USER12> I feel like a truly ethical recruiter would never say say "I'm sure you're going to get the offer"; either the offer is ready to be given, in which case the recruiter should just give it, or it hasn't been decided yet, and there's no guarantee that an offer will end up being given.

Of course, there may not be a lot of demand for recruiters who would not be willing to tell a candidate that they're sure they'll get the offer beforehand...

</comment><comment><USER13> My experience (as an applicant) was similar. Google, of course, has so many qualified applicants that oddities like this don't really matter much in terms of their final pool.

I do wonder, though, if they will eventually accumulate a reputation for this sort of thing that might harm them. For myself, I no longer respond to their emails either.

<comment><USER14> My understanding of Google is that they're ok with false negatives because they consider false positives to be far far worse.

<comment><USER15> False negatives are a burden on your candidates, false positives are a burden on your organization.

You'd be surprised how often the answer to 'Should we hire' has more to do with 'He felt like he would be a dick' rather than 'He doesn't know X and Y technology'.

<comment><USER16> That's the way it should be. A good candidate can learn X and Y, but it's hard to unlearn being a dick.

</comment></comment></comment></comment><comment><USER17> I haven't had a reference check in a long time. The last company that asked for them didn't even check them. Any hiring people out there feel that reference checks provide any meaningful insight?

<comment><USER18> On the other hand, I agreed when a friend asked if I could be a reference for him.

I got called, sang his praises only to be asked, "Are you looking for any opportunities ..."

Recruiting off the reference list is a shitty thing to do.

<comment><USER17> Seems only shitty if they are recruiting you to place your friend. Otherwise it could be read as, "hey these two developers seem to like each other and have worked together and we need more people". It could feel like a safer bet to hire people you know will get along.

<comment><USER12> Sure, but this discourages people who would otherwise be willing to provide references; if someone is willing to freely give you their time to talk to you about one of your candidates, it seems courteous not to potentially waste more of it by giving them an unsolicited offer.

<comment><USER18> > it seems courteous not to potentially waste more of it

...

or possibly not even be considering my friend

</comment></comment></comment></comment></comment><comment><USER19> Over here in Europe, your references generally don't say very much about you beyond confirming you did indeed work for that company and how long you actually worked there for.

This is to avoid issues like in the article, which can apparently leave the referee open to legal action if the candidate can say the bad reference cost them a job offer or something similar.

Is that different in the US? Do references usually mention the negatives about an applicant as well?

<comment><USER20> If the reference still works at that company, typically the HR will restrict information to confirming period of employment and the title. They don't want to deal with the legal risks. However if the reference is no longer at that company I guess they could be very open.

</comment></comment><comment><USER21> I don't necessarily think there's that much value in references, but this is more of a Google problem than a reference problem.</comment>


The Google Puzzle - <AUTHOR> http://www.thegooglepuzzle.com/

<comment><USER2> I don't understand the benefit of using separate windows for this type of media. Wouldn't layered DOM elements be easier and less annoying? Do the windows add to the wow factor somehow?

A similar Google-made product: <http://www.thewildernessdowntown.com/>

<comment><USER3> Clearly Google's single usability expert was too busy to be involved in this project.

</comment></comment><comment><USER4> I got to the final cube and then I cheated (searched for the phrase), read several links and went to that-website but it just redirects me back to thegooglepuzzle.com, anybody else confirms this behavior? I think they disabled the game somehow...

<comment><USER5> The final puzzle is broken if you block third-party cookies. Weak.

</comment></comment><comment><USER6> On ubuntu linux running chrome 11.0, I get the following message at the splash screen:

"We're sorry, but the Google Puzzle was designed with the browser Google Chrome in mind. As a result, it may not work properly in your current browser"

</comment><comment><USER7> Blimey they're not wrong when they say it'll open some pop-up windows. By the 13th window and no sign that it was going to show me anything I decided I didn't need to carry on playing ...

</comment><comment><USER8> First puzzle seems broken for me in Chrome for Mac 13.0.782.220.

</comment><comment><USER9> [http://mytechknowledge.com/google/the-google-puzzle-full- ans...](http://mytechknowledge.com/google/the-google-puzzle-full-answers-and- solutions/)

</comment><comment><USER10> Chrome (15.0.874.15-dev) completely crashes when I overlay the shape over the Rubix cube on the (presumably last?) puzzle.

<comment><USER11> For me it just closed all but the original window and it says "This is the final hint". Not sure what I'm supposed to do now.

</comment></comment><comment><USER12> Stuck at 4th puzzle! Please give me a hint. It is so frustrating..

<comment><USER13> Read what it says once you make the letters 5x5

</comment></comment><comment><USER14> I really wish I owned a rubik's cube right now.

</comment><comment><USER15> can anybody explain what this is, since it looks like they only support 1 (ONE) browser?

</comment><comment><USER16> i m stuck at 5th puzzle ..WTF

<comment><USER17> Look at the calendar name and events for hints. You need to figure out whose calendar it is.

</comment></comment><comment><USER18> "Can be viewed only with the Chrome browser".

Are we back to the "Best viewed with Internet Explorer" days? Does the functionality really need Chrome?

<comment><USER19> "We're sorry, but The Google Puzzle was designed with the browser Google Chrome in mind. As a result, it MAY not work in your current browser."

And below that:

"-> Enter Anyway"

<comment><USER20> ... which is not clickable in Opera, however.

<comment><USER21> Or Firefox (old version, though).</comment></comment></comment></comment>


MAI Systems Corp. v. Peak Computer, Inc - <AUTHOR> https://en.wikipedia.org/wiki/MAI_Systems_Corp._v._Peak_Computer,_Inc.

<comment><AUTHOR> A case where it was ruled that loading a program constituted making a copy. Copyright law was later changed to allow that making that copy, being essential to actually using the software, was not a copyright violation. Still this is why GPL have to include the right to freely make copies. Modifying a program is not essential to using it so giving the ability to modify but not the ability to make copies would be nonsensical under copyright law.

<comment><USER2> > A case where it was ruled that loading a program constituted making a copy. > Copyright law was later changed to allow that making that copy, being > essential to actually using the software, was not a copyright violation.

This is a nice illustration of one of the balancing acts involved in making laws. Do you want fewer rules, or do you want simpler definitions?

Assuming you are going to have copyright in computer programs in your system, then there are two ways you can reasonably do it.

1\. You can have a fairly simple definition of what constitutes a copy. That will then include the thing in memory when you load a program from disk to run it, and so you then also need a separate rule to make that not be a copyright violation.

2\. You can have a more complicated definition of a copy that doesn't include a program loaded into memory from a disk. Then you do not need any special rule to allow for that memory image since it is out of scope for copyright law.

I think #1 is the better approach. I like my definitions simple so I can keep them all in my head when reading the rules. That way when I'm trying to understand a particular situation I just need to cram into my head at once the simple definitions and the specific rules relevant to that situation.

With the complex definitions/fewer rules approach I think you end up having to hold more in your head, much of it irrelevant to whatever situation you are trying to analyze.

I also like keeping definitions simpler and sticking the complexity in the rules because we almost never get things right on the first try--or ever--and so there are almost always going to be revisions. I'd rather have those in the rules rather than the definitions, so that the definitions can provide a stable vocabulary across many versions of the law.</comment></comment>


Pantograph - <AUTHOR> https://en.wikipedia.org/wiki/Pantograph <comment><USER2> A cool application of this technology is Matthias Wandel's pantorouter: [https://www.youtube.com/watch?v=8wZ1v4PIsYI](https://www.youtube.com/watch?v=8wZ1v4PIsYI)

<comment><USER3> That is cool, and the sideways orientation is new to me. But using a pantograph with a router isn't terribly new. I remember doing it 30 years ago with an off-the-shelf product.

<comment><USER4> A recent thread about Matchbox cars had a video in comments that shown how they used a similar contraption to scale down a model cut out from (I think) wood.

</comment></comment></comment><comment><USER5> How about [https://en.wikipedia.org/wiki/Planimeter](https://en.wikipedia.org/wiki/Planimeter) with which you can find an area of a _arbitrary_ 2d shape just by tracing it's outline?

(I saw a pantograph in a museum yesterday; it's weird, I swear HN is looking over my shoulder sometimes.)

<comment><USER6> Same here! Deutsches Technikmuseum?

<comment><USER5> Sydney Maritime Museum

</comment></comment></comment><comment><USER7> Of course the use of this device which is most well known among children is the "Extendo Boxing Glove" trope [1].

[1] [http://tvtropes.org/pmwiki/pmwiki.php/Main/ExtendoBoxingGlov...](http://tvtropes.org/pmwiki/pmwiki.php/Main/ExtendoBoxingGlove)</comment>


Buying a domain and don't want to fuck up the SEO - <AUTHOR>

I'm buying a domain and don't want to fuck up the SEO. Who knows their shit and can help me? <comment><USER2> Are you worried that the domain itself won't give any boost to your SEO efforts? Because I wouldn't really worry about that aspect of it - even bad domains rank fairly well these days. I think Google realized that aspect of the system (domain name-based SEO bonuses) was a bit too easy to game.

Instead focus on good link building. This works best for me these days, once the on-page factors are fairly well optimized.

</comment><comment><USER3> buying a domain the reflects your idea/keywords is in most cases buying a random name.

</comment><comment><USER4> A 301 and your task is done</comment>


Ask HN: Hacker games through the browser? - <AUTHOR>

I wondered if there are already some hacker games through the browser to play <comment><USER2> [https://hackerexperience.com](https://hackerexperience.com)

Still in beta, but a very addictive and fun game.</comment>


Anne Wojcicki on How to Build the Future - <AUTHOR> https://blog.ycombinator.com/anne-wojcicki-on-how-to-build-the-future/ <comment><USER2> I don't understand the bias against working on Wall Street.

In fact, Wall Street is much more fun than a generic office park in Silicon Valley.

<comment><USER3> Wall Street is all about money, pursuit of money as a form of power, manipulation of money as an intellectual game abstracted away from its effects on the real world - or so goes the image of "Wall Street" as it exists in terms of having a bias against working there, or in businesses which have a similar mindset.

Personally, it sounds unbearable, since money is just about the most boring topic I can imagine, done to death for centuries already; I'd rather watch paint dry.

<comment><USER4> Money is trust of society in you to allocate resources. It is the signal in the nervous system to make things move more or less.

<comment><USER3> That's one model, sure, but it is a simple model, it has been explored quite thoroughly over the centuries, and it seems to inevitably bring exploitation and tedium. Life is short and I have no desire to spend mine going over that well-trod terrain; I'd rather look for ways of using technology to disintermediate, to detransactionalize, to find better ways of making collective decisions and coordinating group effort which do not involve money or accounting and are therefore resistant to control and exploitation by gatekeeping institutions.

</comment></comment></comment></comment><comment><USER5> I'm surprised by the negative tone of this comment thread. I thought she had a lot of interesting things to say, both about health care as a business and about starting a startup.

<comment><USER6> Huh, that was a total waste of some 5-10-whatever minutes I spent.

The title was "Anne Wojcicki on How to Build the Future"

There was absolutely nothing about "How to Build the Future". Just a random blabber about whatever. 0/10

</comment></comment><comment><USER7> Very uninspiring story.

\- Successful parents from NYC that have their own Wikipedia page.

\- Worked on Wall Street.

\- Educated at Yale.

The list goes on.....

How many people can relate to that much privilege?

<comment><USER4> Sure those cards help. But still impressive to see a trend (cheap Genetic tests) and the dumpster fire that healthcare is and create something like this. I'm not as optimistic as the founder on the impacts of all these datasets, but non the less it will likely help cure or delay onset of a disease or two for large portions of the population. Let's celebrate that.

</comment></comment><comment><USER8> >I'll always love people debating "Is it in your genes or is it your environment?" I'm like no! The whole beauty of it is that it's both.

It would be fun hearing a debate between Anne and Susan about this.

</comment><comment><USER9> I can't believe what she says : can one non-doctor person be in charge of its cancer treatment (she says "be in control" in the 6 first minutes) ? Last time I read about immune system/genetics it was super complex and required a ton of background. I would definitely not want to be in control on my treatment. The best I can do is double check some facts on a few forums, have a general feeling about who takes care of me but one has to admit that's not very useful (at best it reassures me on false ideas).

Also she uses the term "consumer" in place of "patient" several times. That seems wrong to me.

<comment><USER4> Not in charge of treatment maybe in charge of the cost benefit analysis of a decision. Most people just spend a lot resources for not much.

</comment></comment><comment><USER10> Is this a poor and cringe way of admitting Y is onboard the United Nation's Agenda 2030 program? [1]

Will the next interview be about partnering with World Government Summit? [2]

We had people in Europe trying this for a very long time - didn't end well (never does)..

[1]: [https://sustainabledevelopment.un.org/post2015/transformingo...](https://sustainabledevelopment.un.org/post2015/transformingourworld)

[2]: [https://www.worldgovernmentsummit.org/partners](https://www.worldgovernmentsummit.org/partners)

</comment><comment><USER11> There are a whole bunch of private videos in the playlist for "How to Build the Future" series. Why? Is it that the videos are just not ready yet?

<comment><USER12> They're probably scheduled to be published.

</comment></comment><comment><USER13> > _that 's the thing about 'overnight success'—ten years of persistence_

</comment><comment><USER14> Sometimes, for people like me it's hard to keep track of who's who in tech royalty.

Here's a guide of some of their connections. (My first honest reaction: it does seem fairly incestuous. And then I'm not even getting into.. well, let's say more diversity would be a great thing here. All of the people mentioned here belong to one particular subgroup in the US. It just feels odd to me. Diversity hasn't reached these levels yet, I guess.)

Anne Wojcicki: CEO of 23andMe. Former part-time partner of Y Combinator, back then along with Ben Silbermann, co-founder and CEO of Pinterest; and Joe Gebbia, co-founder and chief product officer of Airbnb: [https://www.bizjournals.com/sanjose/blog/techflash/2015/09/y...](https://www.bizjournals.com/sanjose/blog/techflash/2015/09/y-combinator- announces-3-new-part-time-partners.html)

Sergey Brin: co-founder of Google and formerly married to Anne.

Susan Wojcicki: Anne's sister, and CEO of Youtube, owned by Google.

Sam Altman: President of Y Combinator

<comment><USER15> _All of the people mentioned here belong to one particular subgroup in the US...let 's say more diversity would be a great thing here._

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

 _Brin was born in Moscow in the Soviet Union, to Russian Jewish parents,_

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

 _Her mother is American and Jewish, and her father is a Polish-born American_

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

 _He was raised Jewish and is gay._

So, you listed a Russian immigrant, two women and a gay man and you claim it lacks diversity -- because they are all apparently Caucasian and there seems to be a common thread of being Jewish or part Jewish?

(Let's not forget rich. All the rich people are rich and it's terrible. We should have a mix of socioeconomic groups amongst the rich. /s)

Sincere question: What kind of _lack of diversity_ are you talking about? What would meet your definition of _diverse_?

<comment><USER16> Maybe a couple South Asian non-Jewish guys from less advantaged backgrounds?

EDIT: And, if you really want to hit it out of the park, who haven't been either married or siblings to Anne at some point.

<comment><USER15> The interview is between Sam and Anne. I have no clue why the GP listed Anne's sister and ex in their comment and used that as evidence of some kind of lack of diversity. If you listed me, my sister and my ex and some guy who happened to interview me, you could make similar assertions of lack of diversity:

"Look, Doreen is a former military wife whose father was also career military. Her sister had the same father and ended up working for the US government as well, though not as a military member. And the person interviewing Doreen knows her socially because (insert connection). See? See? It's like a club or something!"

As far as I can tell, the list is completely cherry picked and I have no idea what the point of it was. Which is why I asked, which is looking like a mistake.</comment></comment></comment></comment>


How to Make Python Run as Fast as Julia - <AUTHOR> https://www.ibm.com/developerworks/community/blogs/jfp/entry/Python_Meets_Julia_Micro_Performance <comment><USER2> I don't think this is accurately representing Julia's aims. Of course the Julia team wrote the Python code in a way that makes it run slowly. But it looks like perfectly natural Python code! It's almost a literal translation of the Julia code. Julia's benchmark is even far worse with Octave, which they almost deliberately wrote in the worst way possible for Octave, with lots of loops and recursion.

We have written some documentation for Octave in order to guide people towards writing faster Octave code:

[https://www.gnu.org/software/octave/doc/interpreter/Vectoriz...](https://www.gnu.org/software/octave/doc/interpreter/Vectorization- and-Faster-Code-Execution.html)

But look at how much we have to explain, and look at all the hoops we have to jump through in Python and Octave in order to write faster code. Matlab used to have similar guides telling people don't write this, write that instead.

What Matlab eventually did was look at what people were writing and making that fast. Julia did the same and made it even faster.

This is a lesson from C and C++ compilers that seems to be taking a long time to trickle to other programming languages: as long as you're writing reasonable code, speeding up your code is your _compiler_ 's job, not yours. Your compiler usually knows better than you how to unroll loops, how to cache results, how to use multiple cores, how to elide unnecessary intermediate results, how to completely remove dead code. You should focus on writing easy to understand, maintainable, high-level code. That's why you're using a programming language and not machine code.

<comment><USER3> > _What Matlab eventually did was look at what people were writing and making > that fast._

Except in practice, to write fast Matlab code you need very deep understanding of Matlab's internals and years of experience. Seemingly trivial patterns end up slowing your code down by multiple orders of magnitude, and there's more "guess and check" involved when trying to write code that can be effectively JIT compiled by Matlab than careful reasoning. Even worse, the JIT and the profiler don't get along, so it's often impossible to get any insight into the reasons for JIT-related performance differences.

In general, Matlab is an extremely unpleasant and frustrating environment compared to almost any other language I've worked with. The only thing Matlab has on Python/Numpy is a nice quantity of publicly available code for various technical functions. Most of this code is hacky academic prototype stuff, but that's much better than nothing if you're trying to follow someone's algorithm written up in a paper.

The Matlab GUI and tooling is a buggy and unpolished Java turd from the 90s which fits in poorly with any modern operating system.

<comment><USER4> _The Matlab GUI and tooling is a buggy and unpolished Java turd from the 90s which fits in poorly with any modern operating system._

And yet every time I try to get Matlab users to use something else (Python or Julia) the one thing they almost immediately complain about is the lack of a GUI IDE as good as the Matlab one.

<comment><USER5> > And yet every time I try to get Matlab users to use something else (Python > or Julia) the one thing they almost immediately complain about is the lack > of a GUI IDE as good as the Matlab one.

Spyder offers a similar environment. It has a variable explorer, script editor, console, etc all in one window (which I think is what matlab users are looking for).

<comment><USER6> It's not just that - it is also the extremely extensive and comprehensive documentation of every function (integrated in the GUI), and the powerful profiler (integrated in the GUI), and the charting (integrated in the GUI)...

</comment></comment></comment></comment></comment><comment><USER7> The point of the Julia benchmarks was to show _compiler_ performance.

You can do something clever in any language. There are plenty of really, really smart people that spend a lot of time writing incomprehensible (to me) Haskell that outperforms C.

The question is, do you _have_ to do something clever to get performant code in the language of your choice?

In Julia -- not often. I've written around 50kloc of Julia; almost all of it is first-pass prototype code that manages to be performant despite itself. The most polished code I've written in Julia is about 100x faster than the MATLAB it replaced.

IMO, the main advantage of Python is its massive library of modules. As a prototyping language, on the other hand, it just seems to me that Julia is more flexible.

<comment><USER8> I agree, but this is only true as long as you stick with numerical applications, which is kind of the point of Julia.

It is currently more of a domain specific language, kind of like Matlab, because it's not really optimized for other things and has no libraries in the other domains.

On the other hand, I implemented a prototype neural network in it, and it went very smoothly. Will have to eventually rewrite it in Python though.

<comment><USER9> Julia is a general purpose language, not a DSL. You can create web services, desktop apps, file tools with Julia. And it has access to a lot of external libraries using CCall.jl and PyCall.jl

</comment></comment></comment><comment><USER10> I have worked with python in two domains- scientific computing and web applications

\- In scientific computing, we can either use better algorithms (yes, that makes a lot of difference) and dropping to C as necessary. The canonical example of the second alternative is Numpy.

In my humble opinion, the expressive power of python is what makes it an excellent language for scientific computing. For these kind of problems you cannot afford to worry about buffer overflows and memory allocations. You need a free mind to think about mathematical algorithms.

My own approach is to use python whenever I can do it and then use cProfile to determine whether to port some parts to C.

\- If you are using python in application server, most of the time is spent waiting for data. Mostly, the job of application server is to collect data and make some kind of response which is not CPU intensive.

What you should optimize for in this case is data access patterns and creation of data objects. On the other hand, if you have any CPU intensive work, write it as a separate service outside of your application.

</comment><comment><USER11> They really lost me at "Caching computations". It should be clear that the benchmark is NOT the quickest way to compute Fibonacci numbers. The reason why it is included at all is that - without caching - computing Fibonacci numbers this way involves an exponential amount of computation, so it is easy to get long running times. Using a cache invalidates the point of doing the benchmark at all!

</comment><comment><USER12> You can easily make Python run nearly as fast as Julia while only using the standard library.

      import subprocess
      with subprocess.Popen(["julia", "tongue-in-cheek.jl"], stdout=subprocess.PIPE) as proc:
              print(proc.stdout.read())

<comment><USER13> Nearly? That's understimating how much it will take for the Python interpreter to wake up!

</comment></comment><comment><USER14> "Making it fast" wad not a goal of that benchmark. The whole point of it is measuring core features of the language - looping, recursion and so on. That's why they have this horrible Fibonacci impelentation: to meadure how language hanfles recursion.

Author misunderstands this. If you say that you're optimizing python by calling C, then something's wrong here.

</comment><comment><USER15> Suprisingly, they didn't try PyPy, which is about two orders of magnitude faster than CPython on simple loops. PyPy needs to become the main production version of Python. CPython should be viewed as obsolete technology, like the original non-compiling Java interpreter in Netscape 1.

<comment><USER16> I did not try Pypy because last time I checked, it wasn't supporting Numpy. It means that Pypy would not been able to run these micro benchmarks as Numpy is used in some of them.

Please let me know if Numpy is supported now in Pypy. I'd be happy to add Pypy in the mix in that case.

<comment><USER17> I'm pretty sure everything you used is already supported: [http://buildbot.pypy.org/numpy- status/latest.html](http://buildbot.pypy.org/numpy-status/latest.html)

<comment><USER18> Does PyPy work with Python 3?

Python 3 has been out for 7 years and I refuse to use anything that doesn't work in Python 3, it's just ridiculous to keep building stuff for Python 2, it's hindering the language and keeping it back in the past.

<comment><USER19> Yes, it does: [https://en.wikipedia.org/wiki/PyPy#Project_status](https://en.wikipedia.org/wiki/PyPy#Project_status).

</comment></comment></comment></comment></comment><comment><USER20> The benchmarks seen at [1] which compare Julia with other languages were written to be idiomatic in those languages. I.e., they weren't supposed to be the fastest you could be in that language (which often would mean call a C library), but rather something which represents the language well. So the right criticism is not just if the benchmarks could be made faster, but also whether the speedup is too tricky or hard or requires calling wrapped C libraries.

[1] [http://julialang.org/benchmarks/](http://julialang.org/benchmarks/)

<comment><USER21> Actually Chris it says on the website the benchmarks were "written to test the performance of specific algorithms, expressed in a reasonable idiom". I took issue with how they had written some of the java, e.g. They wrote their own quicksort which was slower than just using Arrays.sort, the much more idiomatic way in java. I even submitted a PR which went nowhere: [https://github.com/JuliaLang/julia/pull/14229](https://github.com/JuliaLang/julia/pull/14229) I then broke the code improvements into smaller PRs and am still waiting after 2 weeks for the first PR to be merged.

<comment><USER22> Hi Ryan, the point was not to use Java's built-in sort, but to implement a textbook quicksort implementation in all languages to see how the compiler performs. That is why the original PR was not merged.

On the smaller PR, I had requested fixing the mandel benchmark that in Java is doing lesser work than the Julia and Lua benchmarks, which gives it an unfair advantage. That should be easy enough to fix too - but I didn't get a reply.

Let's get it merged though, and continue the discussion on the PR.

</comment></comment></comment><comment><USER23> The difference is that in Julia one stays within the language, doesn't need to use subsets of the language or optimized C libraries where the language plays a glue role.

I would agree with the article if Cython and Numba would support 100% Python or Numpy wasn't used to achieve similar execution speed.

<comment><USER24> Julia also requires subsets of the language. Try writing rolled array expressions (in a loop or otherwise) in Julia and in Numba and see which one is faster.

Also try IO or text processing in Julia. Python is known to be faster right now.

<comment><USER25> Counterpoint - try user-defined types (classes) in Numba.

<comment><USER24> User defined types/classes are currently being worked on in an open PR. Excellent counterpoint for the time being, though.

Aside- Do you know if multiple inheritance/traits will happen at some point? I need this for modeling, even though it can be worked around for general software architecture.

<comment><USER25> Likely. There's some recent discussion at [https://github.com/JuliaLang/julia/issues/6975#issuecomment-...](https://github.com/JuliaLang/julia/issues/6975#issuecomment-160857877) regarding taking inspiration from Clojure's protocols. There are a few different Traits and Interfaces packages floating around showing proof-of- concept implementations. Couldn't give you a timeline on when it'll make it into master, but it should happen.

<comment><USER24> Thanks. The link seemed still to be single inheritance focus (sorry, I don't know the right terminology I come from a OO background.) but I could be wrong. Though I did get the sense that its just a interim step towards multi inheritance.

What about the dataframe and stats infrastructure? its currently in shambles. Any Idea when this can be expected to be fixed?

<comment><USER25> Stats and dataframes now has someone working full time on it. It will get appreciably better soon.

<comment><USER24> Very glad to hear that. Anywhere roadmap/ central place where I can contribute and follow progress?

<comment><USER25> Hopefully there will be a blog post soon with some details and plans.

<comment><USER24> Looking forward. I was about to embark with python on a new long term project, but I might delay that pending the new blog post. If possible do you have a guestimate on what sort of time window we are looking at for this blogpost? Days, weeks, month?

<comment><USER25> Probably not days. I won't be the one to write it so I can't make any especially reliable predictions here. If enough people ask for this, probably some time in January.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> Turns out that if you bend over backwards and use some libraries and do a bunch of awkward stuff you can make most languages fast.

<comment><USER27> I don't know but

      def benchmark_sort_numpy():
          lst = np.random.rand(5000)
          np.sort(lst)

isn't awkward at all and I'd argue that numpy (and pandas etc.) are very natural choices for anyone working on the problems they solve well. That's precisely the beauty of Python. There are very good libraries for almost everything. Usually there's also great communities around those libraries and it's usually not very hard to identify the "state of the art" library for any given problem.

For me the main question is not "will the compiler optimize well in the general case" but rather "will you naturally reach for the right libraries which are optimized well". For me/Python I'd say more often than not the answer is yes. I understand that that's not the point the Julia team is trying to make but it's a decent practical approach (imo)

<comment><USER25> The motivating factor for using Julia in a lot of cases is: what do you do when the problem you're trying to solve hasn't been exactly solved already by someone else's C extension? Can an average person (scientist, grad student, etc) who knows the math behind the problem they're trying to solve, but doesn't want to jump through hoops of awkward extension compilation (where you have to know not only the high level language and the low level language, but also how to use the interface layer API's that sit between them), write a high-performance implementation from scratch without it taking too much time or effort? If libraries do exist, do they work in parallel? And the standout features of the language like multiple dispatch and metaprogramming also allow some new, very natural ways of approaching a lot of problems in technical computing.

<comment><USER28> That motivating factor can be achieved in Python using Numpy and Cython effectively. Check any of Ian Oszvald's High Performance Python talks.

<comment><USER25> Numpy is great for dense multidimensional arrays of (edit: fixed precision) floating point numbers. Most problems I face need to deal with richer, more complicated, less uniform data structures than that. Similarly Cython is way better than writing a C extension by hand, but it feels very tacked-on (why are you writing libraries in a different sub-language than you use them from?), what you can do in nogil mode is pretty limited, and the choice of supported compilers is depressingly limited for when you need C++11, inline assembly, Fortran, linking to libraries that build with autotools, etc all to work cross-platform. If absolutely everything in the Python ecosystem were written using Cython then Python would have less of a performance problem, but there's a productivity, distribution, and difficulty barrier there.

</comment></comment></comment></comment></comment><comment><USER29> i noticed that running arithmetic loops tend to be the popular method of benchmarking these three languages.

I don't know how many folks who use MATLAB care that much about loop performance that they will be inclined to look at Python or Julia just because someone found an amazing improvement there.

The one thing that made me finally go over to Scipy from MATLAB was that I changed focus and no longer have to do analysis involving nonlinear/stochastic optimization. Several years ago (maybe 2009?), Octave was really struggling with speed here, and numpy still felt too new. I vaguely remember needing to wrangle with the mathematics a lot more (like approximating the Jacobians or Hessians) in order to get Octave to work. On the other hand I can only remember a handful of times where I needed to get MATLAB to do loops like these benchmarks (like maybe Runge Kutta or FD ODE solutions). Loops are really quite unnatural/unidiomatic in MATLAB, if you can keep your algorithm as close to linear systems as possible it's quite fast.

Has it changed much since? I know right now most of the important nonlin opt algorithms are available in scipy and if you want more there are external packages, but you still have to tinker a bit for the best solution. There's nothing like mindlessly using fmincon for every single problem in the world. I am only a layperson at nonlinear optimization, so I can't tell you why MATLAB is so much better out of the box.

<comment><USER25> "Vectorizing" (interpreter-out-of-the-way vectorization, which isn't the same and doesn't necessarily give you SIMD vectorization) your code to get Matlab or NumPy to run it efficiently always seems like an unnecessary burden to put on the programmer, especially for algorithms that don't lend themselves to expressing in a vectorized way. Sometimes you just need to write a for loop, and it's great when the language gets out of your way and lets you do so without slowing your code down by an order of magnitude.

If you care about constrained optimization, Julia has leaps-and-bounds more sophisticated tools than anything Matlab or Python have to offer. Check out [http://www.juliaopt.org](http://www.juliaopt.org) and especially JuMP.jl. [http://www.optimization- online.org/DB_FILE/2015/04/4891.pdf](http://www.optimization- online.org/DB_FILE/2015/04/4891.pdf) has some detailed comparisons. Macros and fast generic programming make Julia a very well-suited language for doing automatic differentiation ([https://en.wikipedia.org/wiki/Automatic_differentiation](https://en.wikipedia.org/wiki/Automatic_differentiation)).

</comment></comment><comment><USER30> While it's great to make code run as fast as possible, not every scientific problem is bounded by code execution.

I've recently been writing satellite image processing code, and profiled it thinking the algorithm was the problem. It turned out that even on a SSD nearly 90% of the program time (~30 minutes) was reading from & writing to disk intermediate image files.

More could be kept in RAM, but high-memory cloud machines aren't cheap, and our local development machines only have 16-32GB.

<comment><USER31> You can get some amazing rack mounted machines now, ok not for cheap, but for relatively cheap given the value that they bring. I'm buying an analytics "box" at the moment with 20k gpu cores, 386GB ram and a 45k iops ssd, ok its $40k but shared across 20 engineers the productivity boost more than costs in really fast. It sounds to me that you need to take an investment case to your boss.

<comment><USER30> > It sounds to me that you need to take an investment case to your boss.

Welcome to academia...

<comment><USER31> well, if you want the publications you need the kit.

</comment></comment></comment></comment><comment><USER13> By rewriting Python code into something that does not resemble Python not even remotely, you can make Python code run faster.

<comment><USER32> True. It's almost the equivalent of using Rcpp with R and saying it runs really fast.

<comment><USER33> But at the end of the day, it does run really fast. And that's really all that matters.

Rcpp is really nice too, and definitely is a win for R.

</comment></comment></comment><comment><USER34> Python is really slow but performance can be improved by just switching to a different interpreter.

</comment><comment><USER16> I updated the post with Julia running times on the same machine as the one used for Python.

</comment><comment><USER35> use Pyston

</comment><comment><USER36> > I am not using an alternate implementation of Python here

What does he think Cython and Numba are?

> I am not writing any C code either

No, he's just using libraries written in C and Fortran in a ridiculous attempt to praise Python.

> Writing better Python code to avoid unnecessary computation

You don't improve a language benchmark by changing the algorithm. If you don't understand why, you have a lot more to learn before teaching people how to "make Python fast".</comment>


When Web Photos Reveal More Than You Intend - <AUTHOR> http://www.nytimes.com/2010/08/12/technology/personaltech/12basics.html?src=twr <comment><USER2> Next up: The White Pages: Silent Menace</comment>


America Needs a Centrist Party Now More Than Ever - <AUTHOR> https://medium.com/@wwnorton/america-needs-a-centrist-party-now-more-than-ever-heres-how-to-make-it-happen-c1dbeba7a76d <comment><USER2> The Democrats already _are_ the centrist party. They made that move with Bill Clinton and the third way Democrats in the 90s to win elections again and never looked back. Going even more right wing will not bring civility back to America when one party is hell-bent on tearing apart anything that threatens its grip on power.

What America needs is an _actually_ progressive party not beholden to corporate interests.

This whole South Park-style "all sides are equally terrible" cynicism is a huge factor in how things have been allowed to degrade to this point.

<comment><USER3> I'm upvoting you because this is a discussion that needs to be had, because your position is one I hear too often but is one that does not stand up to scrutiny.

First, we need to more clearly define the term. There are actually quite a few variations of the too easily tossed around and undescriptive term "centrist". Are we talking about the academic political science term centrism, the third way centrism you refer to, the centre-right or centre-left, or as the article really intends, the non-party center?

So first, I would argue that the Democrats are indeed _not_ the centrist party, even in the _third way_ sense, and the both sides aren't the same retort against the criticsm that they are is increasingly disproven and is far too often employed by the recent losers of some election or other.

I understand your sentiment though, so before you get too defensive, I think the primary miscommunication here is in the fundamental misunderstanding of most people of the scale of political idealogy. We must break this horizontal only linear idea of left right and centrist to correctly approach the reality of potential political positions. It is a fully dimensional graph, instead of just the x axis it's exists on both x and y.

You seem to have some intuition of this in your comment about a truly progressive party. So it confuses me that you rail against the left "going even more right" when the article never advocated such a thing in the first place. You are arguing against an position that was never taken. On top of that, accusing only one party of being the one "hell-bent on tearing apart anything that threatens its grip on power" while ignoring the very fact that the issue is that they both are doing this smacks of intellectual dishonesty.

Respectfully, I would say I think it is this very type of kneejerk tribal reaction that reveals a core-root part of the problem the article actually does a fairly good job at addressing. The point is that it doesn't matter how far left or right on the x axis either party goes, when both are shifting further down the y axis towards totalitarianism, theocracy, dictatorship, and general serfdom. The inability for the left, for example, the admit the oligarchical manipulation of the primaries and the false propping up of the candidates they thought they could handle easily later was part of the reason the _stupid masses_ chose (what they thought was) to _rebel_ against the establishment only reinforces this point even more. (and might I add continuing to deny it only gives the supporters of the current administration extra ammunition I wish they didn't have).

Now, on to the article itself. The author has articulated very well something I have been discussing in a much more "big-picture" way for a while now. I, as a problem solver, sat down to approach the issues of the day with a focus of first, properly identifying the problems without letting preconcieved notions taint the task at hand, and second by being pragmatic about the potential solutions to those problems. I got good at this type of 0-knowledge research after I got out of the Marine Corps and did what I call my "Descartes reset".

The main conclusion I came to was essentially the same as the author. After much deliberation, I have determined that attempts to reform the parties from inside are doomed to failure or to too long a political battle timeframe to be useful. Given some refreshing of Montesquieu, I determined the primary focus should be on restoring the checks and balances system of the branches of government, and the most likely approach of success is through the legislative given it is the one branch most able to be influenced by the populace. After rereading George Washington's farewell address and warning of these very things, the conclusion applied to modern pragmatism shows that the majorty must be taken away from both parties. After reaching that point, it simply has become a heated debate in my household recently on whether this could be done via pure independents or if another, third-party should be formed. My determination is that a coalition of both, including the disparate third parties, is the correct approach. Eventually, over time and with enough shifts in numbers, it would even be possible to then get a president elected who is not beholden to the parties. This was part of my 2020/24 presidential strategy (the details of which is another discussion). I hadn't until just now known of the centrist project, but I will be contacting them to discuss these issues further.

A good and relevant reading: [http://factmyth.com/the-left-right-political- spectrum-explai...](http://factmyth.com/the-left-right-political-spectrum- explained/)

<comment><USER4> Until the US switches to a parliamentary system, any third party is just a spoiler. See Jill Stein and the Greens.

The Democratic party _is_ centrist. But it's a huge tent that covers a lot of people and a lot of interests.

I honestly don't know who the Republican party appeals to, apart from being a good vehicle for corporate interests.</comment></comment></comment>