The Invention of the Baby Carrot - <AUTHOR> http://priceonomics.com/the-invention-of-the-baby-carrot/ <comment><USER2> If you go to farmers' markets, sometimes there's the option to buy 'rejects' \- ugly produce - at a significantly reduced cost.

It would be cool to see something similar in supermarkets, since the waste of tons of food is atrocious on its own merits, and reducing that waste while introducing a cheaper alternative might make produce more affordable all around.

<comment><USER3> Canada's largest supermarket chain recently started doing this: [http://www.cbc.ca/news/canada/kitchener-waterloo/loblaws- sel...](http://www.cbc.ca/news/canada/kitchener-waterloo/loblaws-sells- discounted-ugly-produce-in-ontario-quebec-stores-1.2995926)

<comment><USER4> So did French supermarket Intermarché and Dutch supermarket Albert Heijn. It's encouraging to see that bigger chains are starting to do this. Throwing away perfectly good food just because it doesn't look 'perfect' is pretty ridiculous.

<comment><USER5> Do they really throw that stuff away? You can make juice and the like with it; no-one would ever know what it looked like.

</comment></comment></comment></comment><comment><USER6> Carrots might be "the lucky ugly vegetable" because they can be shaped this way. Other vegetables aren't so lucky.

For those, there are actually campaigns that encourage people to buy ugly produce[1].

