How real are real numbers? (2004) - <AUTHOR> https://arxiv.org/abs/math/0411418 <comment><USER2> I know it's completely unrelated to the article, but I would like to take a moment to plug an absolutely beautiful proof of the uncountability of [0,1], which I first saw in [http://people.math.gatech.edu/~mbaker/pdf/realgame.pdf](http://people.math.gatech.edu/~mbaker/pdf/realgame.pdf) .

Briefly: Alice and Bob play a game. Alice starts at 0, Bob starts at 1, and they alternate taking turns (starting with Alice), each picking a number between Alice and Bob's current numbers. (So start with A:0, B:1, then A:0.5, B:0.75, A:0.6, … is an example of the start of a valid sequence of plays.) We fix a subset S of [0,1] in advance, and Alice will win if at the end of all time the sequence of numbers she has picked converges to a number in S; Bob wins otherwise. (Alice's sequence does converge: it's increasing and bounded above by 1.)

It's obvious that if S = [0,1] then Alice wins no matter what strategy either of them uses: a convergent sequence drawn from [0,1] must converge to something in [0,1].

Also, if S = (s1, s2, …) is countable then Bob has a winning strategy: at move n, pick s_n if possible, and otherwise make any legal move. (Think for a couple of minutes to see why this is true: if Bob couldn't pick s_n at time n, then either Alice has already picked a number bigger, in which case she can't ever get back down near s_n again, or Bob has already picked a number b which is smaller, in which case she is blocked off from reaching s_n because she can't get past b.)

So if [0,1] is countable then Alice must win no matter what either of them does, but Bob has a winning strategy; contradiction.

<comment><USER3> In a similar vein, Cantor's original diagonalization proof of uncountability is one of the most satisfying results in real analysis. From [https://www.cs.virginia.edu/luther/blog/posts/124.html](https://www.cs.virginia.edu/luther/blog/posts/124.html):

"Any real number can be represented as an integer followed by a decimal point and an infinite sequence of digits. Let's ignore the integer part for now and only consider real numbers between 0 and 1. Now we need to show that all pairings of infinite sequences of digits to integers of necessity leaves out some infinite sequences of digits.

Let's say our candidate pairing maps positive integer i to real number r_i. Let's also denote the digit in position i of a real number x as x_i. Thus, if one of our pairings was (17, 0.651249324…) then r_17^4 would be 2. Now, consider the special number z, where z_i is the bottom digit of r_i^i + 1.

The number z above is a real number between 0 and 1 and is not paired with any positive integer. Since we can construct such a z for any pairing, we know that every pairing has at least one number not in it. Thus, the lists aren't the same size, meaning that the list of real numbers must be bigger than the list of integers."

<comment><USER4> The proof on this page has a small gap: it fails to take into account that some numbers don't have unique decimal expansion.

For example, if all digits on the diagonal were 8, then z = 0.(9) = 1, which is not between 0 and 1.

<comment><USER5> Yes. Though that problem is repairable.

</comment></comment></comment></comment><comment><USER6> > The first person to notice this difficulty was Jules Richard in 1905, and > the manner in which he formulated the problem is now called Richard's > paradox. Here is how it goes.

> Since all possible texts in French (Richard was French) can be listed or > enumerated, a first text, a second one, etc., 2 you can diagonalize over all > the reals that can be defined or named in French and produce a real number > that cannot be defined and is therefore unnameable. However, we've just > indicated how to define it or name it! In other words, Richard's paradoxical > real differs from every real that is definable in French, but nevertheless > can itself be defined in French by specifying in detail how to apply > Cantor's diagonal method to the list of all possible mathematical > definitions for individual real numbers in French!

I followed this up to "and produce a real number that cannot be defined". Would this be from some computation on some/all of the diagonalized reals? I can't see how to guarantee that this generated number wasn't already in the set.

<comment><USER7> > I can't see how to guarantee that this generated number wasn't already in > the set.

The trick here is the diagonal argument [1].

The set (S) contains all real numbers that can be described by a valid French sentence (enumerating French sentences in some fixed order). For example we could come up with an enumeration such that the first few elements are:

S_0 = .7139847654

S_1 = .111111111111

S_2 = .93939

S_3 = .313331333133 repeating

...

We can construct a diagonal number r such that the ith digit of r differs from the ith digit of S_i for all S_i in S:

r = 0.8204... (8 = 1 + S_0[0], 2 = 1 + S_1[1], 0 = S_2[2] + 1, etc)

For any element S_i in S; r and S_i differ in at least one digit (because we constructed it that way); which is why r is guaranteed to not be in S.

(But this argument can be translated to French, hence the paradox!)

[1] [https://en.wikipedia.org/wiki/Cantor%27s_diagonal_argument](https://en.wikipedia.org/wiki/Cantor%27s_diagonal_argument)

<comment><USER6> Ah got it. This seems different than the idea of there being 'more' real numbers and is rather a quirk of an unclear specification of set membership. This seems to be covered in 'Richardian Numbers'[0]

[https://en.wikipedia.org/wiki/Richard%27s_paradox](https://en.wikipedia.org/wiki/Richard%27s_paradox)

</comment></comment></comment><comment><USER6> > We discuss mathematical and physical arguments against continuity and in > favor of discreteness

I can appreciate the physical arguments which makes me think of this as a question in physics. What might the mathematical ones be? Math is about defining a system and playing it out, what would make continuous numbers off- limits?

<comment><USER8> The article goes into significant detail, but the problem is that the _computable_ real numbers are a tiny slice of all real numbers, and in general even in principle mathematicians can only deal with a countable subset of the reals. So (metamathematically) if almost every single real can't actually be used in mathematics, it's hard to say the concept has much mathematical validity. [Which makes its mathematical _usefulness_ a philosophical pickle.]

> Math is about defining a system and playing it out

A lot of mathematicians would consider this a very limited view of the subject.

<comment><USER9> > A lot of mathematicians would consider this a very limited view of the > subject.

Could you provide an example of such a mathematician?

<comment><USER10> "One of the main themes of the book is the beauty that mathematics possesses, which Hardy compares to painting and poetry.[5] For Hardy, the most beautiful mathematics was that which had no practical applications in the outside world (pure mathematics) and, in particular, his own special field of number theory." \-- [https://en.m.wikipedia.org/wiki/A_Mathematician's_Apology](https://en.m.wikipedia.org/wiki/A_Mathematician's_Apology)

G. H. Hardy, A mathematician's apology. I think that would be a good example here, since the focus is on finding beauty and fulfilment, instead of simply visiting every niche.

</comment></comment></comment></comment><comment><USER11> If it is not possible to compute most reals, then is there a number system, with only computable numbers that extends the rational numbers to include computable reals such as Pi, e, sqrt(2)?

<comment><USER12> Yes, computable numbers (0) 0:[https://en.m.wikipedia.org/wiki/Computable_number](https://en.m.wikipedia.org/wiki/Computable_number)

</comment></comment><comment> dmch-1 Real numbers are a convenient abstraction which help us think about certain things. They don't have to be any more real than that. (Have not read the article though, sorry if this comment is irrelevant).

<comment><USER13> But an abstraction is always an extension of reality.

<comment><USER14> The concept of "smooth" is fairly rooted in reality, right? This is one of the concepts that a continuous set of numbers like the Real Numbers can accommodate: [https://en.wikipedia.org/wiki/Smoothness](https://en.wikipedia.org/wiki/Smoothness)

If it turns out that reality is actually jagged at the quantum scale that doesn't mean that our conception of "smooth" is void.

<comment><USER13> Exactly so. When reality becomes too complex, we abstract some things away to get a simpler model. (This we "forget" about the finite and get infinity; ignore the jaggedness and get smoothness).

</comment></comment></comment></comment><comment><USER15> I read this intriguing thing once to the effect that: if space and time were discrete, say, at the Planck scale, that the infinities that bedevil modern physics would, magically, disappear. No more renormalization - no more many things.

<comment><USER14> We would still be able to think about a half a Planck length.

</comment></comment><comment><USER16> So the answer is unexpected: real enough.

</comment><comment><USER17> Sounds real enough for me.

</comment><comment><USER14> This is pretty far into crank territory.

One of the issues with this paper is simply a misunderstanding of terms. The word "real" as in "real numbers" is jargon. It's not about whether or not you believe in them or even whether they are representative of reality. You can think of them entirely in logical terms (whether logically constructed with Cauchy sequences or Dedekind cuts) and then the disagreement is about the axioms of set theory.

Numbers are just a theoretical framework, that is how they are used and "believed in". If you want to say that real numbers are absurd or not fitting of our world then simply propose an alternative theory that we could elect to use instead of real numbers. Nobody is adamant about the idea of all real numbers being "real" in every sense of the word.

Furthermore, a theory of numbers with a restriction on the size of the set is arbitrary. Cantor's diagonalization argument and construction methods still exist. To exclude uncountably infinite sizes of sets would make as much logical sense as restricting the total number of numbers to something finite, e.g. "there can be no numbers greater than a hundred billion, try not to think of a hundred billion and one because that is bullocks!".

An interesting example of irksome numbers being remedied with better theories is the concept of infinitesimals in calculus/analysis. The theory of Nonstandard Analysis provides a rigorous definition of infinitesimals in terms of more familiar numbers. [https://en.wikipedia.org/wiki/Nonstandard_analysis](https://en.wikipedia.org/wiki/Nonstandard_analysis)

<comment><USER18> Gregory Chaitin

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

<comment><USER14> Yes, this is the author of the paper. He is neither a number theorist nor a physicist. So any claims he makes about upending physics and number theory should be taken with a grain of salt.</comment></comment></comment>


Rackspace S-1 - <AUTHOR> https://www.sec.gov/Archives/edgar/data/1810019/000119312520190902/d915709ds1.htm <comment><USER3> For those who don't remember, here's what happened last time: [https://www.thestreet.com/technology/rackspace-ipo-starts- ou...](https://www.thestreet.com/technology/rackspace-ipo-starts-out- reeling-10432556)

Wish them luck this time!

<comment><USER4> I wouldn't buy into this IPO. The problem is rackspace doesn't really have much of a moat and the space is highly competitive.

<comment><USER5> The space has a moat though - it takes a huge investment and long time to become competitive in this low margin space. Rackspace has shown themselves to be a market leader within this moat.

<comment><USER6> Their capex looks to be ~$2-300MM. That's approximately 1% of what AWS spends.

[https://www.platformonomics.com/2020/02/follow-the-capex- clo...](https://www.platformonomics.com/2020/02/follow-the-capex-cloud-table- stakes-2019-edition/)

</comment></comment></comment></comment><comment><USER7> "Rackspace became public in 2008, and in 2016 was purchased and taken private by Apollo Global Management LLC." [https://en.wikipedia.org/wiki/Rackspace](https://en.wikipedia.org/wiki/Rackspace)

Read up on some IT chat boards about people's opinions of how Apollo has managed Rackspace before you buy into this IPO IMO.

<comment><USER8> The same as any LBO most likely. They gutted the company and now want to cash out on the public markets. Private Equity is disgusting.

<comment><USER9> Why is private equity bad?

<comment><USER10> If you believe in private ownership of property, then it should extend from an apple to a $100 billion corporation. Someone owns it, they own it. I've yet to hear a cogent argument that logically explains the line below which private property is fine, and above which owning something is immoral, other than some fuzzy "it feels like $50mil is too much". I want to know logically the exact metric where some amount of wealth crosses into evil world.

So if you agree private ownership is not the devil, then nothing stops a private group from acquiring a majority stake in a company and running it the way they see fit. And if what they want to do is to fire everyone skilled and run it into the ground - so what? If the need is still there, a new company will arise. If they were too bloated, then cost cutting is good. And if they just middle along doing poorly, then they can't spin it back out to the public markets and earn a huge pay day (unless the public markets are irrationally exuberant from free money printed by the government, but this is a 2020 phenomena).

<comment><USER8> This is an over simplification and no one here is saying private ownership is bad. It would be mind boggling if someone were allowed to buy your home with a mortgage in your name, kick you out of it and then sell the home for pure profit. Yet that is exactly what LBO's do. They buy companies using debt which they then transfer to that company, sell off anything of value, fire most of the workers, show some level of profit and sell the company to someone else.

<comment><USER10> But the house is privately owned by me. The company is public, anyone can buy, and if they have enough of it (or enough of the elected board representation), then they can do that.

If I was a shareholder in a company that underperformed the market, and a professional turnaround firm decided to take drastic action to improve the value of my ownership stake, I would approve.

My preference is to work for and invest in companies that try to make me the most money possible. I donate to non-profits that try hardest to improve the world. For-profit companies and non-profit organizations have different goals.

</comment></comment></comment></comment></comment></comment><comment><USER11> A rising tide lifts all boats. Maybe a decent time for a capex heavy business with mediocre metrics to go public?

<comment><USER12> _A rising tide lifts all boats._

What about boats that are anchored or moored?

<comment><USER12> Not that anyone will see this but regarding this comment's siblings:

It seems like you don't understand the metaphor unless you each mean to imply that The Economy goes through frequent regular cycles of significant expansion and contraction where every expansion reaches a consistent, predictable high point before contraction brings it back down to a consistent predictable low point.

But it can still accurately represent the people who are "left behind" in the economy. You cannot just say "Ah yes, the tide is going up. Therefor everyone is safe and dry in their boats as they rise with the tide" as an excuse to ignore people who need help.

</comment></comment></comment><comment><USER13> Wow. I thought they learned their lesson with the _last_ mid-recession IPO.

I was on that ride, and it fucking hurt.

<comment><USER14> Judging by the stock market performance, this is a perfect time to IPO.

It may end in tears like a 2000 IPO, but tech is so hot right now. For example, look at recent public offerings like DKNG and NKLA

<comment><USER4> It isn't like 2000 though. These tech IPOs are real companies, with real products, real customers and real businesses. The 2000s had companies going public that were just based on an IDEA. Literally...."we're raising funds in this IPO to build xyz website/service."

Most tech IPOs these days have at the very least already been vetted through venture capital funding rounds. The weak simply don't get funded at an early stage.

</comment></comment></comment><comment><USER15> The fact that in 2020 you have to fill in a contact form to get a quote for a server price is ridiculous...I just browsed their site and could not find a single mention of pricing without providing them with my full contact information

<comment><USER16> They're very enterprise focused, so you might not be the target customer? (I don't want to presume, however)

For a lot of powerful but heavyweight enterprise products, giving people access to pricing isn't worth it because it can cause some buyers to opt out of the process earlier than they would if their hands were held. Especially if the integration process will require some element of digital/IT transformation and hence internal political wrangling. There's tech for smooth onboarding in 2020, but not necessarily tech for helping you to do stakeholder alignment in a sales context.

The engineer in me finds this painful and wants to scream inside, but empirically this does work..

<comment><USER17> Why do enterprises even initiate conversations with third parties if they won't immediately give you a price? Just move on to someone who will. If your options are $10,000 or <price unknown> its obvious option #2 will be more.

If businesses categorically rejected working with companies that can't provide up-front estimates, they wouldn't be a thing.

<comment><USER18> For enterprise deals, the _price_ is often a small part of the overall cost of ownership.

The defining element of enterprise deals is complication: large companies don't tend to buy the product as advertised. They need the vendor to make lots of adjustments and carry out extra processes to deploy (or else those costs fall back on the buyer). So, until the buyer's requirements have been explored, there's not a useful estimate to be had.

<comment><USER19> This.

There are no easy purchases in an enterprise.

Working with any third party requires an NDA, contract review, and negotiations by our Purchasing department.

</comment></comment></comment></comment></comment><comment><USER20> So Rackspace(RAX) went public in August 2008 and then when they could no longer compete against AWS and Google in the cloud provider space they spent years seeking someone to acquire them, which Apollo Global Management did in 2016 for $32.00 a share and took them private[1]. They then laid off a substantial portion of their workforce and decided to become an IT shop to provide support for customers who are using the cloud providers that put them out of business. And now their re-listing for $12.00 a share?

Why would anybody buy this? What is the play here? Is Apollo somehow making out here?

[1] [https://www.rackspace.com/newsroom/affiliates-of-funds- affil...](https://www.rackspace.com/newsroom/affiliates-of-funds-affiliated- with-apollo-global-management-private-company)

<comment><USER21> It may not be the same number of shares.

</comment></comment><comment><USER22> I'm conflicted. On one hand Rackspace used to have some great offerings and tech chops and then (wisely?) became a cloud intermediary.

Is AWS professional services for a company that has went through the transition Rackspace has worth a $100m IPO? (Assuming I read the S-1 correctly).

<comment><USER23> I am only familiar with Rackspace of about 10 years ago. Beyond the marketing speak, what is their competitive advantage? Are they doing AWS prof serv?

<comment><USER24> They do AWS professional services since last year (I think) but we mainly use them for support as AWS doesn't cater for companies our size with their pricing.

<comment><USER25> GCP, AWS and Azure now as well. They still have a bunch of on-metal, physical, and cloud customers as well.

<comment><USER22> Ah I didn't realize that.

</comment></comment></comment></comment></comment><comment><USER26> I really hope that part of their use of funds is to hire a design team.

<comment><USER27> Just goes to show how a functional product even with bad design can do well.

What are other software products / companies with horrible design but get the job done?

<comment><USER28> I would say Craigslist because it's not pretty but I can't say that an ugly UI is the same as a horrible design. The design has worked well so far for many types of people.

<comment><USER29> would put Scalyr in that category

</comment></comment></comment></comment><comment><USER30> They purchased Onico and Onico is one of the best vendors for Devops support.

When a company is being spun out by a private equity, I am always hesitant to invest in it. I prefer when a company goes to market with their original investment thesis because you never know if the private equity is harming one of their other companies to grow another one.

I.e. Rackspace and Onico are owned by the same subsidiary, suppose Rackspace charges Onico an extra 20% compared to what they are already paying because Onico doesn't plan to go public, however, the extra 20% Rackspace gets looks better and causes a better return on their investment. At the same time, the subsidiary has an incentive to inflate their stock price and not be a bag holder.

</comment><comment><USER31> Notice how Rackspace's 2019 revenue hit a hard ceiling in 2019 (pre-COVID).

Also, capital expenditures in 2017, 2018 and 2019 were 9%, 14%, and 9% of yearly revenues, respectively. If they hadn't tamped down on their 2019 "capital intensity", and assuming a more normal capex spend of 11.5% (split the difference between 2018 and 2019 for incremental 3.5% capex spend or ~$70M+), their EOY2019 cash & cash equivalents would have been down to a mere $14M (instead of $84M) -- looks like a cash crunch, mainly due to the 2019 Onico acquisition for $316M.

</comment><comment><USER32> Is it right to say they are basically IT consultants

</comment><comment><USER33> How much of Rackspace is even left? Is this just a cash grab by the company that took them private?

> As of March 31, 2020, we had $3,987.5 million face value of outstanding > indebtedness

It's always a mystery to me how some firm can buy a company, and then push the debt from acquiring the company onto the company itself.

This is just vampire capitalism. Unfortunately, it makes no difference if individual investors here choose to invest, "index funds" will use everyone's retirement savings to funnel more cash to these parasites.

<comment><USER34> > Is this just a cash grab by the company that took them private?

Absolutely. My uninformed ex-Rackspace-employee take is that Apollo Global Management just wants to raise more money to further run the company into the ground.

<comment><USER33> Rackspace's last quarterly statement (I believe) showed a Net Profit of $35.8M [1].

Compare this to their most recently quarterly numbers in the S-1:

> For the three months ended March 31, 2020, we had revenue of $652.7 million, > a net loss of $48.2 million

Yeah, they grew revenue by around 20% over 5 years, but there was an $84M swing into the red!

You'd have to have a hole in your head to trust these crooks. Unfortunately, most of us have no choice, the 401k market is rigged.

1: [https://www.investing.com/equities/rackspace-hosting- income-...](https://www.investing.com/equities/rackspace-hosting-income- statement)

<comment><USER20> >"Unfortunately, most of us have no choice, the 401k market is rigged."

Can you elaborate on this? How is it rigged exactly?

<comment><USER33> Sure. Once a stock is listed on a major exchange, those stocks make their way into various index funds. 401ks most typically offer a very limited selection of funds there's no way for an individual to choose to own funds that exclude a particular company.

It's rigged in the sense that the banks know the stock is worthless, but if you grease the right palms, you get to IPO, and the money you receive from the IPO is not investors that believe in your company, it's the fund managers that are managing other people's money, and they don't care about fundamentals or sound investing. It's the political class siphoning money from the working class. Do you think Warren Buffet is going to participate in this IPO?

</comment></comment></comment></comment></comment><comment><USER35> They have $2.4B Revenue in 2019! Seems to be doing great in the HyperScaler Era. They have managed to increase their revenue despite market competition.

So they are still growing. And much bigger than I thought. I was expecting Rackspace to be running downhill.

</comment><comment><USER36> I felt sad about their acquisitions and strategies. They had SliceHost - a big player in very beginning of Cloud, they had a solid background in Hosting Provider, but they just give them all and knees AWS.

<comment><USER37> I know the founder of Slicehost quite well, Jason Seats. Smart guy. Here's an old interview from these days, by none other than DHH [0].

I was at AWS in these years - I thought that Rackspace had a good chance of becoming a serious competitor in the cloud space, and Slicehost was a smart acquisition.

AWS then executed flawlessly. Rackspace, well, picked one of the worst possible strategies to chase the cloud opportunity.

Furthermore, Openstack was a giant mistake, IMHO. Execs thought that people wanted multi-cloud and private clouds. I met with literally 1,000 customers per year, and almost none of them wanted these things.

[0]: [https://signalvnoise.com/posts/2974-the-slicehost- story#:~:t...](https://signalvnoise.com/posts/2974-the-slicehost- story#:~:text=David%20Heinemeier%20Hansson%20chats%20with,.com%2Ffounderstories%2Fslicehost).

Edit: I found the second part of the interview, where Jason and Matt discuss the acquisition by Rackspace [1].

[1]: [https://vimeo.com/groups/99803/videos/26333537](https://vimeo.com/groups/99803/videos/26333537)

</comment></comment><comment><USER38> Perceptually, I think Rackspace was the first modern cloud provider that I'd ever heard of. Is that accurate? Were they early on the trend? Or did their name just advertise the concept really well?

</comment><comment><USER39> EDIT: Nevermind, they seem to habe stopped caring about hosting and now provide support for AWS. Sounds a lot like consulting.

——————-

At some point, innovation of the software slack on top of bare metal will slow down and the tooling will become commoditized.

IF, and that's a big if, the best-in-class bare metal remains available for indiscriminate purchase, competitors may start to commoditize the cloud - <USER2> will need to start to fight a price war.

But those are two big question marks and even then, if any company can fight a price war then it's Amazon.

So I wouldn't bet on rackspace here.

For the time being, they may be able to serve those enterprises competitively that just want some bare metal - but once AWS and GCP roll our proprietary ARM chips, they may not be able to keep up any more.

<comment><USER40> When did the change to consulting happen?

<comment><USER39> Last year, according to the other comments in this thread.

</comment></comment></comment><comment><USER41> Are they just hoping to grow as AWS grows? Not sure why anyone would choose Rackspace these days.

<comment><USER42> Rackspace isn't exclusively tied to AWS. They have other operations too.

</comment></comment><comment><USER43> I will never do business with Rackspace again after they hell they put me through.

When your entire security posture falls apart when one minimum wage call center employee gets bamboozled you should not be in business. Fuck that company.</comment>


If your government shuts down the internet... - <AUTHOR> http://lachild.tumblr.com/post/3000521825

<comment><AUTHOR> I love it how the Guy Fawkes mask has become a universal symbol of resistance

<comment><USER2> Universal? It's popular on the internet, but I haven't seen it used much by other groups. Has it been?

<comment><USER3> Not that this is "universal", but I believe anon (from 4chan, etc) has been using them for the occasional public protest/event/whatever.</comment></comment></comment>


A guide to Python's magic methods. - <AUTHOR> https://github.com/RafeKettler/magicmethods

<comment><USER2> The ongoing obsession with direct to github store links is irritating. Why not post a link to a designed start of reading point like: <http://www.rafekettler.com/magicmethods.html> ? Or to [https://github.com/RafeKettler/magicmethods/raw/master/magic...](https://github.com/RafeKettler/magicmethods/raw/master/magicmethods.pdf) so we can share the pleasure of the Scribd cabal screwing up the link and "annoyance wall" the content.

</comment><comment><USER3> The official language reference[1] covers this, provides the most recent information and is undoubtedly correct.

Why would I use this instead? In fact looking at the description of `__del__` there is some very crucial information missing regarding access to globals and circular references.

[1]: <http://docs.python.org/3/reference/datamodel.html>

<comment><USER4> From the introduction :

        They're also not as well documented as they need to be.
        All of the magic methods for Python appear in the same
        section in the Python docs, but they're scattered about
        and only loosely organized.
        There's hardly an example to be found in that section
        (and that may very well be by design, since they're all
        detailed in the language reference, along with boring
        syntax descriptions, etc.).

</comment></comment><comment><AUTHOR> The actual website is down at the moment but heres a link to the full PDF.

[https://github.com/RafeKettler/magicmethods/blob/master/magi...](https://github.com/RafeKettler/magicmethods/blob/master/magicmethods.pdf?raw=true)

</comment><comment><USER5> Thanks for the read.

</comment><comment><USER6> Thanks a lot! This is the one reason that keeps me from using python.

</comment><comment><USER7> Here's a link that reveals a little bit more [1]. Cool stuff. Thanks for making this!

[1] [https://raw.github.com/RafeKettler/magicmethods/master/magic...](https://raw.github.com/RafeKettler/magicmethods/master/magicmethods.html)</comment>


Theranos Voids Two Years of Edison Blood-Test Results - <AUTHOR> http://www.wsj.com/articles/theranos-voids-two-years-of-edison-blood-test-results-1463616976 <comment><USER2> "One family practitioner in a suburb of Phoenix said a Theranos representative dropped off a stack of 20 corrected test reports a few weeks ago. Many of the voided results were for calcium, estrogen and testosterone tests.

The doctor said one corrected report is for a patient she sent to the emergency room after receiving abnormally elevated test results from Theranos in late 2014."

Tort attorneys should be licking their lips.

It would be shocking if Theranos survives this.

Beyond that Walgreens - the largest retail pharmacy chain in the USA and Theranos' wellness center partner - should also be in the crosshairs.

Feels like they should have had some better safeguards for consumers before committing to the 40-store pilot in AZ.

<comment><USER3> An aside: doctors shouldn't be discussing people's test results, even if they anonymize and/or aggregate the patient data, without previously receiving consent, and even then I don't think it's really wise to provide quotes like this to reporters.

<comment><USER4> There are well-considered standards for patient anonymity. Saying "I had a patient with X disease" is not compromising the identity of the patient. Without that, doctors couldn't teach medicine to med students or explain their cases at conferences.

<comment><USER5> Fair enough, but I'm not sure that will be good enough for much longer. With bigger and better datasets it should be increasingly easy to de-anonymize someone based on just knowing something like that.

<comment><USER6> Something like what, that a specific doctor has treated someone with a specific condition? I'm not sure that's enough metadata.

<comment><USER7> I can confirm that's not and could never be a HIPAA violation. The information that Doctor X once ordered a blood test for John or Jane Doe with Result Z is totally fine. There's no non-HIPAA violating metadata that could make that information useful.

</comment></comment></comment></comment></comment></comment><comment><USER8> I'm based in SV, and I see a lot of big name entrepreneurs rallying behind her and I don't understand it. You cannot be cavalier/lean about human life. These people deserve to be jailed.

<comment><USER9> SV is undergoing it's biggest transformation ever. The establishment is being formed, instead of tinkering in garages in sweatpants. This new corporate formulaic way of "staring up" protects their own elk, since the value created is often no longer in the product, but is rather based on connections, like in the East Coast old boys clubs.

<comment><USER10> Yup. And it's sickening to see people tout this model as some kind of "meritocracy". No, it's a system of privilege and connection, just like many others.

Gotta live in the bay area to start, that alone is a challenge unless you're already wealthy. Gotta know who to talk to and _how_ to talk to get money. Gotta have a degree. Gotta have friends who can be your co-founders/early employees or connections. Gotta know how to look right to the angel investors and the VCs.

The idea that the average invested company represents anything more than a group of people with an in and a talent for schmoozing is easily refuted just by observation. Sure some of them have solid fundamentals, but most are bullshit.

There was a tweet, since deleted, a while ago by Ben Dreyfuss (son of Richard Dreyfuss) who is now a writer at Mother Jones. He was attempting to explain how everyone assumes his parents carried him and related the story of being given 140k by his mom to try to make it in Hollywood, after three years he ran out of money and gave up. That story, along with Trump's "small loan of a million dollars" is really not so different from the typical SV startup story. There are countless small companies who are given "small loans of a few million dollars" based on who they know and generally seeming like they aren't complete morons. And yet few in that system would draw a parallel to the sort of privilege and wealth of Trump's ilk, though substantially there are many similarities.

The folks in SV tend to dress down and avoid excess signs of luxury until they've "made it" proper, but it's not as far removed from rich parents giving their spoiled children cushy jobs in the family business as most people would hope.

<comment><USER11> > Gotta have a degree.

A lot of what you said is based on truth, this isn't.

</comment></comment></comment></comment><comment><USER12> >That means some patients received erroneous results that might have thrown off health decisions made with their doctors.

Put them in jail.

<comment><USER13> I don't think all the money they've raised so far is sufficient to settle all the claims that will be made against them. The company will not ever be worth enough to settle those claims. In a just world, their assets would already be frozen.

<comment><USER14> They have very very few assets. The $9 billion valuation is a paper valuation that can vanish in one night.

<comment><USER15> You can pierce the corporate veil if there is willfull and intentional fraud. Doesn't always happen, but it's possible.

<comment><USER16> And what, compensate people with the stock of the company that was found to be willfully and intentionally defrauding them?

<comment><USER17> No, compensate people with the money of the stockholders. That's what piercing the veil means: culpable stockholders assets are no longer protected from liability.

<comment><USER18> It requires that the particular stockholders be actually culpable and involved in the fraud - fraud done by non-owning management would not allow to capture funds of non-managing investors.

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> This is what happens when you try a Minimum Viable Product in healthcare and aren't up-front about slower than expected R&D progress.

<comment><USER20> Couldn't agree more. One has to wonder the limits of the _move fast, break things_ philosophy.

<comment><USER21> Move fast and break people.

</comment></comment></comment><comment><USER22> Interesting they couldn't even user other peoples machines

"A person familiar with the matter said the Arizona lab performed the blood- coagulation tests with a traditional machine from Siemens AG that was programmed to the __wrong settings by Theranos __.

The Arizona lab also failed several tests to gauge the purity of the water it uses in its Siemens machines, which could affect the accuracy of some blood tests run on the devices, the person said."

<comment><USER23> I think this is consistent with an institutional interest in going through the motions of diagnostic tests, but not caring about accuracy.

</comment></comment><comment><USER24> This is likely the beginning of the end. With such a massive loss of trust, especially in the healthcare space, it is hard to see how the company could ever recover in the eyes of customers, investors or employees.

<comment><USER25> Holmes will have to go and be replaced by a perceived 'grown-up' CEO. That's the only way (and even that is a longshot) the company ever recovers.

<comment><USER26> Will Holmes have to face any consequences for her company providing false results and making false promises or can she just walk away with a bag of money?

<comment><USER27> She has certainly already been able to divert to herself a good chunk of her investors' money. And it's unlikely that she will ever have to face personal consequences for her decisions.

Maybe she will run for president in a few years. She certainly has what it takes for a successful political career.

<comment><USER28> how would she have done this? most ceos just get a salary and equity; if the equity goes to zero, which is increasingly looking likely, then all she got was a salary for all the years that she ran the company. i dont think that qualifies as diverting a "good chunk of her investors' money."

<comment><USER29> It's called "taking money off the table", and it's actually pretty common in later funding rounds. The founders sell some of their personal stock to investors for an often significant amount of money (multiple millions of dollars).

Investors agree to this for a few reasons. Firstly, it's a way for them to get a larger stake in the company. Secondly, it reduces the risk of the founders taking an early exit because they are strapped for cash. Finally, in a competitive deal (against other investors) it can be a way to sweeten the deal and get selected over the competition.

Investors don't want founders to be worrying about money - they want them to be focusing on their company.

</comment></comment></comment></comment></comment></comment><comment><USER30> Can someone put this into perspective...how often are there major recalls or calibration issues at other, more established labs and testing companies?

Certainly, not trying to defend Theranos, just trying to understand how bad this really is. Because it sounds pretty horrible...

<comment><USER31> This is an Epic Fuck Up that will be discussed for decades in legal, technology, VC, and startup circles. It makes it effectively impossible for a non-established player to innovate in the space for at least 5 years. Additional regulations will hinder innovation for far longer. People will go to jail.

<comment><USER32> I am not familiar with the actual laws involved in this kind of case. If it were proven that a Theranos tests harmed a patient and that Theranos willingly obscured the accuracy data to regulars could Holmes be held criminally liable?

<comment><USER31> That would likely fall under a civil statute. But criminal fraud seems likely. I'd be willing to take a bet on even more trivial matters like falsification of evidence once things started to go south ("it's the coverup, not the crime"). Investigated properly this will probably blow up the FDA too.

</comment></comment></comment></comment><comment><USER33> Using "[https://www.google.com/"](https://www.google.com/") as Referer (with the 'Referer Control' extension for example) gets around the paywall

<comment><USER34> Any idea how to do this in mobile ?

<comment><USER33> Just search for the title / url in google and click on it to get use google as referer

</comment></comment></comment><comment><USER35> Again, one of the most important interviews with Holmes: [https://www.youtube.com/watch?v=MBs- oj7U-bo](https://www.youtube.com/watch?v=MBs-oj7U-bo)

Edison is discussed. "We don't use Edison for anything and haven't for a few years now."

</comment><comment><USER36> Can someone please summarize what this actually means? The article is behind paywall and the title is cryptic.

What does "void" mean ? Less accurate, completely wrong, completely random ? What does Two years refer to ?

<comment><USER37> You can use the 'web' link

</comment></comment><comment><USER38> The class-action lawyers must be salivating over "tens of thousands of corrected blood-test reports"

<comment><USER39> Yes and no. While there is likely a claim if the company is now unviable there may not be any money to claim. Blood from a stone and all that.

<comment><USER40> I imagine there is enough negligence here to target the officers and directors directly in a lawsuit.

</comment></comment></comment><comment><USER41> This is not what disruption looks like. This is what happens when you have someone with no domain expertise, but a great idea. We're seeing the same thing happening with Zenefits. Founders with no domain experience need to look at how they're going to enter a market full of incumbents. These incumbent businesses have survived for years because they know how to play the game. They have people in their employ that know how to lobby the right regulatory bodies. Theranos had none of this. So when all of this started coming down, they should have hired the most well-known and respected person in their field to bridge the gap between the past and future. Without that, they are outsiders playing in a game that has been around forever. They were set up for failure before they even began and no one was smart enough to ask "How will they disrupt an industry that has been around for decades?" Just saying, "We're going to make medical tests cheaper and more accessible" was clearly not the right answer.

<comment><USER42> Disagree. Elon Musk had no domain experience in payments, cars and rockets. Fresh eyes can be invaluable. And it's not that hard to avoid "pulling a Theranos". Theranos should not be an excuse to discount lack of domain experience.

<comment><USER43> The key difference though, is Elon Musk brought in people that did have domain expertise to fill in the gaps. The overall vision is Elon Musk's, but he was smart enough to bring in industry veterans to help execute on that vision.

Theranos, on the other hand, appeared to not have done that. Or at least not on a scale necessary to succeed, especially in something like healthcare.

<comment><USER44> Is there any evidence that Theranos didn't bring in the best people in the industry? They certainly had the money (and stature) to do so.

<comment><USER43> Yes. Up until a few weeks ago, Theranos's board consisted of mostly ex- Pentagon and ex-Senators and such types [0]. Theranos did not have a medical advisory board until about a month ago, apparently.

Contrast with Elon Musk and SpaceX. One of Musk's first hires/co-founders for SpaceX was Tom Mueller, who at the time was already widely regarded as one of the best rocket engine designers in the world [1].

[0] [https://en.wikipedia.org/wiki/Theranos#Governance](https://en.wikipedia.org/wiki/Theranos#Governance)

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

</comment></comment></comment></comment></comment><comment><USER45> if you came here without reading the article, all you need to know is that Theranos is fucked.

</comment><comment><USER46> I was extremely optimistic for Theranos and having to see them go through this is sad on so many levels. Not calibrating standard testing machinery correctly just does not cut it.

One of their notable contributions is to set precedence in Arizona where consumers can now order their own tests without doctor's orders.

I believe consumer awareness of state-of-art diagnostic resting and making testing readily accessible can have a fundamental impact on people's wellness.

ps: I am not advocating more testing.

</comment><comment><USER47> The reporting by Carreyrou is particularly insistent to put Holmes front- center in each of this series of articles. She's in the article subtitle and first image again. I wonder if other execs are also responsible for this disaster.

</comment><comment><USER48> So when is the Edison estate going to issue a cease order against Theranos for using their name and damaging the reputation?

</comment><comment><USER49> "Theranos has declined to quantify to Walgreens the scale of its test corrections"

Doesn't seem like they're learning anything.

</comment><comment><USER50> I still believe in the idea of Theranos and while I think it is great the Ev Williams was able to secure funding 2 more times to keep rebuilding different versions of blogger[0], I want to live in a world where we also take huge gambles on hard problems. If we adhere to VC math (we should as this hypothetical is for VC investing) one of these payouts will be well worth it, e.g. Tesla/SpaceX. So yeah, I'd write down uBeam & Theranos, but you can fuck off if you want the world to stop investing in big ideas.

[0]twitter.com, medium.com

edit: Also, we can assume it isn't physically impossible to use smaller amounts of blood to perform tests. So yeah, it was super obvious from the beginning some immigrant who happened to be in the right place at the right time and make some money at the height of the DOTCOM era working in software couldn't build a sustainable rocket program that rivals that of 1st world nations. So it wasn't obvious, and the next big innovation won't be obvious, and if you think it is you are either building it or just straight up wrong.

<comment><USER51> > I still believe in the idea of Theranos

Several studies suggest that small volumes of blood have too much variance to yield useful test results.

<comment><USER52> It's not 'we have no idea how to do this' impossible, it's physically and technically impossible?

<comment><USER53> Judging from what I read in comments on Derek Lowe's blog, the problem is not so much being able to do blood tests on µL of blood (which I suspect we might have the technology to do; whether it's cost-effective is a different question) but rather that the way you get only a little bit of blood screws up the results--you're extracting more from capillaries than veins, and you get more contamination from skin and other tissue cells.</comment></comment></comment></comment>


Use long flags when scripting (2013) - <AUTHOR> https://changelog.com/posts/use-long-flags-when-scripting <comment><USER2> Great suggestion, but I'd go for a middle ground: use long flags for the long tail, but short flags are fine for stuff that's very commonly used.

I think I'll continue to write these:

        grep -i
        rm -rf
        ln -s
        gzip -v
        sed -e

instead of:

        grep --ignore-case
        rm --recursive --force
        ln --symbolic
        gzip --verbose
        sed --expression

If you're working on shell scripts, you probably know certain short flags well enough that long flags just add clutter and don't improve readability.

<comment><USER3> How often do you use gzip verbose? I don't think I've ever used it. What's it good for?

<comment><USER4> Personally a fan of '\--verbose' to be honest. It's clear. "grep -v" anyone?

<comment><USER5> Particularly in this case, because `-v` sometimes means "print out the version number".

<comment><USER6> That's why they mentioned `grep -v`. Go look it up. It doesn't mean verbose OR version.

Doubt you'd be printing out a version number in a shell script though.

<comment><USER7> You may want to compare a version number of a command to make sure it's bigger than (or equal to) the minimum version required by your script, though.

</comment></comment></comment></comment></comment></comment><comment><USER8> It's not just "easier for a human" but more _stable_ over time as commands evolve, and less likely to do weird things across Unix variants.

Some command-line parsers will auto-complete partial options so you're less likely to see ambiguity errors in future versions if you picked long-form options. (This isn't completely foolproof, e.g. a command could have "\--foo" and later add "\--foobar" but it does help in most cases.)

And unfortunately, some tools with the same name will use the same letter to mean different things across Unix variants. You are asking for trouble if you aren't being clear about what you want.

<comment><USER4> > Some command-line parsers will auto-complete partial options

This sort of behaviour is tortuous, and should be against international laws.

Where _adding_ new, unrelated, options to the interface now changes or breaks the behaviour of existing calling scripts. Plus you never know which abbreviations are in use in the wild.

It makes it virtually impossible to maintain a stable interface without just freezing it long-hand.

I found this in Perl code; I believe it might be the default behaviour in the standard parser? Our developer really did like the philosophy that "the user may want 50 different ways to express the same thing".

</comment></comment><comment><USER9> This is how I write PowerShell scripts. I use full cmdlet names, full argument switch names, and I even specify argument switches to positional arguments. I also do my best to honor common flags like `-WhatIf`, `-Verbose`, and `-ErrorAction`. So I end up with scripts like this:

        if (-not $(Test-Path -Path "$Path" -PathType Container)) {
            Write-Error -Message "Path ($Path) does not exist or is not a directory." -Category InvalidArgument;
            return;
        }

When you do this properly, it feels like magic. For example, I wrote a script that does local Maven and Docker builds for a bunch of related projects. So I wrote two functions `Build-Maven` and `Build-Docker` with proper common flag support and error handling. Then, when I use them, I just do something like this:

        $PSDefaultParameterValues = @{
            'Build-Maven:ErrorAction' = 'Stop';
            'Build-Docker:ErrorAction' = 'Stop';
        };

        Build-Maven "$Path\A";

        Build-Maven "$Path\B";
        Build-Docker -Path "$Path\B" `
            -Dockerfile "$Path\B\Dockerfile" `
            -Tag "B:$Tag";

That first clause automatically amends `Build-Maven` and `Build-Docker` commands with `-ErrorAction Stop`. So if any of those build commands fail, the entire script halts there. And, if I pass in `-Verbose` to this script, that's forwarded to the build commands and I'll see the Maven and Docker build output.

<comment><USER10> PS has another reason to use full names of parameters in long-lived scripts. If you use short names like `-Ver` expecting it to match `-Verbose`, a future version of the commandlet can add `-Version` and now `-Ver` is ambiguous.

On the other hand, I've seen some people eschew `%` and `?` in favor of writing `ForEach-Object` and `Where-Object`, which in my opinion is too extreme in the other direction.

BTW, in:

        if (-not $(Test-Path -Path "$Path" -PathType Container)) {

... you don't need the `$`, and if $Path is already a string you don't need the `""` either.

<comment><USER11> To me this isn't just another reason, it's THE reason to not use the short form in scripts. Although unlikely, the worst case of this could be pretty nasty. It's possible for someone to remove a flag that was deemed useless and add another flag that matches the same prefix and has a very different effect.

I don't know how to feel about % and ?. The thought with not using them is that they are just aliases and could be changed. But that reasoning sort of breaks down since any command could be aliased to something dumb like `Set- Alias Get-Content Remove-Item`.

<comment><USER10> Yes, exactly. If your script is running in an environment that has redefined % and ?, it's either because they _want_ your script to use their definitions, or it's busted beyond repair and you shouldn't worry about supporting it.

</comment></comment></comment></comment><comment><USER12> If you're trying to stick to the POSIX standard, you have to use short options for standard commands like grep, since the long options are GNU extensions.

<comment><USER13> Unless you count things like Makefiles, I don't think I've ever written or encountered a "script" that was intended for use on multiple *nix flavors. This strikes me as a YAGNI situation: do it if it comes up, but not before.

<comment><USER14> This attitude is definitely something that makes my life harder. My OS is usually OpenBSD, and I constantly need to fix other people's scripts.

It's not difficult to do, but it is annoying. I don't blame people for ignorance, but it'd be nice if people thought about portability.

Non-portable scripts can also bite you on Linux, where Debian, for example, will swap out the shell from bash to dash for performance. but others will not. So, even within the Linux ecosystem, you can end up with scripts that behave differently across distros.

<comment><USER15> > Non-portable scripts can also bite you on Linux, where Debian, for example, > will swap out the shell from bash to dash for performance. but others will > not. So, even within the Linux ecosystem, you can end up with scripts that > behave differently across distros.

From the bash man page, "If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible, while conforming to the POSIX standard as well." Also you should not be including bashisms if your shebang is sh and not bash. So using bash as sh shouldn't generally be a problem, if you stick to the published Shell Command Language [0], unless you hit one of the cases where the spec is a bit ambiguous and shells implement it differently [1].

[0] [https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V...](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html) [1] [https://stackoverflow.com/questions/16069339/different- pipel...](https://stackoverflow.com/questions/16069339/different-pipeline- behavior-between-sh-and-ksh/16322932#16322932)

<comment><USER14> > _From the bash man page, "If bash is invoked with the name sh, it tries to > mimic the startup behavior of historical versions of sh as closely as > possible, while conforming to the POSIX standard as well."_

From what I remember, it doesn't do a particularly good job.

</comment></comment></comment></comment></comment><comment><USER16> Don't use long flags when scripting, if they have short equivalents, and POSIX only specifies the short equivalents.

Even if the stuff will only ever run on one system, the POSIX flags (1) come from a smaller set of options, since POSIX is fairly conservative in its content this area and (2) are generally well known (often three decades old or older).

Don't make me read a man page to confirm that "grep --fixed-strings" really is the same thing as the POSIX-standard "grep -F", and not something subtly different.

<comment><USER17> Why not just "man grep | grep -- --fixed-strings" real quick?

<comment><USER16> These real quick moments add up to wasted time real quick.

<comment><USER18> Wasted time for someone who has all of these memorized. How about all the future wasted time of people having to look up the flags cause they're not explicitly spelled out? I'm in favor of explicitness because it saves time for future people and gatekeeps less.

<comment><USER16> -F is explicitly spelled out. Proof: I can see it. Explicit is the opposite of implicit, and implicit doesn't mean "abbreviated to a single character that is plainly visible".

You don't necessarily know what a long option means without looking it up, just because it is long. Firstly, if your native language isn't English, you may have to look it up in a dictionary. The ordinary meanings you find there may not reveal what that word means in the context of the program. So, at that point you're off to the documentation anyway.

I know what "hard" and "soft" are. Therefore, is it obvious what "git reset --soft" means? Hardly.

Once you know what it means, "\--soft" jogs your memory by association a lot better than some "-X". So that would seem like it is less cognitive work. But when we have long options, it encourages the option vocabulary of a program to keep growing, which adds to the cognitive load.

</comment></comment></comment></comment></comment><comment><USER19> I have been following this advice for about five years with my scripts and the best result has been compliments from co-workers and others who have picked up the scripts and felt like they had a much better understanding of what the scripts were doing.

Combined with use of shellcheck and shfmt working in shell scripting has come a long way in the last couple years. I still feel like BASH is a dead end--the quoting and whitespace issues combined with the bifurcation caused by Apple not shipping Bash 4.0+ make moving to Python probably the better course in 2020.

<comment><USER20> It's so unfortunate about Bash + Apple.

Bash probably deserves to die out, but Apple has really pulled a bait-and- switch on OSX's *nix/bsd underpinnings over the years.

<comment><USER21> Die out and be replaced by what?

<comment><USER22> Powershell? It's available for linux now

<comment><USER23> > Powershell? It's available for linux now

I'd rather have my tonsils extracted through my ears.

I went the other way[0] decades ago and never looked back.

[0] [https://www.cygwin.com](https://www.cygwin.com)

<comment><USER22> I was mostly joking. The verbosity of powershell just makes me throw up in my mouth a little time every time I have to deal with it.

<comment><USER23> Oh noes! I've been Poe'd![0]

But I really would recommend Cygwin[1] for anyone who needs to use Windows.

Having a real shell makes a big difference.

[0] [https://en.wikipedia.org/wiki/Poe's_law](https://en.wikipedia.org/wiki/Poe's_law)

[1] [https://cygwin.com](https://cygwin.com)

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> In scripts, I usually do stuff like this

      command \
        --longopt1 \
        --longopt2 arg \
        argument

or

      command | \
        command 2 | \
        command 3 \
          --opt1 \
          --opt2 \
          arg

<comment><USER25> It's nice but you cannot comment individual lines. For that you can go one step further and use arrays:

      cmd=(
        command
        -x -y
        --bar OPTARG
        ARG ARG
      )
      $cmd

This works in Zsh. In Bash that would be ${cmd[@]} I think. I use this with long qemu command lines where I often modify and comment out arguments during testing.

<comment><USER26> You can comment using a hack; check this out:

      command `# a comment` \
        --longopt1 `# another comment` \
        --longopt2 arg \
        argument

<comment><USER25> I didn't mean commenting arguments for documentation but commenting them out while you're writing and testing the script. I.e. this won't work:

      command `# a comment` \
        # --longopt1 \
        --longopt2 arg \
        argument

AFAIK there's no hack for this.

EDIT: Oh, `# a comment`. Didn't notice that. I'm going to explore it, thanks.

</comment></comment></comment></comment><comment><USER27> I try to write long form now, but every time I encounter short form and don't know what it means I just use explainshell: [https://explainshell.com/](https://explainshell.com/)

Long form also allows me to find things faster in man pages.

</comment><comment><USER28> I wonder a bit, that those POSIX comments are so far in the bottom of this discussion. I mean, you are loosing portability by using long flags (because it is not standard compliant) and yet it seems to be just a footnote in this discussion...

<comment> ainar-g Not a lot of people these days care about portability, unfortunately. You'll be lucky if your project's build scripts run the same way on both Debian and vanilla macOS. And when they don't, the answer people will give you is probably something like "Just install GNU tools!". *BSD? Forget about it.

</comment></comment><comment> entire-name As the saying goes, code is typically written once and read thousands of times. It takes you less than a second to write the full flag name (add a few seconds if you need to look it up), but it will likely save at least a few hundred readings the time to look up the flag if they do not already know it. In addition, full flag names contributes "self-documentation" in many cases, and also potentially makes searching easier in certain cases.

<comment><USER6> You're assuming the long version is more well known than the short version. That's a wildly and provably false assumption.

Do you know, without referring to the manpage, exactly what `cp --no- dereference --preserve=links --recursive --preserve=all` does? I don't. I can take some _guesses_ based on the names of the options, but those guesses could very easily miss an important corner case.

Do you know what `cp -a` does? I do.

<comment><USER29> The long form of `-a` would be `--archive`, for the same reason that you write `-a` and not `-dR --preserve=all`

<comment><USER6> I'm afraid that doesn't fit with the "be as explicit as you can regardless of logic" espoused in the article.

</comment></comment></comment></comment><comment><USER30> When writing scripts (CI especially) you'll rarely use, please always use long-flags. It'll save so much headache for the next dev who isn't as up to date with the latest short-hand for az-cli or whatever.

When live scripting, feel free to use short.

<comment><USER31> I think you are right, for all "exotic" tools, long flags are much better and future proof. For regular tools, short flags are so common that they are probably ok.

<comment><USER32> Your regular tool is not my regular tool. Hell, maybe my regular tool today is not going to be all that regular in 3 years.

<comment><USER22> He's talking about thing like sed/awk/grep/find/xargs/tar not new_hotness_util_2020

<comment><USER31> I was. Thank you.

</comment></comment></comment></comment></comment><comment><USER33> Agreed, bash3boilerplate.sh has long suggested that a few extra keystrokes in a script pay off in saving your collaborators and future self trips to manpages. Disclosure: b3bp author.

</comment><comment><USER34> Discussion from 2013: [https://news.ycombinator.com/item?id=5164354](https://news.ycombinator.com/item?id=5164354)

</comment><comment><USER35> Great advice. Except a whole bunch of popular cli utils doesn't have long versions.

Like kubectl -f. In apply, it means file, in logs it means follow. Drive me nuts how they overload short flags with different means but no long version.

Or gsutil/gcloud.

I get google folks, don't really care much about always having a long readable version of short flag.

</comment><comment><USER36> Great. Now try typing 'touch --no-create foo' on OS X and let me know how it goes.

</comment><comment><USER37> Went to try to update some of my scripts and stuff and found that most of OS X/macOS uses BSD utils which don't have the long flags found in linux versions. For example check out xargs:

[https://www.freebsd.org/cgi/man.cgi?xargs](https://www.freebsd.org/cgi/man.cgi?xargs)

[https://man7.org/linux/man- pages/man1/xargs.1.html](https://man7.org/linux/man-pages/man1/xargs.1.html)

</comment><comment><USER38> I think adding the -- to the end, to stop option processing is advisable as well. Where that's supported, of course.

Some may disagree, but unexpected flags passing through seems dangerous to me.

</comment><comment><USER39> Are there editors that use autocomplete to suggest arguments?

That would make finding and typing the long arguments easier. As it is, it's easier to type the long arguments in a shell than in an editor.

</comment><comment><USER40> I wanted to say that Microsoft explicitly says to use the full argument label and not omit them when writing PowerShell scripts but I can't find the doc.

<comment><USER41> I was thinking that the author would really like PowerShell. PowerShell is the most verbose thing I've ever used. I don't really like to type that much for simple things.

I say just learn the flags or look them up, it shouldn't be hard or time consuming. When reading scripts, many times you can infer what the flags mean by understanding the inputs and desired outputs.

<comment><USER40> Sometimes, but well-written PowerShell scripts can be surprisingly readable, particularly in comparison to bash.

</comment></comment></comment><comment><USER42> Absolutely not. Long flags are non-standard and non-portable. Don't write GNU scripts - write shell scripts.

<comment><USER22> Depends on the situation as always. Obviously if it's going to be used cross platform go for it, otherwise YAGNI

</comment></comment><comment><USER43> Is there not a linter that can autofix this? Seems like it shouldn't be a human responsibility.

</comment><comment><USER44> never thought about that. I usually try to keep my code short to try to impress other programmers, but that's really good advice

<comment><USER45> I'd say a painless, easy to understand program is more impressive than a short one

</comment></comment><comment><USER6> `rm -rf` is much more recognizable than `rm --recursive --force`.

`tar -cvf` is much more recognizable than `tar --create --verbose --file`.

Moreover, why are you writing a shell script if it's NOT quick and dirty?

<comment><USER46> Makefiles are one situation where one is essentially writing small shell scripts, but which are not really supposed to be quick and dirty in my opinion.

</comment></comment><comment><USER47> No, thanks

</comment><comment><USER48>
        --r<TAB>ecursive

</comment><comment><USER25> No, I'm not going to waste keystrokes and increase noise for lazy people. Convince physicists to write force_gravitational instead of Fg, or functional programmers to give up concepts from abstract algebra, and then I'll reconsider. Until then, RTFM just like you do in other fields. curl is so common you should already know what -s means and if not, well, RTFM.</comment>


Second life: dashcam videos of people narrowly escaping death on the road - <AUTHOR> http://www.youtube.com/watch?v=lU4ePPGBFqc

<comment><AUTHOR> I probably need to explain why I think it is important on a hacker forum. First, it shows a cultural phenomenon when technology exposes interesting things to a lot of people, sort of like preview of what Google Glass will bring to life. Second, I wonder if self-driving car technology can be taught to behave in an optimal way in a non-standard situations that happen in may of these video fragments.

<comment><USER2> It's interesting that dash-cams are very popular in Russia. Previous discussion when the meteorite exploded there: [https://news.ycombinator.com/item?id=5226108](https://news.ycombinator.com/item?id=5226108)</comment></comment>


What do you do when you are an engineer and there is a war in your country? - <AUTHOR> http://blog.livecoding.tv/2015/09/28/lctvalerts-web-service-kuzzmi-javascript-switzerland/ <comment><USER2> Stay alive?</comment>


Why we bill by the hour - <AUTHOR> http://squeejee.com/articles/50-why-we-bill-by-the-hour <comment><USER2> As always, it depends.

On the product end of things a fixed price makes a lot of sense. Squeejee builds custom web applications...billing hourly for that is a no brainer.

Much of everything else is a hybrid. I would expect that I could get a reasonably accurate estimate for painting my house based on the experience of a painter. With a fixed set of requirements and a familiar problem domain, I would think Squeejee could do the same.

<comment><USER3> The house painting analogy fails because in software development, you only have a vague idea of how big the "house" is.

No painter would give an estimate for painting a house, sight unseen, with only vague descriptors. But yet that's exactly what fixed-bid contracting is for software development.

<comment><USER2> Clearly the house painting analogy fails. All analogies do. My point was that the two extremes are fixed-bid and hourly.

For the sake of a client, a programmer with some expertise should be able to give a reasonable estimate based on a set of requirements.

I would say your house painter analogy fails as well. Fixed-bid contracting for software development is nothing like painting a house sight unseen, with only vague descriptors. Analogies aren't really the point though...

</comment></comment></comment><comment><USER3> One of the most harmful results of fixed-bid contracting is that it gives offshore developers a huge advantage. It'll take them three times as long and they'll ship a worse product, but the "shipped" cost will still be lower. You don't see the hidden costs like maintainability and poor code quality until afterwards.

<comment><USER4> The advantage is equally huge for time & materials. $25/hr vs $75/hr. Do you think management anticipates that it will take three times as long?

<comment><USER5> Absolutely true. The advantage is the same regardless of billing model.

I've found you can't compete against off-shore outfits on price if you want to keep making money. So don't even try. Your competitive advantage is quality, communication, and responsibility.

You can deliver high quality product, designed for extension/enhancement in the future, and can communicate clearly with the client, and understand what they want (without them having to create a 50 page requirements document covering every tiny detail), and after the delivery they can call you up, and speak to the same person they talked to before, on the phone, and you'll take personal responsibility and pride in your deliverable. That costs more. End of story.

You won't get every client, but trust me, the ones that just care about the lowest $ figure above all else, aren't the clients you want to have anyway.

</comment></comment></comment><comment><USER6> All of my current client projects are hourly. I typically give them an estimate so they have a ball park figure and then bill hourly and update them as the project progresses. This seems to work out really well.

The only downside that I see so far is that as you get better as what you do you tend to get quicker as well, which in an hourly arrangement means you make less. You can always raise your rates as your experience grows but for previous clients it can be hard to explain.

<comment><USER7> If you get quicker, doesn't that give you time for more projects?

<comment><USER8> Sure it does, but if you're working hourly, you're still making the same total $, working the same hours, just over more projects.

For me, while I do love coding, my side projects truly are a means to an end ($$ to put in a home theater, or take a trip, or do whatever else I want to do).

Hidden in your question is the kernel of why fixed-bid is better when your skills (in terms of lower hours-expended for a finished-system) are better than your competition, and you can sell it.

Now, all that said, I'm wrapping up a fixed-bid (~$25K) side project where scope creep is killing me on my (effective) hourly rate. It's still fun; I'm learning a lot about things I don't do in my "day job" and I'm almost certainly going to get more work from this client if I want it, but I made the mistake of bidding fixed-price with some assumptions about the scope that were ludicrously off. (My fault, not the client's, and I'm eating it. If the work weren't fun, it would be an extremely bitter taste...)

I'm still in favor of the fixed-bid (as it makes the sales job much easier), but watch scope creep.

One last important point: if you are bidding fixed because you are a great coder and a poor salesman, your lack of sales/negotiation skills may be an issue when the client thinks something was in scope and you think it's out of scope. If this is a possibility, figure out your strategy ahead of time, or you'll end up doing the feature "for free".

</comment></comment></comment><comment><USER5> Fixed bids aren't so bad. The trick is learning to do really good estimates. Figure out how much information/requirements you need in order to create an estimate, and get that data first. Document what YOU understand the scope of work to be (separately from the provided requirements) and make that the basis for your fixed bid.

Many customers will prefer a higher priced fixed bid, rather than a lower prices hourly based estimate, because they can budget for it (or get budget for it) without worrying about overruns. Many less scrupulous development firms (or people who just can't estimate very well) end up billing well over the initial estimate when doing hourly invoicing, and many customers have been bitten by that before.

In my experience smaller client will be more likely to go for the hourly approach, due to the initial estimate being lower, and feeling like they have more control over the costs during the course of the project. Larger companies almost always work with fixed size budgets approved on a project by project basis, and so having a fixed cost (even if it's potentially higher) is key for their internal budgeting and resourcing. Plus it protects against the overruns hourly project can bring. I've never seen a Fortune 500 outsource a full development project on an hourly basis. It's almost ALWAYS fixed price, just due to how they handle their own budgets.

The trick, imho, to good fixed price cost estimating is to get the best requirements you can up-front, and restate them yourself in your SOW, broken out by task groupings instead of however the client structured them. Clarify any potentially nebulous requirements/tasks yourself, and let the client know if they want to change the way you've filled in the gaps, they can do so, but you will need to submit an addendum to the invoice for any changes they make (unless otherwise agreed upon - i.e. same effort swaps of un-developed areas). Once you have the overall task list figured out, do your internal task breakdown and estimates. Then, pad your estimates out by perhaps 50% (this depends on how good you are at estimating, and how many times you've done task/feature X before).

If I have a task doing something that I haven't done before (i.e. some sort of crazy-cool ajax front-end wizardry (I'm a back-end guy)), I'll pad that out a bit more, since I'm likely to run into a snag or two along the way. If it's something I've done 100 times before (i.e. user registration/login/logout/forgot password flows), I don't need to pad that, since I can estimate that pretty exactly.

Also, don't worry if your padding seems high, or your SOW price seems too high. The client always has the option of doing an hourly approach instead. It's up to them. The more projects like this you do, the better you'll get at estimating, and it becomes second nature.

</comment><comment><USER9> That's the main reason why languages like C++ and Java are so popular. Getting paid for amount of time or amount of code makes succinct and simple solutions less interesting for developer.

As we all know, succinctness = power. Everybody lose in the long run when developers are not motivated to solve the problem in less time with less code and as simple as possible.

I'm amazed that some people treat it as something "so basic".

<comment><USER5> Did you just say that the reason C++ and Java are popular is developers don't want to spend clients money writing everything from scratch (in what? assembler? fortran? C?) in the most simplified way possible?

I don't even know where to start with that. Using existing code libraries for common tasks means less development time/cost, higher quality code (the code has been tested by thousands of people over months or years), and easier enhancement/extension in the future (the code already solves for many common enhancements and/or is built in a modular/configurable/etc... manner and so on).

Writing your own "super-awesome-optimized-magic" ORM/Internationalization/Transaction Management/Caching/Encryption/MVC framework/XML parser/etc... is generally a bad idea for you and your client.

<comment><USER9> No, I just say that getting paid for amount of time motivates developers to write complex and bloated code in complex and bloated languages. There was nothing about "writing from scratch" or libraries available.

Example: client wants new feature -- if my language and my platform let me do it in one line of code it's bad for me if I get paid for time, thus people choose languages and platforms where even trivial things can be written with some bloat.

</comment></comment></comment><comment><USER10> I wish more clients realized this and were comfortable with such an arrangement. It does require a great deal of trust in your developer, though.

</comment><comment><USER11> I agree.

Though the customer may be afraid that the developer can just start piling hours without real productive work. Still, I think the customer has the possibility of asking for a replacement of the consultants if he does not see good results. Later on in the project may be harder but still possible.

<comment><USER12> I think their answer to that was the short development cycles. If they're not the team you want, you'll see that in two weeks instead of 6 months.

<comment><USER5> That's assuming the client can tell the difference. Most non-technical clients won't have a clue how long something should take.

</comment></comment></comment><comment><USER13> Billing by the hour may be way too granular for some projects. Contractors should also consider day-rates. It can be a good compromise between hourly billing and fixed bids.

</comment><comment><USER14> I'm in favor of T&M (Time and Materials) work for software development, simply because the universe of solutions is so broad.

Having said that, the argument put forward in this article is nowhere near complete. Yes, when you're getting paid by the hour the client has his foot on the gas pedal, but in reality he's already sunk a big hunk of money on you, from his standpoint on a long project it can easily look like throwing good money after bad.

Yes, agile techniques make clients happy faster. But it all depends on where the risk is. And there is a difference between the client and the users. If the users have a hard time making up their mind what they want? Then the software process becomes part of a business decision support system. The team interviews multiple stakeholders and facilitates negotiation and conflict resolution.

You might say "that's not software work," but that's the real world with real humans in it. In that case, it could be easy for the client to see bills every week or two for what he thinks is just a lot of talking, From his standpoint, he just wants the coding done -- and of course the users should be happy. (grin)

Because it is so complex hourly is the most straightforward way of working. I've been watching this scene for many years, though, and I have the sneaking suspicion that fixed price bids are what separate the men from the boys when it comes to delivering technology solutions -- mainly because the profitability can swing wildly from rolling-in-the-bucks to sucking-wind.

<comment><USER15> You lost me past the first sentence.

<comment><USER14> Bill by the hour, unless you want lots of bucks. If you do, suck it up and learn to go fixed price. I never had the guts to do it.

Hourly billing is not perfect. There are lots of ways to screw it up too. The author should have told you that.

Work any better? I've been told I ramble. Hope that helps.

<comment><USER16> One way to screw hourly billing: you feel compromised to stay in a project until it's closed, but the project hasn't a close date, so it might never be properly closed. But you might actually want to get out of it to do some other interesting or more expensive work, and if your client feels like it, he/she might never really free you from your project. That's one danger of hourly billing for hourly beginners.

<comment><USER14> My first "pro" hourly gig ended up going week-to-week with no end in sight. We were doing a great job, but the VP who was paying us was fighting with another VP over who owned the program. After 2 months I had enough and left. A year later the team was still there.

</comment></comment></comment></comment></comment><comment><USER17> in the squeejee factsheet pdf one of the projects listed is WildFire Viral Business Marketing Application www.sparkwildfire.com

except the url that gets copied into the clipboard on winxp foxit pdf readed is www.sparkwildire.com

I have no idea why.

</comment><comment><USER18> This is so basic, I'm amazed it still needs to be said. But I understand why it needs to be said (lots of idiots in the world).</comment>


Beyond Sexual Orientation - <AUTHOR> http://nautil.us/issue/41/selection/beyond-sexual-orientation <comment><USER2> She wrote a book on this topic.

[http://www.hup.harvard.edu/catalog.php?isbn=9780674032262](http://www.hup.harvard.edu/catalog.php?isbn=9780674032262)</comment>


Apple Responds to Your Comments [Interview with Craig Federigh] - <AUTHOR> https://www.youtube.com/watch?v=Q2aaCDNjWEg <comment><AUTHOR> For those interested, here's the longer podcast version: [https://pca.st/2tg49vsr](https://pca.st/2tg49vsr) [1H 21M]

</comment><comment><USER2> Being able to select your default browser doesn't address the issue that every browser on iOS is just a webkit wrapper</comment>


Show HN: Data-viz project for ray-tracing the Moon model - <AUTHOR> https://github.com/rnd-team-dev/plotoptix/tree/master/examples/3_projects/moon <comment><AUTHOR> Ray-tracing is done in a Python notebook. Data originates from NASA public resources. I searched for the highest resolution data to make the Moon almost touchable. So it is made of 118m elevetion model and 480m surface color. There is also 59m elevation model, but this 22GB does not really fit into my laptop's GPU.

Code can run on GCP instance. Laptop/desktop is more convenient, though.

If you'd like to go straight to pictures: [https://www.behance.net/gallery/84326717/Making-of-the- Moon](https://www.behance.net/gallery/84326717/Making-of-the-Moon)

or tutorial: [https://firstname.lastname@example.com/the-moon-made-twice-at- home...](https://firstname.lastname@example.com/the-moon-made-twice-at- home-a2cb73b3f1e8)

<comment><USER2> pretty photos, and nice work!

more than anything, though, thanks for introducing me to PlotOptiX! It looks like a great way to plot scientific data in 3D :D

</comment></comment><comment><AUTHOR> Thanks to all for the feedback and comments!

@rcarmo Yes, bumps are enhanced, to make the surface more dramatic. This scale is a parameter in the notebook, it can be set to the realistic 1.15% of the mean radius.

On another forum, someone pointed out that the Lambertian shading makes the Moon surface too smooth. So the diffuse material roughness will come in the next PlotOptiX release, in a few days. :)

</comment><comment><USER3> Maybe this help with: [https://github.com/x3dom/x3dom](https://github.com/x3dom/x3dom)

As I heard it's based on explicit DOMs.

Have anyone tried X3DOM?

</comment><comment><USER4> The video is very nice, although the bump/displacement seems a little too strong - craters should look a little shallower :)

<comment><USER5> The Medium article says that was intentional:

> That gives the elevation spread of about 1.15% of the mean radius. I'll use > a bit higher value of 2%, so the terrain features are more prominent.

<comment><USER4> I missed that bit, thanks!

</comment></comment></comment><comment><USER6> Do you use Lola data? What resolution and from where?

<comment><AUTHOR> Yes, 118m resolution, it is from: [https://astrogeology.usgs.gov/search/details/Moon/LRO/LOLA/L...](https://astrogeology.usgs.gov/search/details/Moon/LRO/LOLA/Lunar_LRO_LOLA_Global_LDEM_118m_Mar2014/cub)

All other sources (surface color, star map in the background) are referenced in notebooks, gallery, and tutorial as well.

</comment></comment><comment><USER7> What hardware did you use to produce such photos?

<comment><AUTHOR> PlotOptiX requires NVIDIA GPU. I used GTX1060/6GB on a laptop for most of the work. Tested also on a desktop RTX1070/8GB, much better fps, of course. Video is done on RTX. In Google Cloud, on V100, runs even faster, but GUI is more convenient on local machine.</comment></comment>


The Internet Doesn't Route Around Surveillance - <AUTHOR> https://motherboard.vice.com/read/the-internet-doesnt-route-around-surveillance <comment><USER2> Re: "the Net interprets censorship as damage and routes around it." That comment was originally made about USENET, in the "alt.humor.funny" episode at Stanford in the early 1980s. Due to some political correctness issue, the newsgroup "alt.humor.funny" was blocked at Stanford's main USENET gateway.

USENET is an eventually-consistent database system. When USENET nodes connect, each has a list of groups it knows about. For each group a node knows, it tells the other end what item sequence numbers it has. The node being asked then provides any items the asking node doesn't have.

This really does route around censorship. Almost all the USENET traffic went through the main Stanford USENET gateway, but a few machines on campus made occasional USENET connections to outside machines. That was all it took to keep the Stanford USENET machines in sync with the outside world. Anything deleted at the main gateway was filled in over other links.

That's where the line came from. From the days when we really had distributed networking.

<comment><USER3> A subtlety is that more effective censorship _was_ possible in USENET: by forging corrupted or redacted versions of particular posts, or, to an extent, with cancelbots. (The second is potentially less effective because people could configure systems to ignore cancel messages, but the former could work really well because USENET never had a content-integrity mechanism, so you could certainly convince nodes that they already had an article and hence didn't need to retrieve it again.)

</comment></comment><comment><USER3> It is also possible that a country can spy on traffic that isn't routed through that country's territory. Three things we've heard about in the last few years have been bilateral deals between spy agencies to share intercepted data, compromise of routers, and installation of clandestine physical taps, whether on land or undersea. There might be good political remedies for some of these things, but at the technical level it seems like Joseph Hall's view (from the article) is exactly right.

Edit: there were also reports about different kinds of routing manipulation, such as BGP attacks, inducing ISPs to deliberately choose surveillable routes in some cases, or inducing link outages.

</comment><comment><USER4> Wouldn't it make more sense for surveillance to route around privacy ?

<comment><USER5> It doesn't have to (or said another way: it does by default), because its routes are build with laws. However, you could also say that things like the UK surveillance-kickback agreements are a form of routing around the law, and I would agree.</comment></comment>


Survivorship bias, or Why you can't say you can't - <AUTHOR> http://rodfrey.wordpress.com <comment><AUTHOR> My first ever blog post. Lemme have it with both barrels. Stemmed out of recent discussions about age discrimination.</comment>