Why Scotland looks like the canary in the independence coal mine - <AUTHOR> http://blogs.reuters.com/mark-leonard/2014/09/16/why-scotland-looks-like-the-canary-in-the-independence-coalmine/ <comment><USER2> What legitimate reasons are there to remain part of the UK, other than "Less pain of separation"?

I hear the UK say, "If you stay with us, we promise to give you more power!" Well, why don't you go ahead and give it NOW, and that would probably swing Scotland to a firm "No". Which makes me think the UK is lying, and Scotland would get no substantial improvement in autonomy.

<comment><USER3> The economy. Scotland does most of it's trading with the rest of the UK anyway so would remain affected by any decisions taken in westminster, but would have much less influence over those decisions especially in the event that they keep the same currency. Much of Scotland's economy would become contingent on volatile and finite oil revenue.

Also the UK is a single landmass , so it makes sense to defend it as such.

<comment><USER4> Oh yes, we must defend the UK from the savage barbarian nations which border on every side, just waiting for a false move so they can stage a full-on invasion!

<comment><USER3> You don't think the UK should maintain a defence capability?

<comment><USER5> Well, from a Scottish viewpoint we've only ever been invaded by one nation in the last thousand years…

</comment></comment></comment></comment></comment><comment><USER6> I had two nearly simultaneous thoughts:

1\. This is great, throwing it back to government for the people and really should shake up big federal governments.

2\. Or maybe not so great, because of number of pitfalls. Getting something like secession right is hard, chances are economies will suffer hard. There will be some superpowers that will never allow this is current political climate such as China, Russia, and potentially India. This will be effectively strengthening their positions. If countries split up into smaller states, while local governance will likely improve, international gridlock will not.