1\. [http://www.npr.org/blogs/thesalt/2014/12/09/369613561/in- eur...](http://www.npr.org/blogs/thesalt/2014/12/09/369613561/in-europe-ugly- sells-in-the-produce-aisle)

</comment><comment><USER7> As a European it's always amazed me how same-looking all produce is in American supermarkets. That was a _huge_ culture shock.

I mean I'm sure we do plenty of selection here, but the lengths to which you go in the US truly astounded me.

But now I miss baby carrots whenever I'm back home. They really are a magnificent snack to nibble on. Just the perfect amount of fresh and crunchy.

<comment><USER8> Your comment has that weird Euro-omniscient voice I usually see on Reddit.

I'm Norwegian, have lived all over the world, and currently live in Prague. Produce has looked the exact same to me everywhere from Whole Foods to Walmart to Lidl to Tesco to the small corner market down the street.

</comment></comment><comment><USER9> I think one problem is that we have become disconnected from the food production. If a fruit looks different from what we are used to, we don't know if that means it will taste bad, or even dangerous to eat.

I think stronger brands could be a solution, because then we can outsource our decision making to someone knowledgeable, and have someone to blame if the product was bad.

<comment><USER10> Or people could develop the necessary skills to judge non-uniform produce? (They used to have them, after all. It's not magic.)

</comment></comment><comment><USER11> There's a company aiming to do the same thing with apples: [http://www.arcticapples.com/](http://www.arcticapples.com/)

They genetically engineered the apple so it doesn't go brown, and just received permission to start selling them. Once the apple trees grow they'll be able to sell sliced apples as snacks.

<comment><USER12> This is crazier than this article!

</comment></comment><comment><USER13> The baby carrot is a bacteria nightmare, as are sliced apples. Removing the skin that early is inimical to your stomach's pro-bacterial flora and bad to the entire digestive tract - even if you can disguise the decay with a spray which causes apples not to brown, or with water to make carrots seem not spoiled. However, they both become slimy much more quickly, a telltale sign. That decay/bacteria is present from nearly the moment you shave/slice it. The stomach is the body's largest organ - many consider it the "second brain". Inimical for health to seed the stomach's flora with the bad bacteria of shaved/sliced produce.

</comment><comment><USER14> My parents would never buy chocolate milk, they said that the inferior tasting milk was diverted to the chocolate line, as the chocolate would mask it.

<comment><USER15> This is probably true. An ex-coworker that worked in a chip factory in high school used to say, "Don't eat the BBQ flavor chips!"

</comment></comment><comment><USER16> As they say, you eat with your eyes and nose first before eating with your mouth.

This is an example of an amazingly good hack, which led to the creation of a whole new market and also reduce a lot of criminal waste. Smart.

</comment><comment><USER17> What an awesome quote and customer validation;

      "I said, 'I'm sending you some carrots to see what you
      think.' Next day they called and said, 'We only want
      those.'"

Also this tail quote from the inventor of the baby carrot;

      'When you've done something you're proud of and it's
      been acknowledged, it's a dream come true.'"

Kudos to the carrot hacker of our times. Now I'm feeling hungry for some orange crunchy.

</comment><comment><USER18> Honestly I've known about the story of the baby carrot and the whole "ugly" produce being unacceptable. But it also seems to apply to food packaging as well. I have seen countless shoppers (myself included at times) avoid a box of say something like cereal that may have been dropped and the outer cardboard box dented or damaged in some way. Now I know it's highly unlikely that the actual product has been damaged (for something like cereal at least), but why do we do this? I feel 99% certain the product isn't damaged in any way but I always want to avoid the damaged box and go for the non-damaged box. Where did this "pretty" produce, "pretty" boxes, etc mentality originate?

<comment><USER19> You have two identical products, with the same price, next to each other on the same shelf. The box is damaged for one of them - it's the natural choice to choose the one that's not damaged in any way.

Now, if the damaged one is a little bit cheaper, you'll probably have a greater chance of accepting the product with cosmetic damage over the more expensive, "perfect" product.

<comment><USER20> I was just thinking -- if there was a way to somehow be able to offer instantaneous discounts on "damaged" products, supermarkets could probably avoid throwing away a lot of "damaged" goods.

But then I realized people would just start damaging them themselves, in order to get the discount.

<comment><USER21> I've seen a lot of supermarkets doing just that. They simply place a sticker with new price to avoid the problem you described.

</comment></comment></comment></comment><comment><USER22> Actual news to me. But I should have just thought about it a bit more.

Kinda makes me sad that we're so driven by emotion, even to the point where it's against our own best interests.

Then again:

'When you've done something you're proud of and it's been acknowledged, it's a dream come true.'

Ooof, right the feels.</comment>


Why I'm dumping Google Chrome - <AUTHOR> http://www.extremetech.com/computing/210576-why-im-dumping-google-chrome

<comment><USER2> Every release of the Chromium, the open-source version of Chrome, is available for download:

[https://commondatastorage.googleapis.com/chromium-browser- sn...](https://commondatastorage.googleapis.com/chromium-browser- snapshots/index.html?prefix=Win/)

Chromium does not auto-update.</comment>


Canberra's green machines: ACT reaches 100% renewable electricity target - <AUTHOR> https://reneweconomy.com.au/canberras-green-machines-act-reaches-100-renewable-electricity-target-78663/ <comment><USER2> The PR blitz about this is super misleading.

The way its being communicated makes it seem that the ACT is powered by 100% solar, wind or hydro renewable energy. The reality is that about 20% of its power is still coming via coal and gas power plants, its just buying credits in renewable energy elsewhere in the country.

<comment><USER3> reneweconomy.com.au is sometimes correct but rarely reliable.

</comment></comment><comment><USER4> South Australia has been doing some good work as well. But most interesting is the state's plan to become a 100% renewable fueled "hydrogen economy". Using the renewable energy to produce hydrogen for sale and export, not for energy.

[https://reneweconomy.com.au/south-australia-unveils-plans- fo...](https://reneweconomy.com.au/south-australia-unveils-plans- for-100-renewable-hydrogen-economy-58723/)</comment>


EUD Security Guidance: Ubuntu 18.04 LTS - <AUTHOR> https://www.ncsc.gov.uk/guidance/eud-security-guidance-ubuntu-1804-lts <comment><USER2> Some interesting bits of information here, like "connectivity checker", but you have to go a long way down the page before the specific ubuntu stuff crops up -- most of it is the usual enterprise stuff about locking it down so the users can't actually use the computer.

They don't think LUKS is good enough for full disk encryption

They don't like OpenVPN -- IPSec is the only approved vpn. That led me to [https://www.darkwirevpn.com/vpns/ipsec-versus- openvpn/](https://www.darkwirevpn.com/vpns/ipsec-versus-openvpn/)

I fully agree with no "curl [http://blah](http://blah) | sudo bash " though. If software is worth deploying, it's worth deploying as a package (deb, snap, container, whatever. Versioned. Repeatable. Signed)

<comment><USER3> IPSec implementations are so complex, I have no faith they are rigorously debugged. I'm quite partial to Wireguard [https://www.wireguard.com](https://www.wireguard.com).

As to the guide overall, it suffers from the typical delusions of enterprise IT, which delivers a castrated platform with marginal security improvements. Users will still suffer XSS from crappy Oracle corporate applications, phishing, buffer overflows etc. But at least they won't be able to use grep! Nasty bash programs!

<comment><USER4> > Users will still suffer XSS from crappy Oracle corporate applications, > phishing, buffer overflows etc.

Buffer overflows - the guide mentioned both sandboxing (snap/apparmor) and remote low level data collection (auditd). If you don't trust the app, that's about as much as you can do.

Phishing - There's not much the OS can do. 2fa is required on the service itself, but that's not in scope for this doc.

XSS - Since you're connecting through a proxy in the recommended networking setup, there's a chance some known endpoints will be blocked. Again, that's in scope for the remote service, not really the OS setup.

I think they did a good job of describing what can you do as far as end-user workstations go. You could do some improvements by getting a grsec kernel, but that's not really Ubuntu 18.04 anymore. (I wish they mentioned it as an option though)

<comment><USER3> My point is they are crippling the functionality of the computer to achieve a marginal security improvement. The insecurity largely resides on the applications, which it barely touched on. Snaps are great, but anything that can touch X is a problem. Profiles for AppArmor are tricky to get right. If they want to do confinement then dockerised apps is much more effective than treating the end user as the primary threat to guard against. All the effort to prevent end users running binaries won't stop ROP gadgets or prevent kernel breaks. Adding 2FA for login, decent firewall and container networking rules, and syslog reporting, would be far more useful than their bizarre paranoia about users running scripts.

The complaint about LUKS is also bizarre, because the work function for trying one passphrase is enormous by default, and easily configured to be stupendously costly (e.g 30s). Its also quite feasible to boot from a USB key, which has a passphrase wrapped key; when separated from the computer this is very secure. TPM isn't foolproof either, so it comes across as rather ill informed.

</comment></comment></comment></comment><comment><USER5> I've only skimmed it but for a government policy document it's refreshingly good. I've not seen the typical "doh" things and I'll definitely give it a closer look.

<comment><USER2> Be sure to read this comment [0] alongside it. My feeling is this sort of document is fine to dip into it as a guide, and select what makes sense to you, but it feels very 'depth first'. It goes to extreme lengths to stop people using a computer, and neglects that fact people will simply bypass this and do their own thing anyway. The typical IT-first 'enterprise' solution to that is disciplinarys etc. Very few companies are (or should be) run by enterprise IT departments.

If you have to implement half the suggestions they make, you're probably doing it wrong. If you're that paranoid about giving a user access to a computer, you shouldn't give them access, not jump around locking down their access to bash once they are on there.

While the attitude of people who believe these documents still exists (in a few companies), people will simply avoid enterprise IT. A far better solution would be "sure, use ubuntu, just ensure that you install this package (which does a few sensible things -- syslog, package version reporting, etc)

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

<comment><USER5> Had this exact discussion today :)

party a said: let people read it and be educated

party b said: let's install OpenSCAP[0] and get some reporting

That said, I didn't mean to say "this is awesome, do it like they say" \- but I'd definitely liberally use some parts of it if I were to write such a doc for my org. I'm not with BigCos usually so I'm no fan of clamping down root access, etc. I think developers basically _need_ admin access on their machines except at the scale of Google where you have a dedicated force of people just caring for the tooling and that everyone can actually work instead of filing "please install libbzip2" tickets...

[0]: [https://www.open-scap.org](https://www.open-scap.org)

</comment></comment></comment><comment><USER6> A weird thing occurred to my installation a month ago. I was on previous ubuntu version (17).

According to a wireshark scan, there was a strange UDP continous stream, even with all applications closed. My computer was reaching several IP in Europe. The text of the stream was encrypted, I was just seeing "...token..." or thing like that.

I formatted and installed Ubuntu 18, the network is clean now.

I'm pretty sure I add some kind of malware, I have no idea what it was, it's very suspicious.

<comment><USER2> sudo netstat -planut would have shown what process was sending udp (and any other connections)

If I run up an iperf stream from one AWS server to another and run that command, one line that's out is this:

      udp        0      0 172.26.4.22:44142      188.8.131.52:5001      ESTABLISHED 20114/iperf

<comment><USER4> If the process actually tries to be stealthy you won't see open UDP sockets like this. If the data is only sent out, or the all is using polling, the socket can be created and destroyed as needed.

A better approach could be systemtap which has a whole system visibility.

<comment><USER2> Presumably it would show up in a netstat, but only while the packet was being written to the network stack?

      open(SOCK)
      // now visible
      write(SOCK, contents)
      close(SOCK)
      // no longer visible</comment></comment></comment></comment>


Ruby For Pentesters - WIN32OLE - <AUTHOR> http://chargen.matasano.com/chargen/2009/9/26/ruby-for-pentesters-win32ole.html <comment><USER2> This post probably won't make sense to you unless you're a penetration tester. Let me take a stab at some context.

Pentesting is black-box testing for security problems. Chris and Mike have been doing a lot of pentesting of ActiveX controls. ActiveX controls are native X86 code packaged as DLLs that run in IE. They're very horrible, but big companies have tens of apps that rely on them.

You can think of ActiveX (AX) as the web extensions for Win32 COM, which is the "advanced" version of OLE, which is the mechanism that allows you to embed Excel spreadsheets in Word documents (by loading Excel as a DLL and giving it a window context). Ruby has support for OLE and for native Windows calls with Win32OLE.

What Chris has done here is build a system whereby he can take any AX DLL, use Ruby to find all the AX interfaces (they're registered, because AX uses COM), and then automatically generate a web server that will generate pathological inputs for each of them. So basically, you drop in the AX binary, and Chris' system automatically builds a torture test for it, without you even knowing what the AX control does.

This isn't our idea; I'm pretty sure we stole it from HD Moore.

</comment><comment><AUTHOR> Matasano uses Ruby for many internal and external tools. With a little dash of IRB, you can have a lot of fun (just ask Mike...)

<comment><USER2> Shamiq interned with us this summer; I met him here on HN. He absolutely kicked ass.</comment></comment>


CSS3 vs. CSS: A Speed Benchmark - <AUTHOR> http://www.smashingmagazine.com/2011/04/21/css3-vs-css-a-speed-benchmark/

<comment><USER2> If the differences between css3 and no-css3 is so small as in this test (a few rounded corners, some drop shadows and some tiny gradients), you should totally go with pure css3 since it'll get easier to maintain but still look decent in old browsers. If you're having heavy artwork which will have huge impact on the experience; go with images (perhaps a mix?)

</comment><comment><USER3> This is the kind of benchmark I like to see for _any_ technology.

Anyone know of anything similar for other web technologies?

<comment><USER4> Indeed. Although it is _"just one experiment, and the outcome was influenced by [his] own abilities."_ this kind of "benchmark" is what gives me ammo against grumpy, entranched dev who goes " _new_foo_ is useless anyway, I can do that with _old_bar_ too", and to make a hesitant hierarchy finally make a leap forward instead of clinging into aging, "mastered" technology.

</comment></comment><comment><USER5> Gah. That's obvious. But he didn't test the _performance_. That's the real pain of CSS3 versus CSS. Try using box-shadow, or lots of gradients on a medium old machine – then you'll get a sluggish experience.

<comment><USER6> box-shadow is _seriously slow_

We had a site with the main content area shadowing over the nav bar. When the browser window was large on my big monitor scrolling was very sluggish. SpeedTracer (in Chrome) was reporting 90 to 110ms times per render, dozens per flick of the mouse wheel! Replacing the box-shadow with an image resulted in 6 to 10ms per render: silky smooth.

<comment><USER5> Yeah box-shadow is the worst, especially if you scroll. So I wonder why the author doesn't mention this.

<comment><USER7> box-shadow > 12px (radius) get's bad. It's possible to have a dozen or more elements with box-shadow < 8px (radius), and have the same performance as one element with box-shadow > 18px.

<comment><USER5> Why is that?

<comment><USER7> I don't know why. I'd love to know. It must be a really sloppy implementation.

</comment></comment></comment></comment></comment></comment><comment><USER8> I appreciate the comparison, and I know it's nitpicking, but those images seem much heavier than they need to be. Using JPGs and/or 8-bit PNGs for the header and sub images could have saved 400K or so.</comment>


How Did Lego Become More About Limits Than Possibilities? - <AUTHOR> http://discovermagazine.com/2012/jan-feb/02-how-did-lego-lose-its-mojo

<comment><USER2> The premise is bullshit. Lego now also sells specialized sets (though even those were toned down in recent years). _Also_ is the important word here. It offers a wider variety of sets, much wider than in past decades. (Though the late nineties and early 2000s were a dark time when Lego hardly sold any sets that only used basic blocks. That has very clearly changed now, though.)

They still sell plenty of mainstream sets that use nearly exclusively basic bricks, like this one: <http://creator.lego.com/en- us/products/default.aspx#5771>

Or look at this magnificent set: <http://www.youtube.com/watch?v=dDj_zA1v450>

Yes, even this set has more different types of bricks than those in the 70s had, but they are all very universal bricks. They are not in any way limited to a single or few uses.

If you really wanted to, you could even do lots of creative things with the pieces in that Harry Potter set. It's easy to find ways to not make it look like it's supposed to look.

As a kid I treasured special pieces. They were rare and could be incorporated in my own builds in novel and creative ways. The only ones I really hated were those with large print on them that was very specific. I'm not a fan of those bricks printed on those large wall pieces in the Harry Potter set. The rest, however, looks like pretty standard blocks that are universally useful. (Only the color is really weird.)

I still wouldn't buy it – there are other, better choices – but even for that set he depicted the characterization is in no way fair.

</comment><comment><USER3> Best recent toy I found on cool tools, that comes sans-instructions is Cuboro and you can always play minecraft: <http://pinterest.com/pin/20266267042681163/></comment>


Ask HN: Are any developers slow typers? - <AUTHOR> I know this may come off as silly, but I feel like I cant be the only one with this issue. I've been a professional developer for the past 5 years and I still feel a bit embarrassed at how slow I type compared to my co-workers and peer developers. Anytime I pair program, do a live demo, or even chat on slack I feel like I should hurry to keep up. On occasion, people would call me on it asking if I need a different keyboard to get more comfortable. Any developers also fall guilty as a slow typer? Have you done anything to try to improve your typing speed and actually made progress? Would really love to know.<p>-Bob <comment><USER2> I was 25 when I started professional software development, and once I joined a company with strong developers my typing really stuck out as poor. So when I was 30 I forced myself to learn touch-typing and I think it's been invaluable. It's certainly true that you do a lot of thinking when writing software, so I think there's an upper limit on how much typing speed can help you. But the ability to type fast really opens the door to making quick code changes, and in turn this really helps when you're trying to find a good programming approach. So for me, it's a skill that allows you to explore quicker, leading to faster feedback and better decision making. It also makes it easier to crank out any pesky emails/documentation that might come along, so you can get back to coding asap! I always advise any junior devs I meet to invest the time to get reasonably good at touch-typing, it just enables faster learning IMHO

<comment><USER3> Learning to touch type is the key. One way to really, really force it is to get a keyboard that is completely blank as it discourages looking down.

<comment><USER2> yes although I just went with the painful self-discipline approach ;-)

The hardest part is when you make the switch to touch-typing but you're initially slower than you were before. It takes a real effort not to cheat

</comment></comment></comment><comment><USER3> I was never really a slow typer, but I am now faster than I have ever been before since switching to Dvorak 4 years ago. I do want to point out that it is not that Dvorak is so fast, but in order to switch as an adult who programs for a living I had to dedicate hours of dedicated typing practice in the first few months. The result of that is that I'm a significantly better typer than I ever was before. I actually blogged about this a few years ago at [https://rietta.com/blog/2014/02/14/my-touch-typing- journey-c...](https://rietta.com/blog/2014/02/14/my-touch-typing-journey- continues/).

</comment><comment><USER4> I generally type with just 2 fingers on each hand and my touch typing skills are pretty terrible. I've been programming professionally for about 6 years and overall I would consider myself a fast developer. In my experience, you spent most of your time thinking, not typing (hence why lines of code is a bad measure of productivity) so typing speed != development speed.</comment>


Theranos Offers Shares for Promise Not to Sue - <AUTHOR> https://www.wsj.com/articles/theranos-offers-shares-for-promise-not-to-sue-1490301856 <comment><USER2> "Sorry we dumped a pile of shit on you. Would more shit help?"

</comment><comment><USER3> Late stage investors evidently think they're pot committed.

<comment><USER4> That or $0.02 on the dollar in bankruptcy court.

</comment></comment><comment><USER5> What value do the shares have? Isn't Theranos going bankrupt?

<comment><USER6> It's closed its labs and fired much of the staff, so it seems likely it'll go bankrupt, but I don't think they have yet.

But I guess from the perspective of an investor, you can either wait and try to spend money hiring lawyers to sue a broke company for a judgement they won't be able to pay you anyways, or you can take more shares in the .001% chance that they'll somehow rise from the ashes and you'll get some non-zero payout.

</comment></comment><comment><USER7> And if you think that's a good deal, I've got a bridge you might be interested in.

</comment><comment><USER8> They are also offering $100 bills with Elizabeth Holmes' face on them.

</comment><comment><USER9> We'll offer you a fraction of zero if you agree not to sue us

Brilliant</comment>


How Trolls Overran the Public Square - <AUTHOR> https://www.project-syndicate.org/commentary/trolls-win-control-of-the-public-square-by-j-bradford-delong-2019-12 <comment><USER2> > "There is now a near-consensus – at least among those who are not completely > steeped in social-media propaganda – that the current public sphere does not > serve us well."

Anyone who doesn't agree with my conclusion obviously shouldn't be listened to because they're part of the problem.

I don't know how you can un-ironically say "We need to stop handing off responsibility for maintaining public space to corporations and algorithms – and give it back to human beings. We may need to slow down, but we've created democracies out of chaos before. [...]" while arguing for more institutional gate-keeping. The, mostly, free discourse we have on the internet today is more democratic than it was prior to the Gutenberg revolution or the rise of radio. The author just doesn't like the results so they insist we need to go back to the older simpler way where the aristocracy gets to decide what ideas are acceptable because they know better than the common man what's good for him.

<comment><USER3> At risk of losing some people by stating some loose observations and findings with faux-confidence:

Dense networks of human relations tend to lead to those humans creating specific network topologies in which liberal values tend to emerge. In places where the network is sparsed (relative to elsewhere), it is here we find reduced empathy for distant others, mistrust, populism, higher social distance between any two random nodes overall, and also bastions of socially conservative thought.

My growing belief is that most social conservativism is network damage to the social fabric. But if that sounds slippery, don't worry: there is no need to purge it, as reducing the average path length in the network will see that happen on its own. Pluralistic values and greater ability to form consensus arises in spaces where we re-weave the social fabric into the sorts of topologies that cities tend to permute through on their own.

Be very skeptical due to my lack of citing sources, but I share the above in earnest with this comment left in haste <3

EDIT: to be clear, I believe there is also some "illness" in the progressive left as well, due to their social distance from certain groups as well. The network is sick. A healed network will be some place in between, at a place we can all live with :)

<comment><USER4> This is a a circular argument and somewhat disingenuous. You presuppose that liberal values emerge from a "denser network", which at surface level seems fine. Except definitionally I argue that pluralism itself doesn't work without defined in groups and out groups (denoting the plurality of the group). This is inherently "anti-liberal" in the sense that it requires continued in group and out group hostility to maintain the segmentation.

Looking into history at say, early Iberia, the plurality was maintained by intense violence between muslim and christian populations living in proximity to each other. In order to maintain this plurality the in group had to drastically enforce conformity while in combat with the out group to maintain topological cohesion.

To diagnose the social problems rising in the country as "network damage" is almost calling people who disagree with what I imagine is your stance as mentally ill. That is a dangerous road to move down and I would advise you to reconsider or at least allow for the nuance that potentially this isn't just about identifying characteristics of a population feeling threatened by another group.

But rather this could a manifestation of a very real feeling of insecurity that is not caused by lets just say it, racial tensions, and perhaps more of an economic anxiety bent. If Maslow isn't getting his due, then the real conversation is how can people move to middle ground feel more unified by shared prosperity.

Othering people based on a diagnosis of "not enough different people they talked to" adds to the problem instead of addresses it.

Be very skeptical due to my lack of citing sources, but I share the above in earnest with this comment left in haste <3

EDIT: Clarity

<comment><USER3> Sorry, didn't mean to imply one side as mentally ill. I'll walk it back a bit: If there's an illness, both poles have responsibility. And maybe only ill in the sense that they will break the whole together. Due to historic districting and balance of power in the USA at least, the illness on the right seems to be "winning" in the political arena there. But it'd be a comparable powderkeg if the far left got their people in without laying a foundation for consensus- building. The conservative right doesn't have as much culture of consensus- building in its DNA imho, so it's hard to look to them for any hope of resolution to the crisis of social distance.

Bah, sorry, this is like a "drinks in bar" level of uff-the-cuff conversation on my part. Your reply was wonderful though :)

> Othering people based on a diagnosis of "not enough different people they > talked to" adds to the problem instead of addresses it.

Fwiw, there's a really rad Santa Fe Institute podcast that addresses that very thing, which I'm listening to right now. tl;dr - we're all terribly biased but mostly just about people we DON'T have connection to, while we're FANTASTICALLY great integrators and estimators of even small nuances in the social fabrics that we're directly in conversation with. [https://complexity.simplecast.com/episodes/9-U7UI7GsP](https://complexity.simplecast.com/episodes/9-U7UI7GsP)

<comment><USER4> Sometimes "drinks in a bar" level conversation can be the most rewarding. Let me know if you want to get a drink and talk about it.

I'll cede that both poles have responsibility and that the conservative right have unified themselves mostly on a shared set of identities with little room for consensus, this is a problem.

But I think we need to remove ourselves from totally binary thinking (he says as a he programs all the time) and separate some concepts like neo liberal financial models from liberal social principles as I bet we would agree on the social and disagree on the financial. I'm assuming a lot so please correct me where I'm wrong. Reactionary populism is very often correlated to what are perceived to be unfair economic policy (see "reparation" payments of post world war 1 germany to france...ended tragically in 1945).

Dismissing the "conservatives" as on unified entity despite their strong coalition of identity misrepresents the problem as I see it.

<comment><USER3> Don't suppose you're in Toronto? :)

</comment></comment></comment></comment></comment></comment><comment><USER5> > social media ... undermined the democratic process ... right into people's > ears and hijack their brains ... by swarms of "influencers," propagandists, > and bots

"Hijack their brains" is quite a violent metaphor. It's a frame designed to justify strong countermeasures. But what alternative is there that isn't more dangerous than the status quo, with the potential to become a Ministry of Truth?

It's either a free market of brain hijackers or a list of officially approved brain hijackers, take your pick.

<comment><USER6> I think this position is based on thinking that the social media users that have risen to the top of the influencer pile got there by some organic reflection of society. I think that's bullshit, and changing that feedback loop of incentives that exists between social media companies and these users does not necessarily (or even likely) imply a "ministry of truth".

<comment><USER3> I empathize with the concern. My mindblown moment in fretting over this was a realization inspired by social physics research and complexity science:

Just enforce a shape of the social fabric instead of worrying about specific content within that social fabric. Maintain edge quotas, not information quotas. We have tons of research on what are "healthier" shapes of network topology than what we've built.

<comment><USER7> Do you have any additional reading on this? I've always been interested in these topics of social network topology or systems theory or what have you but struggle to find good information on it.

<comment><USER3> Yay! Social physics :) There's a great Authors at Google talk by Sandy Pentland, about his book of the same name. Gives a good overview of the book, but 100% still worth a read after watching, esp if you are someone who works with (or would like to work with) large groups of people -- event organizing, companies, community, group facilitation, etc.

[https://youtu.be/HMBl0ttu-Ow](https://youtu.be/HMBl0ttu-Ow)

</comment></comment></comment></comment></comment><comment><USER8> I don't share the experience of this author. I don't often encounter trolls. What I encounter instead is intense differences of opinion, difficult to reconcile, and a lack of respect and manners not because the people at the keyboards are trolls, but because of the psychology of arguing anonymously with an unknown and imagined "enemy".

I don't believe "traditional gatekeepers" is a good solution to the intensity and the chaos.. I think the right solution is just time. Social norms need time to adjust, on many fronts. We are in a period of upheaval, but as Jimmy Eat World says "it just takes some time, little girl, you're in the middle of the ride, everything, everything will be just fine..."

<comment><USER9> I think part of the problem is that the word troll has been (probably somewhat deliberately) bastardized to mean "anyone who questions my views."

</comment></comment><comment><USER10> > There is now a near-consensus – at least among those who are not completely > steeped in social-media propaganda – that the current public sphere does not > serve us well.

I mean, is there? There's near-consensus that the current public sphere has some significant problems. It doesn't follow that the old sphere was actually all that great, or that the Internet is a failed experiment. Are there really people who would seriously advocate that life was _better_ before the Internet? Did none of these people grow up in a rural area?

While I'll be the first to pile on companies like Facebook and Twitter, and I'll be the first to say that I don't like the general direction the Internet is going right now, my goal isn't to regress back into isolated pockets where fewer people have voices. It's been an interesting experience recently to find myself regularly needing to defend an idea that I figured was self-evident -- that it's good for people to be able to communicate with each other.

> But as the Internet began to spread to each household and then to each > smartphone, fears about the danger of an "eternal September" have been > confirmed.

I'm relatively young, but I'm still old enough to remember some of the more toxic gatekeeping arguments I heard in Open Source/gaming/general "nerd" communities, and it's really weird and uncomfortable for me to hear people today so easily reference the same phrasing as if it was entirely prophetic, rather than deeply problematic.

</comment><comment><USER11> The Public Square was much better served by forums and BBSs that came before them. Now that corporations have taken over the Public Square, they have become beholden to those who complain the most. Amazingly, South Park predicted a lot of this with their Cartoon Wars episode[1] in that bowing to pressure from one group, means bowing to pressure from all Groups.

Previously the web was thousands of independent forums and sites with their own rules. They were small enough and diffuse enough that you couldn't bring a large amount of pressure to force a forum or site to change. Now, everything is owned by a small number of companies that this is a feasible approach to silencing opponents.

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

</comment><comment><USER12> Speaking of eternal September, I feel like some of the latecomers need to be educated on the actual meaning of "troll" (eg this writer, and most journalists).

A troll is someone who posts deliberately provocative content for the purposes of deriving shits and giggles from the outraged responses of others.

A propagandist is not a troll. A paid shill is not a troll. A person who sincerely holds views which you dislike is not a troll. Only a troll is a troll.

This being so, I'm not convinced that trolls are a significant issue at this point, although partially it's getting harder to tell due to Poe's Law.

<comment><USER13> The problem is the two concepts are symbiotic.

You start out a conspiracy with trolling and people doing it for the lulz and the reactions, and eventually you end up drawing in the unstable and mentally ill as true believers.

Which can lead to unpleasant outcomes, like pizzagate or Qanon.

<comment><USER14> One thing all the conspiracy nut circles have in common, is that it's _always_ YouTube videos that they use to try to convince the non-believers of their preferred kind of crazy.

So I wonder what role YouTube monetization plays in this. How much money can you make grifting the gullible off of YouTube ads? As for q-anon, there's plenty of characters straight up selling merchandise, which should clue you in to what kind of operation it actually is.

It wasn't that long ago that YouTube decided to de-monetize all antivaxx videos. Has that had a noticeable outcome? If amoral grifters can't make money peddling bullshit ideas, do they do it less? Are there fewer antivaxx videos being made today, than a year ago? Are fewer people being sucked into that particular conspiracy bullshit today, than a year ago?

<comment><USER15> How much do the major news networks make overhyping and overplaying headlines that take things completely out of context, like the oceans running out of oxygen or some other bullshit? How many decades did we hear cholesterol and fat were bad for us before that was flat out debunked? You act like there are good guys and bad guys here and not 5000 shades of grey and that it's easy or desirable for Google to be an arbiter of truth.

<comment><USER16> >cholesterol and fat were bad for us [...] was flat out debunked

That's a new one. Besides, isn't this how science is supposed to work? Improving accuracy, discarding what doesn't work?

<comment><USER15> The point is that consensus was one thing for decades and then it was later overturned. But if "the platform" backs the consensus then you don't get opinions that challenge status quo in the first place. I don't want to live in a society like that. Might as well be in China.

</comment></comment></comment></comment></comment></comment><comment><USER17> Editing (as in, have an editorial, and remove content or submitters you don't want) and shadow-banning (which isn't entirely the same. Its social engineering)

Anonymity drives this too. But, some people need pseudonomous status to feel safe. Does this include making trolls feel safe?

What else is there other than pay-to-participate?

I have participated in NZ "nethui" where the different sides of editorial policy, and anonymity come up.

Why people troll is a good question. Some people are deeply unhappy and have arrived at a place where they feel good by making acts of depression happen in other people. "Why should you be happy if I cannot"

The hate-language and violence towards minorities, women, gays and trans is especially evil. We now have a world where its ok to _write_ things, which in times past were clearly encitement to violence. _This last paragraph will possibly attract attack on the specious grounds its anti-men. This is symptomatic of the problem._

</comment><comment><USER18> If you're interested, the Revolt of the Public is a similar thread:

[https://www.amazon.com/Revolt-Public-Crisis-Authority- Millen...](https://www.amazon.com/Revolt-Public-Crisis-Authority- Millennium/dp/1732265143)

</comment><comment><USER19> It's just a matter of what people are interested in, and having an attitude that clearly shows you're not interested in that topic, will draw everyone who's not interested in that topic to follow you. That's why trolling is so popular.

</comment><comment><USER20> We responded to them. That's how.

Flat earthers were never taken seriously. A bunch of kooks. Then the History channel "documentaries" hit, interviewing the flat earthers and giving them air time. Facebook crusaders constantly posted memes making fun of flat earthers, and "disproving" them a la XKCD #386 [1]

Counter-intuitively, their numbers grew. Just goes to show that no exposure is bad exposure.

The old solution was the best: do not feed the trolls.

[1] - [https://xkcd.com/386/](https://xkcd.com/386/)

</comment><comment><USER21> Seems like a problem that other people have. My Twitter feed is great, my Instagram feed is a source of happiness, and I go on Facebook to find fun events my friends are going to.

Listen, you know the old saying about smelling shit everywhere you go.

<comment><USER22> I kind of agree, and kind of not. I've said many times that your Twitter/Facebook feeds are mostly what you make of them, and that curating those feeds is an essential skill. I also very deliberately curate my Facebook feed to bring me joy instead of anger, though my Twitter feed is a bit more like Fight Club.

On the other hand, curation is a skill. Many struggle with it even under relatively benign circumstances, let alone when dedicated and well-funded adversaries are deliberately infiltrating and abusing otherwise-positive conversations. By "adversaries" I mean not just political propagandists but also corporate ones BTW. Thus I'm a bit hesitant to suggest "just curate your feed better" as a complete solution. People need help. That help might combine education, structural change, and APIs (e.g. to support opt-in shared filtering and block lists). Probably all three.</comment></comment>


WiFi can be used to count people with or without electronic gadgets - <AUTHOR> http://www.ece.ucsb.edu/~ymostofi/HeadCountingWithWiFi

<comment><USER2> This is why the concept of free global internet bothers me, as I think it would up the ante in terms of surveillance.</comment>


Compiling to Categories (2017) [video] - <AUTHOR> https://www.youtube.com/watch?v=SVRYcrhRCes <comment><USER2> This is a big breakthrough. You're getting multiple _correct_ programs from a single expression by "instantiating" it over multiple formal Categories. Implementing new categories is pretty easy.

It can be seen as a generalization of monads and "semiring programming".

I kinda backed into this while writing a type-inferencer for Joy PL[1] (Joy expressions are already in point-free form.) The inferencer and the interpreter wound up being very similar, and I realized I had effectively implemented two categories (kinda): the interpreter evaluates a Joy expression in the Cat of values, while the inferencer evaluates the _same_ expression in a Cat of stack effect descriptions.

So the _same_ Joy expression computes values or infers types depending on which interpreter/category you choose to run it over. And, again, implementing a new category is brief and easy.

[1] [http://joypy.osdn.io/notebooks/Types.html#hybrid- inferencer-...](http://joypy.osdn.io/notebooks/Types.html#hybrid-inferencer- interpreter)

</comment><comment><USER3> I've been watching this stuff with great interest for a while now. Glad to see it's getting press here. Conal also has a paper on using this approach for automatic differentiation.

[https://www.youtube.com/watch?v=MmkNSsGAZhw](https://www.youtube.com/watch?v=MmkNSsGAZhw)

[http://conal.net/papers/essence-of-ad/](http://conal.net/papers/essence-of- ad/)

I've been playing around with his approach. It's super cool.

[http://www.philipzucker.com/reverse-mode-differentiation- is-...](http://www.philipzucker.com/reverse-mode-differentiation-is-kind-of- like-a-lens-ii/)

[http://www.philipzucker.com/approximating-compiling- categori...](http://www.philipzucker.com/approximating-compiling-categories- using-typelevel-haskell-take-2)

</comment><comment><USER4> Chris Heunen and cols. have thought about a workaround to make probabilistic categories _cartesian closed_ , and then Lambek translation from CCC to simply typed lambda calculus should apply, so Elliot machinery should also enable to express probablistic problems in Haskell terms.

[1] [https://arxiv.org/abs/1701.02547](https://arxiv.org/abs/1701.02547)

</comment><comment><USER5> Conal Elliot was new to me, and he has great material! To cycle back to a recent good post: [https://news.ycombinator.com/item?id=18306860](https://news.ycombinator.com/item?id=18306860)

(comments there had this video posted as well)

</comment><comment><USER6> I've been skeptical about the utility of category theory in software development, but this is pretty interesting stuff.

The source code for the programs he's talking about: [https://github.com/conal/concat](https://github.com/conal/concat)

</comment><comment><USER2> [http://conal.net/papers/compiling-to- categories/](http://conal.net/papers/compiling-to-categories/)</comment>


Why I am probably disabling two-factor authentication - <AUTHOR> https://ferrolho.github.io/away-at-edinburgh/2017/02/13/locked-out-and-2fa.html <comment><USER2> Yes, always have your keys and all your stuff with you, you never know when the Enterprise will travel back to your time and you'll be beamed up away.</comment>


Garmin issues statement on recent outage - <AUTHOR> https://www.businesswire.com/news/home/20200727005634/en/Garmin%C2%AE-issues-statement-outage <comment><USER2> So days after the rest of the press calls out their issues and a ton of internal leaks about ransomware they finally issue a public statement. God forbid they had a data leak, we would not know until next year at the rate of customer facing communication.</comment>


Ask HN: Anyone reading "Fall", latest book from Neil Stephenson? - <AUTHOR> <comment><USER2> Personally, I just started Gibson's Agency today. I gave up on Stephenson and his world-building years ago. Not knocking it mind you, as he still has his fans, but I just find that Gibson's character driven stuff with a direct focus on story keeps me more interested.

<comment><AUTHOR> Thanks for the suggestion. I just placed a hold on the first of that series.

<comment><USER2> Word of warning on The Peripheral, it's quite a plot to wrap your head around at first, as is usual with time-related stuff, but once you get rolling with it you won't put it down. It's typical Gibson, which I love.

And Agency reads like a hot knife through butter. I can't wait to see how he wraps it up in the third one, if that's what he's going for.

</comment></comment></comment><comment><AUTHOR> I just started it a few days ago. I'm really enjoying it. I thought cryptonomicon was his best work since it raised a lot of interesting societal questions "what's the role of government if it can't tax you (because all transactions are secure and anonymous)"? This new one seems to raise some new ones.

</comment><comment><USER3> I read it last year. Stephenson is one of my favorite authors.

It drags at the end, Stephenson writes great books, but he's never figured out how to end one.</comment>


Revealed: US spy operation that manipulates social media (2011) - <AUTHOR> http://www.guardian.co.uk/technology/2011/mar/17/us-spy-operation-social-networks

<comment><AUTHOR> "The US military is developing software that will let it secretly manipulate social media sites by using fake online personas to influence internet conversations and spread pro-American propaganda."

Anyone reading HN should be aware of this program before accepting comments at face-value. Especially in light of the recent NSA/PRISM leaks. Unfortunately this is the reality of today; and some of the discussions here may be subject to "Operation Earnest Voice" or similar operations.</comment>


Real time website statistics visualized on a 3d globe - <AUTHOR> http://www.worldlogger.com

<comment><USER2> This is pretty awesome. I'm actually planning on making some cool 3D visualizations for administering a location based site we're going to launch. Thanks for the inspiration!

<comment><AUTHOR> no problem! maybe you can use worldlogger to show your traffic ;-)

</comment></comment><comment><USER3> This is a pretty nice visualization. It pegs the CPU of both cores on my MBP though (Webkit). =(

</comment><comment><USER4> Why is Africa flat-shaded? Or are you trying to show timezones?

</comment><comment><AUTHOR> sorry guys the website can't handle the amount of traffic, am fixing this!

<comment><AUTHOR> appears to be running again, socket issues solved hopefully!</comment></comment>


Ask HN: Should Google acquire Evernote and merge it with their Google Keep? - <AUTHOR> <comment><USER2> That'd be nice, as it gets around the limits of both products.

Truth be told, I'm now hooked on OneNote. I have ample free storage without bandwidth limits, and the client apps are really nice.

<comment><USER3> What client apps do you use?

I've become a daily user of OneNote over the last 12 months or so but didn't know there was an active eco-system to add-on.

</comment></comment><comment><USER4> Just to acquire the users maybe. And perhaps to get some top Evernote people working for them (if they haven't jumped the ship long ago). The tech itself seems so bloated. I doubt if there's much on the backend that could be salvaged? Part-by-part it seems like google is much better at all key features (search, realtime sync). They might have some interesting OCR+analysis stuff I guess?

But then again I doubt google wants to throw so many users at a product that's not ready for prime-time yet. You don't want to throw a large crowd of late adopters at an early stage product.

</comment><comment><USER5> There's nothing to merge. The technology really isn't anything proprietary like a new machine learning classification algorithm. They'll just inherit lots of freeloaders

</comment><comment><USER6> I think Evernote is too expensive for it to be worth buying. Sure you get a bunch of users, but how valuable are those users really? Few are paying.

</comment><comment><USER7> Yes, I think from a technical perspective and marketing view it blends with their strategic business model.

</comment><comment><USER8> Google could afford to offer evernote as a free service, and use it as a source of labelled data.

</comment><comment><USER9> Not a bad idea. Eat up Evernote and send it over to the Docs gland in the google body.

</comment><comment><USER10> Yes</comment>


Earle/django-bootstrap - GitHub - <AUTHOR> https://github.com/earle/django-bootstrap <comment><USER2> Great to have this, but I very much dislike the idea of changing the base Form classes just to get a different rendering.

What I've been doing in Django is using Jinja template macros to create my own rendering for the standard form classes. Not ideal, but sticks to the idea of separation of logic and presentation.

<comment><USER3> The template tags and filters will certainly solve most use cases, but there are specific reasons why Django implements Forms outside of the template -- there will be significant functionality you cant (and shouldnt) achieve through a template.

This is why the base Form was extended. To each their own.

</comment></comment><comment><USER4> We're doing something far more comprehensive with the Bootstrap theme for Pinax and if not for a few things you don't even really need Pinax and can just use Django with our theme app: <http://github.com/pinax/pinax-theme- bootstrap/>

<comment><USER5> I've been using this with great results on an intranet project. It's allowed me to have a professional looking site without having to put much thought into design & layout. Thanks so much!

</comment></comment><comment><USER6> Ha, I was just looking into something like this.

Interestingly one approach is to use the django uni-form project with the {% form|as_uni_form %} filter. You can then output whatever HTML you want. The <https://github.com/kennethlove/django-uni-form-contrib> project provides a good starting point for templates compatible with the bootstrap project but looking at it, there's still a lot to be desired and it looks somewhat inactive.

<comment><USER7> One factor might be that django uni-form is being replaced with django-crispy- forms[1], some functionality of django uni-form contrib is begin rolled into django crispy forms.[2]

[1] <https://github.com/maraujop/django-crispy-forms/>

[2] <https://github.com/maraujop/django-crispy-forms/issues/5>

</comment></comment><comment><USER8> We have been including a similar thing in our project base for some time and have been through quite a few iterations & ways to implement something like this. Thus far we are using something very similar: <https://github.com/theorm/django-bootstrap-forms>

</comment><comment><USER9> This is a great project that helps to bring a more "hip" feel to Django development.

FWIW, if you're working with a lot of CSS and JavaScript resources, check out webassets (<https://github.com/miracle2k/webassets>) for building asset bundles.

</comment><comment><USER10> My alternative to this was to write an inclusion template tag. This separates logic from presentation more cleanly, and it allows forms where, for example, first name and last name fields take up half of the space of the same row, and the rest of the fields are on full rows.

<comment><USER3> See above

</comment></comment><comment><USER11> I use django-uni-form all the time in my projects but use the helper syntax. By having a form helper you can completely customize every aspect of your form.</comment>


Facebook and Instagram: When Your Favorite App Sells Out - <AUTHOR> http://www.nymag.com/daily/intel/2012/04/facebook-and-instagram-when-your-favorite-app-sells-out.html <comment><USER2> "The company is also technologically weird. For example, much of the code that runs the site is written in a horrible computer language called PHP, which stands for nothing you care about. Millions of websites are built with PHP, because it works and it's cheap to run, but PHP is a programming language like scrapple is a meat. Imagine eating two pounds of scrapple every day for the rest of your life — that's what Facebook does, programming-wise. Which is just to say that Facebook has its own way of doing things that looks very suspect from the outside world — but man, does it work."

Why is this article on HN exactly? The article took 8-9 paragraphs to even start talking about the app actually being sold, and even then doesn't have a single point that addresses the the headline - what to actually do when your favorite app sells out (or shuts down or stops being maintained)</comment>


Not enough people are paying attention to this economic trend - <AUTHOR> https://www.gatesnotes.com/Books/Capitalism-Without-Capital <comment><USER2> The Secret Economic Trend the Celebritites Use to Stay Thin! (this link-baity title is beneath HN, c'mon)

<comment><USER3> The author is Bill Gates. He's earned deference on title drafting from the HN crowd.

<comment><USER4> Hopefully the HN crowd doesn't readily accept appeal-to-authority logic.

And even if they were, I'm not sure most of is would be aware that "(gatesnotes.com)" indicated that Bill Gates is the author.

A less problematic wording for the story might be:

Bill Gates: Not enough people are paying attention to this economic trend

<comment><USER3> This does not advocate the truth of the author's proposition by appeal to his credentials, only refutes the shallow, reflexive "this is clickbait, why is it posted on HN" comment. The answer: it was written by Microsoft founder Bill Gates.

</comment></comment></comment></comment><comment><USER5> He's pretty much describing why Microsoft has been a great investment

That's why large information technology companies have profit margins of 20+% and seem immune to business cycles and macro factors. They just keep printing cash even as other sectors ebb and flow. Microsoft, google, facebook, have huge profit margins and have been good investments.

 _It's a sunk cost. If your investment doesn't pan out, you don't have physical assets like machinery that you can sell off to recoup some of your money._

But you can sell intellectual property.

<comment><USER6> Intellectual property grants companies essential monopolies over what they create as well as lets them pay very low taxes. No wonder they are doing well.

The trillion dollar question is what is going to happen in the long run. We know that prosperity is largely a factor of how well you spread technology and wealth. Which I don't think many countries, other than arguably China, manages to do when it comes to intellectual property.

And if the last half century was infrastructure and industry this half century is information and intellectual property. So it is essential to get this right since it might determine whether you get to be Norway or Thailand in the next century.

</comment></comment><comment><USER7> > [the ipod] combined Apple's MP3 protocol, miniaturized hard disk design, > design skills, and licensing agreements with record labels.

Apple's MP3 Protocol?

</comment><comment><USER4> I object to the clickbait-ish nature of the title.

Titles should provide a summary, not a teaser.

<comment><USER8> I'll be sure to let Bill Gates know you disapprove of his blog titles, next time we're hanging out.

<comment><USER4> Based on currently wide-spread practices, IMO it's quite reasonable to assume that this is click-bait verbiage, not the title of a post from a well-known author.

Because of that, I think it would make sense to find different wording for the HN title.

<comment><USER9> I've seen so many of these kinds of titles and notice that they now have the opposite effect on me. They create an unconscious 'click aversion'. I usually just skip over them automatically. But it was the 9 upvotes and 8 comments in [new] category that drew me in :)

</comment></comment></comment></comment><comment><USER10> TL;DR: Bill Gates reviews one of his new favorite books, "Capitalism Without Capital". The book extends economic principles to measure value of intangible goods (such as software and online services), which were previously not correctly incorporated in economic models.

<comment><USER11> Thanks for the TL;DR. I came here just to get this since the title clearly seemed to be click-bait, and I'm conscious not to give more clicks/attention to such things and make the author believe they should produce more of such titles.

</comment></comment><comment><USER12> A nice article. I hope the local library has a copy, the article has convinced me to try to read it.

</comment><comment><USER13> Instead of the headline from the site, I propose editing the HN title to "Book Review: Capitalism Without Capital". It's a neutral statement about the article's contents, and also conforms to the Gates Notes url: _Books /Capitalism-Without-Capital_.</comment>


Joel on Solid State Disks - <AUTHOR> http://www.joelonsoftware.com/items/2009/03/27.html <comment><USER2> I'm a big fan of incremental builds - no point in recompiling 1M LOC when only a few source files have changed. Image based systems (like Common Lisp) are particularly nice because you can just recompile the functions that have changed and have the changes instantly take effect on a running image. Unfortunately, ASDF (the most common build/packaging system) doesn't have particularly good support for incremental builds yet, but it's an area of active developement (particularly with XCVB and other new build systems).

But don't GCC, Java, and Visual Studio all support parallel builds pretty easily? I've never looked into it, but I know I've read articles about it.

What sort of language/env. does FogCreek use? I vaguely remember hearing that they had written their own compiler in Java that transformed ASP to PHP or some other such ludicrous thing.

Edit: Some googling showed that they decided their software had to run on Windows and Unix boxes, and that the best way to do that was to support ASP (pre .NET) on Windows and PHP on *nix. They already had a large ASP code base, so they wrote a compiler (named Thistle) that could translate a subset of ASP into PHP. Then, it seems like MS deprecated ASP (and they started to realize how much it sucked) so they wrote their own language (Wasabi) that is based on VBScript and can be compiled into ASP, PHP, or JS. My God. I would gouge my eyes out if I had to work there. From the fragments of code I've seen, it frankly seems horrible. See <http://www.fogcreek.com/FogBugz/blog/category/Wasabi.aspx>

Although, I guess I can't really judge. I recently just wrote some ridiculously convoluted Java code that could automatically and transparently trick the JVM into making certain recursive functions Tail Call Optimizing (i.e., use constant space on the stack, regardless of how deep the recursion is) by transforming the function into automatically issuing/catching Exceptions to manually unwind the stack when I want to. Ah, I miss Common Lisp - I never knew how good I had it.

<comment><USER3> If you define your dependencies correctly, make can do parallel builds (using the -j option). Of course you will have to use Makefiles in that case, which a lot of people don't like.

<comment><USER2> Yep, right you are. That seems like a much more reasonable way to go. Parallelize the build - not the compiler.

</comment></comment></comment><comment><USER4> Ah, the cost of premature optimization: a couple thousand bucks, and a couple days of monkeying around. Better to first figure out where the bottleneck is (and maybe listen to your developer, since he thinks parallelization will help.)

<comment><USER5> Listen to the last Stack Overflow podcast. Every single month that they ship FogBugz earlier is an extra $200k in revenue share for the developers.

The developer may know how to solve the problem in code. But, Joel is the CEO. He has a better idea of how this affects the Balance Sheet and Income Statement. It's kinda, sorta his job.

<comment><USER4> Except that (a) he spent a couple days of his time being wrong about it, and (b) he then wrote a blog entry about how he was wrong about it.

Imagine if instead he'd said to the guy "okay, spend three hours profiling the build process and get me some suggestions with time estimates", and they'd found some likely prospects, and three days from now he gets to post about how they'll be shipping the next release a month earlier because of the improvements they made to the build process.

<comment><USER6> No matter how much you speed up a 30 second build, you're not going to save a month on the release process. Be realistic, now.

SSDs provide so many other performance benefits--even just launching apps-- that they're going to make our developers a lot happier anyway. And my time is far less valuable than a developer who is in the critical path to shipping.

<comment><USER7> A 15 second build over a 30 second build saves way more time than 15 seconds a build. It means that I'm more likely to hit compile after a smaller change before moving on to the next thing. It means I can iterate more rapidly on my approach to fixing a bug, keeping the issue hotter in my mind. It means I have half the time to get distracted by something shiny. Any time you can make the build perceptibly faster, you win big.

<comment><USER8> Playing the devil's advocate, I would say that you can also look at it the other way and say that a developer might not build as often but instead make sure his/her code is right before building, thus being more careful about what s/he's writing. (just for the sake of argument ;))

<comment><USER7> Right, because I was advocating typing line noise until it makes it past the compiler.

I can't count the number of times I used to make a tiny change that I didn't think was worth running the build for, only to have it be the first thing to pop up as wrong next time I compile (now I always run a build, because we made it super fast).

And iterating over a bug, that can involve a lot of little changes, it can involve writing a ton of unit tests trying to duplicate the problem, it can involve subtle interactions that all seem right until you figure out what the issue is. Yes, you have to think, but sometimes you just need to churn through it, too, and frankly it's ridiculous to suggest that having a faster build process wouldn't help this.

And I, personally, get distracted pretty easily. This comment courtesy the 5 minute test suite I'm plowing through in the background right now.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> I think this was just an excuse for Joel to get SSD's for his laptop and workstation - and a good one at that!

<comment><USER6> Yeah, otherwise my boss never would have let me spend the money ;/

<comment><USER9> Yes - I love everything about being self-employed except for the fact that my boss is an asshole.

<comment><USER10> Same here. And he wants me to work all the time.

</comment></comment></comment></comment><comment><USER11> I can say my build times went down considerably. However I moved to a completely new machine.

I didn't plan on writing an article so I don't have any official bench marks. I'm guessing they dropped from over a minute and a half for a full recompile to under 30 seconds. Incremental builds used to take about 20 seconds and now take between 2 and ten seconds.

I went from a athlon X64 at 2.2Ghz and 2GB Ram with a 74GB raptor and another 74GB raptor for code to a Core i7 Extreme at 4Ghz and 12GB Ram with 2x80GB intel SSDs in raid 0 and 1 80GB intel SSD for code.

A couple of important things to keep in mind. Intel is still the way to go. The other SSDs can actually be slower in write performance than a normal hard drive if the usage pattern is small files. That is pretty much what you get when you compile.

One other point is that crappy anti-virus software can affect IO performance anywhere from 12X trend micro, 24X Norton. Yes that is Norton will reduce your IO by 2400% in my tests. AVG Free is 19%. So he could have negated the performance gain from the SSD by running bad anti-virus software.

I can say my productivity feels like it nearly tripled.

The important measurement from a programming perspective is not necessarily just the second or two here or there. My work flow changed. I used to hit build and walk out and get drink from the fridge in the garage and it would still be compiling. Now I can't even do anything but glance at my email. These interruptions sometimes take you out of the zone and it can take a long time to get back in the zone. Getting up could easily cost me fifteen minutes or even a half an hour. Just because I lost my train of thought.

Update: I'm running windows 7 and visual studio 8 on this machine.

</comment><comment><USER12> Suggestion: check whether a process is IO bound _first_ before spending hundreds of dollars trying to make it faster with SSDs.

<comment><USER13> My guess is that this was the cheaper option. It only cost Joel a couple of days and several hundred on the hard drive. What it did not do is interrupt his programmers. As Joel has already described, he is now a grunt worker. His job is to make it as easy for others to do their jobs. Their time is probably worth 10 to 100 times his, because they are the one actually making something that directly results in more sales and money for the company. So all Joel had to do was save a couple of hours of work for the programmers and he would come out ahead.

Plus these additional side benefits: The programmer who was complaining does not feel like he is being ignored. Joel is now going to upgrade most of their computers, making it better for the entire company. So lots of warm fuzzies to go around, leading to happier programmers, leading to a better product.

<comment><USER14> The cheaper option would be to run a compile and open any of the many different programs in Windows that tells you whether you're using lots of CPU, RAM or IO-waiting.

Then you go AHA! I'll spend money on CPUs or making my compiler/build parallel.

</comment></comment></comment><comment><USER15> So he didn't fix the compile speed but he fixed the speed of _everything_ else. I know every second I have to sit and wait for my hard drive to catch up is a second I'm spacing out instead of working. As a developer I just want to get my idea out and code. Anything that can be done to make that faster makes me a happier coder.

</comment><comment><USER16> He doesn't mention that the "compiler" that they're bottlenecking on is the one they wrote themselves, for "Wasabi" -- compiling their private language into VB or PHP.

On top of that, _you don't fucking parallelize compilers!_

You use a goddamn build system to do that (make, et. al.). Of course, that requires that your compiler be decent enough to be able to compile modules independently, and not have to recompile unmodified source. What do you want to bet that their compiler is just ridiculously awful?

</comment><comment><USER17> _There's an open source app called Clonezilla, which, I have to say, is only free if your time is worthless._

What about dd if=/dev/old-disk of=/dev/new-disk bs=16M ?

<comment><USER6> If disk sizes are different, which they almost always are, AFAIK dd doesn't quite hack it, otherwise I would have just booted off a Ubuntu live CD and done that.

<comment><USER18> Yes, after the dd you have to run parted to adjust the partition table and then possibly use some other tool to grow the filesystem.

<comment><USER16> If the new volume is smaller (which it almost always is when switching to a SSD), you'd need to _shrink_ the filesystem _before_ you block-copied it with dd.

</comment></comment></comment></comment><comment><USER19> I guess you shouldn't always trust your assumptions, but did he really think compilation might be I/O bound?

</comment><comment><USER20> With the current abundance of incremental and/or parallel tools, the fact that the compilation process takes up a significant amount of time is your first clue that there is something fundamentally wrong with the technology selection and overall thought process at this shop.

Also, he could have saved $350 dollars and bought the 80 GB drive (unless he just HAS to store 40+ feature-length pirated movies on his boot/app drive?).

</comment><comment><USER21> This could have quickly been tested by using a memory disk and trying if the compile would go faster when the files are located there.

</comment><comment><USER22> To summarize the article: yeah, SSDs are faster, but not quite for everything, because if you're CPU bound, SSD won't make your code run faster.

So, why does this get upvoted, again?

</comment><comment><USER23> They should try distcc

</comment><comment><USER24> So... he concludes that CPU bound tasks are CPU bound, and that parallelizing compilation (technically it would be the dispatch of compilation) is better?

Every time I read this guy I fail to get what his allure to developers is.

</comment><comment><USER25> Seriously? Compiling? What language are they using that requires actual, regular, compile processes?

<comment><USER2> What's wrong with that? All else being equal, compiling will generally be faster. Most languages (Python, Java, Ruby, most Common Lisps, etc) _do_ compile - just (usually) to some intermediate and portable bytecode rather than raw machine code. That's probably what their compiler (Wasabi) does too (except, it seems like they are using PHP/VBScript/JS as their bytecode ;-)).

<comment><USER6> In FogBugz 6 the compiler output was PHP and VBScript.

In FogBugz 7 the compiler output is .NET/CLR bytecodes.

It also emits compressed JavaScript which runs on the browser.

<comment><USER16> You should write a new article about Wasabi as it is now, so we can stop making fun of you for it.</comment></comment></comment></comment>


Xenko Game Engine 2.0 released - <AUTHOR> http://xenko.com/blog/release-xenko-2-0-0/ <comment><USER2> Congratulations on the work achieved, specially on adopting higher level languages.

The growing adoption of C# among game engines, brings me back memories of when game engines finally started to allow C++ on their source code.

<comment><USER3> I have memories of people trying Java for the same purpose. I believe, the C# will ultimately meet the same fate. Here is why (I believe that):

Switching from C/C++ to a GC language is nothing like switching from Assembler to C/C++. We did not write Assembler because we liked it. We wrote it because we targeted 8/16-bit archs, which did not fit C/C++ memory model quite well. Because of this Assembler had huge speed and size advantage. As soon as flat memory archs became viable almost everybody dropped Assembler without regret. We lost a bit of performance (which could have been easily regained by rewriting inner loops in Assembler) in exchange of reusable, portable code, type system and terse program texts. These allowed to write much more complex games by engaging bigger teams who could sensibly collaborate over a much bigger project in C/C++.

What is the transition to GC from C++? You sacrifice a lot of performance for freedom from managing memory. I don't know about other people but having shipped few AAA games my only concern was fitting shit into available memory (which GC does not help, to say the least). You allocate memory on load. If you load multiple levels you nuke the previous level's memory. If you stream you do the same but your "levels" are now "segments" in a pool. Of course, if you want to go full-GC and allocate your structures byte by byte, uint32_t by uint32_t - be my guest, not sure how you plan to compete but, hey, load times (same as frame rate) are not that important as they say on the internet :) Nevertheless, as soon as 32-bit targets become completely obsolete people will find out that you can pre-allocate everything off-line in 64-bit so all you will have to do at run-time is map/unmap pages (which GC won't help either). In conclusion: one dropped performance on the floor (due to cache issues, SIMD issues, off-line vs JIT quality issues etc) and picked up the solution to the problem one should not have had in the first place.

<comment><USER4> C# is, among GC languages, particularly bloated with regards to memory. There is huge amounts of runtime type information (including stringified versions of everything) and you have close to no control over memory management without hooking into ugly APIs. I wish that Swift or Rust had been usable early enough to get swept up in the hype train so that we could avoid this crap. Also, it would mean I didn't have to use OOP to write games.

<comment><USER5> C# specifies the language, not the runtime. Apart from .NET and Mono, you can compile C# to cpp (what Unity does under the hood, btw).

> Also, it would mean I didn't have to use OOP to write games.

There are many instances where other programming paradigms are more usable - but in my experience, gameplay logic, specifically, maps very well onto classic OOP concepts.

<comment><USER4> If gameplay mapped well onto OOP then the big game companies would use it, and not data-driven programming (specifically, entity-component systems). I think that there are a couple things that require OOP-style dynamic dispatch, but they don't need to be pervasive, even a function pointer stored as a struct member is more than enough to provide all the benefits of OOP without having to take on all the drawbacks.

</comment></comment></comment></comment></comment><comment><USER6> How is this compared to Unity?

<comment><USER7> Frankly any comparison is going to be superficial unless the comparison is done by a person who has actually shipped a non-trivial game on both engines.

So many of the problems you run into making a game on Unity, Unreal, etc come down to the out-of-the-ordinary requirements of your game and the inevitable peculiarities of the engine itself. Part of becoming an "expert" in building games on a third party engine is knowing where the pain points lie, where you should absolutely not fight The Way It's Done, and what bugs remain unfixed for years on end (Unity asset bundle system, looking at you).

Edit: My point being that unless you know the needs of your particular game and have familiarity with a candidate engine, it will be very difficult to determine if your choice is "best" or not.

<comment><USER8> Reminds me of all the "Lets make a battlezone like shooter"-gamedevs who dropped by on the Spring-Engines dev site. And yes, you are perfectly capable to do that. And no, it wont work well- for the reason, a RTS-Engin has a built in lower physical Simulationframe update- and is allowed to act "slower" to commands then a shooter. So, if you want that shooter to happen- engine rewrite it is.

</comment></comment></comment><comment><USER9> If I only had time to learn another game engine. But I'd rather spend it making games with Unreal or Unity, and I doubt Xenko has something important they don't.

</comment><comment><USER10> [https://github.com/SiliconStudio/xenko/graphs/contributors](https://github.com/SiliconStudio/xenko/graphs/contributors)

are they stopping with development?

<comment><USER11> I think they are just closing the source as they make it commercial...

Edit: Oh, nevermind - on the home page they explicitly say that they're open source.

<comment><USER12> And by "open source" they mean a proprietary product[0] with "personal" (stripped down and highly restrictive license) and "pro" versions[1], naturally.

The old version (which is on github) is GPLv3 apparently.

[0] [http://xenko.com/legal/eula/](http://xenko.com/legal/eula/)

[1] [https://store-dev.xenko.com/get-xenko](https://store-dev.xenko.com/get- xenko)

</comment></comment></comment><comment><USER13> Always tell me what the product is in the first sentence or two.

<comment><USER14> Front page:

> Next-Level C# Game Engine

> Xenko is an open-source C# game engine designed for the future of gaming. It > comes with a full toolchain and is especially well suited to create > realistic games but allows you much more!

<comment><USER13> But not on _this_ page, which happens to be the first page I've ever read on this project.

The Economist is a good example here. In every article, every time a new name or topic is introduced, it will provide a few words describing the person/thing. An example taken from the first sentence of the first article I opened: _" Much of the language used by Mike Pence, America's vice-president, [...]"_

<comment><USER15> Professional journalists write like this, because journalism is intended to be consumed "statelessly"—i.e. with no assumption of previous knowledge.

Writers for "progress announcements" blogs like this one, don't tend to write in this style, because these writers know that the only interest anyone would have in a such a blog is if they already knew what the subject was and then wanted to _subscribe_ for updates.

Which is to say, deep-linking to a progress-announcement blog from another website is basically almost always entirely useless, and the webmasters of such blogs would actually do well to disable it entirely (e.g. with a robots.txt policy + a server-side hotlink-detection redirection rule) and just suggest that people interested in sharing the announcement, should instead write a few lines of "actual journalism" on their own blog about the release, and then share _that_.

People who like linking directly to primary sources would hate this, but sometimes primary sources are not in the easily-consumed essay or encyclopedia-article styles that much of the modern web has become. Sometimes a primary source is just a commit log, or a diary, where you need to "go back" to get any context. The primary source gets to do what it likes; it's not beholden to the Internet. If someone wants a good summary to share, _they 're_ beholden to write one.

</comment></comment></comment></comment><comment><USER16> Cool to see Silicon Studio came out of SGI Japan.

</comment><comment><USER17> ohh you can use C# 7 features, gotta play around with it now

</comment><comment><USER18> windows.. meh</comment>