<comment><USER7> I must admit that I am rather surprised of the amount if international attention that the referendum here is getting - Scotland is a small, relatively unimportant (i.e. we're not London) part of the UK which is itself a relatively minor economic and military power.

Given the stream of world political and business leaders who have felt the need to pass comment (inevitably in favour of the "No" campaign) I really do wonder what is going on.

[NB OK OK I shouldn't have said "minor economic power" and the UK has superb (but horribly equipped and under-funded) armed forces].

<comment><USER8> In the US, we are actually aware of the Scots ambition to secede. Insert Braveheart reference here. Many of us were actually Scotsman or Irishman at some point in our ancestry.

We are anticipating what will happen if "yes" succeeds and what that means to Scotland (and its economy). World leaders do not want successfully countries with desirable/friendly leaders to break up.

<comment><USER9> You know most of the "Scottish" legends are made up out of whole cloth and make the most unrealistic cowboy films look like saving private Rayan in terms of realism.

<comment><USER8> You're telling me Braveheart wasnt a true story?

Either way most people in the US know about some of them. Thats why I chose to say: "Insert Braveheart reference here" instead of "It's all for nothing if you don't have freedom."

<comment><USER7> Actually the line you are probably looking for (and why they kept going on and on about "freedom" in _that_ movie) is:

 _...for, as long as but a hundred of us remain alive, never will we on any conditions be brought under English rule. It is in truth not for glory, nor riches, nor honours that we are fighting, but for freedom – for that alone, which no honest man gives up but with life itself._

[http://en.wikipedia.org/wiki/Declaration_of_Arbroath](http://en.wikipedia.org/wiki/Declaration_of_Arbroath)

Which, as an aside, has some quite interesting stuff about sacking a King if he isn't good at his job...

[NB This has no real relevance to the current referendum - but I'd be lying if I didn't admit to liking this kind of stuff.]

</comment></comment></comment></comment></comment></comment><comment><USER10> This makes me wonder if the domination of two monolithic political parties in the United States, well-represented in geographically disparate areas, is actually a force for the cohesion of the U.S.A. as a country. For instance, since there are large numbers of G.O.P. supporters in, say, Idaho, there's a lot less credence to a group of, say, southern red states considering secession due to fundamentally different policy preferences.

It does still baffle me, though, that economic conservatism is seen as a force for the poor in America, whereas elsewhere in the world, in this article's words, evoking "socialist utopia... [is] an effort to stave off the spiraling growth of inequality."

<comment><USER11> Some network technologies solve problems client-server, some network technologies solve problems peer-to-peer. Different approaches, different philosophies.

Historically, Americans have been more fiercely independent and valued bottom up approaches to resolving their problems. A lot of the rest of the world is more hive-minded and looking for top-down solutions.

<comment><USER12> Surely there's a better way to describe a preference for coordination and planning than "hive-minded."

<comment><USER11> I was wondering where the downvotes were coming from. I meant to be accurate, not insulting.

I thought that hive-minded accurately described the seeming desire to centralize authority and form a collective, trusting that those in charge had the best interests of society in mind.

<comment><USER12> The term "hive mind" has connotations of lack of independent thought and disregard for the well-being of individuals. It's the sort of thing you'd use to describe an alien insect species psychically controlled by a central queen in a sci-fi novel. A functioning representative democracy is not the sort of image it evokes.

</comment></comment></comment></comment></comment><comment><USER13> In conversation with several Scotts, I've been told what they want most is autonomy from London, more than from the UK. That London is autistic for a long while, too much disconnected from the rest of the UK, including the rest of England. It is too asymmetric, economic- and power-wise.

<comment><USER14> This is an important point. Felix Salmon has an excellent analysis of this sentiment in Scotland here: [https://medium.com/@felixsalmon/why-scotlands- voting-yes-2d6...](https://medium.com/@felixsalmon/why-scotlands-voting- yes-2d6a5412de44)

</comment></comment><comment><USER15> I'm a little amazed that none of the comments in this thread mention the EU. If the Scots go for "Independence in Europe" as Salmond has said they will, surely that would be the model for Catalonia or Flanders to follow.

<comment><USER16> One obvious reason to think otherwise is that existing EU countries can veto the entry of new members, and Spain's government is unlikely to want to encourage Catalonian dreams of freedom. Belgium is already a federation and Belgians are famous for not being very invested in a Belgian national identity so they probably wouldn't care much.

</comment></comment><comment><USER17> Considering the title I thought the article would highlight the flemish region of Belgium or the Basque country for which Scotland could be the canary or the blueprint. A lot of political leaders are paying real close attention to how things are going to unfold.

edit: I don't understand how I could missed it but the article does mention the flemish region and Catalonia (I wish they would have compared it though).

<comment><USER18> He does mention Flanders, and Catalonia which is likely the first to go in Spain.

</comment></comment><comment><USER19> For a similar viewpoint on the whole "smaller countries" thing from someone who is rather more positive about Scottish independence, here's Charles Stross's piece on the Scottish Referendum:

[http://www.antipope.org/charlie/blog-static/2014/09/the- refe...](http://www.antipope.org/charlie/blog-static/2014/09/the-referendum- question.html)

<comment><USER20> It's worth pointing out that there were a lot of people in "our circle" who have been pointing out for a long time that decentralization of governance has been getting only more and more possible over time, and that the same forces that created enormous monoliths in the 20th century may cause their breakup in the 21st.

I think 9-11 sort of put a spike in the wheels of that discussion for a while for various complicated reasons, but in the meantime the forces have marched on and aren't getting any less compelling, while in the meantime confidence in big institutions is low and still dropping.

Even as right now in the US it looks like the forces of centralization are riding strong, given how poorly performing they have been and how people are ever-more increasingly distrustful of the central government, I would be very unsurprised to see 2016's Presidential election turn into a big "state's rights" fight, or some other narrative fundamentally about solving things with further centralization vs. decentralization, with the centralization party riding into _very_ strong headwinds by 2016. If not 2016 than I think very likely by 2020.

One thing I sort of find interesting about this is that the US has a very, very clear structural path back to decentralizing itself without requiring any major upset. It's something that can be done cleanly and gradually, without revolution or uprising. Perhaps the US will decline in the 21st century, but I do not find it as _inevitable_ as some people do.

</comment></comment><comment><USER21> From a 2013 interview with Marc Andreessen, [http://pando.com/2013/10/03/marc- andreessen-the-world-is-goi...](http://pando.com/2013/10/03/marc-andreessen- the-world-is-going-to-see-an-explosion-of-countries-in-the-years-ahead/)

 _" "I think there is going to be double, triple, quadruple countries in the coming years," Andreessen told Sarah Lacy at Thursday night's PandoMonthly in San Francisco.

The cofounder of venture firm Andreessen Horowitz noted that the borders of today's countries are in some cases arbitrary, pointing to Iraq, Syria, and much of Africa as artificial constructs. In the last few decades, the world has seen the emergence of a litany of new countries, and he sees no reason why that splintering is going to slow down.

"You're going to get a much larger number of countries," he said, before noting that the proliferation of nations could be a positive force in the long term, measured by a span of 100 years or more.

"The transition is going to be very painful," he said, "but I think ultimately it's going to be very healthy."_

<comment><USER22> Translation: Smaller countries are easier to manipulate. The powerful Andreessens of the world will have an easier time getting what they want from them.

<comment><USER23> Yes, smaller countries are more _agile_. A great number of issues in diverse, expansive countries can be solved with a greater focus on regionalism. The Chinese have approached this problem recently (post 1978) by increasing regional autonomy. See the various reforms implemented since 1978 leading up to their adoption of the M-form[1]. There is also the argument that signals can pass more easily through a more distributed system, meaning greater ability for decision makers to make informed decisions.

1\. [http://en.wikipedia.org/wiki/M-form](http://en.wikipedia.org/wiki/M-form)

<comment><USER22> The problem with decentralization is waste of duplication. I don't think it needs to be an "either / or". It should be a "yes, and".

</comment></comment></comment></comment><comment><USER24> Here's a hypothetical for HN:

Does anyone reckon that if Scotland was to go its own way, the rather leftist government there would withdraw from prior cooperation with the NSA/GCHQ? There's already been an unofficial proposal to give asylum to Edward Snowden if the referendum passes. Or would the status quo continue, except there with Six Eyes?

<comment><USER5> We can only hope that they do, even if only from a point of principle. Although it will make no difference to the operations of the Five Eyes organisation since they don't respect geographical or political borders anyway.

</comment></comment><comment><USER25> The bookies are offering 2/7 odds which is about 77% against.

[http://www.theweek.co.uk/uk-news/scots- independence/60436/sc...](http://www.theweek.co.uk/uk-news/scots- independence/60436/scottish-independence-odds-bookmakers-ignore-close-polls)

Hard cash versus pollsters.

Thoughts?

<comment><USER16> They're good Bayesians:

 _Graham Sharpe of William Hill told The Guardian last week that the steadiness of the odds is partly to do with liability management, because there has already been a lot of money placed on no: "We are facing a seven- figure loss on a no vote and a six-figure win on a yes vote so we're trying to even that out…_

</comment></comment><comment><USER21> If a smaller country does not have an independent currency, how much independence do they have?

Smaller countries means more borders where movement of goods or people can be tracked (papers please).

Smaller countries have less resources to defend themselves from multinational lawsuits enabled by free-trade agreements.

<comment><USER21> Would the downvoters please have the courtesy to leave a comment explaining their point of view?

<comment><USER26> I didn't downvote you, but I'll voice a similar concern. In my case, influenced particularly by observation and commentary from Paul Krugman. Who's been pointing out the role of adoption of the Euro in what's been playing out in Europe for some years, now.

Currency seems to be a large, unanswered question -- or rather, concern -- in the Scottish initiative.

</comment></comment></comment><comment><USER26> I'm writing this comment in advance of reading the article, but I've been thinking about this circumstance and the thoughts are finally gelling to a few concise, if not fully encompassing, words.

For many particularly in the developed world, globalization and its pressures, particularly economic, have made it clear to individuals that -- perhaps ironically -- it is every person, every community for oneself.

Those individuals and communities are beginning to respond.

If this trend leads to an increasing push not just for individual but also communal self-reliance, I don't see that as a bad thing, at this point.

It can cap or limit some of the current exploitation. And re-introduce some redundancy into what have apparently become very fragile and risky systems and dependencies.

A primary push should be for energy independence. Once you have that, it's much more difficult for external interests to jerk you around. And hopefully the initiative can grow and maintain a significant domestic technical sector.

There are also perils, and I'm no political nor sociological expert. But as with municipal broadband in the U.S., pushback against intellectual property excesses in many places, and a thousand other things, more in the general public are finding that, for them, "bigger" is NOT "better". Not currently. Not, increasingly, for a while, now.

Independence is one means of drawing boundaries to that "bigger" that seems to just keep squeezing them.

P.S. I'll add that I've read the OP article, now. Having done so, my comment stands unchanged.

</comment><comment><USER22> I'm convinced that the Scottish Independence question is an outcome of the discovery of its oil reserves. That underneath it all is just greed.

<comment><USER27> The UK Continental Shelf Act dates from 1964, the devolution push (note not independence) was in 1979; fifteen years later.

If anything it is a reaction _against_ greed as Scotland is substantially more left wing than England and Wales.

<comment><USER28> The idea that left-wing politics are somehow "against greed" is kind of hilarious.

<comment><USER29> I think people may get that notion from the enforced redistribution of money from the rich to the poor side of it.

You can argue about which works, but the capitalists and the communists and the socialists do all claim to want the greatest wealth for the greatest number.

<comment><USER22> Then, of course, there's the mathematical claim to what the greatest wealth to the greatest number is:

[http://nbviewer.ipython.org/url/norvig.com/ipython/Economics...](http://nbviewer.ipython.org/url/norvig.com/ipython/Economics.ipynb)</comment></comment></comment></comment></comment>


Sundown in America - <AUTHOR> http://www.nytimes.com/2013/03/31/opinion/sunday/sundown-in-america.html?pagewanted=all <comment><USER2> There's so much hyperbole in here it's hard to know what parts to take seriously. I do believe the 'fix is in' but also don't know how to read someone who is afraid of austerity but also uses the word keynesian as an epithet. Is government spending bad? is it good? Would the 2008 crisis really have just evaporated so easily? Would anyone take that chance?

</comment><comment><USER3> Off topic rant. Flagged.

</comment><comment><USER4> I'll admit it took awhile to find the evidence of nuthattery (FDR taking the domestic U.S. off of the gold standard, in case you were wondering).

It's a pity too as there _are_ a lot of good points in there mixed with the non-sense.</comment>


The Leap - <AUTHOR> http://www.thisamericanlife.org/radio-archives/episode/539/transcript

<comment><USER2> William Cimillo on Faye Emerson: [https://www.youtube.com/watch?v=PRWYHv- Yutk](https://www.youtube.com/watch?v=PRWYHv-Yutk)

</comment><comment><USER3> The integrated advertising content feels really jarring in written form, in a way that it doesn't in the audio.

<comment><USER4> The Pepsi segment isn't integrated advertising, as Ira Glass notes:

"And of course, feel free to pop open a delicious Pepsi as you listen to this next act, Act One. By the way, we are not getting paid for that at all."

I'm guessing it just happened to be the best available audio interview with William Cimillo.

<comment><USER5> I think shizcakes knows that it was not integrated advertising into This American Life, but into the program from the '40s. shizcakes' comment, then, is likely a comment on how hearing the integrated advertising "sounds normal" for a program from the '40s, but does not "read normal" in text.

</comment></comment></comment><comment><USER6> Wow, I first read a fictionalized version of this story as " _Sagan om busschauffören som tänkte att va fan_ "¹, (" _The tale of the bus driver who thought what the hell_ ") part of the 1969 book " _Sagor för barn över 18 år_ " (" _Fairy tales for children over 18_ ") by Tage Danielsson.

I never knew it could have been inspired by this real event.

① [http://sv.svenskanoveller.wikia.com/wiki/Sagan_om_busschauff...](http://sv.svenskanoveller.wikia.com/wiki/Sagan_om_busschauff%C3%B6ren_som_t%C3%A4nkte_att_va_fan)</comment>


Google Dashboard – Your account activity - <AUTHOR> https://www.google.com/settings/dashboard

<comment><USER2> ? This has been around for a while I thought.</comment>


Mxnet-the-straight-dope: An interactive book on deep learning in concept and MXNet - <AUTHOR> https://github.com/zackchase/mxnet-the-straight-dope <comment><USER2> These are really solid for anyone coming from numpy land. Looking forward to the more advanced tutorials</comment>


Things you shouldn't do: Two pointers in one field. - <AUTHOR> http://en.wikipedia.org/wiki/XOR_linked_list

<comment><USER2> Someday you might have to program in an actual resource-constrained environment, and you'd understand why sometimes you have to do stupid things to meet your constraints.

Use half the memory -> buy a smaller memory chip per unit -> spend less per unit -> profit more per unit.

But maybe you should stick with the Ruby. I hear there's money in that.

<comment><USER3> _Use half the memory - > buy a smaller memory chip per unit -> spend less per unit -> profit more per unit._

Or: use twice the memory -> buy a bigger memory chip per unit, adding one dollar to the cost -> charge $1 extra for your $300 unit -> spend less money defusing "your product sucks because it crashes all the time" support calls -> profit more per unit.

But maybe you should stick to hand-rolled assembly. I hear there's geek cred in that.

(But actually, there is a middle ground -- something like Atom: <http://hackage.haskell.org/package/atom>. You get type safety guarantees at compile time, and you get a minimal runtime, lowering hardware requirements.)

<comment><USER4> You seems to think most computers are complicated, with huge amount of memory needing dedicated and scalable components.

This is not the case. Most computers are tiny; the kind of "you've only got 1kB built-in and non-expandable memory" tiny (yet only if you're lucky). And most of those computers are indeed programmed correctly, despite using a number of classical trick like xor linked-lists (the program is small, so really checking it, even if it contains tricks, is doable).

</comment></comment></comment><comment><USER5> Another reason not to do it is that in the modern era, computed pointers tend to stall pipelines.

<comment><USER6> If you're programming for an embedded system with severe memory constraints and a simple pipeline, this could be worth doing.

</comment></comment><comment><USER7> Haha, XOR'd pointers to compress a doubly-linked-list to use a single pointer for both previous and next references.

Brilliant and deadly. Gotta love it.

</comment><comment><AUTHOR> You can build a circular linked-list with this, provided you make "head" a pair of pointers and adjust your thinking appropriately.

The advantages are real, and not just space efficiency. You can traverse fwd and bck with identical code, potentially saving code space as well as data space. Although some other logic is more complicated, you might not need those other functions.

Don't forget, many embedded processors have moderate ROM and incredibly restricted RAM. Saving RAM at the expense of ROM can be a sensible trade-off.

</comment><comment><USER8> Let's just hope somebody doesn't try to get sneaky and make a circular XOR linked list. It'd be hard to start a traversal from head = )</comment>


Things that aren't work - <AUTHOR> http://www.aaronkharris.com/things-that-arent-work <comment><USER2> Things that you might be tempted into cutting out because they don't look like work but actually are:

\- Participating in your professional community. Looking at you, HN.

\- Going out for drinks with friends. Actually having friends.

\- Spending time with loved ones. Actually having loved ones.

\- Spinning your wheels for awhile when working in your business stops feeling productive and your subconscious is prodding you to look for strategy refinements by killing your enjoyment of the work. Yes, it's work finding out what's not moving the needle, and the way you do that work is to stop doing stuff, and the way you know to stop doing it is that you don't like doing it anymore.

\- Spinning your wheels doing new stuff that you're not sure whether it will ever contribute to the bottom line or not. Eventually you'll have to make a decision, but if you're not sure yet, that time isn't now. Keep doing it until you know exactly why you're stopping.

<comment><USER3> Instead of saying "these things [friends, loved ones] actually are work, in the sense of sustaining your business productivity, and are therefore valuable", I would prefer to say "these things aren't part of work (in the business sense), but are nonetheless valuable". (Indeed, for many of us, more valuable; business is a means to other goals, not vice versa)

<comment><USER2> They are work because you have to invest time into them to get the rewards. You have to find the time, in order to find the time, you have to claw back on the time you spend working on/in your business. So it becomes 'work' even though it's not, really.

<comment><USER4> By this definition, just about everything is work, and the term "work" itself becomes meaningless.

<comment><USER2> That's what generally happens to people as their flywheel gains momentum. It gets harder to tell where one's contribution to society ends and one's contribution to self begins.

</comment></comment></comment></comment></comment><comment><USER5> > _Talking to your cofounders and team - Sometimes, this looks like having > coffee or grabbing a beer. Invariably, you 'll be talking about work and how > things are going. This is work because you need to know what's going on, and > need to care about how your team is feeling and doing._

I can't stress the importance of that enough. I think one of my best decisions on GrantTree was, until recently, to have 121s with almost everyone in the company on a biweekly basis. This scaled up to about 20 people. Yes, it took a chunk of time out, but it was extremely well invested time, imho. I think it was instrumental in pushing through some very complex cultural shifts and getting to where we are now, which is that the company is basically self- managing and I no longer need to steer people in this hands on manner at all.

I strongly recommend this type of work. Someone may occasionally criticise you and say "but you're wasting a quarter of your time each week!" \- you're not wasting it, you're investing it in the most valuable resource of your startup: its people.

I guess the reason many people might not do it is that it takes a certain humility to realise that your work output is actually worth less than investing that time in growing and developing the people who work in your business.

<comment><USER6> Did you have any structure to these 1on1s?

My old manager used to do these with the entire team, but he would literally sit with us, as 'how are things?' and then end the conversation if they said not bad

<comment><USER7> From the management perspective, I want to know about personal development goals, team member interactions (and problems), and generally just "how you are doing" with a focus not on work product/tasks but on human health.

I block off an hour for each, but want a minimum of 30 minutes of conversation and I can't imagine leaving before then.

When I have mine with my manager, I tend to break it down into four categories: personal, team, department, company.

</comment></comment></comment><comment><USER8> > Writing blog posts about running startups

Glad this is first. It is ironic because the founders writing the blog posts and giving advice have proved that they actually don't know what they are doing by the very act of wasting their time writing blog posts.

\---

I feel one of the luckiest things that happened to Thumbtack was that for the first 3 years or so the company got basically no press, raising money was difficult and we got a lot of negative feedback from a lot of people. This meant not only did we not have any opportunities for the time wasting things listed (giving advice to others, talking on panels, etc), but we didn't get any validation from anybody for pretending to be successful.

<comment><USER9> For a lot of people, me included, writing about things is the same as thinking about things. I _need_ that written output to be able to work through things and inspect them deeply.

And if I've spent all that time distilling my thoughts into a readable form, I might as well post it.

</comment></comment><comment><USER10> Re investor updates - a thousand times yes. A huge chunk of the companies I invested in never send updates unless I push them. YC companies are especially guilty (a few never even told me when/if they shut down.)

</comment><comment> at-fates-hands >>> Writing blog posts about running startups - This feels good. If it gets onto Hacker News and gets a lot of views, you'll feel really flattered and proud. But don't confuse people reading your post with people knowing and caring about your company.

Not sure I agree with this one.

I've worked at two startups and both made major inroads in industries they wanted to break into by doing this. They wrote several posts that were published in various magazines and "{trade rags" for their industry.

It gave them exposure and explained what their application did and how it could solve an industry wide problem. Doing this actually landed both companies a major corporate client.

Blogging about general stuff isn't work, and if you're trying to get it on HN or some other "technical" site that is not related to your business, then yes, not work. If, however, you get it published in an industry specific newsletter, magazine or trade paper, I would say it will worth it.

<comment><USER11> I think you're absolutely right. Same rule for blogging as for conferences - if you're writing for your customers or users, then that's good.

I've yet to see a case where writing posts about running a startup falls into that category.

<comment><USER12> 37 Signals blogged about running a startup to good effect. Although worth noting that I believe they stopped doing conferences and lightened up on blogging considerably in the past few years.

</comment></comment></comment><comment><USER13> Wait a minute... This "isn't work":

> Having coffee with investors - This can be confusing, because sometimes you > need to meet with investors. If you're gearing up to raise money or need > specific advice, this is work. Most of the time, though, this isn't work

But this is:

> Writing updates for your investors and meeting with them one on one - I've > written about investor updates. These relationships are important, and can > be incredibly helpful as you grow. Maintain them.

Notice the "meeting with them one on one" in the last quote. Wouldn't having coffee with them qualify as meeting with them one on one and "maintaining" the relationship?

<comment><AUTHOR> I believe the first point is referring to investors who haven't put money into your company. If you aren't currently raising money, you shouldn't waste your time talking to investors. Raising money is a long process, and can't be done part time. Some might argue that meeting for coffee can help build a relationship with an investor, which would result in making raising easier in the future. However, if your company is worth investing in, these relationships shouldn't matter when it comes time to raise.

The second point is referring to your company's current investors. A monthly update let's those who have a vested interest know where you're at currently, and what you may need help with. Investors should be doing everything they can to help a company. That's why this relationship is important.

<comment><USER13> > If you're gearing up to raise money or _need specific advice_

(emphasis mine)

That part makes it seem like they are talking about _current_ investors. How many random investors (that are not currently vested in your company) meet you for coffee and give you specific advice? Maybe this is just a Valley-specific thing?

</comment></comment></comment><comment><USER14> Here I was thinking this was going to be a blog post advocating a work-life balance...

<comment><USER15> Ha! Me too. Then I saw "Co-founded Tutorspree. Partner at Y Combinator.", and realized it was going to be the opposite.

<comment><USER11> Why? I actually think I have a pretty good work-life balance, though admittedly I've had times where that wasn't true.

<comment><USER15> You're a partner at Y Combinator, I'm sure you have a great work-life balance.

But, being a partner at Y Combinator, it's in your interest for the founders of the companies you're invested in (especially the newbies who would need this advice) to not have a very great work-life balance, and that's who your article was targeted to.

Maybe I read too much into it, but some of the points are so obviously not work that I have a hard time believing anybody would think they are. It made the whole article come off as, "You shouldn't be screwing around, you should be toiling away at your startup."

<comment><USER11> I think you're bringing a lot of false assumptions into your argument.

It's definitely not in my interest for the founders I've invested in to have bad work-life balances. It's not in my interest because I like them and care about them as humans.

Even if you were to assume that I was motivated exclusively by profit (which I'm not), then it would still be in my best interest to help founders find good balances. In that world, I wouldn't want them burning out, which is what happens when there's no balance.

I've seen founders and friends do everything on this list and call it/justify it as work. That's why I wrote the piece.

</comment></comment></comment></comment></comment><comment><USER16> > Things that look like work but aren't: > Writing blog posts about running > startups

Anyone else see the hypocrisy here?

</comment><comment><USER17> Talking about work != Work

<comment><USER4> Depends.

If your partner asks you how work went and you answer, it's not work.

If you're out for beers "after work" with your coworkers and you end up discussing outstanding bugs, planned refactorings, or anything else that you would normally be paid to make decisions on, it most certainly is.</comment></comment>


Musk says he sent ventilators to CA hospitals, they say they got something else - <AUTHOR> https://edition.cnn.com/2020/04/17/tech/elon-musk-ventilators-california/index.html <comment><USER2> This post will be soon flagged and deleted like anything that where Musk screws up, but holy hell.

By any means use any opportunity to hype up your charity if you do it for PR, but at least don't mislead this badly.

Why the need to lie when doing charity?

</comment><comment><USER3> It turns out that BiPap machines that he sent are now being recommended more since ventilators are not producing good results for many coronavirus sufferers.

<comment><USER2> BiPap is not ventilator alternative. They are completely different type devices.

You never put anyone into ventilator until they absolutely need it. At some point oxygen or air is not helping because removing carbon dioxide becomes an issue.

Being in ventilator is super unconformable and gruesome. Catheter (endotracheal tube) is inserted into windpipe. Patients are sedated. In the case of covid-19 they are usually placed on their stomach and lay there with the help of opioids+anesthetic drugs.

</comment></comment><comment><USER4> I get really confused by the Musk ventilator thing.

He asked hospitals what they wanted, they gave him a list, he bought what was on the list and donated it.

People who aren't healthcare professionals look at those machines and say "aha, but they're not ventilators, they're bipap machines, Musk is an evil idiot".

But bipap is a type of ventilator. Here's John Hopkins: [https://www.hopkinsmedicine.org/health/treatment-tests- and-t...](https://www.hopkinsmedicine.org/health/treatment-tests-and- therapies/bipap)

> Some medical problems can make it hard for you to breathe. In these cases, > you might benefit from bilevel positive airway pressure. It is commonly > known as "BiPap" or "BPap." It is a type of ventilator—a device that helps > with breathing.

<comment><USER2> > He asked hospitals what they wanted, they gave him a list, he bought what > was on the list and donated it.

Can you comment on the "Musk says he sent ventilators to CA hospitals" part?

<comment><USER4> Musk isn't a healthcare professional and he doesn't know the language.

He asks hospitals if they want ventilators, and they give him a list of machines to buy. He buys those. He doesn't know the difference between a ventilator and BiPAP machine. He does know they're both used for ventilation, and he mistakenly calls them both ventilators.

<comment><USER2> Tesla factories are making real ventilators as we speak. He should at least have cursory knowledge of the terminology.

<comment><USER4> [https://www.hopkinsmedicine.org/health/treatment-tests- and-t...](https://www.hopkinsmedicine.org/health/treatment-tests-and- therapies/bipap)

> Some medical problems can make it hard for you to breathe. In these cases, > you might benefit from bilevel positive airway pressure. It is commonly > known as "BiPap" or "BPap." It is a type of ventilator—a device that helps > with breathing

We talk about the problems of jargon and people think that's the unexpanded acronyms or the complex Latin. But these uses of jargon are obvious and clearly visible. If you use the word agranulocytosis I know that I don't know what you mean and I ask you and we have a conversation and I learn something. The wicked jargon is the normal English word to which we apply a very specific meaning.

Here's a machine. We use it to provide mechanical ventilation. Those patients are receiving ventilation. The machine is a class of ventilator. Don't ever call it a ventilator though, because it's a BiPap machine.

Maybe Musk should be a bit more humble. It'd help his corporate comms if he just came out and said "I don't know what a vent is, but I asked hospitals what they wanted and I bought the machines they asked for".

<comment><AUTHOR> OK, so Musk the genius in all, knew that ventilators do harm so he sent these other machines in his own initiative? :)

He should learn to shut the f up, he shouldn't feel the need to jump in everything and try to suck all the air out. He has saved people from caves, solved the traffic in LA, now help beat the CoronaVirus etc etc. 1000 ventilators cost, max $25-$50 Million. He should have bought them. And yeah I think he has enough connections to get them from China.

<comment><USER4> I hate Musk, but this...

> so Musk the genius in all, knew that ventilators do harm so he sent these > other machines in his own initiative

...isn't the claim being made.

He says that he asked hospitals a list of machines to buy, and then he went and bought them. He says he bought what they asked him to buy.</comment></comment></comment></comment></comment></comment></comment>


Ask HN: Graph of Projects by License on GitHub? (MIT/BSD/GPL/etc.) - <AUTHOR> Has anyone plotted a graph of license usage over time on Github? I'd love to know for example whether GPL has gained or lost in popularity in the past five or ten years, whether MIT or BSD is more popular, and such. <comment><AUTHOR> For anyone searching on this, a couple days after I asked my question here the register published some data on this question [0]. They report copyleft licensing of open source projects fell from 60% in 2012 to 33% in 2019. The percentage of copyleft projects continues to fall the ratio appear to be leveling off towards perhaps 25% copyleft (GPL-like) and 75% permissive (MIT- like).

[0] [https://www.theregister.co.uk/2020/01/17/mit_apache_versus_g...](https://www.theregister.co.uk/2020/01/17/mit_apache_versus_gpl/)</comment>


Show HN: Journal to Music Making AI App - <AUTHOR> https://deardiary.ai <comment><AUTHOR> Check out his app we made recently as part of Google Magenta & Gray Area Music AI Hackathon. DearDiary is one of the winning apps that uses novel interaction and AI to compose music as you type. It invites you to slow down and share your thoughts in a musical way.

Feel free to ask any questions and share with others your creations :)

Listen to it here : [https://deardiary.ai/entry/SgJfq1mr1aVUp1p1w8MP](https://deardiary.ai/entry/SgJfq1mr1aVUp1p1w8MP)

</comment><comment><USER2> Hi everyone, Devin here. Stephen, Suyash, and I built Dear Diary for the Bitrate Hackathon in hopes of encouraging more people to journal. Journaling is proven to alleviate stress, depression, and anxiety. Also as a long time songwriter and music teacher myself, I love helping more people feel musical.

We used Google's Magenta tools and NLP to help users create music as they type.

Share something you built with us, and feel free to ask us any questions, cheers!

[https://deardiary.ai/entry/y94GPozBFY8Rpp3xpsjh](https://deardiary.ai/entry/y94GPozBFY8Rpp3xpsjh)

</comment><comment><USER3> [https://deardiary.ai/entry/tnsi1vzVhgth8jFdxMBk](https://deardiary.ai/entry/tnsi1vzVhgth8jFdxMBk)

I love this!!! So cool and creative.

</comment><comment><USER4> I love this idea and I like that I can share the entries/unique songs with my partner...it's the only way I'll ever be able to create something musical (that sounds good)!

</comment><comment><USER5> I like this project. The way of using character generating piano note is awesome. The graphic of tree remind me of memory.

</comment><comment><USER6> Pretty cool app! Excited to see where this goes :)</comment>


Trilium Notes: Markdown autoformat personal knowledge base - <AUTHOR> https://github.com/zadam/trilium <comment><USER2> I've been singing the praises of this app every chance I get.. it's really pretty much perfect.

* Free (beer/speech)

* Self-hostable, including the sync server, which doubles as a web-accessible version of the app (++mobile access!)

* Extensible (want UI elements that do things with your notes? Easy. Want to render graphs based on metadata you've entered? No problem. Your own metadata and tagging scheme? All built in.)

* Encryptable (built in encrypted notes function)

* Syntax highlighting for most languages you probably care about

* Exportable, no proprietary formats

* Notes can be written in markdown

* Truly cross-platform (Mac/Linux/Windows/Web)

The tiniest of gripes can be directed at things like requiring you to use a key combo to insert a link (rather than letting me, say, use some markdown and autocompleting it), but that's _minor_. This blows the Evernotes and the NValts and quite possibly even OrgMode out of the water.

<comment> Yanu-3452 My biggest gripe trying it now is the poor keyboard shortcuts in windows.

Hitting ctrl+s is a reflex and while it might not need saving, it's annoying that it redirects focus to the search.

Likewise, F2 doesn't rename, instead tries to do something difference.

If it proves useful anyway I'll try to contribute a keyboard shortcut map to be more consistent with windows or VS, it might be annoying until then however.

<comment><USER3> I think this is done specifically for Emacs users, since we're used to get incremental search once we type C + s.

</comment></comment></comment><comment><USER4> I find that an ability to search the knowledgebase exceeds the value of organizing according to a hierarchy. I can see some value in linking/backlinking à la an encyclopedic "See also" reference for discovering similar information that doesn't share keywords.

Are there other disadvantages to an "all search" solution I'm overlooking?

<comment><USER5> We went for search with Emvi [1]. There are people who like hierarchy, but I think if you don't know what you're looking for you won't find it in a structure anyway. Except everyone on the team or you personally put a lot of thought into it. A hierarchy does not scale well. We tried to make the search as powerful as possible. With filters that can be combined to filter the result set, but I mostly use the textsearch as it is good enough.

Im still thinking about how we could add "explorability". Sometimes you just want to click around a bit and explore what's there without any real goal in mind. Let me know if you have an idea on how the system could support that.

We are rebuilding the UI right now to put an even stronger focus on search. You can read about it here [2] if you like.

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

[2] [https://emvi.com/blog/a-new-experimental-user-interface- QMZg...](https://emvi.com/blog/a-new-experimental-user-interface-QMZgmZG1L5)

<comment><USER6> > A hierarchy does not scale well. We tried to make the search as powerful as > possible. With filters that can be combined to filter the result set, but I > mostly use the textsearch as it is good enough.

Does it support dynamic hierachies? A Hierachy where each level is the result of a search/filter on the parent-level?

<comment><USER5> Hm I haven't heard of this term before but it sounds like it. The filters are additive, which means you reduce the result further by adding more filters. You can for example filter for a tag, add a group to filter for authors and then search through the remaining articles by text search.

I haven't found this feature to be that useful all the time, depending on the amount of articles you have. This is why it won't be in the new UI on day one (but will be re-implemented later, the backend is still there). You can find almost anything by using a few keywords, which is how I navigate Emvi right now.

[Edit] We have the plan to add configurable dashboard filters, which use the filters to show a subset of all articles, tags, members, groups and lists you like. I guess that's closer to what you described.

</comment></comment></comment></comment><comment><USER7> I've tried more than a couple of times to use a personal knowledge base and haven't been succesful in making it stick.

My process so far has been I keep a daily journal where I write down the most interesting things I learnt or did everyday. If my daily notes are getting unwieldy then I use a Markdown file which I sync on Github. And when I really want to make sure that I've understood something I'll either write a blogpost or stream myself going through a library.

I would definitely appreciate the ability to search my old notes better since they got too long to efficiently parse a long time ago but this process lets me structure the really important concepts I learn without adding too much overhead when I'm just learning random stuff. I also expect my notes to outlast many knowledge base projects and part of the appeal of markdown to me is that it's probably gonna be around for a while.

I'm curious if any writers here have found personal knowledge bases to be worth the initial overhead.

<comment><USER8> > My process so far has been I keep a daily journal where I write down the > most interesting things I learnt or did everyday

Trilium should work great for this, you can press ctrl + alt + p to automatically create a new day note under a calendar tree.

In my case, I also added a custom shortcut/button that brings me to the current day in the calendar tree

</comment></comment><comment><USER9> I have installed trillium twice before, when trying to find a better alternative to a bunch of google docs, but didn't end up using it. The reason is that you cannot readily share an editable copy of a document with a link, which ends up happening with half the documents I write in Google docs. If that was an option, I think it'd be preferable to Google docs in every way (for me).

<comment><USER10> This makes me wonder if there is feasibility for P2P collaborative editing feature in trillium.

<comment><USER11> It is actually explicitly a non-feature: [https://github.com/zadam/trilium/wiki/FAQ#multi-user- support](https://github.com/zadam/trilium/wiki/FAQ#multi-user-support)

</comment></comment></comment><comment><USER12> Previous discussion (but worth discussing again): [https://news.ycombinator.com/item?id=18840990](https://news.ycombinator.com/item?id=18840990)

<comment><USER13> I think this is more in reference to yesterday's discussion about Obsidian...

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

There have been a few knowledge base/markdown discussions lately.

<comment><USER14> I wonder whether it is a result of coronavirus and lockdowns, spring cleaning, or the popularity of roam (or all of the above).

</comment></comment></comment><comment><USER15> Latex status:

[https://github.com/zadam/trilium/issues/287](https://github.com/zadam/trilium/issues/287)

</comment><comment><USER16> Can anyone compare this to Obsidian that was released into beta recently?

<comment><USER17> I've tried Trilium in the past, and tried Obsidian this week. I fell in love with Obsidian instantly (even though there are a couple of key things missing [1]). This is entirely subjective, but the UI of Trilium actually gives me anxiety - I want my note-taking, knowledgebase to be a zero-friction thing of calm. Obsidian definitely is, I spent two minutes customising keyboard shortcuts to closer match Sublime Text where I spend most of my day and I was up and running, and in the flow when writing documentation. Trilium is the exact opposite of that. It's information overload. It reminds me of MS Word with all the toolbars open. Some people like that, but if you like a calm, focussed place to write or read documentation or notes, I'd go with Obsidian.

[1] For me Obsidian is currently missing anchor linking to headers within a document (which I know is on the roadmap), and scroll past end of document, as I hate my carat being anchored to the bottom of the screen when writing. Despite those things being missing, I'd paid the personal license within about an hour of trying it and if it turns out to be useful across a team I'll pay the commercial license for it too.

<comment><USER14> +1 re: information overload.

I've been testing a bunch of them lately, and Zettlr (FOSS) has a nice and minimalist thing going on too. I liked Obsidian too, especially the network graph, but the licensing discussions in the other thread yesterday are a bit of a concern, but the dev erica seemed fairly open, so I'm keeping an eye out on how that goes.

<comment><AUTHOR> There are a few things to address the default overload.

\- There is a "writing mode" \- You can hide the sidebars or portions of the sidebars.

</comment></comment></comment></comment><comment><USER18> This looks pretty amazing, and something I have hoped would exist.

I wonder if it would make any sense to add Jupyter Notebook kind of functionality to these kinds of notes. It feels like super cool idea, but it may be too big feature to be realistic.

</comment><comment><AUTHOR> I have been using Trilium lately and I love it. What sold me completely is the sidebar sections "What Links Here" \- my purposeful linking and "Similar Notes" \- reminding me of what I may have forgotten.

<comment><AUTHOR> Also the fact that I can completely self host it on a server while running a local client on any machine that syncs effortlessly.

</comment></comment><comment><USER11> Author here, if you want to ask anything ...

<comment><USER19> Well, my questions are pretty basic but since you offered :) 1\. In text note I make a code block and I do not know how to 'exit it'. How can I 'finish' it and make another paragraph? 2\. Is there a shortcut to insert a checkbox (like Evernote does with Ctrl+Shift+C 3\. Is there a way to change the font? I like Mono fonts for notes. 4\. Can I reduce the margin between paragraphs in text notes?

Thats all for now, thanks.

<comment><USER11> Hi, sorry for being late:

1\. Code block is exited by double enter (so two new lines)

2\. No shortcut for the checkbox unfortunately

3\. Only Themes can change the fonts - see e.g. "Steel Blue" in the demo document to see how it's done. [https://github.com/zadam/trilium/wiki/Themes](https://github.com/zadam/trilium/wiki/Themes)

4\. You could use custom CSS to change it however I can't recommend this: [https://github.com/zadam/trilium/wiki/Themes#custom- css](https://github.com/zadam/trilium/wiki/Themes#custom-css)

</comment></comment></comment><comment><USER20> Interesting! Tiddlywiki with all of it's plugins, tags, search amd markdown support is still preferable to me. It is even more crossplatform as it works locally in my Quest as well (termux webdav rb script)

<comment><USER21> What is your current setup?

I quite happily and successfully used MPTW to manage work knowledge, tasks, and context for 2 years. Between leaving the related job and the odious save workarounds for pre-TW5 wikis, I stopped using it. I've made multiple multi- hour attempts to find a workable TW5 configuration, with both the TW5 legacy plugin and searching for replacement plugins.

<comment><USER22> Not sure if you have run across NoteSelf ([https://noteself.org/](https://noteself.org/)) before, but it is basically TiddlyWiki + PouchDb. Maybe that would be a workable solution for you?

</comment></comment></comment><comment><USER23> Will give this a shot. Looks like a modern alternative to CherryTree. I find these hierarchical note taking apps useful for organising complex projects which usually require several levels deep of note organisation. I also use Joplin for general note taking and Google Keep for website resources. I'm set.

<comment><USER24> Website resources?

<comment><USER23> What I meant by "Website Resources" is a collection of website links I want to keep note of.

Also, Sorry for not linking apps I mentioned.

CherryTree - A hierarchical note taking application, featuring rich text and syntax highlighting, storing data in a single xml or sqlite file.

[https://www.giuspen.com/cherrytree/](https://www.giuspen.com/cherrytree/)

\--

Joplin - An open source note taking and to-do application with synchronisation capabilities

[https://joplinapp.org/](https://joplinapp.org/)

\--

Google Keep - a web-based note-taking service developed by Google.

[https://keep.google.com/](https://keep.google.com/)

\--

Extras which may interest you:

Zim - A Desktop Wiki - [https://zim-wiki.org/](https://zim-wiki.org/)

TreeSheets - Open Source, Free Form Data Organizer (Hierarchical Spreadsheet) - [http://strlen.com/treesheets/](http://strlen.com/treesheets/)

<comment><USER24> Hey! Thanks for the reply, by the way. Checking out the links, too!

</comment></comment></comment></comment><comment><USER25> Been using Boostnote for the last few years. Boostnote's great, but it doesn't have note nesting / trees, so I figured I'd give Trilium a shot.

Downloaded Trilium, tried to type in a standard GFM Markdown fenced code block with a language identifier for syntax highlighting, and it kept converting it to a "Plain Text" block as soon as I typed the third backtick, making it unusable.

That's a hard blocker for me. I write Markdown all the time, and I don't want a pseudo-WYSIWYG editor mangling the Markdown I'm writing as I type it. I also need to be able to add code blocks, with highlighting, at any point in the middle of the notes I'm writing.

</comment><comment><USER26> Is anyone reminded by this as kind of a smalltalk image?

I mean an environment that is self contained and can be modified?

I wished the authors would think of aspects like that: how to modify the system without restarting it or needing separate tools.

Sure it looks nice but in the end its a browser with some javascript libs glued together with sqllite or something?

Customization seems way to difficult , so the tool can do a bit of tiny things that seem nice for me but so many things that I don't need. The GUI seems very bloated for me.

Is this just me? Or are people generally happy with such GUIs?

<comment><USER8> I'm very happy with this program, the GUI isn't the most elegant but it does the job.

I don't think I'd describe the GUI as 'bloated' though... it's actually pretty minimal. I think the screenshot on the github page makes it look busier than it really is (e.g. the sidebar can be hidden, and you'd usually be using it with a larger window size).

I find the program to be very powerful out of the box, so I haven't had to customize much (the customization is just icing on the cake IMO).

I use this program every day at work as my personal knowledgebase for my technical support notes (and also for taking notes on phone calls). I have thousands of notes and this program handles it much better than anything else I've tried. The powerful tree structure, fast search, and tagging system make it really easy for me to quickly find what I'm looking for.

</comment></comment><comment><USER27> While this is clearly aimed at personal use, I wonder if it could be extended to serve as a lab notebook for a small research group.

Storing time-stamped, signed Markdown notes with version control and with some hierarchy (daily notes, brainstorm ideas, versioned lab protocols etc.) would be great.

Right now I use on site GitLab & private GitHub repo, but for the not computer savvy users this seems to be too much. Ability to add images to documents using menus/mouse is crucial.

<comment><USER28> As referenced above [1] multi-user is a non-feature so I wouldn't expect development on that any time soon.

Not sure how good Obsidian [2] is, multi-user support seems to be in dev as well but it might work on a shared drive folder. Also doens't seem to be free/libre.

[1] [https://news.ycombinator.com/item?id=23347168](https://news.ycombinator.com/item?id=23347168) [2] [https://obsidian.md/](https://obsidian.md/)

</comment></comment><comment><USER29> oh my god this looks awesome... i had been using boostnotes, but this looks lightyears ahead.

</comment><comment><USER9> I have installed trillium twice before, when trying to find a better alternative to a bunch of google docs, but didn't end up using it. The reason is that you cannot readily share an editable copy of a document with a link, which ends up happening with half the documents I write in Google docs. If that was an option, I think it'd be preferable to Google docs in every way (for me).

</comment><comment><USER30> I would love to explore someone else's library of notes. I really don't know how to take effective notes. When I start reading a new book I try to take notes but always end up just reading. The problem is that months after I can't remember much.

<comment><USER14> Look up Andrew Matushchak's entry on evergreen notes [1].

[1] [https://notes.andymatuschak.org/z4SDCZQeRo4xFEQ8H4qrSqd68ucp...](https://notes.andymatuschak.org/z4SDCZQeRo4xFEQ8H4qrSqd68ucpgE6LU155C)

<comment><USER30> Thanks, that's really interesting

</comment></comment></comment><comment><USER31> Another hierarchical note-taking tool slash knowledge base, though a bit more limited/opinionated and proprietary, is [https://roamresearch.com/](https://roamresearch.com/).

</comment><comment><USER32> Looks like Obsidian.md

Currently, I use a lot of Notion. Easy to share and collaborate.

</comment><comment><USER33> Looks great.

I couldn't use anything tho, that has no export as single portable format (PDF, Word, whatever) of complete stuff.

<comment><USER34> Seems to have an export to a tarfile of markdown docs with a folder structure matching the tree.

</comment></comment><comment><USER35> I wonder how important keeping data local versus in the cloud is for users? Does encryption affect that?</comment>


Covid-19 was not manmade or genetically modified (Intelligence Community) - <AUTHOR> https://www.dni.gov/index.php/newsroom/press-releases/item/2112-intelligence-community-statement-on-origins-of-covid-19 <comment><USER2> Actual title is: Intelligence Community Statement on Origins of COVID-19

In any case, the conclusion seems likely, as a guess, but this is impossible to determine for certain. A virus is ultimately just a genetic sequence--they don't come with the signature of the author or a version history.

Furthermore, not being man-made or genetically modified is not the same as not being accidentally released from a lab (one perhaps doing rather dangerous experimentation).

<comment><USER3> This people never would lie to US, would they?

</comment></comment><comment><USER4> I've seen this reported and passed around as though it's news - wasn't it clear that it's not manmade?

The most important theory (outside zoonosis from the wet market, which has evidence against it) seems to be whether it was an accidental lab release. Judging by Chinese actions, this seems like a plausible explanation. They reacted very strongly around the labs during the outbreak, suggesting there could have been issues there.

Considering there were state dept. cables about the safety of the lab, it's not a crazy idea at all.

[https://www.washingtonpost.com/opinions/2020/04/14/state- dep...](https://www.washingtonpost.com/opinions/2020/04/14/state-department- cables-warned-safety-issues-wuhan-lab-studying-bat-coronaviruses/)

<comment><USER5> If the conspiracy theories are orchestrated, then the obvious meta-conspiracy- theory would be that the source of the conspiracy theories released the virus in the market, while it was found or developed elsewhere.

And I don't mean the CIA. Someone who doesn't like China, or the US, and is good at propaganda and public opinion manipulation.

</comment></comment><comment><USER6> I wonder during the decline of the Roman Republic or Empire if people also gravitated more towards superstitions, cults, conspiracy theories, and other forms of magical thinking.

<comment><USER7> They did - there were a lot of mystery religions and cults that sprung up throughout the later parts of the empire. It's more obvious though in the days of the last Romanovs, or the late Weimar republic. As official life becomes more opaque, corrupt and secretive, people tend to internalize this as their model for understanding the world.

</comment></comment><comment><USER8> Does "man-made" include "man-altered"?

Serious question, not trying to start a geopolitical war.

The reason I ask is that it seems somewhat trivial for a well funded organization to runs generations of a germ through multiple hosts. A (bad) analogy would be like Gregor Mendel and cross breeding plants.

Im not a biologist, hence the question. (Although I did cross-breed a hot pepper with a bell pepper when I was a kid, but that was by accident!)

</comment><comment><USER9> If the intelligence community thought it was man made I really doubt they would announce it to the general public.

</comment><comment><USER10> Is there greater depth explained on their scientific findings?</comment>


[Python-ideas] List Revolution - <AUTHOR> http://mail.python.org/pipermail/python-ideas/2011-September/011448.html

<comment><USER2> Guido admits this is a joke later in the thread:

 _(And to those taking the thread seriously: this is all in jest. We won't change the indexing base. The idea is so preposterous that the only kind of response possible is to laugh with it.)

\--Guido_

[http://mail.python.org/pipermail/python- ideas/2011-September...](http://mail.python.org/pipermail/python- ideas/2011-September/011462.html)

</comment><comment><USER3> Roberto Ierusalimschy has an interesting perspective on the zero vs. one concept:

"Because _people_ count from one, not zero.

We do that in kindergarten, in music, when starting a race, when drawing up an agenda, everywhere. One, two, three, etc have their counterparts in every known language on earth.

Zero, on the other hand, is an advanced concept. Humanity could prove that sqrt(2) is not a rational number centuries before anybody thought that a symbol for zero might be useful.

A harder question would be "why do arrays in some other languages count from zero not one?" The answer for C is a good one: "so that * (A+k) and A[k] mean the same". For Python, the answer seems to be "because it's that way in C"."

And:

"Currently, many languages are 0-based due to influence from C. Ironically, none of them share the reason that made C 0-based (where a[e] means * (a+e))."

(EDIT: I had to add spaces after the stars to prevent HN from italicizing a huge block of text.

<comment><USER4> Meanwhile, some people do count up from zero. At least in numbering floors in a building. I know in Europe and other parts of the world the ground floor is the zeroth floor, and it goes up from there.

<comment><USER5> Numerically, yes, but nobody calls it a "zeroth" floor. Rather, its "ground", "first", "second" (or G, 1, 2, 3...) so while ground is equivalent to zero, nobody actually says (or thinks) zero. At least, nowhere I've been.

<comment><USER6> So let's just call it the "ground" index.

      G = ground = 0;
      A[G], A[1], A[2], ...

</comment></comment></comment></comment><comment><USER7> The Dijkstra transcript referred to a bit deeper in the thread about why sequence numbering starts at zero is a tangentially interesting read: [http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EW...](http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html)

<comment><USER8> I specifically paged through the read to make sure that link had been given, and then came to this comment page to do the same thing.

Few people seem to know that we have real and valid _reasons_ for indexing from 0 instead of 1.

<comment><USER9> Apologies if this appears dumb. After going through the link I still could not understand why is it ok to exclude the upper bound while including the lower bound? Is it because the lower bound is fixed as 0 is the smallest natural number? Or is there some other reason.

<comment><USER10> Dijkstra explains it pretty clearly - there are two main reasons.

The first is so that the number of elements in the array/list/vector/collection is given by upper-lower.

The second is so that successive intervals re-use the same number, the upper bound of one becoming the lower bound of the next.

This is python we can have:

        L[:3], L[3:6], L[6:23], L[23:40], L[40:]

With the repeated numbers we know that all elements of L have been included. Further, we know that given:

        L[start:end]

... then (provided L had at least "end" elements to start with) the resulting length is _end-start_. If you included the end point then the length would be _end-start+1_ which is fertile ground for fence-post errors.

<comment><USER11> But both of those things would be true if you include the upper bound and don't include the lower bound. I.e. if an array with bounds 0 and 4 had items in positions 1, 2, 3, and 4.

<comment><USER10> Yes, and that question is covered in the Dijkstra paper.

If you're talking about numbers from 13 onwards, it doesn't really make sense to talk about numbers greater than 12. More specifically, if you start counting from 0 then it feels (to me) more natural to include the lower bound.

If you talk about {5 .. 13} then it feels easier to say

        "From 5 up to (but not including) 13,"

rather than saying

        "From 5, er, sorry, no, from *6* up to and including 13."

There is a question of taste here, as well as background and experience. Don't expect it to be "objectively proven."

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

In the end it is all about convention, and what ends up making code cleaner, less error-prone, and more aesthetically pleasing. As I say, there are questions of taste _and_ experience. Personally I find the Dijkstra/Python method for more consistent and pleasing than the alternatives.

<comment><USER12> Another reason: Wrap-around with modular reduction is a snug fit, so it's L[i % n] rather than L[1 + i % n]. You could have taken 1, 2, ..., n or indeed any set of n integers with distinct residue classes modulo n as the representatives, but the standard choice in mathematics is 0, 1, ..., n-1 for consistency with the division theorem.

It is often very inconvenient when mathematicians number from 1 instead of 0. A classic example is with Fourier matrices. Let w be a primitive nth root of unity. Then numbering as computer scientists, starting with 0, the formula is F(i,j) = w^(i j). But using the mathematician's convention, it is F(i,j) = w^((i-1)(j-1)). The same issue exists with all Vandermonde matrices.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> Good news! You can have this right now in Perl:

      $[ = 1;

Now all of your arrays are 1-indexed!

<comment><USER14> I am truly, truly horrified that this a language option in perl, although I'm not surprised. (Well, I did google it to see if you were joking, but you weren't, apparently).

The older I get the more Larry Wall strikes me as like a really well intentioned hippy type; when in God's green earth has it been a good idea to allow a five character statement change the truth values of nearly every for loop in a body of code?

Perl always claimed it gave you enough rope to hang yourself, but this goes far, far beyond that. This is like building the scaffolding and marking it like "Young developers, play here! Ropes are fun!"

<comment><USER15> > I am truly, truly horrified that this a language option in perl, although > I'm not surprised.

How about this in C(and thousand others): #define if while

I am pretty sure I can find something to horrify you in almost any language.

<comment><USER16> Let's throw in a fun Python hack too:

        >>> import sys
        >>> import ctypes
        >>> pyint_p = ctypes.POINTER(ctypes.c_byte*sys.getsizeof(5))
        >>> five = ctypes.cast(id(5), pyint_p)
        >>> 2 + 2 == 5
        False
        >>> five.contents[five.contents[:].index(5)] = 4
        >>> 2 + 2 == 5
        True

<comment><USER17> May I ask how did you find about that? Sometime I would like to play in ctypes but I'm not sure where to start :-/

Here's a small snippet that let you add methods to built-ins:

      def inject(cls, wrapper=lambda x: x, name=None):
          def _builtin_hack(name):
              import ctypes as c

              _get_dict = c.pythonapi._PyObject_GetDictPtr
              _get_dict.restype = c.POINTER(c.py_object)
              _get_dict.argtypes = [c.py_object]

              return _get_dict(name).contents.value

          def wrap(method):
              name_ = name or method.func_name
              method = wrapper(method)

              try:
                  setattr(cls, name_, method)
              except:
                  _builtin_hack(cls)[name_] = method

          return wrap

        @inject(dict)
        def extend(self, new_dict):
            return dict(self, **new_dict)

        print {'a':2}.extend({'b':3})

<comment><USER16> ctypes is like god-mode for Python... I like your hack too. I just play around with it from time to time, I believe the only "serious" thing I've done with it so far is making a Python interface around a C library I made.

I think I discovered the hack when I found out about the id() function, and hex(id(5)) looked suspiciously like a pointer value. (And <http://docs.python.org/library/functions.html#id> confirms.) <http://docs.python.org/library/ctypes.html> has usually been pretty useful. Apart from that, just play.

</comment></comment></comment></comment></comment></comment><comment><USER18> He's joking right - I almost spit out my diet coke... (oh yeah...I'm sure THAT will accelerate my group's upgrade from 2.66....)

</comment><comment><USER19> woah.

(not to post something useless, but I'm literally speechless going back and forth between "that's so awesome" and "that's so dumb" in my head for so many different reasons)

(and at how short and quick Guido's response was, as if it was such an easy decision to make.)

<comment><USER20> I suspect you're overlooking Guido's sense of humor. He was making a joke with his acceptance of the idea.

<comment><USER19> ah ok, not that familiar with Guido, but that makes much more sense haha

edit: also found this later in the thread to confirm the humor behind everything: [http://mail.python.org/pipermail/python- ideas/2011-September...](http://mail.python.org/pipermail/python- ideas/2011-September/011454.html)

</comment></comment></comment><comment><USER21> _Well, given Guido's endorsement, I think we need to change how these +1/-1 votes work. Clearly, +1 means what +0 used to mean. So you have to say +2 to vote in favor of something and -0 to vote against. I know it will be confusing during the transition period but it will be so much easier to use when we are done._

Loved this response [http://mail.python.org/pipermail/python- ideas/2011-September...](http://mail.python.org/pipermail/python- ideas/2011-September/011454.html)

</comment><comment><USER22> First time I've laughed from a Python mailing list in a while.

</comment><comment><USER23> That is clearly a freaking insane idea in a language as widely deployed as Python...

<comment><USER24> Don't worry, it's not going in until version 4, and version 3 isn't even the most common version yet.

<comment><USER25> Is that Python 3 or Python[3]??

</comment></comment></comment><comment><USER26> I don't want to live in this planet anymore.

</comment><comment><USER27> The benevolent dictator for life has spoken!

</comment><comment><USER28> I hope it's obvious that it's a joke, but was the question serious is my concern.</comment>


Nano is again a GNU project - <AUTHOR> https://www.nano-editor.org/news.php <comment><AUTHOR> See [https://lists.gnu.org/archive/html/nano- devel/2016-08/msg000...](https://lists.gnu.org/archive/html/nano- devel/2016-08/msg00045.html) for the mailing list announcement.

</comment><comment><USER2> "With this release we return to GNU. For just a little while we dreamt we were tigers. But we are back in the herd, back to a healthy diet of fresh green free grass."

With free grass they'll have no shortage of devs but it might impact their release schedule. ;)

</comment><comment><USER3> Being able to select text with shift arrow keys is bloody marvelous.</comment>


How To Defend Your Reputation  - <AUTHOR> http://www.avc.com/a_vc/2010/03/how-to-defend-your-reputation.html

<comment><USER2> FWIW, here is my take on this from an article I published in 2005:

" _Look for success_

There is an increasing trend towards feigning offence at trivial issues in order to look like a moral hero. I'm sure only half a dozen people through the United States were actually upset about Janet Jackson showing her breasts on television, but politicians around the country reacted with outrage. Fortunately this trend will be short lived.

In Scott Adams' book The Dilbert Future there is an anecdote about why all politicians seem to be crooks. The possible reasons he gives are

1\. Crooks are the only ones who run for office

2\. Politics turns people into criminals

3\. All politicians are being framed

4\. Every person on Earth is a crook, but only the only people we check out carefully are politicians

There is no reason to believe the first three are correct, so probably the best explanation for this phenomenon is reason four. Now clearly not everyone is really a crook, but it is true that we have all done both good and bad. The problem is that a scatter shot of everything that each person in the translucent generation has ever done is available online through a quick Google search. This is a great tool to find out if a potential employee has committed a felony. The problem is how should one react when reading logs of that person's online chats from when they were ten?

No matter how stupid, racist, offensive, or pathetic ones comments were as a ten year old it is unlikely that they would have a statistical correlation with job performance at age thirty. When everyone has dirt on everyone else, it won't be about the number of failures, it will be about—within reason—the number of successes. Instead of being judged on your gravitas, you will be judged on your ability to act appropriately in any given context."

If I were to rewrite it today, I think I would add that reputation is more important today than in any other point in history, but that what constitutes good and bad karma is rapidly changing.

<comment><USER3> Scott Adam's syllogistic analysis is only true if his items form an exhaustive set of possibilities. One thing time does tell us about human nature is that it is easy to overlook causes for other's behavior.

In this case, as an advocate of Objectivism, I would like to point out two things. First, the definition of "crook" seems to vary widely: some people would like to call former Pres. Clinton a crook because he had an affair. In my book, an affair may be immoral, but it should not be illegal. Second, if the 'game' in politics, as it seems to be today, is not protection of rights but allocation of loot, who do you attract? People who like to dictate allocations, not people who like to create more pie.

</comment></comment><comment><USER4> The post seems mistitled. It is not a set of instructions on how to defend your reputation. Rather, it is a single example of someone actively defending their reputation online. That is, the only real content in the post is an example of someone attacking the author (their are no details about the attacker other than as "someone with an axe to grind"), and someone else coming to the defense of the author, implying that his reputation is so solid only people with poorly defined axes to grind would attack it.

Which is not to say anything bad about the author. I would probably try to defend my reputation if someone were attacking it, as well, but I would not have the wherewithal to be nearly so effective at it.

<comment><USER5> It's certainly not the clearest post the man has ever made but I think there are some lessons to be learned from the meta-content of it all.

To my eyes there are two lessons here...

1\. If you treat people fairly and truly have a good reputation in a community that will do more to defend your reputation than anything else. Because people will stand up for you.

2\. If you are a person who has been treated fairly by someone else you should start thinking of it as your duty to defend them against attacks. Because in a world where an anonymous person can ruin someone's reputation it's up to all of us to protect each other against such attacks.

Again he wasn't very clear and I have no inside information but those seemed to be the clear lessons (at least IMHO)

<comment><USER6> Maybe it's just because I haven't had any coffee today, but I failed to pick up on this to the depth you have, so thank you for bringing it to the surface. I think the original post should point to or incorporate this.

<comment><USER7> Disqus should pull in the reactions. Unfortunately I don't think they give the blog author tools to highlight select favorites, or to weight them by community votes

</comment></comment></comment></comment><comment><USER8> Interesting, mostly because I have no idea who avc is but I do remember fnid2 as someone who really annoyed me at one time or another.

I think we have better memories for people who piss us off than for those we respect ^-^

<comment><USER9> Ironically, your post bad mouths fnid2 without justification the same way fnid2's post does to Fred Wilson.

There's some deep commentary about online discussions in there somewhere.

</comment></comment><comment><USER10> > This person fnid2 has an axe to grind about me and has been doing it > frequently at Hacker News.

I don't think it's you specifically. He grinds the same axe about most people who make money, are involved with finance, and capitalism in general. Tends to think building significant amounts of wealth is "irrationally selfish", and that we could collaborate instead of compete because there's enough to go around. Smart guy in most ways, but a bit of an idealist and not up to date on the historical record of ownership-by-everyone vs. individual, private ownership.

<comment><USER11> A lot of people think there is a fixed amount of wealth, so if your slice of the pie is larger than theirs you are being greedy and taking from the them. I don't know why incorrect ideas like this one persist, but it seems to keep coming back again and again.</comment></comment>


Another Victim of the Magecart Assault Emerges: Newegg - <AUTHOR> https://www.riskiq.com/blog/labs/magecart-newegg/ <comment><USER2> How did the attackers get the JS onto the cart page? That's the interesting part to me that the article leaves out. They managed to break into a PCI- compliant website that presumably has significant defenses and auditing in place.

<comment><USER3> Unfortunately, PCI does not put very many restrictions on the parent website. If credit card elements are in an iFrame, the parent site is excluded from most requirements because the iFrame is "secure."

Of course, if you own the parent site you can replace the iFrame with anything you want.

<comment><USER4> I'm still confused as to how they could insert code here.

Are we talking about a server intrustion where they modified the actual cart code, or something between Newegg and the payment servers? (Sorry this isn't my domain, I'm just curious)

<comment><USER5> It looks to me like a server intrusion where they modified static files kept on a webserver (like apache or nginx). But it also seems like we don't have enough evidence to know for sure. (Edit: or they might have been static files kept on a CMS.)

</comment></comment></comment></comment><comment><USER6> Lovely. I made a purchase recently with NewEgg but at least it was with a previously stored credit card so hopefully I'm not impacted by this.

However, I am disappointed that NewEgg hasn't made any sort of official announcement yet.

<comment><USER6> Replying to myself. I use uMatrix and it just occurred to me that it would have blocked any communication attempts to neweggstats.com from newegg.com.... so yay?

<comment><USER7> I noticed this too; uMaxtrix should catch this entire class of attack. Privacy Badger probably wouldn't - it watches for this sort of export, but its three- strikes rule targets trackers and misses unique attacks. Killing JS outright would do the trick also, but it looks like it would also have broken Newegg's checkout page.

Looks like yet another point for "treat web browsing as adversarial". The price of allowing pages to load freely isn't just high weight, trackers, and ads - all too frequently it's actual security failures. I understand that ad/tracker blocking is a problem for keeping sites profitable, but I can't really imagine bending on that issue as long as monetization techniques and threat vectors overlap so heavily.

</comment></comment></comment><comment><USER8> This breach has reminded me of this pretty great article: [https://hackernoon.com/im-harvesting-credit-card-numbers- and...](https://hackernoon.com/im-harvesting-credit-card-numbers-and- passwords-from-your-site-here-s-how-9a8cb347c5b5)

</comment><comment><USER9> They are just now (around 11:10 CDT 9/19) sending out notification emails to customers. At the moment they don't even seem to know what accounts were affected.

</comment><comment><USER10> I am surprised that there is no automated alert to tell the webmaster that his code has changed on his website. Especially on the payments page!

With 50,000,000 users a month, surely they have a whole team working on checkout, all the time?

<comment><USER11> Do you have such automated alerts set up yourself? Do you know anyone with such alerts set up?

<comment><USER12> I do.

I have a tiny $5 Onion Omega2 on an independent cellular connection that checks file integrity on the production web servers every 15 minutes.

If the content of any of the files change, I get an e-mail.

If the alerts start coming in when I know I've just pushed a new version to production, the mail has a link that I can click that will re-scan all of the files and build new checksums.

If the alerts start coming in in the middle of the night, then I know something is up.

Obviously, this only works in small environments like mine where I'm the only one capable of updating the production servers. But it managed to catch a backdoor left in by the previous developer, who for some reason stored and updated his resume on the production server.

<comment><USER13> Ingenious, Have you considered a blog post on this approach?

It would be interesting to deploy a few of them in different places and check that they all see the same as well maybe.

Also did you do this as a belts and braces thing or is the system you are auditing particularly high security/risk in some way?

<comment><USER14> You can just set up Tripwire to do this sort of thing. It's in most distro package managers.

[https://github.com/Tripwire/tripwire-open-source/#open- sourc...](https://github.com/Tripwire/tripwire-open-source/#open-source- tripwire)

What that won't do is save you from malicious code inserted into 3rd party content (script libraries, etc.) that you load from a CDN. If you're worried about that, you should make a copy of a verified version and serve it yourself.

<comment><USER12> _You can just set up Tripwire to do this sort of thing_

I wanted something that was completely independent of the machine. Separate box, separate network, separate architecture, etc...

 _What that won 't do is save you from malicious code inserted into 3rd party content (script libraries, etc.) that you load from a CDN. If you're worried about that, you should make a copy of a verified version and serve it yourself._

I don't CDN on work projects. It's not worth the risk. If something goes wrong, I'd rather it be my fault and something I can understand and fix, whenever possible. Farming stuff out just leads to layers of things that can break, be compromised, or simply go wrong.

Again, it works at my scale (about 15 sites). It won't work for everyone.

</comment></comment></comment></comment></comment></comment><comment><USER15> For a website with so many visitors and transactions, I'm surprised this API call never threw enough errors for them to see in logging. I will admit that JS logging can be messy because of all the different environments but after some time I would have hoped this would have been caught.

</comment><comment><USER16> So how come is Comodo selling certificates to domain squatters? This seems to be one sore point here.

<comment><USER14> They (the attackers) owned the domain. What more is Comodo supposed to do? LetsEncrypt would have done the same thing.

</comment></comment><comment><USER17> I had a conversation two days ago with the CTO of a very large company you've definitely heard of who said "we don't need to worry about our website security, we have a firewall and SSL"

I think these types of attacks are vastly underreported, if anything.

</comment><comment><USER18> Wow, I also made a purchase within that time window. Except, I used PayPal during Checkout.

</comment><comment><USER19> Damn. I made a purchase in that time period. I rarely buy anything from them, but it had to happen in that interval!

I paid with Paypal. I assume I'm not affected?

<comment><USER20> Given the way the code works, I don't see how you could be affected if your transaction went through PayPal (ie you didn't enter any payment information, such as a credit card).

<comment><USER19> I did eventually pay with Paypal. However, I do know that at some point in the last few months, I attempted to make a transaction on some web site and had issues. It was either:

1\. I tried to pay with Paypal and failed. Paid with CC instead.

2\. I tried to pay with my CC and failed. Paid with Paypal instead.

I don't remember for which site this happened, but the paranoid part of me is wondering if it may have been Newegg and item 2 above.

</comment></comment></comment><comment><USER21> This all could have been prevented if they had a Content Security Policy.

<comment><USER22> Presumably, if the attacker has write access to the source files, they also have the power to change the CSP headers.</comment></comment>


The Original Google Computer Storage - <AUTHOR> http://infolab.stanford.edu/pub/voy/museum/pictures/display/0-4-Google.htm <comment><USER2> That must be where they got the colour scheme from.</comment>


An Old Article I Wrote: "What To Know Before Debating Type Systems" - <AUTHOR> http://cdsmith.wordpress.com/2011/01/09/an-old-article-i-wrote/ <comment><USER2> Everyone saying that there's no real definition of strong and weak typing always confuses me. In my view, strong typing prohibits implicit conversion between types, and weak typing allows it.

This is, of course, a scale - for instance, Python, generally viewed as a strongly-typed language, allows you to say something like

      foo = 'lolsomestring'
      if foo:
          [code]

where a string is implicitly converted to a boolean (as opposed to using bool()). However, an exception is thrown when attempting to add 5 and "5", where a language like PHP will happily provide an integer result.

<comment><USER3> > In my view, strong typing [means such-and-such].

In your view, it means this. In someone else's view, it means something else. Unlike "static", "dynamic", "explicit", "implicit", "structural", even "duck", all of which people more-or-less agree about (well, sort of), there's this problem with the definition of the "strong" or "weak" typing.

1) If you use them in conversation without a definition, there's a very high chance that they mean something different to the listener. (Unless of course it's a listener with whom you've already had this conversation.) 2) If you stop to define them, the whole conversation gets derailed to argue about the definitions.

That is why people say these words "have nearly no meaning at all". Does that help your confusion?

So, if you want to communicate about type systems, your communication will contain less misunderstanding if you simply omit the words "strong" and "weak". And for myself (although this may be too snotty a move for you), if someone else uses them, I refuse to hear them, and ask them to use different words and define those words.

My experience, in practice, is that when people say "strong" and "weak", I do indeed find that as cdsmith says, "strong" mostly corresponds to "it makes me comfortable".

<comment><USER4> > My experience, in practice, is that when people say "strong" and "weak", I > do indeed find that as cdsmith says, "strong" mostly corresponds to "it > makes me comfortable".

But even people who are very comfortable in C, do not say that C is strongly- typed.

In my experience, people agree on _which_ languages are strongly- or weakly- typed, and that can be used to reverse-engineer the definition, based on the properties those languages differ on. Assembly, C, and PHP are all weakly- typed, at the very least, and their proponents agree with this. They don't agree on _why_ they are weakly-typed, simply that they are.

The original definition I ever heard for weak-typing, back when C and Assembler were the only things that had it, was "a weakly-typed language allows you to take the _raw, in-memory representation_ of data of type A, and perform operations on it as if it were data of type B that had an equal _raw, in-memory representation_." The most famous example of this is Quake's fast invsqrt(), where the bytes making up a float have int operations applied to them, as if they were bytes making up an int.

Of course, PHP doesn't have this capability, but we still call it weakly- typed. So the definition must have moved on from its previous strict form. What does PHP allow you to do, that gets it called weakly-typed? This:

        echo "(" + 5 + ")"; # prints "5"!

PHP, here, is taking the Strings "(" and ")" and interpreting them as numbers for the purposes of the addition operator. However, the strings "(" and ")" are not _valid_ numbers—but PHP is fine with this, and uses the default numeric value of 0 to represent this invalidity.

The similarity with the original definition, is that the data is transformed from one type to another, not _implicitly_ , and not that the _raw_ representation of the data is used, but rather _without a guarantee that the datatypes have the same capacity for informational entropy_. In other words, casting "(" to a number _silently loses data_ , just as storing an _int_ in a _char_ variable in C silently loses data. This fact seems to be universal to all languages that get called "weakly-typed", and non-existent in any language that has never had that epithet applied to it.

It has nothing to do, notice, with whether a language will implicitly cast values—as long as all implicit conversions happen _upward_ to types that have "room" for all the information in the original representation (char -> int, int -> String, int -> float) the language is still strongly-typed. And notice that the datatype _itself_ being lost in a typecast (String -> Object) cannot be a reason to call a language weakly-typed because, in an interface-like cast like this, all the _data_ is still retained, and its original form can be reclaimed simply by casting it back (Object -> String).

<comment><AUTHOR> I like your style but your definition doesn't hold — there's plenty of implicit downcasts that are still 'strong', like boolean tests on data bigger than 1 bit or gt/lt comparisons between different numeric types — a type system that allows those is totally sound.

It's not your fault though, the problem is really just that 'strong' and 'weak' are just fundamentally _unsound_ nomenclature.

<comment><USER4> > The problem is really just that 'strong' and 'weak' are just fundamentally > unsound nomenclature.

As I said, we all know, and agree upon, which languages _are_ "strong" or "weak", whatever those terms mean. Thus, the two words really do partition the world in some way; they do real Bayesian work. We just have to figure out what that work _is_.

> there's plenty of implicit downcasts that are still 'strong', like boolean > tests on data bigger than 1 bit or gt/lt comparisons between different > numeric types

Notice, above, that I said that explicitness _isn't_ a part of the definition, as much as people like to think it is. In fact, it could be completely explicit at all times that you're casting (int)s to (char)s—and that would still be weak typing. The real property a type-system has that tells you that it is "weak" is that it allows casts between types that _do not have valid surjections_. "(" has no number it maps to—and yet the type system pretends it does. IEEE754 Infinity has no integer it maps to—and yet the type system says that's alright. (Note that in this special case, the _hardware_ notices this loss of information, and sets a hardware exception flag.)

Operations retain strong-typing if they have _well-defined one-way transformational characteristics_ , such as when casting (int) to (bool) using C's "!= 0" branching-requirement. "x % 6" compresses the field of integers into a set of six elements—but it does this in a way which maps every x to a valid new value on the "x % 6" ring. However, Infinity _does not_ have a valid (int) representation—any value the computer does choose to represent it with will be "wrong."

To sum up: if, in your language runtime, there exists at least one type- transformation-implementation that goes like this:

        try
          a_entropy = f( a )
          B.construct( a_entropy )
        catch( DomainError e ) # A is not a well-defined B
          B::SomeDefaultElement # who cares!
        end

...then you have weak typing.

<comment><AUTHOR> Except that now you're no longer talking about something that requires the fuzzy handwaving of 'strong' vs. 'weak', which lack the _well-defined one-way transformational characteristics_ of which you speak :)

The type-system property you're dancing around is _soundness_. A well-defined term that you'd know if you'd _read the fucking article_ , which was written explicitly to teach it to you.

As for your example of what you consider 'weak' type-checking, I can see only two ways to make it 'strong'. The normal thing to do is a dynamic type-check resulting in a runtime exception if there's an invariant — in Python _int(float("Inf"))_ raises _OverflowError_ and _int(float("NaN"))_ raises _ValueError_ — would that satisfy you as 'strong'? The other option would be to use BigFloats and a fancy static type checker to ensure that you can never construct a zero value that could be processed as a float. Hilariously, GHC takes neither of these approaches: <http://hackage.haskell.org/trac/ghc/ticket/3070> [http://hackage.haskell.org/trac/ghc/wiki/Commentary/CmmExcep...](http://hackage.haskell.org/trac/ghc/wiki/Commentary/CmmExceptions)

<comment><USER4> > Except that now you're no longer talking about something that requires the > fuzzy handwaving of 'strong' vs. 'weak', which lack the well-defined one-way > transformational characteristics of which you speak :)

You missed a (perhaps subtle) point: the thing that has "well-defined one-way transformational characteristics" is an _operation_ (an algorithm), not a type-system. A type-system can be thought of as a set of operations, a digraph specifying all the ways to go from each type to each other type in your system. This set has the property of being _strong_ by default—but becomes _weak_ if any of the operations is non-surjective. This is separate from a _sound_ system, which is one that _does not permit_ non-surjective operations.

For an example of the crucial difference: I can program in "a _strong_ subset of C" (C with all the non-surjective functions/casts removed.) I cannot program in "a _sound_ subset of C." There is no such thing.

<comment><AUTHOR> There is still an even more subtle point that you are absurdly close to understanding, and that the article touches on a bit — there really is no such thing as a type system, only a set of times and places where types are(n't) checked — _operations_. You even say so yourself!

You'll find programming language theorists using the phrase "a sound subset" with no qualms.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> This wonderful article has helped me help a great many people over the years and I'm glad he's rehosted it again after the original domain got snatched.

There is only one thing I find missing — I think it would be prudent to avoid the use of "typed" or "typing" wherever possible. I much prefer to refer to properties being "typechecked" or systems using "typechecking" — it's otherwise quite easy it forget that the types are only manifest when and where they are observed.

</comment><comment><USER5> Nice article. Should be renamed, "What to know before debating type systems... and then don't debate them".

<comment><USER6> Oh, no, type systems need to be debated. It's just that some care about definitions needs to be taken lest you end up with a megabyte or two of text between many participants going on for several days with no two participants actually sharing a definition, and thus with none of the participants actually understanding each other.

My personal preference is to identify the language is question, which is usually the important and relevant point anyhow. Strong vs weak typing? Too vague. Haskell vs Python or Java vs C++, now we've got something we can sink our teeth into and we're not just spinning in space.

</comment></comment><comment><USER7> Hey, thanks for posting this somewhere. When I found that it was gone, I grabbed a cache and posted it with as much attribution as I could. Now I can actually give you a real link. :)</comment>